From 576962925041b2cc83c953635536eea1a7cb840c Mon Sep 17 00:00:00 2001 From: Omar Al-Ithawi Date: Tue, 9 May 2023 17:05:48 +0300 Subject: [PATCH] feat: use `atlas` in `make pull_translations` (#137) - Bump frontend-platform to bring intl-imports.js script - Move all i18n imports into `src/i18n/index.js` so intl-imports.js can override it with latest translations - Add `atlas` into `make pull_translations` when `OPENEDX_ATLAS_PULL` environment variable is set. This pull request is part of the [FC-0012 project](https://openedx.atlassian.net/l/cp/XGS0iCcQ) which is sparked by the [Translation Infrastructure update OEP-58](https://open-edx-proposals.readthedocs.io/en/latest/architectural-decisions/oep-0058-arch-translations-management.html#specification). --- Makefile | 14 +++ package-lock.json | 193 ++++++++++++++++++------------- package.json | 6 +- src/i18n/{index.jsx => index.js} | 9 +- src/index.jsx | 6 +- src/index.test.jsx | 11 +- 6 files changed, 140 insertions(+), 99 deletions(-) rename src/i18n/{index.jsx => index.js} (76%) diff --git a/Makefile b/Makefile index 553d388..dbfc824 100755 --- a/Makefile +++ b/Makefile @@ -4,6 +4,7 @@ npm-install-%: ## install specified % npm package export TRANSIFEX_RESOURCE = frontend-app-learner-dashboard transifex_langs = "ar,fr,fr_CA,es_419,pt_BR,zh_CN" +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 @@ -52,9 +53,22 @@ 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 -t -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-footer/src/i18n/messages:frontend-component-footer \ + translations/frontend-app-learner-dashboard/src/i18n/messages:frontend-app-learner-dashboard + + $(intl_imports) frontend-component-footer frontend-app-learner-dashboard +endif # This target is used by CI. validate-no-uncommitted-package-lock-changes: diff --git a/package-lock.json b/package-lock.json index 8ee2d0a..a8beae4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,10 +11,10 @@ "dependencies": { "@edx/brand": "npm:@edx/brand-edx.org@^2.0.3", "@edx/browserslist-config": "^1.1.0", - "@edx/frontend-component-footer": "^11.6.0", + "@edx/frontend-component-footer": "^12.0.0", "@edx/frontend-enterprise-hotjar": "^1.2.0", - "@edx/frontend-platform": "^3.2.0", - "@edx/paragon": "20.19.0", + "@edx/frontend-platform": "^4.2.0", + "@edx/paragon": "^20.32.0", "@fortawesome/fontawesome-svg-core": "^1.2.36", "@fortawesome/free-brands-svg-icons": "^5.15.4", "@fortawesome/free-solid-svg-icons": "^5.15.4", @@ -2373,63 +2373,63 @@ } }, "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==", + "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.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", + "@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-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" @@ -2468,9 +2468,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", @@ -2493,13 +2493,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" @@ -2550,9 +2551,9 @@ } }, "node_modules/@edx/paragon": { - "version": "20.19.0", - "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-20.19.0.tgz", - "integrity": "sha512-N35cTPOrpacUKEfl8L2hryPzmPBGNbLRSgl/+BAIxyJuvn5etAjsAw6Etz3M91yRaTGLYH7+9HtExLES+qNfXw==", + "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", @@ -2567,6 +2568,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", @@ -2576,7 +2578,8 @@ "react-table": "^7.7.0", "react-transition-group": "^4.4.2", "tabbable": "^5.3.3", - "uncontrollable": "^7.2.1" + "uncontrollable": "^7.2.1", + "uuid": "^9.0.0" }, "peerDependencies": { "react": "^16.8.6 || ^17.0.0", @@ -2652,6 +2655,14 @@ "react-is": "^16.13.1" } }, + "node_modules/@edx/paragon/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/reactifex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@edx/reactifex/-/reactifex-2.1.1.tgz", @@ -2927,21 +2938,21 @@ } }, "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/@fortawesome/free-regular-svg-icons/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" @@ -24149,6 +24160,15 @@ "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==", + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, "node_modules/react-dev-utils": { "version": "11.0.4", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz", @@ -31631,44 +31651,44 @@ } }, "@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==", + "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.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", + "@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-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": { @@ -31700,9 +31720,9 @@ "requires": {} }, "@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", @@ -31769,9 +31789,9 @@ } }, "@edx/paragon": { - "version": "20.19.0", - "resolved": "https://registry.npmjs.org/@edx/paragon/-/paragon-20.19.0.tgz", - "integrity": "sha512-N35cTPOrpacUKEfl8L2hryPzmPBGNbLRSgl/+BAIxyJuvn5etAjsAw6Etz3M91yRaTGLYH7+9HtExLES+qNfXw==", + "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", @@ -31786,6 +31806,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", @@ -31795,7 +31816,8 @@ "react-table": "^7.7.0", "react-transition-group": "^4.4.2", "tabbable": "^5.3.3", - "uncontrollable": "^7.2.1" + "uncontrollable": "^7.2.1", + "uuid": "^9.0.0" }, "dependencies": { "@fortawesome/fontawesome-common-types": { @@ -31848,6 +31870,11 @@ "object-assign": "^4.1.1", "react-is": "^16.13.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==" } } }, @@ -32080,17 +32107,17 @@ } }, "@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" }, "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==" } } }, @@ -47974,6 +48001,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": "11.0.4", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz", diff --git a/package.json b/package.json index 2d1e44b..4a5cbd9 100755 --- a/package.json +++ b/package.json @@ -28,10 +28,10 @@ "dependencies": { "@edx/brand": "npm:@edx/brand-edx.org@^2.0.3", "@edx/browserslist-config": "^1.1.0", - "@edx/frontend-component-footer": "^11.6.0", + "@edx/frontend-component-footer": "^12.0.0", "@edx/frontend-enterprise-hotjar": "^1.2.0", - "@edx/frontend-platform": "^3.2.0", - "@edx/paragon": "20.19.0", + "@edx/frontend-platform": "^4.2.0", + "@edx/paragon": "^20.32.0", "@fortawesome/fontawesome-svg-core": "^1.2.36", "@fortawesome/free-brands-svg-icons": "^5.15.4", "@fortawesome/free-solid-svg-icons": "^5.15.4", diff --git a/src/i18n/index.jsx b/src/i18n/index.js similarity index 76% rename from src/i18n/index.jsx rename to src/i18n/index.js index dc4b5d1..431e9ef 100644 --- a/src/i18n/index.jsx +++ b/src/i18n/index.js @@ -1,3 +1,5 @@ +import { messages as footerMessages } from '@edx/frontend-component-footer'; + import arMessages from './messages/ar.json'; // no need to import en messages-- they are in the defaultMessage field import es419Messages from './messages/es_419.json'; @@ -6,7 +8,7 @@ import frcaMessages from './messages/fr_CA.json'; import ptbrMessages from './messages/pt_BR.json'; import zhcnMessages from './messages/zh_CN.json'; -const messages = { +const appMessages = { ar: arMessages, 'es-419': es419Messages, fr: frMessages, @@ -15,4 +17,7 @@ const messages = { 'zh-cn': zhcnMessages, }; -export default messages; +export default [ + footerMessages, + appMessages, +]; diff --git a/src/index.jsx b/src/index.jsx index 6078eca..98fe68e 100755 --- a/src/index.jsx +++ b/src/index.jsx @@ -20,7 +20,6 @@ import { mergeConfig, } from '@edx/frontend-platform'; -import { messages as footerMessages } from '@edx/frontend-component-footer'; import { configuration } from './config'; import messages from './i18n'; @@ -59,9 +58,6 @@ initialize({ mergeConfig(configuration, appName); }, }, - messages: [ - messages, - footerMessages, - ], + messages, requireAuthenticatedUser: true, }); diff --git a/src/index.test.jsx b/src/index.test.jsx index 11e999a..8cee7d8 100644 --- a/src/index.test.jsx +++ b/src/index.test.jsx @@ -10,7 +10,6 @@ import { import { messages as footerMessages } from '@edx/frontend-component-footer'; -import appMessages from './i18n'; import { configuration } from './config'; import * as app from '.'; @@ -18,10 +17,6 @@ jest.mock('react-dom', () => ({ render: jest.fn(), })); -jest.mock('@edx/frontend-component-footer', () => ({ - messages: 'frotnend-footer-messages', -})); - jest.mock('@edx/frontend-platform', () => ({ mergeConfig: jest.fn(), APP_READY: 'app-is-ready-key', @@ -29,9 +24,7 @@ jest.mock('@edx/frontend-platform', () => ({ initialize: jest.fn(), subscribe: jest.fn(), })); -jest.mock('@edx/frontend-component-footer', () => ({ - messages: ['some', 'messages'], -})); + jest.mock('data/store', () => ({ redux: 'store' })); jest.mock('./App', () => 'App'); jest.mock('components/NoticesWrapper', () => 'NoticesWrapper'); @@ -68,7 +61,7 @@ describe('app registry', () => { test('initialize is called with footerMessages and requireAuthenticatedUser', () => { expect(initialize).toHaveBeenCalledTimes(1); const initializeArg = initialize.mock.calls[0][0]; - expect(initializeArg.messages).toEqual([appMessages, footerMessages]); + expect(initializeArg.messages[0]).toEqual(footerMessages); expect(initializeArg.requireAuthenticatedUser).toEqual(true); }); test('initialize config', () => {