diff --git a/CHANGELOG.md b/CHANGELOG.md index c9225a9e59..9e5516a325 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,63 @@ +Changes in [1.7.26](https://github.com/vector-im/element-web/releases/tag/v1.7.26) (2021-04-26) +=============================================================================================== +[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.26-rc.1...v1.7.26) + + * Upgrade to React SDK 3.19.0 and JS SDK 10.0.0 + +Changes in [1.7.26-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.26-rc.1) (2021-04-21) +========================================================================================================= +[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.25...v1.7.26-rc.1) + + * Upgrade to React SDK 3.19.0-rc.1 and JS SDK 10.0.0-rc.1 + * Translations update from Weblate + [\#17031](https://github.com/vector-im/element-web/pull/17031) + * Bump ssri from 6.0.1 to 6.0.2 + [\#17010](https://github.com/vector-im/element-web/pull/17010) + * Fix `NODE_ENV` value for CI environments + [\#17003](https://github.com/vector-im/element-web/pull/17003) + * Use React production mode in CI builds + [\#16969](https://github.com/vector-im/element-web/pull/16969) + * Labs documentation for DND mode + [\#16962](https://github.com/vector-im/element-web/pull/16962) + * Rename blackboxing to new option ignore list + [\#16965](https://github.com/vector-im/element-web/pull/16965) + * Remove velocity-animate from lockfile + [\#16963](https://github.com/vector-im/element-web/pull/16963) + * Add mobile download link configuration + [\#16890](https://github.com/vector-im/element-web/pull/16890) + * Switch develop to not-staging Scalar by default + [\#16883](https://github.com/vector-im/element-web/pull/16883) + * Support a config option to skip login/welcome and go to SSO + [\#16880](https://github.com/vector-im/element-web/pull/16880) + +Changes in [1.7.25](https://github.com/vector-im/element-web/releases/tag/v1.7.25) (2021-04-12) +=============================================================================================== +[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.25-rc.1...v1.7.25) + + * Upgrade to React SDK 3.18.0 and JS SDK 9.11.0 + +Changes in [1.7.25-rc.1](https://github.com/vector-im/element-web/releases/tag/v1.7.25-rc.1) (2021-04-07) +========================================================================================================= +[Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.24...v1.7.25-rc.1) + + * Upgrade to React SDK 3.18.0-rc.1 and JS SDK 9.11.0-rc.1 + * Translations update from Weblate + [\#16882](https://github.com/vector-im/element-web/pull/16882) + * Revert "Docker image: serve pre-compressed assets using gzip_static" + [\#16838](https://github.com/vector-im/element-web/pull/16838) + * Move native node modules documentation to element-desktop + [\#16814](https://github.com/vector-im/element-web/pull/16814) + * Add user settings for warn before exit + [\#16781](https://github.com/vector-im/element-web/pull/16781) + * Change ISSUE_TEMPLATE bold lines to proper headers + [\#16768](https://github.com/vector-im/element-web/pull/16768) + * Add example for deployment into Kubernetes + [\#16447](https://github.com/vector-im/element-web/pull/16447) + * Create bare-bones `PULL_REQUEST_TEMPLATE.md` + [\#16770](https://github.com/vector-im/element-web/pull/16770) + * Add webpack config and labs flag docs for voice messages + [\#16705](https://github.com/vector-im/element-web/pull/16705) + Changes in [1.7.24](https://github.com/vector-im/element-web/releases/tag/v1.7.24) (2021-03-29) =============================================================================================== [Full Changelog](https://github.com/vector-im/element-web/compare/v1.7.24-rc.1...v1.7.24) @@ -62,12 +122,12 @@ Changes in [1.7.22](https://github.com/vector-im/element-web/releases/tag/v1.7.2 ## Security notice -Element Web 1.7.22 fixes (by upgrading to matrix-react-sdk 3.15.0) a low +Element Web 1.7.22 fixes (by upgrading to matrix-react-sdk 3.15.0) a moderate severity issue (CVE-2021-21320) where the user content sandbox can be abused to -trick users into opening unexpected documents. The content is opened with a -`blob` origin that cannot access Matrix user data, so messages and secrets are -not at risk. Thanks to @keerok for responsibly disclosing this via Matrix's -Security Disclosure Policy. +trick users into opening unexpected documents after several user interactions. +The content can be opened with a `blob` origin from the Matrix client, so it is +possible for a malicious document to access user messages and secrets. Thanks to +@keerok for responsibly disclosing this via Matrix's Security Disclosure Policy. ## All changes diff --git a/docs/config.md b/docs/config.md index 77467eff1d..1ca4bf48ff 100644 --- a/docs/config.md +++ b/docs/config.md @@ -22,9 +22,12 @@ For a good example, see https://develop.element.io/config.json. `default_hs_url` is specified. When multiple sources are specified, it is unclear which should take priority and therefore the application cannot continue. * As of Element 1.4.0, identity servers are optional. See [Identity servers](#identity-servers) below. +1. `sso_immediate_redirect`: When `true`, Element will assume the default server supports SSO + and attempt to send the user there to continue (if they aren't already logged in). Default + `false`. Note that this disables all usage of the welcome page. 1. `features`: Lookup of optional features that may be force-enabled (`true`) or force-disabled (`false`). When features are not listed here, their defaults will be used, and users can turn them on/off if `showLabsSettings` - allows them to. The available optional experimental features vary from release to release and are + allows them to. The available optional experimental features vary from release to release and are [documented](labs.md). The feature flag process is [documented](feature-flags.md) as well. 1. `showLabsSettings`: Shows the "labs" tab of user settings. Useful to allow users to turn on experimental features they might not otherwise have access to. @@ -73,7 +76,7 @@ For a good example, see https://develop.element.io/config.json. not selected. By default, no home page is configured. If one is set, a button to access it will be shown in the top left menu. 1. `loginForWelcome`: Overrides `welcomeUrl` to make the welcome page be the - same page as the login page when `true`. This effectively disables the + same page as the login page when `true`. This effectively disables the welcome page. 1. `defaultCountryCode`: The ISO 3166 alpha2 country code to use when showing country selectors, like the phone number input on the registration page. @@ -113,12 +116,26 @@ For a good example, see https://develop.element.io/config.json. 1. `logo`: An HTTP URL to the avatar for the desktop build. Should be 24x24, ideally an SVG. 1. `url`: An HTTP URL for where to send the user to download the desktop build. +1. `mobileBuilds`: Used to alter promotional links to the mobile app. By default the + builds are considered available and accessible from https://element.io. This config + option is typically used in a context of encouraging the user to try the mobile app + instead of a mobile/incompatible browser. + 1. `ios`: The URL to the iOS build. If `null`, it will be assumed to be not available. + If not set, the default element.io builds will be used. + 1. `android`: The URL to the Android build. If `null`, it will be assumed to be not available. + If not set, the default element.io builds will be used. + 1. `fdroid`: The URL to the FDroid build. If `null`, it will be assumed to be not available. + If not set, the default element.io builds will be used. 1. `mobileGuideToast`: Whether to show a toast a startup which nudges users on iOS and Android towards the native mobile apps. The toast redirects to the mobile guide if they accept. Defaults to false. 1. `audioStreamUrl`: If supplied, show an option on Jitsi widgets to stream audio using Jitsi's live streaming feature. This option is experimental and may be removed at any time without notice. +1. `voip`: Behaviour related to calls + 1. `obeyAssertedIdentity`: If set, MSC3086 asserted identity messages sent + on VoIP calls will cause the call to appear in the room corresponding to the + asserted identity. This *must* only be set in trusted environments. Note that `index.html` also has an og:image meta tag that is set to an image hosted on riot.im. This is the image used if links to your copy of Element diff --git a/docs/labs.md b/docs/labs.md index 887ce93d52..3dff4474ca 100644 --- a/docs/labs.md +++ b/docs/labs.md @@ -130,3 +130,8 @@ An in-progress implementation of [MSC2516](https://github.com/matrix-org/matrix- [voice messages](https://github.com/vector-im/element-web/issues/1358) to Element. Note that this feature is currently under active development and therefore is entirely incomplete and may not work at all - it is not recommended for general use at this time. + +## Do not disturb (`feature_dnd`) + +Enables UI for turning on "do not disturb" mode for the current device. When DND mode is engaged, popups +and notification noises are suppressed. Not perfect, but can help reduce noise. diff --git a/docs/review.md b/docs/review.md index c08ab10818..b84f422dca 100644 --- a/docs/review.md +++ b/docs/review.md @@ -58,6 +58,43 @@ When reviewing code, here are some things we look for and also things we avoid: * Assign issues only when in progress to indicate to others what can be picked up +## Code Quality + +In the past, we have occasionally written different kinds of tests for +Element and the SDKs, but it hasn't been a consistent focus. Going forward, we'd +like to change that. + +* For new features, code reviewers will expect some form of automated testing to + be included by default +* For bug fixes, regression tests are of course great to have, but we don't want + to block fixes on this, so we won't require them at this time + +The above policy is not a strict rule, but instead it's meant to be a +conversation between the author and reviewer. As an author, try to think about +writing a test when making your next change. As a reviewer, try to think about +how you might test the area of code you are reviewing. If the reviewer agrees +it would be quite difficult to test some new feature, then it's okay for them to +accept the change without tests for now, but we'd eventually like to be more +strict about this further down the road. + +If you do spot areas that are quite hard to test today, please let us know in +[#element-dev:matrix.org](https://matrix.to/#/#element-dev:matrix.org). We can +work on improving the app architecture and testing helpers so that future tests +are easier for everyone to write, but we won't know which parts are difficult +unless people shout when stumbling through them. + +We recognise that this testing policy will slow things down a bit, but overall +it should encourage better long-term health of the app and give everyone more +confidence when making changes as coverage increases over time. + +For changes guarded by a feature flag, we currently lean towards prioritising +our ability to evolve quickly using such flags and thus we will not currently +require tests to appear at the same time as the initial landing of features +guarded by flags, as long as (for new flagged features going forward) the +feature author understands that they are effectively deferring part of their +work (adding tests) until later and tests are expected to appear before the +feature can be enabled by default. + ## Design and Product Review We want to ensure that all changes to Element fit with our design and product @@ -79,5 +116,5 @@ easily. Before starting work on a feature, it's best to ensure your plan aligns well with our vision for Element. Please chat with the team in -[#element-dev:matrix.org](https://matrix.to/#/#element-dev:matrix.org) before you -start so we can ensure it's something we'd be willing to merge. +[#element-dev:matrix.org](https://matrix.to/#/#element-dev:matrix.org) before +you start so we can ensure it's something we'd be willing to merge. diff --git a/element.io/develop/config.json b/element.io/develop/config.json index 13eac7945d..1e1e3ed023 100644 --- a/element.io/develop/config.json +++ b/element.io/develop/config.json @@ -1,8 +1,8 @@ { "default_server_name": "matrix.org", "brand": "Element", - "integrations_ui_url": "https://scalar-staging.vector.im/", - "integrations_rest_url": "https://scalar-staging.vector.im/api", + "integrations_ui_url": "https://scalar.vector.im/", + "integrations_rest_url": "https://scalar.vector.im/api", "integrations_widgets_urls": [ "https://scalar.vector.im/_matrix/integrations/v1", "https://scalar.vector.im/api", diff --git a/package.json b/package.json index bfe66feaff..1313966b61 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "element-web", - "version": "1.7.24", + "version": "1.7.26", "description": "A feature-rich client for Matrix.org", "author": "New Vector Ltd.", "repository": { @@ -29,7 +29,7 @@ "scripts": { "i18n": "matrix-gen-i18n", "prunei18n": "matrix-prune-i18n", - "diff-i18n": "cp src/i18n/strings/en_EN.json src/i18n/strings/en_EN_orig.json && yarn i18n && node scripts/compare-file.js src/i18n/strings/en_EN_orig.json src/i18n/strings/en_EN.json", + "diff-i18n": "cp src/i18n/strings/en_EN.json src/i18n/strings/en_EN_orig.json && matrix-gen-i18n && matrix-compare-i18n-files src/i18n/strings/en_EN_orig.json src/i18n/strings/en_EN.json", "reskindex": "reskindex -h src/header", "reskindex:watch": "reskindex -h src/header -w", "reskindex:watch-react": "node scripts/yarn-sub.js matrix-react-sdk reskindex:watch", @@ -46,7 +46,7 @@ "start": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n reskindex,reskindex-react,res,element-js \"yarn reskindex:watch\" \"yarn reskindex:watch-react\" \"yarn start:res\" \"yarn start:js\"", "start:https": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n reskindex,reskindex-react,res,element-js \"yarn reskindex:watch\" \"yarn reskindex:watch-react\" \"yarn start:res\" \"yarn start:js --https\"", "start:res": "yarn build:jitsi && node scripts/copy-res.js -w", - "start:js": "webpack-dev-server --host=0.0.0.0 --output-filename=bundles/_dev_/[name].js --output-chunk-filename=bundles/_dev_/[name].js -w --progress --mode development", + "start:js": "webpack-dev-server --host=0.0.0.0 --output-filename=bundles/_dev_/[name].js --output-chunk-filename=bundles/_dev_/[name].js -w --progress --mode development --disable-host-check", "lint": "yarn lint:types && yarn lint:js && yarn lint:style", "lint:js": "eslint src", "lint:types": "tsc --noEmit --jsx react", @@ -67,7 +67,7 @@ "react": "^16.14.0", "react-dom": "^16.14.0", "sanitize-html": "github:apostrophecms/sanitize-html#3c7f93f2058f696f5359e3e58d464161647226db", - "ua-parser-js": "^0.7.23" + "ua-parser-js": "^0.7.24" }, "devDependencies": { "@babel/core": "^7.12.10", @@ -87,6 +87,7 @@ "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.10", "@babel/runtime": "^7.12.5", + "@principalstudio/html-webpack-inject-preload": "^1.2.7", "@types/flux": "^3.1.9", "@types/modernizr": "^3.5.3", "@types/node": "^14.14.22", @@ -112,13 +113,14 @@ "fake-indexeddb": "^3.1.2", "file-loader": "^5.1.0", "fs-extra": "^0.30.0", - "html-webpack-plugin": "^3.2.0", + "html-webpack-plugin": "^4.5.2", "jest": "^26.6.3", "jest-environment-jsdom-sixteen": "^1.0.3", "json-loader": "^0.5.7", "loader-utils": "^1.4.0", "matrix-mock-request": "^1.2.3", "matrix-react-test-utils": "^0.2.2", + "matrix-web-i18n": "github:matrix-org/matrix-web-i18n", "mini-css-extract-plugin": "^0.12.0", "minimist": "^1.2.5", "mkdirp": "^1.0.4", diff --git a/scripts/ci_package.sh b/scripts/ci_package.sh index 2b82db737f..41d82016e7 100755 --- a/scripts/ci_package.sh +++ b/scripts/ci_package.sh @@ -14,4 +14,4 @@ JSSDK_SHA=$(cd node_modules/matrix-js-sdk; git rev-parse --short=12 HEAD) VECTOR_SHA=$(git rev-parse --short=12 HEAD) # use the ACTUAL SHA rather than assume develop -CI_PACKAGE=true DIST_VERSION=$VECTOR_SHA-react-$REACT_SHA-js-$JSSDK_SHA scripts/package.sh -d +CI_PACKAGE=true DIST_VERSION=$VECTOR_SHA-react-$REACT_SHA-js-$JSSDK_SHA scripts/package.sh diff --git a/scripts/compare-file.js b/scripts/compare-file.js deleted file mode 100644 index f53275ebfa..0000000000 --- a/scripts/compare-file.js +++ /dev/null @@ -1,10 +0,0 @@ -const fs = require("fs"); - -if (process.argv.length < 4) throw new Error("Missing source and target file arguments"); - -const sourceFile = fs.readFileSync(process.argv[2], 'utf8'); -const targetFile = fs.readFileSync(process.argv[3], 'utf8'); - -if (sourceFile !== targetFile) { - throw new Error("Files do not match"); -} diff --git a/src/async-components/structures/CompatibilityView.tsx b/src/async-components/structures/CompatibilityView.tsx index 05a09c6b89..d8b5f0be8d 100644 --- a/src/async-components/structures/CompatibilityView.tsx +++ b/src/async-components/structures/CompatibilityView.tsx @@ -27,7 +27,55 @@ interface IProps { } const CompatibilityView: React.FC = ({ onAccept }) => { - const brand = SdkConfig.get().brand; + const {brand, mobileBuilds} = SdkConfig.get(); + + let ios = null; + const iosCustomUrl = mobileBuilds?.ios; + if (iosCustomUrl !== null) { // could be undefined or a string + ios = <> +

iOS (iPhone or iPad)

+ + Apple App Store + + ; + } + + let android = [

Android

]; + const andCustomUrl = mobileBuilds?.android; + const fdroidCustomUrl = mobileBuilds?.fdroid; + if (andCustomUrl !== null) { // undefined or string + android.push( + Google Play Store + ); + } + if (fdroidCustomUrl !== null) { // undefined or string + android.push( + F-Droid + ); + } + if (android.length === 1) { // just a header, meaning no links + android = []; + } + + let mobileHeader =

{_t("Use %(brand)s on mobile", {brand})}

; + if (!android.length && !ios) { + mobileHeader = null; + } + return
@@ -76,30 +124,9 @@ const CompatibilityView: React.FC = ({ onAccept }) => {
-

Use Element on mobile

-

iOS (iPhone or iPad)

- - Apple App Store - -

Android

- - Google Play Store - - - F-Droid - + {mobileHeader} + {ios} + {android}
diff --git a/src/components/structures/VectorEmbeddedPage.js b/src/components/structures/VectorEmbeddedPage.tsx similarity index 98% rename from src/components/structures/VectorEmbeddedPage.js rename to src/components/structures/VectorEmbeddedPage.tsx index 2397eef144..85adb2fb3f 100644 --- a/src/components/structures/VectorEmbeddedPage.js +++ b/src/components/structures/VectorEmbeddedPage.tsx @@ -24,7 +24,7 @@ export default class VectorEmbeddedPage extends EmbeddedPage { static replaces = 'EmbeddedPage'; // we're overriding the base component here, for Element-specific tweaks - translate(s) { + translate(s: string) { s = sanitizeHtml(_t(s)); // ugly fix for https://github.com/vector-im/element-web/issues/4243 // eslint-disable-next-line max-len diff --git a/src/components/views/auth/VectorAuthFooter.js b/src/components/views/auth/VectorAuthFooter.tsx similarity index 100% rename from src/components/views/auth/VectorAuthFooter.js rename to src/components/views/auth/VectorAuthFooter.tsx diff --git a/src/components/views/auth/VectorAuthHeaderLogo.js b/src/components/views/auth/VectorAuthHeaderLogo.tsx similarity index 92% rename from src/components/views/auth/VectorAuthHeaderLogo.js rename to src/components/views/auth/VectorAuthHeaderLogo.tsx index 73f952e525..d3bf32341b 100644 --- a/src/components/views/auth/VectorAuthHeaderLogo.js +++ b/src/components/views/auth/VectorAuthHeaderLogo.tsx @@ -16,16 +16,11 @@ limitations under the License. */ import React from 'react'; -import PropTypes from 'prop-types'; import SdkConfig from 'matrix-react-sdk/src/SdkConfig'; export default class VectorAuthHeaderLogo extends React.PureComponent { static replaces = 'AuthHeaderLogo' - static propTypes = { - icon: PropTypes.string, - } - render() { const brandingConfig = SdkConfig.get().branding; let logoUrl = "themes/element/img/logos/element-logo.svg"; diff --git a/src/components/views/auth/VectorAuthPage.js b/src/components/views/auth/VectorAuthPage.tsx similarity index 93% rename from src/components/views/auth/VectorAuthPage.js rename to src/components/views/auth/VectorAuthPage.tsx index 19fd618073..b50c401f99 100644 --- a/src/components/views/auth/VectorAuthPage.js +++ b/src/components/views/auth/VectorAuthPage.tsx @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React from 'react'; +import React, { CSSProperties } from 'react'; import * as sdk from 'matrix-react-sdk/src/index'; import SdkConfig from 'matrix-react-sdk/src/SdkConfig'; @@ -48,12 +48,12 @@ export default class VectorAuthPage extends React.PureComponent { background: `center/cover fixed url(${VectorAuthPage.getWelcomeBackgroundUrl()})`, }; - const modalStyle = { + const modalStyle: CSSProperties = { position: 'relative', background: 'initial', }; - const blurStyle = { + const blurStyle: CSSProperties = { position: 'absolute', top: 0, right: 0, @@ -63,7 +63,7 @@ export default class VectorAuthPage extends React.PureComponent { background: pageStyle.background, }; - const modalContentStyle = { + const modalContentStyle: CSSProperties = { display: 'flex', zIndex: 1, background: 'rgba(255, 255, 255, 0.59)', diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index a5b0066976..0052218a9f 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -16,7 +16,7 @@ "Go to your browser to complete Sign In": "Gehe zu deinem Browser, um die Anmeldung abzuschließen", "Open user settings": "Benutzereinstellungen öffnen", "Unable to load config file: please refresh the page to try again.": "Konfigurationsdatei kann nicht geladen werden: Bitte aktualisiere die Seite, um es erneut zu versuchen.", - "Missing indexeddb worker script!": "Fehlendes indexeddb Worker-Skript!", + "Missing indexeddb worker script!": "Fehlendes indexeddb-Arbeitsskript!", "Previous/next recently visited room or community": "Vorheriger/nächster kürzlich besuchter Raum oder Community", "Unsupported browser": "Nicht unterstützter Browser", "Go to element.io": "Gehe zu element.io", @@ -24,13 +24,14 @@ "%(brand)s Desktop (%(platformName)s)": "%(brand)s Desktop (%(platformName)s)", "%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)", "Please install Chrome, Firefox, or Safari for the best experience.": "Bitte installiere Chrome, Firefox oder Safari für das beste Erlebnis.", - "You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Du kannst deinen aktuellen Browser weiterhin verwenden, es kann aber sein, dass einige oder alle Funktionen nicht verfügbar sind oder dass Aussehen und Bedienung der Anwendung nicht korrekt ist.", + "You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Du kannst deinen aktuellen Browser weiterhin verwenden. Es ist aber möglich, dass nicht alles richtig funktioniert oder das Aussehen der App inkorrekt ist.", "I understand the risks and wish to continue": "Ich verstehe die Risiken und möchte fortfahren", "Your Element is misconfigured": "Dein Element ist falsch konfiguriert", - "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Deine Element-Konfiguration enthält ungültiges JSON. Bitte korrigiere das Problem und lade die Seite neu.", - "Download Completed": "Download fertiggestellt", + "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Deine Elementkonfiguration enthält ungültiges JSON. Bitte korrigiere das Problem und lade die Seite neu.", + "Download Completed": "Herunterladen fertiggestellt", "Open": "Öffnen", "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s verwendet erweiterte Browserfunktionen, die von deinem Browser nicht unterstützt werden.", "Your browser can't run %(brand)s": "Dein Browser kann %(brand)s nicht ausführen", - "Powered by Matrix": "Betrieben mit Matrix" + "Powered by Matrix": "Betrieben mit Matrix", + "Use %(brand)s on mobile": "Verwende %(brand)s auf dem Handy" } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 9c71b85849..892ab66cad 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -19,6 +19,7 @@ "%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)", "You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.", "Powered by Matrix": "Powered by Matrix", + "Use %(brand)s on mobile": "Use %(brand)s on mobile", "Unsupported browser": "Unsupported browser", "Your browser can't run %(brand)s": "Your browser can't run %(brand)s", "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s uses advanced browser features which aren't supported by your current browser.", diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 69534b8fb7..ff1f8b51a3 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -32,5 +32,6 @@ "Open": "Abrir", "Your browser can't run %(brand)s": "Tu navegador no es compatible con %(brand)s", "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s usa funciones avanzadas que su navegador actual no soporta.", - "Powered by Matrix": "Funciona con Matrix" + "Powered by Matrix": "Funciona con Matrix", + "Use %(brand)s on mobile": "Usar %(brand)s en modo móvil" } diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 12ed468209..acaaf562b5 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -32,5 +32,6 @@ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Sinu Element'i seadistustes on vigased JSON-vormingus andmed. Palun paranda see viga ja laadi leht uuesti.", "Your browser can't run %(brand)s": "%(brand)s ei toimi sinu brauseris", "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s kasutab mitmeid uusi brauseri-põhiseid tehnoloogiaid, mis ei ole veel sinu veebibrauseris toetatud.", - "Powered by Matrix": "Põhineb Matrix'il" + "Powered by Matrix": "Põhineb Matrix'il", + "Use %(brand)s on mobile": "Kasuta %(brand)s rakendust nutiseadmes" } diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index 7b76c16888..a64ffb3c9e 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -32,5 +32,6 @@ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "La configuration de votre Element contient du JSON invalide. Veuillez corriger le problème et recharger la page.", "Your browser can't run %(brand)s": "Votre navigateur ne peut pas exécuter %(brand)s", "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s nécessite des fonctionnalités avancées que votre navigateur actuel ne prend pas en charge.", - "Powered by Matrix": "Propulsé par Matrix" + "Powered by Matrix": "Propulsé par Matrix", + "Use %(brand)s on mobile": "Utiliser %(brand)s sur téléphone" } diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index 15f9284e5e..17b229a351 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -32,5 +32,6 @@ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "A configuración de Element contén JSON non válido. Corrixe o problema e recarga a páxina.", "Your browser can't run %(brand)s": "O teu navegador non pode executar %(brand)s", "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s utiliza características avanzadas do navegador que non están dispoñibles no teu navegador.", - "Powered by Matrix": "Funciona grazas a Matrix" + "Powered by Matrix": "Funciona grazas a Matrix", + "Use %(brand)s on mobile": "Utiliza %(brand)s no móbil" } diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index d090dcef42..7f90879549 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -32,5 +32,6 @@ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Az Element érvénytelen JSON-t tartalmazó konfigurációval rendelkezik. Javítsa és töltse újra az oldalt.", "Your browser can't run %(brand)s": "A böngészője nem tudja futtatni ezt: %(brand)s", "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s speciális böngészőfunkciókat használ, amelyeket a jelenlegi böngészője nem támogat.", - "Powered by Matrix": "A gépházban: Matrix" + "Powered by Matrix": "A gépházban: Matrix", + "Use %(brand)s on mobile": "Mobilon használd ezt: %(brand)s" } diff --git a/src/i18n/strings/id.json b/src/i18n/strings/id.json index 86cd1a41c6..1b1b095415 100644 --- a/src/i18n/strings/id.json +++ b/src/i18n/strings/id.json @@ -4,5 +4,8 @@ "Unknown device": "Perangkat Tidak Diketahui", "You need to be using HTTPS to place a screen-sharing call.": "Anda perlu menggunakan HTTPS untuk melakukan panggilan berbagi-layar.", "Welcome to Element": "Selamat datang di Element", - "Decentralised, encrypted chat & collaboration powered by [matrix]": "Obrolan terenkripsi, terdesentralisasi & kolaborasi didukung oleh [matrix]" + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Obrolan terenkripsi, terdesentralisasi & kolaborasi didukung oleh [matrix]", + "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Konfigurasi Element Anda mengandung JSON yang tidak valid. Mohon perbaiki masalahnya dan muat ulang halaman nya.", + "Invalid configuration: no default server specified.": "Konfigurasi tidak valid: server default belum ditentukan.", + "Missing indexeddb worker script!": "Tidak ada script worker indexeddb!" } diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index d503c07aa6..c14e74c63c 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -32,5 +32,6 @@ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "La configurazione del tuo elemento contiene un JSON non valido. Correggi il problema e ricarica la pagina.", "Your browser can't run %(brand)s": "Il tuo browser non può eseguire %(brand)s", "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s usa funzionalità avanzate del browser che non sono supportate dal tuo browser attuale.", - "Powered by Matrix": "Offerto da Matrix" + "Powered by Matrix": "Offerto da Matrix", + "Use %(brand)s on mobile": "Usa %(brand)s su mobile" } diff --git a/src/i18n/strings/lo.json b/src/i18n/strings/lo.json new file mode 100644 index 0000000000..a5dec91647 --- /dev/null +++ b/src/i18n/strings/lo.json @@ -0,0 +1,3 @@ +{ + "Open": "ເປີດ" +} diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index 3864589740..c7250c046f 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -32,5 +32,6 @@ "Your Element is misconfigured": "Je Element is verkeerd geconfigureerd", "Your browser can't run %(brand)s": "Je browser kan %(brand)s niet draaien", "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s gebruikt geavanceerde functies die niet ondersteund worden in je huidige browser.", - "Powered by Matrix": "Gebruikt Matrix technologie" + "Powered by Matrix": "Gebruikt Matrix technologie", + "Use %(brand)s on mobile": "Gebruik %(brand)s op uw mobiel" } diff --git a/src/i18n/strings/oc.json b/src/i18n/strings/oc.json index 002f260cb6..ffe8b038fc 100644 --- a/src/i18n/strings/oc.json +++ b/src/i18n/strings/oc.json @@ -10,5 +10,27 @@ "Decentralised, encrypted chat & collaboration powered by [matrix]": "Messatjariá chifrada, descentralizada e collaborativa propulsada per [matrix]", "Sign In": "Se connectar", "Create Account": "Crear un compte", - "Explore rooms": "Percórrer las salas" + "Explore rooms": "Percórrer las salas", + "Missing indexeddb worker script!": "Lo worker script IndexedDB manca !", + "Invalid configuration: no default server specified.": "Configuracion invalida : pas de servidor per defauta especificat.", + "Invalid configuration: can only specify one of default_server_config, default_server_name, or default_hs_url.": "Configuracion invalida : podètz unicament especificar un camp entre default_server_config, default_server_name, o default_hs_url.", + "Failed to start": "Non se pòt pas lançar", + "Go to element.io": "Anar a element.io", + "I understand the risks and wish to continue": "Compréni los risques e vòli contunhar", + "You can continue using your current browser, but some or all features may not work and the look and feel of the application may be incorrect.": "Podètz contunhar a utilizar lo vòstre navigator actual, mas qualques o totes las foncionalitats o/e l'apparéncia poirián mal foncionar .", + "Please install Chrome, Firefox, or Safari for the best experience.": "Si vos plai installatz Chrome, Firefox, o Safari per una melhora experiéncia.", + "Your browser can't run %(brand)s": "Lo vòstre navigator non pòt pas executar %(brand)s", + "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s utiliza de foncions avançadas que lo vòstre navigator non suporta pas.", + "Unsupported browser": "Navigator incompatible", + "Powered by Matrix": "Fonciona ambé Matrix", + "You need to be using HTTPS to place a screen-sharing call.": "Devetz utilizar HTTPS per apelar ambé partatge d'ecran.", + "%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)", + "%(brand)s Desktop (%(platformName)s)": "%(brand)s de burèu (%(platformName)s)", + "Previous/next recently visited room or community": "Sala o comunautat recentament visitada precedenta/seguenta", + "Open user settings": "Dobrir los paramètres utilizaire", + "Open": "Dobrir", + "Download Completed": "Descargament acabat", + "Unable to load config file: please refresh the page to try again.": "Se pòt pas cargar lo fichièr de configuracion : si vos plai actualizatz la pagina per tornar ensajar.", + "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "La configuracion d'Element conténe de JSON invalid. Si vos plai corregitz lo problème e actualizatz la pagina.", + "Your Element is misconfigured": "Lo vòstre Element es mal configurat" } diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index fed1c23a10..361cd53e9d 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -32,5 +32,6 @@ "Open": "Открыть", "Your browser can't run %(brand)s": "Ваш браузер не может запустить %(brand)s", "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s использует расширенные возможности, которые не поддерживаются вашим браузером.", - "Powered by Matrix": "На технологии Matrix" + "Powered by Matrix": "На технологии Matrix", + "Use %(brand)s on mobile": "Воспользуйтесь %(brand)s на мобильном телефоне" } diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 3e4987bc21..de1b035090 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -32,5 +32,6 @@ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Formësimi juaj i Element-it përmban JSON të pavlefshëm. Ju lutemi, ndreqeni problemin dhe ringarkoni faqen.", "Your browser can't run %(brand)s": "Shfletuesi juaj s’mund të xhirojë %(brand)s", "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s përdor veçori të thelluara të shfletuesit, të cilat shfletuesi juaj i tanishëm s’i mbulon.", - "Powered by Matrix": "Bazuar në Matrix" + "Powered by Matrix": "Bazuar në Matrix", + "Use %(brand)s on mobile": "Përdor %(brand)s në celular" } diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 6f88bb93b6..3bb712a9f0 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -32,5 +32,6 @@ "Open": "Öppna", "Powered by Matrix": "Drivs av Matrix", "Your browser can't run %(brand)s": "Din webbläsare kan inte köra %(brand)s", - "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s använder avancerade webbläsarfunktioner som inte stöds av din aktuella webbläsare." + "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s använder avancerade webbläsarfunktioner som inte stöds av din aktuella webbläsare.", + "Use %(brand)s on mobile": "Använd %(brand)s på mobilen" } diff --git a/src/i18n/strings/th.json b/src/i18n/strings/th.json index d9740a9aaf..e0c1f9c56b 100644 --- a/src/i18n/strings/th.json +++ b/src/i18n/strings/th.json @@ -1,13 +1,19 @@ { "powered by Matrix": "ใช้เทคโนโลยี Matrix", - "Dismiss": "ไม่สนใจ", + "Dismiss": "ปิด", "Unknown device": "อุปกรณ์ที่ไม่รู้จัก", "You need to be using HTTPS to place a screen-sharing call.": "คุณต้องใช้ HTTPS เพื่อเริ่มติดต่อแบบแบ่งปันหน้าจอ", "Welcome to Element": "ยินดีต้อนรับสู่ Element", "Decentralised, encrypted chat & collaboration powered by [matrix]": "ระบบแชทและประสานงาน ไร้ศูนย์กลางและเข้ารหัสได้ โดยใช้เทคโนโลยีจาก [matrix]", - "The message from the parser is: %(message)s": "ข้อความจากparserคือ:%(message)s", + "The message from the parser is: %(message)s": "ข้อความจากตัวแยกวิเคราะห์คือ: %(message)s", "Invalid JSON": "JSON ไม่ถูกต้อง", - "Sign In": "เข้าสู่ระบบ", + "Sign In": "ลงชื่อเข้า", "Create Account": "สร้างบัญชี", - "Explore rooms": "สำรวจห้อง" + "Explore rooms": "สำรวจห้อง", + "Download Completed": "การดาวน์โหลดเสร็จสมบูรณ์", + "Open user settings": "เปิดการตั้งค่าผู้ใช้", + "Go to element.io": "ไปยัง element.io", + "Failed to start": "ไม่สามารถเริ่ม", + "Open": "เปิด", + "Powered by Matrix": "ขับเคลื่อนโดย Matrix" } diff --git a/src/i18n/strings/tzm.json b/src/i18n/strings/tzm.json index 80f2451a98..3a4a09f4ed 100644 --- a/src/i18n/strings/tzm.json +++ b/src/i18n/strings/tzm.json @@ -1,5 +1,5 @@ { - "Create Account": "Ssenflul amiḍan", + "Create Account": "senflul amiḍan", "Download Completed": "Ittusmed wagam", "Powered by Matrix": "Ittusker s Matrix", "Sign In": "Kcem", @@ -10,5 +10,7 @@ "Unknown device": "Allal arussin", "Open user settings": "Ṛẓem tisɣal n unessemres", "Dismiss": "Nexxel", - "Open": "Ṛẓem" + "Open": "Ṛẓem", + "The message from the parser is: %(message)s": "Tuzint n umeslad: %(message)s", + "Use %(brand)s on mobile": "Semres %(brand)s g utilifun" } diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index c97006b30e..1a77e28d40 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -32,5 +32,6 @@ "%(appName)s (%(browserName)s, %(osName)s)": "%(appName)s (%(browserName)s, %(osName)s)", "Powered by Matrix": "Працює на Matrix", "Your browser can't run %(brand)s": "Ваш переглядач неспроможний запустити %(brand)s", - "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s використовує передові властивості, які ваш браузер не підтримує." + "%(brand)s uses advanced browser features which aren't supported by your current browser.": "%(brand)s використовує передові властивості, які ваш браузер не підтримує.", + "Use %(brand)s on mobile": "Користуйтеся %(brand)s на мобільному" } diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 89f8c87698..a06537a4a9 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -1,12 +1,12 @@ { - "Dismiss": "标记为已读", + "Dismiss": "忽略", "powered by Matrix": "由 Matrix 驱动", "Unknown device": "未知设备", "You need to be using HTTPS to place a screen-sharing call.": "您需要使用 HTTPS 以进行共享屏幕通话。", "Welcome to Element": "欢迎来到 Element", "Decentralised, encrypted chat & collaboration powered by [matrix]": "去中心化、加密聊天与协作,由 [matrix] 驱动", "Sign In": "登录", - "Create Account": "创建账户", + "Create Account": "创建账号", "Explore rooms": "探索聊天室", "The message from the parser is: %(message)s": "语法分析器的信息:%(message)s", "Invalid JSON": "无效的 JSON", diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index f9eca46ba9..3cd8118204 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -32,5 +32,6 @@ "Your Element configuration contains invalid JSON. Please correct the problem and reload the page.": "Element 的配置中包含無效JSON,請更正錯誤並重新加載網頁。", "Your browser can't run %(brand)s": "當前瀏覽器無法運行%(brand)s", "%(brand)s uses advanced browser features which aren't supported by your current browser.": "當前瀏覽器不支持%(brand)s使用的高級特性。", - "Powered by Matrix": "由 Matrix 提供" + "Powered by Matrix": "由 Matrix 提供", + "Use %(brand)s on mobile": "在行動裝置上使用 %(brand)s" } diff --git a/src/vector/app.tsx b/src/vector/app.tsx index a0e4ee50ca..1fc856c01b 100644 --- a/src/vector/app.tsx +++ b/src/vector/app.tsx @@ -35,6 +35,7 @@ import SdkConfig from "matrix-react-sdk/src/SdkConfig"; import {parseQs, parseQsFromFragment} from './url_utils'; import VectorBasePlatform from "./platform/VectorBasePlatform"; +import {createClient} from "matrix-js-sdk/src/matrix"; let lastLocationHashSet: string = null; @@ -153,6 +154,26 @@ export async function loadApp(fragParams: {}) { // Don't bother loading the app until the config is verified const config = await verifyServerConfig(); + + // Before we continue, let's see if we're supposed to do an SSO redirect + const [userId] = await Lifecycle.getStoredSessionOwner(); + const hasPossibleToken = !!userId; + const isReturningFromSso = !!params.loginToken; + const autoRedirect = config['sso_immediate_redirect'] === true; + if (!hasPossibleToken && !isReturningFromSso && autoRedirect) { + console.log("Bypassing app load to redirect to SSO"); + const tempCli = createClient({ + baseUrl: config['validated_server_config'].hsUrl, + idBaseUrl: config['validated_server_config'].isUrl, + }); + PlatformPeg.get().startSingleSignOn(tempCli, "sso", `/${getScreenFromLocation(window.location).screen}`); + + // We return here because startSingleSignOn() will asynchronously redirect us. We don't + // care to wait for it, and don't want to show any UI while we wait (not even half a welcome + // page). As such, just don't even bother loading the MatrixChat component. + return; + } + const MatrixChat = sdk.getComponent('structures.MatrixChat'); return - + <% } } %> + + <% for (var i=0; i < htmlWebpackPlugin.tags.headTags.length; i++) { + var tag = htmlWebpackPlugin.tags.headTags[i]; + var path = tag.attributes && tag.attributes.href; + if (path.indexOf("Inter") !== -1) { %> + + <% } + } %> + - + " + data-vector-recorder-worklet-script="<%= htmlWebpackPlugin.files.js.find(entry => entry.includes("recorder-worklet.js")) %>" + >
- + diff --git a/src/vector/mobile_guide/index.html b/src/vector/mobile_guide/index.html index da49907f9c..3960c43912 100644 --- a/src/vector/mobile_guide/index.html +++ b/src/vector/mobile_guide/index.html @@ -152,7 +152,7 @@ body { - +

Set up Element on iOS or Android

@@ -260,6 +260,7 @@ body { + Get it on F-Droid. diff --git a/src/vector/platform/ElectronPlatform.tsx b/src/vector/platform/ElectronPlatform.tsx index 74317e77d0..7ec8147edd 100644 --- a/src/vector/platform/ElectronPlatform.tsx +++ b/src/vector/platform/ElectronPlatform.tsx @@ -510,6 +510,10 @@ export default class ElectronPlatform extends VectorBasePlatform { return this.eventIndexManager; } + async setLanguage(preferredLangs: string[]) { + return this._ipcCall('setLanguage', preferredLangs); + } + setSpellCheckLanguages(preferredLangs: string[]) { this._ipcCall('setSpellCheckLanguages', preferredLangs).catch(error => { console.log("Failed to send setSpellCheckLanguages IPC to Electron"); diff --git a/src/vector/rageshakesetup.ts b/src/vector/rageshakesetup.ts index e2c293d346..02161331f7 100644 --- a/src/vector/rageshakesetup.ts +++ b/src/vector/rageshakesetup.ts @@ -36,7 +36,7 @@ export function initRageshake() { prom.then(() => { console.log("Initialised rageshake."); console.log("To fix line numbers in Chrome: " + - "Meatball menu → Settings → Blackboxing → Add /rageshake\\.js$"); + "Meatball menu → Settings → Ignore list → Add /rageshake\\.js$"); window.addEventListener('beforeunload', (e) => { console.log('element-web closing'); diff --git a/webpack.config.js b/webpack.config.js index 2335ea9a03..560beec121 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -4,20 +4,29 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const TerserPlugin = require('terser-webpack-plugin'); const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); const webpack = require("webpack"); +const HtmlWebpackInjectPreload = require('@principalstudio/html-webpack-inject-preload'); -let og_image_url = process.env.RIOT_OG_IMAGE_URL; -if (!og_image_url) og_image_url = 'https://app.element.io/themes/element/img/logos/opengraph.png'; +let ogImageUrl = process.env.RIOT_OG_IMAGE_URL; +if (!ogImageUrl) ogImageUrl = 'https://app.element.io/themes/element/img/logos/opengraph.png'; const additionalPlugins = [ // This is where you can put your customisation replacements. ]; module.exports = (env, argv) => { + let nodeEnv = argv.mode; if (process.env.CI_PACKAGE) { // Don't run minification for CI builds (this is only set for runs on develop) // We override this via environment variable to avoid duplicating the scripts // in `package.json` just for a different mode. argv.mode = "development"; + + // More and more people are using nightly build as their main client + // Libraries like React have a development build that is useful + // when working on the app but adds significant runtime overhead + // We want to use the React production build but not compile the whole + // application to productions standards + nodeEnv = "production"; } const development = {}; @@ -44,6 +53,7 @@ module.exports = (env, argv) => { "mobileguide": "./src/vector/mobile_guide/index.js", "jitsi": "./src/vector/jitsi/index.ts", "usercontent": "./node_modules/matrix-react-sdk/src/usercontent/index.js", + "recorder-worklet": "./node_modules/matrix-react-sdk/src/voice/RecorderWorklet.ts", // CSS themes "theme-legacy": "./node_modules/matrix-react-sdk/res/themes/legacy-light/css/legacy-light.scss", @@ -80,6 +90,10 @@ module.exports = (env, argv) => { // we use a CSS optimizer too and need to manage it ourselves. minimize: argv.mode === 'production', minimizer: argv.mode === 'production' ? [new TerserPlugin({}), new OptimizeCSSAssetsPlugin({})] : [], + + // Set the value of `process.env.NODE_ENV` for libraries like React + // See also https://v4.webpack.js.org/configuration/optimization/#optimizationnodeenv + nodeEnv, }, resolve: { @@ -152,8 +166,8 @@ module.exports = (env, argv) => { }, loader: 'babel-loader', options: { - cacheDirectory: true - } + cacheDirectory: true, + }, }, { test: /\.css$/, @@ -164,7 +178,7 @@ module.exports = (env, argv) => { options: { importLoaders: 1, sourceMap: true, - } + }, }, { loader: 'postcss-loader', @@ -202,7 +216,7 @@ module.exports = (env, argv) => { "local-plugins": true, }, }, - ] + ], }, { test: /\.scss$/, @@ -213,7 +227,7 @@ module.exports = (env, argv) => { options: { importLoaders: 1, sourceMap: true, - } + }, }, { loader: 'postcss-loader', @@ -231,7 +245,7 @@ module.exports = (env, argv) => { require("postcss-easings")(), require("postcss-strip-inline-comments")(), require("postcss-hexrgba")(), - require("postcss-calc")({warnWhenCannotResolve: true}), + require("postcss-calc")(), // It's important that this plugin is last otherwise we end // up with broken CSS. @@ -241,7 +255,7 @@ module.exports = (env, argv) => { "local-plugins": true, }, }, - ] + ], }, { test: /\.wasm$/, @@ -311,7 +325,7 @@ module.exports = (env, argv) => { }, ], }, - ] + ], }, plugins: [ @@ -331,8 +345,8 @@ module.exports = (env, argv) => { inject: false, excludeChunks: ['mobileguide', 'usercontent', 'jitsi'], minify: argv.mode === 'production', - vars: { - og_image_url: og_image_url, + templateParameters: { + og_image_url: ogImageUrl, }, }), @@ -374,6 +388,10 @@ module.exports = (env, argv) => { chunks: ['usercontent'], }), + new HtmlWebpackInjectPreload({ + files: [{ match: /.*Inter.*\.woff2?$/ }], + }), + ...additionalPlugins, ], @@ -438,6 +456,7 @@ function getAssetOutputPath(url, resourcePath) { * be placed directly into things like CSS files. * * @param {string} path Some path to a file. + * @returns {string} converted path */ function toPublicPath(path) { return path.replace(/\\/g, '/'); diff --git a/yarn.lock b/yarn.lock index 2f59143220..1a5c74f0ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,6 +9,13 @@ dependencies: "@babel/highlight" "^7.10.4" +"@babel/code-frame@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + dependencies: + "@babel/highlight" "^7.12.13" + "@babel/compat-data@^7.12.5", "@babel/compat-data@^7.12.7": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.7.tgz#9329b4782a7d6bbd7eef57e11addf91ee3ef1e41" @@ -44,6 +51,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.13.16": + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.16.tgz#0befc287031a201d84cdfc173b46b320ae472d14" + integrity sha512-grBBR75UnKOcUWMp8WoDxNsWCFl//XCK6HWTrBQKTr5SV9f5g0pNOjdyzi/DTBv12S9GnYPInIXQBTky7OXEMg== + dependencies: + "@babel/types" "^7.13.16" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d" @@ -113,6 +129,15 @@ "@babel/template" "^7.12.7" "@babel/types" "^7.12.11" +"@babel/helper-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" + integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.12.13" + "@babel/helper-get-function-arity@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" @@ -120,6 +145,13 @@ dependencies: "@babel/types" "^7.12.10" +"@babel/helper-get-function-arity@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" + integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-hoist-variables@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" @@ -208,6 +240,13 @@ dependencies: "@babel/types" "^7.12.11" +"@babel/helper-split-export-declaration@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" + integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== + dependencies: + "@babel/types" "^7.12.13" + "@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" @@ -246,11 +285,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.12.13": + version "7.13.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" + integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.7.0": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== +"@babel/parser@^7.12.13", "@babel/parser@^7.13.16": + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.16.tgz#0f18179b0448e6939b1f3f5c4c355a3a9bcdfd37" + integrity sha512-6bAg36mCwuqLO0hbR+z7PHuqWiCeP7Dzg73OpQwsAB1Eb8HnGEz5xYBzCfbu+YjoaJsJs+qheDxVAuqbt3ILEw== + "@babel/plugin-proposal-async-generator-functions@^7.12.1": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.12.tgz#04b8f24fd4532008ab4e79f788468fd5a8476566" @@ -963,6 +1016,15 @@ "@babel/parser" "^7.12.7" "@babel/types" "^7.12.7" +"@babel/template@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" + integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" + "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.4": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" @@ -978,6 +1040,20 @@ globals "^11.1.0" lodash "^4.17.19" +"@babel/traverse@^7.13.17": + version "7.13.17" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.17.tgz#c85415e0c7d50ac053d758baec98b28b2ecfeea3" + integrity sha512-BMnZn0R+X6ayqm3C3To7o1j7Q020gWdqdyP50KEoVqaCO2c/Im7sYZSmVgvefp8TTMQ+9CtwuBp0Z1CZ8V3Pvg== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.13.16" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.13.16" + "@babel/types" "^7.13.17" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.12.12" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" @@ -987,6 +1063,14 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.12.13", "@babel/types@^7.13.16", "@babel/types@^7.13.17": + version "7.13.17" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.17.tgz#48010a115c9fba7588b4437dd68c9469012b38b4" + integrity sha512-RawydLgxbOPDlTLJNtoIypwdmAy//uQIzlKt2+iBiJaRlVuI6QLUxVAyWGNfOzp8Yu4L4lLIacoCyTNtpb4wiA== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1263,6 +1347,11 @@ "@nodelib/fs.scandir" "2.1.4" fastq "^1.6.0" +"@principalstudio/html-webpack-inject-preload@^1.2.7": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@principalstudio/html-webpack-inject-preload/-/html-webpack-inject-preload-1.2.7.tgz#0c1f0b32a34d814b36ce84111f89990441cc64e8" + integrity sha512-KJKkiKG63ugBjf8U0e9jUcI9CLPTFIsxXplEDE0oi3mPpxd90X9SJovo3W2l7yh/ARKIYXhQq8fSXUN7M29TzQ== + "@sinonjs/commons@^1.7.0": version "1.8.2" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b" @@ -1292,6 +1381,11 @@ remark "^13.0.0" unist-util-find-all-after "^3.0.2" +"@types/anymatch@*": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" + integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": version "7.1.12" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" @@ -1358,6 +1452,11 @@ dependencies: "@types/node" "*" +"@types/html-minifier-terser@^5.0.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" + integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" @@ -1469,6 +1568,11 @@ dependencies: htmlparser2 "^4.1.0" +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + "@types/stack-utils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" @@ -1479,11 +1583,44 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== +"@types/tapable@^1", "@types/tapable@^1.0.5": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.7.tgz#545158342f949e8fd3bfd813224971ecddc3fac4" + integrity sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ== + +"@types/uglify-js@*": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.0.tgz#1cad8df1fb0b143c5aba08de5712ea9d1ff71124" + integrity sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q== + dependencies: + source-map "^0.6.1" + "@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== +"@types/webpack-sources@*": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" + integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.7.3" + +"@types/webpack@^4.41.8": + version "4.41.27" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.27.tgz#f47da488c8037e7f1b2dbf2714fbbacb61ec0ffc" + integrity sha512-wK/oi5gcHi72VMTbOaQ70VcDxSQ1uX8S2tukBK9ARuGXrYM/+u4ou73roc7trXDNmCxCoerE8zruQqX/wuHszA== + dependencies: + "@types/anymatch" "*" + "@types/node" "*" + "@types/tapable" "^1" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + source-map "^0.6.0" + "@types/yargs-parser@*": version "20.2.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" @@ -2270,11 +2407,6 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -2658,13 +2790,13 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= +camel-case@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" + pascal-case "^3.1.2" + tslib "^2.0.3" camelcase-css@^2.0.1: version "2.0.1" @@ -2906,7 +3038,7 @@ classnames@^2.2.6: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== -clean-css@4.2.x: +clean-css@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== @@ -3039,20 +3171,15 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - commander@^2.19.0, commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== commondir@^1.0.1: version "1.0.1" @@ -3955,6 +4082,14 @@ domutils@^2.0.0, domutils@^2.4.3, domutils@^2.4.4: domelementtype "^2.0.1" domhandler "^4.0.0" +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + dot-prop@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -4033,11 +4168,6 @@ emojibase-regex@^4.1.1: resolved "https://registry.yarnpkg.com/emojibase-regex/-/emojibase-regex-4.1.1.tgz#6e781aca520281600fe7a177f1582c33cf1fc545" integrity sha512-KSigB1zQkNKFygLZ5bAfHs87LJa1ni8QTQtq8lc53Y74NF3Dk2r7kfa8MpooTO8JBb5Xz660X4tSjDB+I+7elA== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -5120,6 +5250,11 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" +foreachasync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/foreachasync/-/foreachasync-3.0.0.tgz#5502987dc8714be3392097f32e0071c9dee07cf6" + integrity sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY= + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -5576,7 +5711,7 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -he@1.2.x: +he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -5668,35 +5803,37 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -html-minifier@^3.2.3: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== +html-minifier-terser@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== dependencies: - camel-case "3.0.x" - clean-css "4.2.x" - commander "2.17.x" - he "1.2.x" - param-case "2.1.x" - relateurl "0.2.x" - uglify-js "3.4.x" + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" html-tags@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== -html-webpack-plugin@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" - integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= +html-webpack-plugin@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.2.tgz#76fc83fa1a0f12dd5f7da0404a54e2699666bc12" + integrity sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A== dependencies: - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - tapable "^1.0.0" - toposort "^1.0.0" + "@types/html-minifier-terser" "^5.0.0" + "@types/tapable" "^1.0.5" + "@types/webpack" "^4.41.8" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.20" + pretty-error "^2.1.1" + tapable "^1.1.3" util.promisify "1.0.0" htmlparser2@^3.10.0, htmlparser2@^3.10.1: @@ -7136,11 +7273,6 @@ json3@^3.3.3: resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -7304,16 +7436,6 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" @@ -7386,7 +7508,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.3, lodash@^4.17.5, lodash@^4.2.1: +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.5, lodash@^4.2.1: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -7422,10 +7544,12 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" lru-cache@^5.1.1: version "5.1.1" @@ -7507,8 +7631,8 @@ mathml-tag-names@^2.1.3: integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg== "matrix-js-sdk@github:matrix-org/matrix-js-sdk#develop": - version "9.10.0" - resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/4204b2170a1e04f20067b87636bb2eddf95194c4" + version "10.0.0" + resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/b911a890cff5ac4d10a4f3a94b43276caeedca83" dependencies: "@babel/runtime" "^7.12.5" another-json "^0.2.0" @@ -7529,8 +7653,8 @@ matrix-mock-request@^1.2.3: expect "^1.20.2" "matrix-react-sdk@github:matrix-org/matrix-react-sdk#develop": - version "3.17.0" - resolved "https://codeload.github.com/matrix-org/matrix-react-sdk/tar.gz/5df4ad2db0fed4bd96c73fa5b13cd4994c3a96c7" + version "3.19.0" + resolved "https://codeload.github.com/matrix-org/matrix-react-sdk/tar.gz/3817aaeaca9622c56894df4092b5ce727b943f64" dependencies: "@babel/runtime" "^7.12.5" await-lock "^2.1.0" @@ -7580,7 +7704,6 @@ matrix-mock-request@^1.2.3: tar-js "^0.3.0" text-encoding-utf-8 "^1.0.2" url "^0.11.0" - velocity-animate "^2.0.6" what-input "^5.2.10" zxcvbn "^4.4.2" @@ -7589,6 +7712,14 @@ matrix-react-test-utils@^0.2.2: resolved "https://registry.yarnpkg.com/matrix-react-test-utils/-/matrix-react-test-utils-0.2.2.tgz#c87144d3b910c7edc544a6699d13c7c2bf02f853" integrity sha512-49+7gfV6smvBIVbeloql+37IeWMTD+fiywalwCqk8Dnz53zAFjKSltB3rmWHso1uecLtQEcPtCijfhzcLXAxTQ== +"matrix-web-i18n@github:matrix-org/matrix-web-i18n": + version "1.1.2" + resolved "https://codeload.github.com/matrix-org/matrix-web-i18n/tar.gz/63f9119bc0bc304e83d4e8e22364caa7850e7671" + dependencies: + "@babel/parser" "^7.13.16" + "@babel/traverse" "^7.13.17" + walk "^2.3.14" + matrix-widget-api@^0.1.0-beta.13: version "0.1.0-beta.13" resolved "https://registry.yarnpkg.com/matrix-widget-api/-/matrix-widget-api-0.1.0-beta.13.tgz#ebddc83eaef39bbb87b621a02a35902e1a29b9ef" @@ -8051,12 +8182,13 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: - lower-case "^1.1.1" + lower-case "^2.0.2" + tslib "^2.0.3" node-fetch@^1.0.1: version "1.7.3" @@ -8597,12 +8729,13 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= +param-case@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: - no-case "^2.2.0" + dot-case "^3.0.4" + tslib "^2.0.3" parent-module@^1.0.0: version "1.0.1" @@ -8696,6 +8829,14 @@ parseurl@~1.3.2, parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -9667,7 +9808,7 @@ preserve@^0.2.0: resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= -pretty-error@^2.0.2: +pretty-error@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== @@ -10238,7 +10379,7 @@ regjsparser@^0.6.4: dependencies: jsesc "~0.5.0" -relateurl@0.2.x: +relateurl@^0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= @@ -11057,9 +11198,9 @@ sshpk@^1.7.0: tweetnacl "~0.14.0" ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + version "6.0.2" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" + integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== dependencies: figgy-pudding "^3.5.1" @@ -11544,7 +11685,7 @@ terser-webpack-plugin@^2.3.8: terser "^4.6.12" webpack-sources "^1.4.3" -terser@^4.1.2, terser@^4.6.12: +terser@^4.1.2, terser@^4.6.12, terser@^4.6.3: version "4.8.0" resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== @@ -11671,11 +11812,6 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= - tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -11730,6 +11866,11 @@ tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.0.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== + tsutils@^3.17.1: version "3.20.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698" @@ -11832,24 +11973,16 @@ typeson@^5.18.2, typeson@^5.8.2: resolved "https://registry.yarnpkg.com/typeson/-/typeson-5.18.2.tgz#0d217fc0e11184a66aa7ca0076d9aa7707eb7bc2" integrity sha512-Vetd+OGX05P4qHyHiSLdHZ5Z5GuQDrHHwSdjkqho9NSCYVSLSfRMjklD/unpHH8tXBR9Z/R05rwJSuMpMFrdsw== -ua-parser-js@^0.7.18, ua-parser-js@^0.7.23: - version "0.7.23" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.23.tgz#704d67f951e13195fbcd3d78818577f5bc1d547b" - integrity sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA== +ua-parser-js@^0.7.18, ua-parser-js@^0.7.24: + version "0.7.24" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.24.tgz#8d3ecea46ed4f1f1d63ec25f17d8568105dc027c" + integrity sha512-yo+miGzQx5gakzVK3QFfN0/L9uVhosXBBO7qmnk7c2iw1IhL212wfA3zbnI54B0obGwC/5NWub/iT9sReMx+Fw== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== - dependencies: - commander "~2.19.0" - source-map "~0.6.1" - unhomoglyph@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/unhomoglyph/-/unhomoglyph-1.0.6.tgz#ea41f926d0fcf598e3b8bb2980c2ddac66b081d3" @@ -11966,11 +12099,6 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -12101,11 +12229,6 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -velocity-animate@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/velocity-animate/-/velocity-animate-2.0.6.tgz#1811ca14df7fbbef05740256f6cec0fd1b76575f" - integrity sha512-tU+/UtSo3GkIjEfk2KM4e24DvpgX0+FzfLr7XqNwm9BCvZUtbCHPq/AFutx/Mkp2bXlUS9EcX8yxu8XmzAv2Kw== - vendors@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" @@ -12157,6 +12280,13 @@ w3c-xmlserializer@^2.0.0: dependencies: xml-name-validator "^3.0.0" +walk@^2.3.14: + version "2.3.14" + resolved "https://registry.yarnpkg.com/walk/-/walk-2.3.14.tgz#60ec8631cfd23276ae1e7363ce11d626452e1ef3" + integrity sha512-5skcWAUmySj6hkBdH6B6+3ddMjVQYH5Qy9QGbPmN8kVmLteXk+yVXg+yfk1nbX30EYakahLrr8iPcCxJQSCBeg== + dependencies: + foreachasync "^3.0.0" + walker@^1.0.7, walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"