diff --git a/.eslintrc b/.eslintrc index b524b88050..838bfca319 100644 --- a/.eslintrc +++ b/.eslintrc @@ -4,7 +4,7 @@ "ecmaFeatures": { "jsx": true, "classes": true, - "modules": true, + "modules": true }, "env": { // I write for browser diff --git a/.gitignore b/.gitignore index e4ddc366af..241c386cae 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,9 @@ artifact_node.sh # GitBook _book/ + +# Use yarn.lock +package-lock.json + +# Ignore old translation files +locales/*/*_old.json diff --git a/app/bootstrap.js b/app/bootstrap.js index 10aab3015a..08e39a2bfe 100644 --- a/app/bootstrap.js +++ b/app/bootstrap.js @@ -18,6 +18,7 @@ import { render } from 'react-dom'; import bows from 'bows'; import _ from 'lodash'; +import './core/language'; // Set the language before loading components import blipCreateStore from './redux/store'; import AppRoot from './redux/containers/Root'; @@ -42,10 +43,10 @@ var appContext = { config: config }; -// This anonymous function must remain in ES5 format because +// This anonymous function must remain in ES5 format because // the argument parameter used is not bound when using arrow functions // See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions -appContext.trackMetric = function() { +appContext.trackMetric = function() { var args = Array.prototype.slice.call(arguments); return appContext.api.metrics.track.apply(appContext.api.metrics, args); }; @@ -84,7 +85,7 @@ appContext.init = callback => { * This renders the AppComponent into the DOM providing appContext * as the context for AppComponent so that the required dependencies * are passed in! - * + * */ appContext.start = () => { diff --git a/app/components/chart/trends.js b/app/components/chart/trends.js index d0e3cc64df..71aac3ffdd 100644 --- a/app/components/chart/trends.js +++ b/app/components/chart/trends.js @@ -22,6 +22,7 @@ import bows from 'bows'; import React, { PropTypes, PureComponent } from 'react'; import ReactDOM from 'react-dom'; import sundial from 'sundial'; +import { translate } from 'react-i18next'; import Header from './header'; import SubNav from './trendssubnav'; @@ -35,7 +36,7 @@ const TrendsContainer = viz.containers.TrendsContainer; const reshapeBgClassesToBgBounds = viz.utils.reshapeBgClassesToBgBounds; const Loader = viz.components.Loader; -class Trends extends PureComponent { +const Trends = translate()(class extends PureComponent { static propTypes = { bgPrefs: PropTypes.object.isRequired, chartPrefs: PropTypes.object.isRequired, @@ -105,7 +106,7 @@ class Trends extends PureComponent { } formatDate(datetime) { - const timePrefs = this.props.timePrefs + const { timePrefs, t } = this.props; let timezone; if (!timePrefs.timezoneAware) { timezone = 'UTC'; @@ -113,7 +114,7 @@ class Trends extends PureComponent { else { timezone = timePrefs.timezoneName || 'UTC'; } - return sundial.formatInTimezone(datetime, timezone, 'MMM D, YYYY'); + return sundial.formatInTimezone(datetime, timezone, t('MMM D, YYYY')); } getNewDomain(current, extent) { @@ -500,6 +501,6 @@ class Trends extends PureComponent { focusedPoint={this.props.trendsState[currentPatientInViewId].focusedSmbg} /> ); } -} +}); export default Trends; diff --git a/app/components/chart/weekly.js b/app/components/chart/weekly.js index afc2866383..a3b990a659 100644 --- a/app/components/chart/weekly.js +++ b/app/components/chart/weekly.js @@ -20,6 +20,7 @@ var bows = require('bows'); var React = require('react'); var ReactDOM = require('react-dom'); var sundial = require('sundial'); +import { translate } from 'react-i18next'; // tideline dependencies & plugins var tidelineBlip = require('tideline/plugins/blip'); @@ -150,7 +151,7 @@ var WeeklyChart = React.createClass({ } }); -var Weekly = React.createClass({ +var Weekly = translate()(React.createClass({ chartType: 'weekly', log: bows('Weekly View'), propTypes: { @@ -297,8 +298,9 @@ var Weekly = React.createClass({ }, formatDate: function(datetime) { + const { t } = this.props; // even when timezoneAware, labels should be generated as if UTC; just trust me (JEB) - return sundial.formatInTimezone(datetime, 'UTC', 'MMM D, YYYY'); + return sundial.formatInTimezone(datetime, 'UTC', t('MMM D, YYYY')); }, getTitle: function(datetimeLocationEndpoints) { @@ -411,6 +413,6 @@ var Weekly = React.createClass({ } this.setState({showingValues: !this.state.showingValues}); } -}); +})); module.exports = Weekly; diff --git a/app/components/loginnav/loginnav.js b/app/components/loginnav/loginnav.js index abc334512b..56a03b6cd5 100644 --- a/app/components/loginnav/loginnav.js +++ b/app/components/loginnav/loginnav.js @@ -15,9 +15,10 @@ */ var React = require('react'); +import { translate } from 'react-i18next'; var Link = require('react-router').Link; -var LoginNav = React.createClass({ +var LoginNav = translate()(React.createClass({ propTypes: { page: React.PropTypes.string, hideLinks: React.PropTypes.bool, @@ -45,12 +46,13 @@ var LoginNav = React.createClass({ return null; } + var self = this; - var page = this.props.page; + const {page, t} = this.props; var href = '/signup'; var className = 'js-signup-link'; var icon = 'icon-add'; - var text = 'Sign up'; + var text = t('Sign up'); var handleClick = function() { self.props.trackMetric('Clicked Sign Up Link'); }; @@ -59,7 +61,7 @@ var LoginNav = React.createClass({ href = '/login'; className = 'js-login-link'; icon = 'icon-login'; - text = 'Log in'; + text = t('Log in'); handleClick = function() { self.props.trackMetric('Clicked Log In Link'); }; @@ -71,6 +73,6 @@ var LoginNav = React.createClass({ className={className}>{' ' + text} ); } -}); +})); -module.exports = LoginNav; \ No newline at end of file +module.exports = LoginNav; diff --git a/app/components/navbar/navbar.js b/app/components/navbar/navbar.js index 57260cecf3..825610c4f8 100644 --- a/app/components/navbar/navbar.js +++ b/app/components/navbar/navbar.js @@ -17,6 +17,7 @@ var React = require('react'); var IndexLink = require('react-router').IndexLink; var Link = require('react-router').Link; +import { translate } from 'react-i18next'; var _ = require('lodash'); var cx = require('classnames'); @@ -26,7 +27,7 @@ var NavbarPatientCard = require('../../components/navbarpatientcard'); var logoSrc = require('./images/tidepool-logo-408x46.png'); -var Navbar = React.createClass({ +export default translate('translation', {withRef: true})(React.createClass({ propTypes: { currentPage: React.PropTypes.string, user: React.PropTypes.object, @@ -128,7 +129,7 @@ var Navbar = React.createClass({ renderMenuSection: function() { var currentPage = (this.props.currentPage && this.props.currentPage[0] === '/') ? this.props.currentPage.slice(1) : this.props.currentPage; - var user = this.props.user; + const {user, t} = this.props; if (_.isEmpty(user)) { return
; @@ -180,7 +181,7 @@ var Navbar = React.createClass({
- {'Logged in as '} + {t('Logged in as ')} {displayName}
@@ -189,13 +190,13 @@ var Navbar = React.createClass({
@@ -225,6 +226,4 @@ var Navbar = React.createClass({ logout(); } } -}); - -module.exports = Navbar; +})); diff --git a/app/core/language.js b/app/core/language.js new file mode 100644 index 0000000000..529116ab55 --- /dev/null +++ b/app/core/language.js @@ -0,0 +1,49 @@ + +import i18n from 'i18next'; +import { reactI18nextModule } from 'react-i18next'; +import getLocale from 'browser-locale'; +import moment from 'moment'; + +// Update moment with the right language, for date display +i18n.on('languageChanged', lng => moment.locale(lng)); + +i18n + .use(reactI18nextModule) + .init({ + fallbackLng: 'en', + // i18next-browser-languagedetector doesn't work in my experience + lng: getLocale(), + + // To allow . in keys + keySeparator: false, + // To allow : in keys + nsSeparator: '|', + + debug: true, + + interpolation: { + escapeValue: false, // not needed for react!! + }, + + // If the translation is empty, return the key instead + returnEmptyString: false, + + react: { + wait: true, + // Needed for react < 16 + defaultTransParent: 'div' + }, + + resources: { + en: { + // Default namespace + translation: require('../../locales/en/translation.json') + }, + fr: { + // Default namespace + translation: require('../../locales/fr/translation.json') + } + } + }); + +export default i18n; diff --git a/app/pages/app/app.js b/app/pages/app/app.js index 132d513447..135870ac3d 100644 --- a/app/pages/app/app.js +++ b/app/pages/app/app.js @@ -18,6 +18,7 @@ import React from 'react'; import async from 'async'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; +import i18next from 'i18next'; import * as actions from '../../redux/actions'; @@ -99,7 +100,7 @@ export class AppComponent extends React.Component { var navbar = this.refs.navbar; if (navbar) { - navbar.hideDropdown(); + navbar.getWrappedInstance().hideDropdown(); } } @@ -418,6 +419,10 @@ export function mapStateToProps(state) { if (state.blip.loggedInUserId === state.blip.currentPatientInViewId) { userIsCurrentPatient = true; } + + if (user && user.profile && user.profile.language) { + i18next.changeLanguage(user.profile.language); + } } if (state.blip.currentPatientInViewId) { diff --git a/app/pages/login/login.js b/app/pages/login/login.js index 5da3d12a81..ba23eff1fa 100644 --- a/app/pages/login/login.js +++ b/app/pages/login/login.js @@ -17,6 +17,7 @@ import React from 'react'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; +import { translate } from 'react-i18next'; import * as actions from '../../redux/actions'; @@ -30,7 +31,7 @@ import LoginNav from '../../components/loginnav'; import LoginLogo from '../../components/loginlogo'; import SimpleForm from '../../components/simpleform'; -export let Login = React.createClass({ +export let Login = translate()(React.createClass({ propTypes: { acknowledgeNotification: React.PropTypes.func.isRequired, confirmSignup: React.PropTypes.func.isRequired, @@ -44,10 +45,12 @@ export let Login = React.createClass({ }, formInputs: function() { + const { t } = this.props; + return [ - { name: 'username', placeholder: 'Email', type: 'email', disabled: !!this.props.seedEmail }, - { name: 'password', placeholder: 'Password', type: 'password' }, - { name: 'remember', label: 'Remember me', type: 'checkbox' } + { name: 'username', placeholder: t('Email'), type: 'email', disabled: !!this.props.seedEmail }, + { name: 'password', placeholder: t('Password'), type: 'password' }, + { name: 'remember', label: t('Remember me'), type: 'checkbox' } ]; }, @@ -100,7 +103,9 @@ export let Login = React.createClass({ }, renderForm: function() { - var submitButtonText = this.props.working ? 'Logging in...' : 'Login'; + const { t } = this.props; + + var submitButtonText = this.props.working ? t('Logging in...') : t('Login'); var forgotPassword = this.renderForgotPassword(); return ( @@ -122,7 +127,8 @@ export let Login = React.createClass({ }, renderForgotPassword: function() { - return Forgot your password?; + const { t } = this.props; + return {t('Forgot your password?')}; }, handleSubmit: function(formValues) { @@ -202,7 +208,7 @@ export let Login = React.createClass({ componentWillMount: function() { this.doFetching(this.props); } -}); +})); /** * Expose "Smart" Component that is connect-ed to Redux diff --git a/app/pages/userprofile/userprofile.js b/app/pages/userprofile/userprofile.js index f82db8e0a0..3ed67ddeef 100644 --- a/app/pages/userprofile/userprofile.js +++ b/app/pages/userprofile/userprofile.js @@ -20,6 +20,7 @@ import { bindActionCreators } from 'redux'; import * as actions from '../../redux/actions'; +import {translate} from 'react-i18next'; import _ from 'lodash'; import { validateForm } from '../../core/validation'; @@ -30,7 +31,8 @@ import personUtils from '../../core/personutils'; import SimpleForm from '../../components/simpleform'; import PeopleList from '../../components/peoplelist'; -export var UserProfile = React.createClass({ +// A different namespace than the default can be specified in translate() +export var UserProfile = translate('translation', {withRef: true})(React.createClass({ propTypes: { fetchingUser: React.PropTypes.bool.isRequired, history: React.PropTypes.object.isRequired, @@ -39,12 +41,19 @@ export var UserProfile = React.createClass({ user: React.PropTypes.object }, - formInputs: [ - {name: 'fullName', label: 'Full name', type: 'text'}, - {name: 'username', label: 'Email', type: 'email'}, - {name: 'password', label: 'Password', type: 'password'}, - {name: 'passwordConfirm', label: 'Confirm password', type: 'password'} - ], + formInputs: function() { + const {t} = this.props; + return [ + {name: 'fullName', label: t('Full name'), type: 'text'}, + {name: 'username', label: t('Email'), type: 'email'}, + {name: 'lang', label: t('Language'), type: 'select', items: [ + {value: 'en', label: 'English'}, + {value: 'fr', label: 'Français'}, + ]}, + {name: 'password', label: t('Password'), type: 'password'}, + {name: 'passwordConfirm', label: t('Confirm password'), type: 'password'} + ]; + }, MESSAGE_TIMEOUT: 2000, @@ -63,7 +72,8 @@ export var UserProfile = React.createClass({ return { fullName: user.profile && user.profile.fullName, - username: user.username + username: user.username, + lang: user.profile && user.profile.language || undefined }; }, @@ -83,6 +93,7 @@ export var UserProfile = React.createClass({ }, render: function() { + const {t} = this.props; var form = this.renderForm(); var self = this; var handleClickBack = function(e) { @@ -101,11 +112,11 @@ export var UserProfile = React.createClass({
- {' ' + 'Back'} + {' ' + t('Back')}
-
Account
+
{t('Account')}
@@ -126,7 +137,7 @@ export var UserProfile = React.createClass({ return ( { + before(() => { + i18n.changeLanguage('en'); + }); + + it('should be able to change language', () => { + expect(i18n.t('Log in')).to.equal('Log in'); + + i18n.changeLanguage('fr'); + expect(i18n.t('Log in')).to.equal('Connexion'); + }); + + after(() => { + // Avoid affecting other tests + i18n.changeLanguage('en'); + }); +}); diff --git a/test/unit/components/chart/trends.test.js b/test/unit/components/chart/trends.test.js index f0437aead7..56c45e6f47 100644 --- a/test/unit/components/chart/trends.test.js +++ b/test/unit/components/chart/trends.test.js @@ -30,6 +30,7 @@ import Trends from '../../../../app/components/chart/trends'; import { shallow } from 'enzyme'; import { MGDL_UNITS } from '../../../../app/core/constants'; import { components as vizComponents } from '@tidepool/viz'; +import i18next from '../../../../app/core/language'; const { Loader } = vizComponents; @@ -88,6 +89,7 @@ describe('Trends', () => { trendsState: { '1234': {}, }, + t: i18next.t.bind(i18next), loading: false, onUpdateChartDateRange: sinon.stub(), updateDatetimeLocation: sinon.stub(), @@ -95,7 +97,7 @@ describe('Trends', () => { let wrapper; beforeEach(() => { - wrapper = shallow(); + wrapper = shallow(); }) afterEach(() => { @@ -120,7 +122,7 @@ describe('Trends', () => { let instance; beforeEach(() => { - wrapper = shallow(); + wrapper = shallow(); instance = wrapper.instance(); }); diff --git a/test/unit/components/chart/weekly.test.js b/test/unit/components/chart/weekly.test.js index d503a47d00..e5f39099ba 100644 --- a/test/unit/components/chart/weekly.test.js +++ b/test/unit/components/chart/weekly.test.js @@ -32,6 +32,7 @@ import Weekly from '../../../../app/components/chart/weekly'; import { shallow } from 'enzyme'; import { MGDL_UNITS } from '../../../../app/core/constants'; import { components as vizComponents } from '@tidepool/viz'; +import i18next from '../../../../app/core/language'; const { Loader } = vizComponents; @@ -77,11 +78,12 @@ describe('Weekly', () => { loading: false, onUpdateChartDateRange: sinon.stub(), updateDatetimeLocation: sinon.stub(), + t: i18next.t.bind(i18next) }; let wrapper; beforeEach(() => { - wrapper = shallow(); + wrapper = shallow(); }) afterEach(() => { @@ -110,7 +112,7 @@ describe('Weekly', () => { }; beforeEach(() => { - wrapper = shallow(); + wrapper = shallow(); instance = wrapper.instance(); }); diff --git a/test/unit/components/navbar.test.js b/test/unit/components/navbar.test.js index 29472f333c..1c593a8222 100644 --- a/test/unit/components/navbar.test.js +++ b/test/unit/components/navbar.test.js @@ -3,6 +3,7 @@ import React from 'react'; import { shallow } from 'enzyme'; +import '../../../app/core/language'; import Navbar from '../../../app/components/navbar'; const expect = chai.expect; @@ -21,7 +22,10 @@ describe('Navbar', () => { ); }); - wrapper = shallow(); + // The HOC makes it difficult to access / set properties of the pure component, + // in this case the trackMetric property of PureNavbar. So we test + // on the pure component instead. + wrapper = shallow(); }); after(() => { diff --git a/test/unit/pages/userprofile.test.js b/test/unit/pages/userprofile.test.js index 3ddb9ed591..18575e7538 100644 --- a/test/unit/pages/userprofile.test.js +++ b/test/unit/pages/userprofile.test.js @@ -47,7 +47,7 @@ describe('UserProfile', function () { }; var elem = React.createElement(UserProfile, props); var render = TestUtils.renderIntoDocument(elem); - var state = render.getInitialState(); + var state = render.getWrappedInstance().getInitialState(); expect(state.formValues.username).to.equal('foo@bar.com'); expect(state.formValues.fullName).to.equal('Gordon Dent'); @@ -105,4 +105,4 @@ describe('UserProfile', function () { expect(result.fetchingUser).to.equal(state.working.fetchingUser.inProgress); }); }); -}); \ No newline at end of file +}); diff --git a/yarn.lock b/yarn.lock index 6edff5232c..ce097fc227 100644 --- a/yarn.lock +++ b/yarn.lock @@ -180,6 +180,12 @@ anymatch@^1.3.0: arrify "^1.0.0" micromatch "^2.1.5" +append-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + dependencies: + buffer-equal "^1.0.0" + aproba@^1.0.3, aproba@~1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0" @@ -371,6 +377,14 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.8.0: esutils "^2.0.2" js-tokens "^3.0.0" +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + babel-core@6.13.2: version "6.13.2" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.13.2.tgz#f761e1199361d5a6ed16f93ce801ad50acadb338" @@ -610,7 +624,7 @@ babel-plugin-syntax-class-properties@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" -babel-plugin-syntax-decorators@^6.13.0: +babel-plugin-syntax-decorators@^6.1.18, babel-plugin-syntax-decorators@^6.13.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" @@ -683,6 +697,14 @@ babel-plugin-transform-class-properties@^6.24.1, babel-plugin-transform-class-pr babel-runtime "^6.22.0" babel-template "^6.24.1" +babel-plugin-transform-decorators-legacy@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.4.tgz#741b58f6c5bce9e6027e0882d9c994f04f366925" + dependencies: + babel-plugin-syntax-decorators "^6.1.18" + babel-runtime "^6.2.0" + babel-template "^6.3.0" + babel-plugin-transform-decorators@^6.13.0, babel-plugin-transform-decorators@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" @@ -1063,6 +1085,13 @@ babel-runtime@^6.18.0, babel-runtime@^6.2.0, babel-runtime@^6.22.0, babel-runtim core-js "^2.4.0" regenerator-runtime "^0.10.0" +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + babel-template@^6.24.1, babel-template@^6.7.0, babel-template@^6.9.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.24.1.tgz#04ae514f1f93b3a2537f2a0f60a5a45fb8308333" @@ -1073,6 +1102,16 @@ babel-template@^6.24.1, babel-template@^6.7.0, babel-template@^6.9.0: babylon "^6.11.0" lodash "^4.2.0" +babel-template@^6.3.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + babel-traverse@^6.0.20, babel-traverse@^6.13.0, babel-traverse@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.24.1.tgz#ab36673fd356f9a0948659e7b338d5feadb31695" @@ -1087,6 +1126,20 @@ babel-traverse@^6.0.20, babel-traverse@^6.13.0, babel-traverse@^6.24.1: invariant "^2.2.0" lodash "^4.2.0" +babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + babel-types@^6.0.19, babel-types@^6.13.0, babel-types@^6.19.0, babel-types@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" @@ -1096,10 +1149,23 @@ babel-types@^6.0.19, babel-types@^6.13.0, babel-types@^6.19.0, babel-types@^6.24 lodash "^4.2.0" to-fast-properties "^1.0.1" +babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + babylon@^6.0.18, babylon@^6.11.0, babylon@^6.15.0, babylon@^6.7.0: version "6.17.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.0.tgz#37da948878488b9c4e3c4038893fa3314b3fc932" +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" @@ -1264,6 +1330,10 @@ breakable@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/breakable/-/breakable-1.0.0.tgz#784a797915a38ead27bad456b5572cb4bbaa78c1" +browser-locale@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/browser-locale/-/browser-locale-1.0.3.tgz#3c6646e6dd5f7a3c62ff51d4ae618a5dd3126911" + browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" @@ -1289,6 +1359,14 @@ buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" +buffer-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + +buffer-from@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" + buffer-shims@^1.0.0, buffer-shims@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" @@ -1521,10 +1599,34 @@ cliui@^2.1.0: right-align "^0.1.1" wordwrap "0.0.2" +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + +clone@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + clone@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + +cloneable-readable@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.2.tgz#d591dee4a8f8bc15da43ce97dceeba13d43e2a65" + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + cmd-shim@~2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" @@ -1586,6 +1688,10 @@ colors@^1.1.0, colors@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" +colors@~1.2.0-rc0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.1.tgz#f4a3d302976aaf042356ba1ade3b1a2c62d9d794" + columnify@~1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" @@ -1696,6 +1802,15 @@ concat-stream@^1.4.6, concat-stream@^1.5.2: readable-stream "^2.2.2" typedarray "^0.0.6" +concat-stream@~1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + config-chain@~1.1.10, config-chain@~1.1.8: version "1.1.11" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" @@ -1757,6 +1872,10 @@ convert-source-map@^1.1.0: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" +convert-source-map@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + cookie-signature@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-0.0.1.tgz#13d3603b5cf63befbf85a8801e37aa900db46985" @@ -2105,6 +2224,12 @@ debug@2.6.3: dependencies: ms "0.7.2" +debug@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -2325,6 +2450,15 @@ duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" +duplexify@^3.5.3: + version "3.5.4" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.4.tgz#4bb46c1796eabebeec4ca9a2e66b808cb7a3d8b4" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + duration-js@3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/duration-js/-/duration-js-3.6.0.tgz#dcfbec470f844fa043b7ee2ef7edb329e5060363" @@ -2369,6 +2503,12 @@ encoding@^0.1.11: dependencies: iconv-lite "~0.4.13" +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + dependencies: + once "^1.4.0" + engine.io-client@1.6.9: version "1.6.9" resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.6.9.tgz#1d6ad48048a5083c95096943b29d36efdb212401" @@ -2438,6 +2578,10 @@ enzyme@2.4.1: object.assign "^4.0.3" object.values "^1.0.3" +eol@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" + errno@^0.1.1, errno@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" @@ -2838,6 +2982,18 @@ fbjs@^0.8.1, fbjs@^0.8.4, fbjs@^0.8.9: setimmediate "^1.0.5" ua-parser-js "^0.7.9" +fbjs@^0.8.16: + version "0.8.16" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.9" + fd-slicer@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" @@ -2921,6 +3077,13 @@ flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" +flush-write-stream@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" + follow-redirects@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37" @@ -3043,6 +3206,13 @@ fs-extra@~0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + dependencies: + graceful-fs "^4.1.11" + through2 "^2.0.3" + fs-vacuum@~1.2.7, fs-vacuum@~1.2.9: version "1.2.10" resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36" @@ -3113,6 +3283,10 @@ function-bind@^1.0.2, function-bind@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + gauge@~1.2.5: version "1.2.7" resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" @@ -3209,6 +3383,28 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + dependencies: + extend "^3.0.0" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" + unique-stream "^2.0.2" + "glob@3 || 4", glob@3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.3.tgz#e313eeb249c7affaa5c475286b0e115b59839467" @@ -3281,6 +3477,10 @@ globals@^9.0.0, globals@^9.2.0: version "9.17.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -3298,7 +3498,7 @@ good-listener@^1.2.2: dependencies: delegate "^3.1.2" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@~4.1.3, graceful-fs@~4.1.6: +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@~4.1.3, graceful-fs@~4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -3322,6 +3522,12 @@ gsap@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/gsap/-/gsap-1.19.0.tgz#f36b78c6b1a449028d89efbb4c161db29f5991dd" +gulp-sort@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/gulp-sort/-/gulp-sort-2.0.0.tgz#c6762a2f1f0de0a3fc595a21599d3fac8dba1aca" + dependencies: + through2 "^2.0.1" + hakken@0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/hakken/-/hakken-0.1.8.tgz#e21e104c94b800fc3911e835ddc9bb90babdc6c2" @@ -3379,6 +3585,10 @@ has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + has-unicode@^2.0.0, has-unicode@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -3448,6 +3658,10 @@ hoist-non-react-statics@^1.0.3, hoist-non-react-statics@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz#aa448cf0986d55cc40773b17174b7dd066cb7cfb" +hoist-non-react-statics@^2.3.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz#d2ca2dfc19c5a91c5a6615ce8e564ef0347e2a40" + home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -3476,6 +3690,12 @@ html-minifier@^3.2.3: relateurl "0.2.x" uglify-js "3.0.x" +html-parse-stringify2@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-parse-stringify2/-/html-parse-stringify2-2.0.1.tgz#dc5670b7292ca158b7bc916c9a6735ac8872834a" + dependencies: + void-elements "^2.0.1" + html-webpack-include-assets-plugin@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/html-webpack-include-assets-plugin/-/html-webpack-include-assets-plugin-0.0.5.tgz#ca38767d019189414c0e8cbaa0e8b32557031a8d" @@ -3588,6 +3808,25 @@ https-proxy-agent@1: debug "2" extend "3" +i18next-parser@^1.0.0-beta6: + version "1.0.0-beta6" + resolved "https://registry.yarnpkg.com/i18next-parser/-/i18next-parser-1.0.0-beta6.tgz#268c2ebbaa48584f9ea644b64bcc22dfac057847" + dependencies: + colors "~1.2.0-rc0" + commander "~2.9.0" + concat-stream "~1.6.0" + eol "^0.9.1" + gulp-sort "^2.0.0" + lodash "~4.17.4" + through2 "~2.0.3" + vinyl "~2.0.1" + vinyl-fs "^3.0.2" + yamljs "^0.3.0" + +i18next@^10.6.0: + version "10.6.0" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-10.6.0.tgz#90ffd9f9bc617f34b9a12e037260f524445f7684" + iconv-lite@0.4.15, iconv-lite@^0.4.5, iconv-lite@~0.4.13: version "0.4.15" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" @@ -3688,6 +3927,12 @@ invariant@^2.0.0, invariant@^2.1.0, invariant@^2.2.0, invariant@^2.2.1: dependencies: loose-envify "^1.0.0" +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + dependencies: + loose-envify "^1.0.0" + invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" @@ -3710,6 +3955,13 @@ is-absolute@^0.1.7: dependencies: is-relative "^0.1.0" +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -3801,6 +4053,10 @@ is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: jsonpointer "^4.0.0" xtend "^4.0.0" +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + is-number@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" @@ -3853,13 +4109,19 @@ is-relative@^0.1.0: version "0.1.3" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.1.3.tgz#905fee8ae86f45b3ec614bc3c15c869df0876e82" +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + dependencies: + is-unc-path "^1.0.0" + is-resolvable@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" dependencies: tryit "^1.0.1" -is-stream@^1.0.1: +is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -3881,6 +4143,24 @@ is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + dependencies: + unc-path-regex "^0.1.2" + +is-utf8@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + +is-windows@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -3939,6 +4219,10 @@ js-tokens@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + js-yaml@^3.4.3, js-yaml@^3.5.1: version "3.8.3" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766" @@ -4165,12 +4449,24 @@ lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + dependencies: + readable-stream "^2.0.5" + lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" dependencies: invert-kv "^1.0.0" +lead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + dependencies: + flush-write-stream "^1.0.2" + less-loader@2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-2.2.3.tgz#b6d8f8139c8493df09d992a93a00734b08f84528" @@ -4516,6 +4812,10 @@ lodash@4.5.1: version "4.5.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.5.1.tgz#80e8a074ca5f3893a6b1c10b2a636492d710c316" +lodash@^4.17.4, lodash@~4.17.4: + version "4.17.5" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" + log4js@^0.6.31: version "0.6.38" resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" @@ -4795,6 +5095,10 @@ ms@0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + mute-stream@0.0.5, mute-stream@~0.0.4: version "0.0.5" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" @@ -4998,7 +5302,7 @@ normalize-package-data@^2.0.0, "normalize-package-data@~1.0.1 || ^2.0.0", normal semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1: +normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: @@ -5017,6 +5321,12 @@ normalize-url@^1.4.0: query-string "^4.1.0" sort-keys "^1.0.0" +now-and-later@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.0.tgz#bc61cbb456d79cb32207ce47ca05136ff2e7d6ee" + dependencies: + once "^1.3.2" + npm-cache-filename@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" @@ -5324,7 +5634,7 @@ object-is@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" -object-keys@^1.0.10, object-keys@^1.0.8: +object-keys@^1.0.10, object-keys@^1.0.11, object-keys@^1.0.8: version "1.0.11" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" @@ -5336,6 +5646,15 @@ object.assign@^4.0.3: function-bind "^1.1.0" object-keys "^1.0.10" +object.assign@^4.0.4: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -5362,7 +5681,7 @@ on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" -once@^1.3.0, once@^1.3.3, once@~1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.3.3, once@^1.4.0, once@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -5394,7 +5713,7 @@ optimist@0.6.1, optimist@>=0.3.5, optimist@^0.6.1, optimist@~0.6.0, optimist@~0. wordwrap "~0.0.2" optional@0.1.3: - version v0.1.3 + version "0.1.3" resolved "https://registry.yarnpkg.com/optional/-/optional-0.1.3.tgz#f87537517b59a5e732cfd8f18e4f7eea7ab4761e" optionator@^0.8.1: @@ -5412,6 +5731,12 @@ options@>=0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + dependencies: + readable-stream "^2.0.1" + original@>=0.0.5: version "1.0.0" resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" @@ -5536,6 +5861,10 @@ path-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + path-exists@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-1.0.0.tgz#d5a8998eb71ef37a74c34eb0d9eba6e878eea081" @@ -5917,6 +6246,10 @@ private@^0.1.6, private@~0.1.5: version "0.1.7" resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" @@ -5952,6 +6285,14 @@ prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8: fbjs "^0.8.9" loose-envify "^1.3.1" +prop-types@^15.6.0: + version "15.6.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" + dependencies: + fbjs "^0.8.16" + loose-envify "^1.3.1" + object-assign "^4.1.1" + proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -5984,6 +6325,21 @@ pseudomap@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.5: + version "1.4.0" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb" + dependencies: + duplexify "^3.5.3" + inherits "^2.0.3" + pump "^2.0.0" + punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" @@ -6189,6 +6545,14 @@ react-hot-loader@3.0.0-beta.2: redbox-react "^1.2.3" source-map "^0.4.4" +react-i18next@^7.5.1: + version "7.5.1" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-7.5.1.tgz#5fe4cdfd2ecba22cc967213d880ab4cdd2c2ce61" + dependencies: + hoist-non-react-statics "^2.3.1" + html-parse-stringify2 "2.0.1" + prop-types "^15.6.0" + react-input-autosize@^1.1.3: version "1.1.4" resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-1.1.4.tgz#cbc45072d4084ddc57806db8e3b34e644b8366ac" @@ -6377,6 +6741,18 @@ readable-stream@1.1, readable-stream@1.1.x, readable-stream@^1.0.27-1, readable- isarray "0.0.1" string_decoder "~0.10.x" +readable-stream@^2.0.0, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.3.3, readable-stream@^2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.5.tgz#b4f85003a938cbb6ecbce2a124fb1012bd1a838d" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + readable-stream@~2.0.0, readable-stream@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" @@ -6563,6 +6939,10 @@ regenerator-runtime@^0.10.0: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + regenerator-runtime@^0.9.5, regenerator-runtime@~0.9.5: version "0.9.6" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" @@ -6624,6 +7004,21 @@ relateurl@0.2.x: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + dependencies: + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" + remove-trailing-separator@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" @@ -6656,6 +7051,10 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + request-progress@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-2.0.1.tgz#5d36bb57961c673aa5b788dbc8141fdf23b44e08" @@ -6807,6 +7206,12 @@ resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" +resolve-options@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + dependencies: + value-or-function "^3.0.0" + resolve@^1.1.6: version "1.3.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" @@ -6900,6 +7305,10 @@ safe-buffer@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" +safe-buffer@^5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + safe-json-stringify@~1: version "1.0.4" resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.0.4.tgz#81a098f447e4bbc3ff3312a243521bc060ef5911" @@ -7350,6 +7759,10 @@ stream-combiner@~0.0.4: dependencies: duplexer "~0.1.1" +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + stream-to-buffer@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz#26799d903ab2025c9bd550ac47171b00f8dd80a9" @@ -7393,6 +7806,12 @@ string_decoder@~1.0.0: dependencies: buffer-shims "~1.0.0" +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + stringmap@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/stringmap/-/stringmap-0.2.2.tgz#556c137b258f942b8776f5b2ef582aa069d7d1b1" @@ -7567,6 +7986,20 @@ throttleit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" +through2-filter@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-2.0.0.tgz#60bc55a0dacb76085db1f9dae99ab43f83d622ec" + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@^2.0.0, through2@^2.0.1, through2@^2.0.3, through2@~2.0.0, through2@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + through@2, through@^2.3.6, through@~2.3, through@~2.3.1, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -7622,14 +8055,27 @@ tmp@0.0.28, tmp@0.0.x: dependencies: os-tmpdir "~1.0.1" +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + dependencies: + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" + to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" -to-fast-properties@^1.0.1: +to-fast-properties@^1.0.1, to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" +to-through@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + dependencies: + through2 "^2.0.3" + toposort@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.3.tgz#f02cd8a74bd8be2fc0e98611c3bacb95a171869c" @@ -7758,6 +8204,10 @@ umask@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -7784,6 +8234,13 @@ unique-slug@^2.0.0: dependencies: imurmurhash "^0.1.4" +unique-stream@^2.0.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.2.1.tgz#5aa003cfbe94c5ff866c4e7d668bb1c4dbadb369" + dependencies: + json-stable-stringify "^1.0.0" + through2-filter "^2.0.0" + unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -7898,6 +8355,10 @@ validate-npm-package-name@~2.2.2: dependencies: builtins "0.0.7" +value-or-function@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + vary@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" @@ -7920,13 +8381,70 @@ verror@^1.4.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vinyl-fs@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.2.tgz#1b86258844383f57581fcaac081fe09ef6d6d752" + dependencies: + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" + graceful-fs "^4.0.0" + is-valid-glob "^1.0.0" + lazystream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" + through2 "^2.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" + +vinyl-sourcemap@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + dependencies: + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" + +vinyl@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c" + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +vinyl@~2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.0.2.tgz#0a3713d8d4e9221c58f10ca16c0116c9e25eda7c" + dependencies: + clone "^1.0.0" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + is-stream "^1.1.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" dependencies: indexof "0.0.1" -void-elements@^2.0.0: +void-elements@^2.0.0, void-elements@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" @@ -8142,7 +8660,7 @@ xregexp@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" -xtend@^4.0.0: +xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -8154,6 +8672,13 @@ yallist@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +yamljs@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.3.0.tgz#dc060bf267447b39f7304e9b2bfbe8b5a7ddb03b" + dependencies: + argparse "^1.0.7" + glob "^7.0.5" + yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"