From 376b2c518a30c3c34c37a38162c236e21fcdddab Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Thu, 30 May 2019 15:41:15 -0300 Subject: [PATCH 01/42] i18n basic setup --- package.json | 2 + src/App.js | 24 +++++++---- src/components/Header/Header.js | 7 +++- src/i18n.js | 73 +++++++++++++++++++++++++++++++++ src/locales/en-UK/Header.json | 3 ++ src/locales/en-UK/common.json | 6 +++ src/locales/en-US/Header.json | 3 ++ src/locales/en-US/common.json | 3 ++ src/locales/en/Header.json | 3 ++ src/locales/en/common.json | 5 +++ yarn.lock | 27 ++++++++++++ 11 files changed, 145 insertions(+), 11 deletions(-) create mode 100755 src/i18n.js create mode 100644 src/locales/en-UK/Header.json create mode 100755 src/locales/en-UK/common.json create mode 100644 src/locales/en-US/Header.json create mode 100755 src/locales/en-US/common.json create mode 100644 src/locales/en/Header.json create mode 100755 src/locales/en/common.json diff --git a/package.json b/package.json index 29e775d09..9fb3da250 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,7 @@ "dicom-parser": "^1.8.3", "dicomweb-client": "^0.4.2", "hammerjs": "^2.0.8", + "i18next": "^15.1.3", "lodash.isequal": "4.5.0", "moment": "^2.24.0", "ohif-core": "0.5.5", @@ -88,6 +89,7 @@ "react-bootstrap-modal": "^4.2.0", "react-dnd": "^7.0.2", "react-dnd-html5-backend": "^7.0.2", + "react-i18next": "^10.11.0", "react-redux": "^6.0.0", "react-resize-detector": "^3.4.0", "react-router": "^4.3.1", diff --git a/src/App.js b/src/App.js index 7d3718fd3..8141279fc 100644 --- a/src/App.js +++ b/src/App.js @@ -3,6 +3,7 @@ import { BrowserRouter as Router } from 'react-router-dom'; import { Provider } from 'react-redux'; import { createStore, combineReducers } from 'redux'; import PropTypes from 'prop-types'; +import { I18nextProvider } from 'react-i18next'; import OHIF from 'ohif-core'; import './config'; import ui from './redux/ui.js'; @@ -21,6 +22,7 @@ import { } from './utils/index.js'; import setupTools from './setupTools'; import ConnectedToolContextMenu from './connectedComponents/ConnectedToolContextMenu'; +import i18n from './i18n'; const { ExtensionManager } = OHIF.extensions; const { reducers, localStorage } = OHIF.redux; @@ -107,15 +109,19 @@ class App extends Component { if (userManager) { return ( - - - - - - - - - + + + + + + + + + + + ); } diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 010baa830..0dd96b529 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -2,6 +2,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { Link, withRouter } from 'react-router-dom'; import { Dropdown } from 'react-viewerbase'; +import { withTranslation } from 'react-i18next'; import './Header.css'; import OHIFLogo from '../OHIFLogo/OHIFLogo.js'; import ConnectedUserPreferencesModal from '../../connectedComponents/ConnectedUserPreferencesModal.js'; @@ -69,7 +70,9 @@ class Header extends Component {
- INVESTIGATIONAL USE ONLY + + INVESTIGATIONAL USE ONLY {this.props.t('header_test')} +
@@ -78,4 +81,4 @@ class Header extends Component { } } -export default withRouter(Header); +export default withTranslation('Header')(withRouter(Header)); diff --git a/src/i18n.js b/src/i18n.js new file mode 100755 index 000000000..b2fa0104e --- /dev/null +++ b/src/i18n.js @@ -0,0 +1,73 @@ +import i18n from 'i18next'; +import { initReactI18next } from 'react-i18next'; + +const currentLanguage = process.env.APP_LANG || 'en-US'; + +function getDefaultLanguage() { + const mainLanguage = currentLanguage.match(/(.*.)(-)/); + return mainLanguage !== null ? mainLanguage[1] : null; +} + +function getCleanKeyForNameSpaces(key) { + const regexKeyCleaner = new RegExp( + `^(\\.\\/${currentLanguage}\\/)(.*.)(\\.json)$` + ); + const cleanedKey = key.match(regexKeyCleaner); + return cleanedKey !== null ? cleanedKey[2] : null; +} + +function getCleanKeyForDefaults(key) { + const regexKeyCleaner = new RegExp( + `^(\\.\\/${getDefaultLanguage()}\\/)(.*.)(\\.json)$` + ); + const cleanedKey = key.match(regexKeyCleaner); + return cleanedKey !== null ? cleanedKey[2] : null; +} + +function getLocales() { + const currentLangList = {}; + const defaultLangList = {}; + const locales = {}; + const context = require.context(`./locales`, true, /\.json$/); + + context.keys().forEach(key => { + const isTheSameOfCurrentLang = key.indexOf(currentLanguage) >= 0; + const isADefaultLang = key.indexOf(`${getDefaultLanguage()}/`) >= 0; + + if (isTheSameOfCurrentLang) { + currentLangList[getCleanKeyForNameSpaces(key)] = context(key); + } + + if (isADefaultLang) { + defaultLangList[getCleanKeyForDefaults(key)] = context(key); + } + }); + + locales[currentLanguage] = { ...currentLangList }; + locales[getDefaultLanguage()] = { ...defaultLangList }; + return locales; +} + +console.log(getLocales(), ' > ', getDefaultLanguage()); + +// console.log(getLocales(), currentLanguage, getDefaultLanguage()); + +i18n.use(initReactI18next).init({ + // resources: getLocales(), + resources: getLocales(), + fallbackLng: getDefaultLanguage(), + lng: currentLanguage, + debug: true, + + // have a common namespace used around the full app + keySeparator: false, // uses content as keys + interpolation: { + escapeValue: false, + }, + + react: { + wait: true, + }, +}); + +export default i18n; diff --git a/src/locales/en-UK/Header.json b/src/locales/en-UK/Header.json new file mode 100644 index 000000000..d4909843d --- /dev/null +++ b/src/locales/en-UK/Header.json @@ -0,0 +1,3 @@ +{ + "header_test": "Joao Grandao" +} diff --git a/src/locales/en-UK/common.json b/src/locales/en-UK/common.json new file mode 100755 index 000000000..f47a451d8 --- /dev/null +++ b/src/locales/en-UK/common.json @@ -0,0 +1,6 @@ +{ + "common": { + "Welcome to React": "Welcome to React and react-i18next", + "welcomeMsg": "welcome" + } +} diff --git a/src/locales/en-US/Header.json b/src/locales/en-US/Header.json new file mode 100644 index 000000000..383d28867 --- /dev/null +++ b/src/locales/en-US/Header.json @@ -0,0 +1,3 @@ +{ + "header_test": "$t(common:test)" +} diff --git a/src/locales/en-US/common.json b/src/locales/en-US/common.json new file mode 100755 index 000000000..1d6ab1537 --- /dev/null +++ b/src/locales/en-US/common.json @@ -0,0 +1,3 @@ +{ + "tests___": "test common" +} diff --git a/src/locales/en/Header.json b/src/locales/en/Header.json new file mode 100644 index 000000000..383d28867 --- /dev/null +++ b/src/locales/en/Header.json @@ -0,0 +1,3 @@ +{ + "header_test": "$t(common:test)" +} diff --git a/src/locales/en/common.json b/src/locales/en/common.json new file mode 100755 index 000000000..6b89c3168 --- /dev/null +++ b/src/locales/en/common.json @@ -0,0 +1,5 @@ +{ + "Welcome to React": "Welcome to React and react-i18next", + "welcomeMsg": "welcome", + "test": "Coffee time" +} diff --git a/yarn.lock b/yarn.lock index 7b88a30c5..b5373f36e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6159,6 +6159,13 @@ html-minifier@^3.2.3: relateurl "0.2.x" uglify-js "3.4.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" + integrity sha1-3FZwtyksoVi3vJFsmmc1rIhyg0o= + dependencies: + void-elements "^2.0.1" + html-tags@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" @@ -6294,6 +6301,13 @@ husky@1.3.x: run-node "^1.0.0" slash "^2.0.0" +i18next@^15.1.3: + version "15.1.3" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-15.1.3.tgz#f1984cbee0e3cb00cff9008b037264289ce8840a" + integrity sha512-hN2DZLoRSY2h/RYeNqth5XxV4N1ekKGSJDCGhFmmuXkOCAfK5CkUG4VBv9OBXrvf93xApv0KKBVrb0zJP31EKg== + dependencies: + "@babel/runtime" "^7.3.1" + iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -11592,6 +11606,14 @@ react-error-overlay@^5.1.4: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-5.1.4.tgz#88dfb88857c18ceb3b9f95076f850d7121776991" integrity sha512-fp+U98OMZcnduQ+NSEiQa4s/XMsbp+5KlydmkbESOw4P69iWZ68ZMFM5a2BuE0FgqPBKApJyRuYHR95jM8lAmg== +react-i18next@^10.11.0: + version "10.11.0" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-10.11.0.tgz#a6854e556d3aff9f5f161b4aa871d43cfff6bd9b" + integrity sha512-jmxLZK8mf+KxG3RUIiu/COperTq1c7+iHNsna7LODOYEYaoj6EXFuchOytnB80GoUOb0JC1csT37Zp+U5nPQqQ== + dependencies: + "@babel/runtime" "^7.3.1" + html-parse-stringify2 "2.0.1" + react-is@^16.3.2, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.2, react-is@^16.8.4, react-is@^16.8.6: version "16.8.6" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" @@ -14541,6 +14563,11 @@ vm-browserify@0.0.4: dependencies: indexof "0.0.1" +void-elements@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + vtk.js@^8.3.11: version "8.4.9" resolved "https://registry.yarnpkg.com/vtk.js/-/vtk.js-8.4.9.tgz#139d3cf2f36139e836fc1cf360b47e0d05f0b3be" From 543d8d33c1cb8523cb381b02a7855947ecb69c4e Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Mon, 3 Jun 2019 17:56:36 -0300 Subject: [PATCH 02/42] i18n - extension extraction --- extensions/ohif-i18n/.babelrc | 14 + extensions/ohif-i18n/.editorconfig | 9 + extensions/ohif-i18n/.gitignore | 26 + extensions/ohif-i18n/LICENSE | 21 + extensions/ohif-i18n/package.json | 73 + extensions/ohif-i18n/rollup.config.js | 68 + extensions/ohif-i18n/src/i18n.js | 70 + extensions/ohif-i18n/src/index.js | 1 + .../ohif-i18n/src/locales/en-UK/Header.json | 3 + .../ohif-i18n/src/locales/en-UK/common.json | 6 + .../ohif-i18n/src/locales/en-US/Header.json | 3 + .../ohif-i18n/src/locales/en-US/common.json | 3 + .../ohif-i18n/src/locales/en/Header.json | 3 + .../ohif-i18n/src/locales/en/common.json | 5 + extensions/ohif-i18n/yarn.lock | 3929 +++++++++++++++++ package.json | 2 +- src/locales/en/common.json | 2 +- 17 files changed, 4236 insertions(+), 2 deletions(-) create mode 100644 extensions/ohif-i18n/.babelrc create mode 100644 extensions/ohif-i18n/.editorconfig create mode 100644 extensions/ohif-i18n/.gitignore create mode 100644 extensions/ohif-i18n/LICENSE create mode 100644 extensions/ohif-i18n/package.json create mode 100644 extensions/ohif-i18n/rollup.config.js create mode 100755 extensions/ohif-i18n/src/i18n.js create mode 100644 extensions/ohif-i18n/src/index.js create mode 100644 extensions/ohif-i18n/src/locales/en-UK/Header.json create mode 100755 extensions/ohif-i18n/src/locales/en-UK/common.json create mode 100644 extensions/ohif-i18n/src/locales/en-US/Header.json create mode 100755 extensions/ohif-i18n/src/locales/en-US/common.json create mode 100644 extensions/ohif-i18n/src/locales/en/Header.json create mode 100755 extensions/ohif-i18n/src/locales/en/common.json create mode 100644 extensions/ohif-i18n/yarn.lock diff --git a/extensions/ohif-i18n/.babelrc b/extensions/ohif-i18n/.babelrc new file mode 100644 index 000000000..430b9904b --- /dev/null +++ b/extensions/ohif-i18n/.babelrc @@ -0,0 +1,14 @@ +{ + "presets": [ + ["@babel/preset-env", { + "targets": { + "ie": "11" + } + }], + "@babel/preset-react" + ], + "plugins": [ + "@babel/plugin-proposal-class-properties", + "@babel/plugin-transform-runtime" + ] +} diff --git a/extensions/ohif-i18n/.editorconfig b/extensions/ohif-i18n/.editorconfig new file mode 100644 index 000000000..9d08a1a82 --- /dev/null +++ b/extensions/ohif-i18n/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/extensions/ohif-i18n/.gitignore b/extensions/ohif-i18n/.gitignore new file mode 100644 index 000000000..32c3cd466 --- /dev/null +++ b/extensions/ohif-i18n/.gitignore @@ -0,0 +1,26 @@ + +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# dependencies +node_modules + +# builds +build +dist +.rpt2_cache + +# misc +.DS_Store +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.idea + +yalc.lock +.yalc \ No newline at end of file diff --git a/extensions/ohif-i18n/LICENSE b/extensions/ohif-i18n/LICENSE new file mode 100644 index 000000000..19e20dd35 --- /dev/null +++ b/extensions/ohif-i18n/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Open Health Imaging Foundation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/extensions/ohif-i18n/package.json b/extensions/ohif-i18n/package.json new file mode 100644 index 000000000..2b09a84f4 --- /dev/null +++ b/extensions/ohif-i18n/package.json @@ -0,0 +1,73 @@ +{ + "name": "ohif-i18n", + "version": "0.0.1", + "description": "OHIF extension internationalization", + "author": "OHIF", + "license": "MIT", + "repository": "OHIF/Viewers", + "main": "dist/index.umd.js", + "module": "dist/index.es.js", + "jsnext:main": "dist/index.es.js", + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "scripts": { + "build": "rollup -c", + "prepublishOnly": "npm run build" + }, + "peerDependencies": { + "react-i18next": "^10.11.0", + "i18next": "^15.1.3" + }, + "devDependencies": { + "@babel/core": "^7.2.2", + "@babel/plugin-external-helpers": "^7.2.0", + "@babel/plugin-proposal-class-properties": "^7.2.3", + "@babel/plugin-transform-runtime": "^7.2.0", + "@babel/preset-env": "^7.2.3", + "@babel/preset-react": "^7.0.0", + "babel-eslint": "^10.0.1", + "cross-env": "^5.2.0", + "eslint": "5.13.0", + "eslint-plugin-import": "^2.14.0", + "eslint-plugin-node": "^8.0.0", + "eslint-plugin-promise": "^4.0.1", + "eslint-plugin-react": "^7.11.1", + "husky": "^1.3.1", + "lint-staged": "^8.1.0", + "prettier": "^1.15.3", + "rollup": "^1.1.2", + "rollup-plugin-babel": "^4.2.0", + "rollup-plugin-commonjs": "^9.2.0", + "rollup-plugin-node-builtins": "^2.1.2", + "rollup-plugin-node-resolve": "^4.0.0", + "rollup-plugin-peer-deps-external": "^2.2.0", + "rollup-plugin-postcss": "^2.0.3", + "rollup-plugin-url": "^2.1.0" + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "src/**/*.{js,jsx,json,css}": [ + "prettier --single-quote --write", + "git add" + ] + }, + "browserslist": [ + ">0.2%", + "not dead", + "not ie <= 11", + "not op_mini all" + ], + "files": [ + "dist" + ], + "dependencies": { + "@babel/runtime": "^7.2.0", + "classnames": "^2.2.6" + } +} diff --git a/extensions/ohif-i18n/rollup.config.js b/extensions/ohif-i18n/rollup.config.js new file mode 100644 index 000000000..ceb293597 --- /dev/null +++ b/extensions/ohif-i18n/rollup.config.js @@ -0,0 +1,68 @@ +import babel from 'rollup-plugin-babel' +import commonjs from 'rollup-plugin-commonjs' +import external from 'rollup-plugin-peer-deps-external' +import postcss from 'rollup-plugin-postcss' +import resolve from 'rollup-plugin-node-resolve' +import url from 'rollup-plugin-url' +import pkg from './package.json' +// Deal with https://github.com/rollup/rollup-plugin-commonjs/issues/297 +import builtins from 'rollup-plugin-node-builtins'; + +const globals = { + 'react': 'React', + 'react-dom': 'ReactDOM', + 'react-redux': 'ReactRedux', + 'react-resize-detector': 'ReactResizeDetector', + 'prop-types': 'PropTypes' +}; + +export default { + input: 'src/index.js', + output: [ + { + file: pkg.main, + format: 'umd', + name: 'ohif-i18n', + sourcemap: true, + globals + }, + { + file: pkg.module, + format: 'es', + sourcemap: true, + globals + } + ], + plugins: [ + builtins(), + external(), + postcss({ + modules: false + }), + url(), + babel({ + exclude: 'node_modules/**', + externalHelpers: true, + runtimeHelpers: true + }), + resolve(), + commonjs({ + include: ['node_modules/**', '.yalc/**'], + namedExports: { + 'node_modules/react-vtkjs-viewport/dist/index.js': [ + 'getImageData', + 'loadImageData', + 'VTKViewport', + 'VTKMPRViewport', + ], + '.yalc/react-vtkjs-viewport/dist/index.js': [ + 'getImageData', + 'loadImageData', + 'VTKViewport', + 'VTKMPRViewport', + ] + } + }) + ], + external: Object.keys(pkg.peerDependencies || {}), +} diff --git a/extensions/ohif-i18n/src/i18n.js b/extensions/ohif-i18n/src/i18n.js new file mode 100755 index 000000000..fbb95926d --- /dev/null +++ b/extensions/ohif-i18n/src/i18n.js @@ -0,0 +1,70 @@ +import i18n from 'i18next'; +import { initReactI18next } from 'react-i18next'; + +const currentLanguage = process.env.APP_LANG || 'en-US'; + +function getDefaultLanguage() { + const mainLanguage = currentLanguage.match(/(.*.)(-)/); + return mainLanguage !== null ? mainLanguage[1] : null; +} + +function getCleanKeyForNameSpaces(key) { + const regexKeyCleaner = new RegExp( + `^(\\.\\/${currentLanguage}\\/)(.*.)(\\.json)$` + ); + const cleanedKey = key.match(regexKeyCleaner); + return cleanedKey !== null ? cleanedKey[2] : null; +} + +function getCleanKeyForDefaults(key) { + const regexKeyCleaner = new RegExp( + `^(\\.\\/${getDefaultLanguage()}\\/)(.*.)(\\.json)$` + ); + const cleanedKey = key.match(regexKeyCleaner); + return cleanedKey !== null ? cleanedKey[2] : null; +} + +function getLocales() { + const currentLangList = {}; + const defaultLangList = {}; + const locales = {}; + const context = require.context(`./locales`, true, /\.json$/); + + context.keys().forEach(key => { + const isTheSameOfCurrentLang = key.indexOf(currentLanguage) >= 0; + const isADefaultLang = key.indexOf(`${getDefaultLanguage()}/`) >= 0; + + if (isTheSameOfCurrentLang) { + currentLangList[getCleanKeyForNameSpaces(key)] = context(key); + } + + if (isADefaultLang) { + defaultLangList[getCleanKeyForDefaults(key)] = context(key); + } + }); + + locales[currentLanguage] = { ...currentLangList }; + locales[getDefaultLanguage()] = { ...defaultLangList }; + return locales; +} + +// console.log(getLocales(), currentLanguage, getDefaultLanguage()); + +i18n.use(initReactI18next).init({ + resources: getLocales(), + fallbackLng: getDefaultLanguage(), + lng: currentLanguage, + debug: true, + + // have a common namespace used around the full app + keySeparator: false, // uses content as keys + interpolation: { + escapeValue: false, + }, + + react: { + wait: true, + }, +}); + +export default i18n; diff --git a/extensions/ohif-i18n/src/index.js b/extensions/ohif-i18n/src/index.js new file mode 100644 index 000000000..25ec0f5eb --- /dev/null +++ b/extensions/ohif-i18n/src/index.js @@ -0,0 +1 @@ +export { default } from './i18n'; diff --git a/extensions/ohif-i18n/src/locales/en-UK/Header.json b/extensions/ohif-i18n/src/locales/en-UK/Header.json new file mode 100644 index 000000000..d4909843d --- /dev/null +++ b/extensions/ohif-i18n/src/locales/en-UK/Header.json @@ -0,0 +1,3 @@ +{ + "header_test": "Joao Grandao" +} diff --git a/extensions/ohif-i18n/src/locales/en-UK/common.json b/extensions/ohif-i18n/src/locales/en-UK/common.json new file mode 100755 index 000000000..f47a451d8 --- /dev/null +++ b/extensions/ohif-i18n/src/locales/en-UK/common.json @@ -0,0 +1,6 @@ +{ + "common": { + "Welcome to React": "Welcome to React and react-i18next", + "welcomeMsg": "welcome" + } +} diff --git a/extensions/ohif-i18n/src/locales/en-US/Header.json b/extensions/ohif-i18n/src/locales/en-US/Header.json new file mode 100644 index 000000000..383d28867 --- /dev/null +++ b/extensions/ohif-i18n/src/locales/en-US/Header.json @@ -0,0 +1,3 @@ +{ + "header_test": "$t(common:test)" +} diff --git a/extensions/ohif-i18n/src/locales/en-US/common.json b/extensions/ohif-i18n/src/locales/en-US/common.json new file mode 100755 index 000000000..1d6ab1537 --- /dev/null +++ b/extensions/ohif-i18n/src/locales/en-US/common.json @@ -0,0 +1,3 @@ +{ + "tests___": "test common" +} diff --git a/extensions/ohif-i18n/src/locales/en/Header.json b/extensions/ohif-i18n/src/locales/en/Header.json new file mode 100644 index 000000000..383d28867 --- /dev/null +++ b/extensions/ohif-i18n/src/locales/en/Header.json @@ -0,0 +1,3 @@ +{ + "header_test": "$t(common:test)" +} diff --git a/extensions/ohif-i18n/src/locales/en/common.json b/extensions/ohif-i18n/src/locales/en/common.json new file mode 100755 index 000000000..18a5b4ea3 --- /dev/null +++ b/extensions/ohif-i18n/src/locales/en/common.json @@ -0,0 +1,5 @@ +{ + "Welcome to React": "Welcome to React and react-i18next", + "welcomeMsg": "welcome", + "test": "Lunch time" +} diff --git a/extensions/ohif-i18n/yarn.lock b/extensions/ohif-i18n/yarn.lock new file mode 100644 index 000000000..8e231ebf3 --- /dev/null +++ b/extensions/ohif-i18n/yarn.lock @@ -0,0 +1,3929 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@^7.2.2": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" + integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.4.4" + "@babel/helpers" "^7.4.4" + "@babel/parser" "^7.4.5" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.4.5" + "@babel/types" "^7.4.4" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.11" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" + integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== + dependencies: + "@babel/types" "^7.4.4" + jsesc "^2.5.1" + lodash "^4.17.11" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-builder-react-jsx@^7.3.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.3.0.tgz#a1ac95a5d2b3e88ae5e54846bf462eeb81b318a4" + integrity sha512-MjA9KgwCuPEkQd9ncSXvSyJ5y+j2sICHyrI0M3L+6fnS4wMSNDc1ARXsbTfbb2cXHn17VisSnU/sHFTCxVxSMw== + dependencies: + "@babel/types" "^7.3.0" + esutils "^2.0.0" + +"@babel/helper-call-delegate@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" + integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ== + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/helper-create-class-features-plugin@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz#fc3d690af6554cc9efc607364a82d48f58736dba" + integrity sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.4.4" + "@babel/helper-split-export-declaration" "^7.4.4" + +"@babel/helper-define-map@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a" + integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.4.4" + lodash "^4.17.11" + +"@babel/helper-explode-assignable-expression@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== + dependencies: + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-hoist-variables@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" + integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w== + dependencies: + "@babel/types" "^7.4.4" + +"@babel/helper-member-expression-to-functions@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" + integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" + integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/template" "^7.4.4" + "@babel/types" "^7.4.4" + lodash "^4.17.11" + +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2" + integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q== + dependencies: + lodash "^4.17.11" + +"@babel/helper-remap-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27" + integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.0.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== + dependencies: + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" + integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== + dependencies: + "@babel/types" "^7.4.4" + +"@babel/helper-wrap-function@^7.1.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" + integrity sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.2.0" + +"@babel/helpers@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5" + integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A== + dependencies: + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/highlight@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872" + integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew== + +"@babel/plugin-external-helpers@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.2.0.tgz#7f4cb7dee651cd380d2034847d914288467a6be4" + integrity sha512-QFmtcCShFkyAsNtdCM3lJPmRe1iB+vPZymlB4LnDIKEBj2yKQLQKtoxXxJ8ePT5fwMl4QGg303p4mB0UsSI2/g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-proposal-async-generator-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" + integrity sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + +"@babel/plugin-proposal-class-properties@^7.2.3": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz#93a6486eed86d53452ab9bab35e368e9461198ce" + integrity sha512-WjKTI8g8d5w1Bc9zgwSz2nfrsNQsXcCf9J9cdCvrJV6RF56yztwm4TmJC0MgJ9tvwO9gUA/mcYe89bLdGfiXFg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-proposal-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" + integrity sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + +"@babel/plugin-proposal-object-rest-spread@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005" + integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" + integrity sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" + integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/plugin-syntax-async-generators@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" + integrity sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" + integrity sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-jsx@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" + integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" + integrity sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" + integrity sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894" + integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-block-scoped-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" + integrity sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d" + integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.11" + +"@babel/plugin-transform-classes@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6" + integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.4.4" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.4.4" + "@babel/helper-split-export-declaration" "^7.4.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" + integrity sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f" + integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" + integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/plugin-transform-duplicate-keys@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.2.0.tgz#d952c4930f312a4dbfff18f0b2914e60c35530b3" + integrity sha512-q+yuxW4DsTjNceUiTzK0L+AfQ0zD9rWaTLiUqHA8p0gxx7lu1EylenfzjeIWNkPy6e/0VG/Wjw9uf9LueQwLOw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-exponentiation-operator@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" + integrity sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-for-of@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" + integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" + integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA== + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" + integrity sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-member-expression-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz#fa10aa5c58a2cb6afcf2c9ffa8cb4d8b3d489a2d" + integrity sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz#82a9bce45b95441f617a24011dc89d12da7f4ee6" + integrity sha512-mK2A8ucqz1qhrdqjS9VMIDfIvvT2thrEsIQzbaTdc5QFzhDjQv2CkJJ5f6BXIkgbmaoax3zBr2RyvV/8zeoUZw== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-commonjs@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e" + integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw== + dependencies: + "@babel/helper-module-transforms" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + +"@babel/plugin-transform-modules-systemjs@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405" + integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ== + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-umd@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" + integrity sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw== + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" + integrity sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg== + dependencies: + regexp-tree "^0.1.6" + +"@babel/plugin-transform-new-target@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" + integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-object-super@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.2.0.tgz#b35d4c10f56bab5d650047dad0f1d8e8814b6598" + integrity sha512-VMyhPYZISFZAqAPVkiYb7dUe2AsVi2/wCT5+wZdsNO31FojQJa9ns40hzZ6U9f50Jlq4w6qwzdBB2uwqZ00ebg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.1.0" + +"@babel/plugin-transform-parameters@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" + integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw== + dependencies: + "@babel/helper-call-delegate" "^7.4.4" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-property-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz#03e33f653f5b25c4eb572c98b9485055b389e905" + integrity sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz#ebfaed87834ce8dc4279609a4f0c324c156e3eb0" + integrity sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-react-jsx-self@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz#461e21ad9478f1031dd5e276108d027f1b5240ba" + integrity sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-react-jsx-source@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.2.0.tgz#20c8c60f0140f5dd3cd63418d452801cf3f7180f" + integrity sha512-A32OkKTp4i5U6aE88GwwcuV4HAprUgHcTq0sSafLxjr6AW0QahrCRCjxogkbbcdtpbXkuTOlgpjophCxb6sh5g== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz#f2cab99026631c767e2745a5368b331cfe8f5290" + integrity sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg== + dependencies: + "@babel/helper-builder-react-jsx" "^7.3.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@babel/plugin-transform-regenerator@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" + integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA== + dependencies: + regenerator-transform "^0.14.0" + +"@babel/plugin-transform-reserved-words@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz#4792af87c998a49367597d07fedf02636d2e1634" + integrity sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-runtime@^7.2.0": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz#a50f5d16e9c3a4ac18a1a9f9803c107c380bce08" + integrity sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" + integrity sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.2.0": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" + integrity sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-sticky-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" + integrity sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" + integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typeof-symbol@^7.2.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" + integrity sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-unicode-regex@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" + integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/preset-env@^7.2.3": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.4.5.tgz#2fad7f62983d5af563b5f3139242755884998a58" + integrity sha512-f2yNVXM+FsR5V8UwcFeIHzHWgnhXg3NpRmy0ADvALpnhB0SLbCvrCRr4BLOUYbQNLS+Z0Yer46x9dJXpXewI7w== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.4.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.4.4" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.4.4" + "@babel/plugin-transform-classes" "^7.4.4" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/plugin-transform-duplicate-keys" "^7.2.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.4.4" + "@babel/plugin-transform-function-name" "^7.4.4" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-member-expression-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.2.0" + "@babel/plugin-transform-modules-commonjs" "^7.4.4" + "@babel/plugin-transform-modules-systemjs" "^7.4.4" + "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.4.5" + "@babel/plugin-transform-new-target" "^7.4.4" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.4.4" + "@babel/plugin-transform-property-literals" "^7.2.0" + "@babel/plugin-transform-regenerator" "^7.4.5" + "@babel/plugin-transform-reserved-words" "^7.2.0" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.4.4" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.4.4" + "@babel/types" "^7.4.4" + browserslist "^4.6.0" + core-js-compat "^3.1.1" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.5.0" + +"@babel/preset-react@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" + integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + +"@babel/runtime@^7.2.0": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12" + integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ== + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/template@^7.1.0", "@babel/template@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" + integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.4.5": + version "7.4.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.5.tgz#4e92d1728fd2f1897dafdd321efbff92156c3216" + integrity sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.4.4" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.4.5" + "@babel/types" "^7.4.4" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.11" + +"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" + integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== + dependencies: + esutils "^2.0.2" + lodash "^4.17.11" + to-fast-properties "^2.0.0" + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/node@*", "@types/node@^12.0.3": + version "12.0.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.4.tgz#46832183115c904410c275e34cf9403992999c32" + integrity sha512-j8YL2C0fXq7IONwl/Ud5Kt0PeXw22zGERt+HSSnwbKOJVsAGkEz3sFCYwaF9IOuoG1HOtE0vKCj6sXF7Q0+Vaw== + +"@types/q@^1.5.1": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + +abstract-leveldown@~0.12.0, abstract-leveldown@~0.12.1: + version "0.12.4" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-0.12.4.tgz#29e18e632e60e4e221d5810247852a63d7b2e410" + integrity sha1-KeGOYy5g5OIh1YECR4UqY9ey5BA= + dependencies: + xtend "~3.0.0" + +acorn-jsx@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" + integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== + +acorn@^6.0.7, acorn@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" + integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== + +ajv@^6.5.3, ajv@^6.9.1: + version "6.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" + integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +babel-eslint@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" + integrity sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + eslint-scope "3.7.1" + eslint-visitor-keys "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +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== + +bl@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/bl/-/bl-0.8.2.tgz#c9b6bca08d1bc2ea00fc8afb4f1a5fd1e1c66e4e" + integrity sha1-yba8oI0bwuoA/Ir7Txpf0eHGbk4= + dependencies: + readable-stream "~1.0.26" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-fs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-fs/-/browserify-fs-1.0.0.tgz#f075aa8a729d4d1716d066620e386fcc1311a96f" + integrity sha1-8HWqinKdTRcW0GZiDjhvzBMRqW8= + dependencies: + level-filesystem "^1.0.1" + level-js "^2.1.3" + levelup "^0.18.2" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserslist@^4.0.0, browserslist@^4.6.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.1.tgz#ee5059b1aec18cbec9d055d6cb5e24ae50343a9b" + integrity sha512-1MC18ooMPRG2UuVFJTHFIAkk6mpByJfxCrnUyvSlu/hyQSFHMrlhM02SzNuCV+quTP4CKmqtOMAIjrifrpBJXQ== + dependencies: + caniuse-lite "^1.0.30000971" + electron-to-chromium "^1.3.137" + node-releases "^1.1.21" + +buffer-es6@^4.9.2: + version "4.9.3" + resolved "https://registry.yarnpkg.com/buffer-es6/-/buffer-es6-4.9.3.tgz#f26347b82df76fd37e18bcb5288c4970cfd5c404" + integrity sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ= + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +builtin-modules@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000971: + version "1.0.30000971" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000971.tgz#d1000e4546486a6977756547352bc96a4cfd2b13" + integrity sha512-TQFYFhRS0O5rdsmSbF1Wn+16latXYsQJat66f7S7lizXW1PVpWJeZw9wqqVLIjuxDRz7s7xRUj13QCfd8hKn6g== + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== + +classnames@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + +clone@~0.1.9: + version "0.1.19" + resolved "https://registry.yarnpkg.com/clone/-/clone-0.1.19.tgz#613fb68639b26a494ac53253e15b1a6bd88ada85" + integrity sha1-YT+2hjmyaklKxTJT4Vsaa9iK2oU= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.4.4: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +concat-with-sourcemaps@^1.0.5: + version "1.1.0" + resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" + integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== + dependencies: + source-map "^0.6.1" + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +convert-source-map@^1.1.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== + dependencies: + safe-buffer "~5.1.1" + +core-js-compat@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.3.tgz#0cc3ba4c7f62928c2837e1cffbe8dc78b4f1ae14" + integrity sha512-EP018pVhgwsKHz3YoN1hTq49aRe+h017Kjz0NQz3nXV0cCRMvH3fLQl+vEPGr4r4J5sk4sU3tUC7U1aqTCeJeA== + dependencies: + browserslist "^4.6.0" + core-js-pure "3.1.3" + semver "^6.1.0" + +core-js-pure@3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.1.3.tgz#4c90752d5b9471f641514f3728f51c1e0783d0b5" + integrity sha512-k3JWTrcQBKqjkjI0bkfXS0lbpWPxYuHWfMMjC1VDmzU4Q58IwSbuXSo99YO/hUHlw/EB4AlfA2PVxOGkrIq6dA== + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc" + integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ== + dependencies: + is-directory "^0.3.1" + js-yaml "^3.9.0" + parse-json "^4.0.0" + require-from-string "^2.0.1" + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-env@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz#6ecd4c015d5773e614039ee529076669b9d126f2" + integrity sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg== + dependencies: + cross-spawn "^6.0.5" + is-windows "^1.0.0" + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-modules-loader-core@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz#5908668294a1becd261ae0a4ce21b0b551f21d16" + integrity sha1-WQhmgpShvs0mGuCkziGwtVHyHRY= + dependencies: + icss-replace-symbols "1.1.0" + postcss "6.0.1" + postcss-modules-extract-imports "1.1.0" + postcss-modules-local-by-default "1.2.0" + postcss-modules-scope "1.1.0" + postcss-modules-values "1.3.0" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede" + integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ== + dependencies: + boolbase "^1.0.0" + css-what "^2.1.2" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-selector-tokenizer@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" + integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA== + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-tree@1.0.0-alpha.28: + version "1.0.0-alpha.28" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" + integrity sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w== + dependencies: + mdn-data "~1.1.0" + source-map "^0.5.3" + +css-tree@1.0.0-alpha.29: + version "1.0.0-alpha.29" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" + integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg== + dependencies: + mdn-data "~1.1.0" + source-map "^0.5.3" + +css-unit-converter@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" + integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= + +css-url-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" + integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w= + +css-what@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.8: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" + integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg== + dependencies: + css-tree "1.0.0-alpha.29" + +debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.0.1, debug@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deferred-leveldown@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz#2cef1f111e1c57870d8bbb8af2650e587cd2f5b4" + integrity sha1-LO8fER4cV4cNi7uK8mUOWHzS9bQ= + dependencies: + abstract-leveldown "~0.12.1" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +dom-serializer@0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" + integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== + dependencies: + domelementtype "^1.3.0" + entities "^1.1.1" + +domelementtype@1, domelementtype@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== + dependencies: + is-obj "^1.0.0" + +electron-to-chromium@^1.3.137: + version "1.3.143" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.143.tgz#8b2a631ab75157aa53d0c2933275643b99ef580b" + integrity sha512-J9jOpxIljQZlV6GIP2fwAWq0T69syawU0sH3EW3O2Bgxquiy+veeIT5mBDRz+i3oHUSL1tvVgRKH3/4QiQh9Pg== + +elliptic@^6.0.0: + version "6.4.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" + integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +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= + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +errno@^0.1.1, errno@~0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" + +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-import-resolver-node@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" + integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== + dependencies: + debug "^2.6.9" + resolve "^1.5.0" + +eslint-module-utils@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a" + integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw== + dependencies: + debug "^2.6.8" + pkg-dir "^2.0.0" + +eslint-plugin-es@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz#475f65bb20c993fc10e8c8fe77d1d60068072da6" + integrity sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw== + dependencies: + eslint-utils "^1.3.0" + regexpp "^2.0.1" + +eslint-plugin-import@^2.14.0: + version "2.17.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz#00548b4434c18faebaba04b24ae6198f280de189" + integrity sha512-qeVf/UwXFJbeyLbxuY8RgqDyEKCkqV7YC+E5S5uOjAp4tOc8zj01JP3ucoBM8JcEqd1qRasJSg6LLlisirfy0Q== + dependencies: + array-includes "^3.0.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.0" + has "^1.0.3" + lodash "^4.17.11" + minimatch "^3.0.4" + read-pkg-up "^2.0.0" + resolve "^1.11.0" + +eslint-plugin-node@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-8.0.1.tgz#55ae3560022863d141fa7a11799532340a685964" + integrity sha512-ZjOjbjEi6jd82rIpFSgagv4CHWzG9xsQAVp1ZPlhRnnYxcTgENUVBvhYmkQ7GvT1QFijUSo69RaiOJKhMu6i8w== + dependencies: + eslint-plugin-es "^1.3.1" + eslint-utils "^1.3.1" + ignore "^5.0.2" + minimatch "^3.0.4" + resolve "^1.8.1" + semver "^5.5.0" + +eslint-plugin-promise@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.1.1.tgz#1e08cb68b5b2cd8839f8d5864c796f56d82746db" + integrity sha512-faAHw7uzlNPy7b45J1guyjazw28M+7gJokKUjC5JSFoYfUEyy6Gw/i7YQvmv2Yk00sUjWcmzXQLpU1Ki/C2IZQ== + +eslint-plugin-react@^7.11.1: + version "7.13.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.13.0.tgz#bc13fd7101de67996ea51b33873cd9dc2b7e5758" + integrity sha512-uA5LrHylu8lW/eAH3bEQe9YdzpPaFd9yAJTwTi/i/BKTD7j6aQMKVAdGM/ML72zD6womuSK7EiGtMKuK06lWjQ== + dependencies: + array-includes "^3.0.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.1.0" + object.fromentries "^2.0.0" + prop-types "^15.7.2" + resolve "^1.10.1" + +eslint-scope@3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + integrity sha1-PWPD7f2gLgbgGkUq2IyqzHzctug= + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.0, eslint-utils@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== + +eslint@5.13.0: + version "5.13.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.13.0.tgz#ce71cc529c450eed9504530939aa97527861ede9" + integrity sha512-nqD5WQMisciZC5EHZowejLKQjWGuFS5c70fxqSKlnDME+oz9zmE8KTlX+lHSg+/5wsC/kf9Q9eMkC8qS3oM2fg== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.5.3" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^2.1.0" + eslint-scope "^4.0.0" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^5.0.0" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^6.1.0" + js-yaml "^3.12.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.5" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^5.0.2" + text-table "^0.2.0" + +espree@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" + integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== + dependencies: + acorn "^6.0.7" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + +estree-walker@^0.6.0, estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +esutils@^2.0.0, esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +external-editor@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastparse@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +flat-cache@^1.2.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" + integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== + dependencies: + circular-json "^0.3.1" + graceful-fs "^4.1.2" + rimraf "~2.6.2" + write "^0.2.1" + +foreach@~2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +fwd-stream@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/fwd-stream/-/fwd-stream-1.0.4.tgz#ed281cabed46feecf921ee32dc4c50b372ac7cfa" + integrity sha1-7Sgcq+1G/uz5Ie4y3ExQs3KsfPo= + dependencies: + readable-stream "~1.0.26-4" + +generic-names@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-1.0.3.tgz#2d786a121aee508876796939e8e3bff836c20917" + integrity sha1-LXhqEhruUIh2eWk56OO/+DbCCRc= + dependencies: + loader-utils "^0.2.16" + +glob@^7.1.2, glob@^7.1.3: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0, globals@^11.7.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +graceful-fs@^4.1.2: + version "4.1.15" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has@^1.0.0, has@^1.0.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-replace-symbols@1.1.0, icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + +idb-wrapper@^1.5.0: + version "1.7.2" + resolved "https://registry.yarnpkg.com/idb-wrapper/-/idb-wrapper-1.7.2.tgz#8251afd5e77fe95568b1c16152eb44b396767ea2" + integrity sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.0.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz#e28e584d43ad7e92f96995019cc43b9e1ac49558" + integrity sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ== + +import-cwd@^2.0.0, import-cwd@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" + integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +indexof@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +inquirer@^6.1.0: + version "6.3.1" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" + integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.11" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-object@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-0.1.2.tgz#00efbc08816c33cfc4ac8251d132e10dc65098d7" + integrity sha1-AO+8CIFsM8/ErIJR0TLhDcZQmNc= + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + dependencies: + has-symbols "^1.0.0" + +is-windows@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is@~0.2.6: + version "0.2.7" + resolved "https://registry.yarnpkg.com/is/-/is-0.2.7.tgz#3b34a2c48f359972f35042849193ae7264b63562" + integrity sha1-OzSixI81mXLzUEKEkZOucmS2NWI= + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isbuffer@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/isbuffer/-/isbuffer-0.0.0.tgz#38c146d9df528b8bf9b0701c3d43cf12df3fc39b" + integrity sha1-OMFG2d9Si4v5sHAcPUPPEt8/w5s= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +js-levenshtein@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" + integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.12.0, js-yaml@^3.13.1, js-yaml@^3.9.0: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== + dependencies: + minimist "^1.2.0" + +jsx-ast-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz#0ee4e2c971fb9601c67b5641b71be80faecf0b36" + integrity sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA== + dependencies: + array-includes "^3.0.3" + +level-blobs@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/level-blobs/-/level-blobs-0.1.7.tgz#9ab9b97bb99f1edbf9f78a3433e21ed56386bdaf" + integrity sha1-mrm5e7mfHtv594o0M+Ie1WOGva8= + dependencies: + level-peek "1.0.6" + once "^1.3.0" + readable-stream "^1.0.26-4" + +level-filesystem@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/level-filesystem/-/level-filesystem-1.2.0.tgz#a00aca9919c4a4dfafdca6a8108d225aadff63b3" + integrity sha1-oArKmRnEpN+v3KaoEI0iWq3/Y7M= + dependencies: + concat-stream "^1.4.4" + errno "^0.1.1" + fwd-stream "^1.0.4" + level-blobs "^0.1.7" + level-peek "^1.0.6" + level-sublevel "^5.2.0" + octal "^1.0.0" + once "^1.3.0" + xtend "^2.2.0" + +level-fix-range@2.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-2.0.0.tgz#c417d62159442151a19d9a2367868f1724c2d548" + integrity sha1-xBfWIVlEIVGhnZojZ4aPFyTC1Ug= + dependencies: + clone "~0.1.9" + +level-fix-range@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-1.0.2.tgz#bf15b915ae36d8470c821e883ddf79cd16420828" + integrity sha1-vxW5Fa422EcMgh6IPd95zRZCCCg= + +"level-hooks@>=4.4.0 <5": + version "4.5.0" + resolved "https://registry.yarnpkg.com/level-hooks/-/level-hooks-4.5.0.tgz#1b9ae61922930f3305d1a61fc4d83c8102c0dd93" + integrity sha1-G5rmGSKTDzMF0aYfxNg8gQLA3ZM= + dependencies: + string-range "~1.2" + +level-js@^2.1.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/level-js/-/level-js-2.2.4.tgz#bc055f4180635d4489b561c9486fa370e8c11697" + integrity sha1-vAVfQYBjXUSJtWHJSG+jcOjBFpc= + dependencies: + abstract-leveldown "~0.12.0" + idb-wrapper "^1.5.0" + isbuffer "~0.0.0" + ltgt "^2.1.2" + typedarray-to-buffer "~1.0.0" + xtend "~2.1.2" + +level-peek@1.0.6, level-peek@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/level-peek/-/level-peek-1.0.6.tgz#bec51c72a82ee464d336434c7c876c3fcbcce77f" + integrity sha1-vsUccqgu5GTTNkNMfIdsP8vM538= + dependencies: + level-fix-range "~1.0.2" + +level-sublevel@^5.2.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-5.2.3.tgz#744c12c72d2e72be78dde3b9b5cd84d62191413a" + integrity sha1-dEwSxy0ucr543eO5tc2E1iGRQTo= + dependencies: + level-fix-range "2.0" + level-hooks ">=4.4.0 <5" + string-range "~1.2.1" + xtend "~2.0.4" + +levelup@^0.18.2: + version "0.18.6" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-0.18.6.tgz#e6a01cb089616c8ecc0291c2a9bd3f0c44e3e5eb" + integrity sha1-5qAcsIlhbI7MApHCqb0/DETj5es= + dependencies: + bl "~0.8.1" + deferred-leveldown "~0.2.0" + errno "~0.1.1" + prr "~0.0.0" + readable-stream "~1.0.26" + semver "~2.3.1" + xtend "~3.0.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +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" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.uniq@^4.5.0: + version "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.5: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +loose-envify@^1.0.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +ltgt@^2.1.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" + integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= + +magic-string@^0.25.2: + version "0.25.2" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.2.tgz#139c3a729515ec55e96e69e82a11fe890a293ad9" + integrity sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg== + dependencies: + sourcemap-codec "^1.4.4" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@~1.1.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" + integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime@^2.3.1: + version "2.4.3" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.3.tgz#229687331e86f68924e6cb59e1cdd937f18275fe" + integrity sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +mkdirp@^0.5.1, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +mkpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-1.0.0.tgz#ebb3a977e7af1c683ae6fda12b545a6ba6c5853d" + integrity sha1-67Opd+evHGg65v2hK1Raa6bFhT0= + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-releases@^1.1.21: + version "1.1.22" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.22.tgz#d90cd5adc59ab9b0f377d4f532b09656399c88bf" + integrity sha512-O6XpteBuntW1j86mw6LlovBIwTe+sO2+7vi9avQffNeIW4upgnaCVm6xrBWH+KATz7mNNRNNeEpuWB7dT6Cr3w== + dependencies: + semver "^5.3.0" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +object-assign@^4.0.1, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-keys@^1.0.12: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-keys@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.2.0.tgz#cddec02998b091be42bf1035ae32e49f1cb6ea67" + integrity sha1-zd7AKZiwkb5CvxA1rjLknxy26mc= + dependencies: + foreach "~2.0.1" + indexof "~0.0.1" + is "~0.2.6" + +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" + integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= + +object.fromentries@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" + integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA== + dependencies: + define-properties "^1.1.2" + es-abstract "^1.11.0" + function-bind "^1.1.1" + has "^1.0.1" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +object.values@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" + integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + +octal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/octal/-/octal-1.0.0.tgz#63e7162a68efbeb9e213588d58e989d1e5c4530b" + integrity sha1-Y+cWKmjvvrniE1iNWOmJ0eXEUws= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-queue@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-2.4.2.tgz#03609826682b743be9a22dba25051bd46724fc34" + integrity sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng== + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0: + version "5.1.4" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" + integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +postcss-calc@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" + integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ== + dependencies: + css-unit-converter "^1.1.1" + postcss "^7.0.5" + postcss-selector-parser "^5.0.0-rc.4" + postcss-value-parser "^3.3.1" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-load-config@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484" + integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ== + dependencies: + cosmiconfig "^4.0.0" + import-cwd "^2.0.0" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb" + integrity sha1-thTJcgvmgW6u41+zpfqh26agXds= + dependencies: + postcss "^6.0.1" + +postcss-modules-local-by-default@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-scope@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-values@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^6.0.1" + +postcss-modules@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-1.4.1.tgz#8aa35bd3461db67e27377a7ce770d77b654a84ef" + integrity sha512-btTrbK+Xc3NBuYF8TPBjCMRSp5h6NoQ1iVZ6WiDQENIze6KIYCSf0+UFQuV3yJ7gRHA+4AAtF8i2jRvUpbBMMg== + dependencies: + css-modules-loader-core "^1.1.0" + generic-names "^1.0.3" + lodash.camelcase "^4.3.0" + postcss "^7.0.1" + string-hash "^1.1.1" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-selector-parser@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" + integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= + dependencies: + dot-prop "^4.1.1" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.1.tgz#000dbd1f8eef217aa368b9a212c5fc40b2a8f3f2" + integrity sha1-AA29H47vIXqjaLmiEsX8QLKo8/I= + dependencies: + chalk "^1.1.3" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^6.0.1: + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.5: + version "7.0.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.16.tgz#48f64f1b4b558cb8b52c88987724359acb010da2" + integrity sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +private@^0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-es6@^0.11.2: + version "0.11.6" + resolved "https://registry.yarnpkg.com/process-es6/-/process-es6-0.11.6.tgz#c6bb389f9a951f82bd4eb169600105bd2ff9c778" + integrity sha1-xrs4n5qVH4K9TrFpYAEFvS/5x3g= + +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" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise.series@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd" + integrity sha1-LMfr6Vn8OmYZwEq029yeRS2GS70= + +prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +prr@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" + integrity sha1-GoS4WQgyVQFBGFPQCB7j+obikmo= + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +react-is@^16.8.1: + version "16.8.6" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" + integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@^1.0.26-4: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.2.2: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + 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.1.1" + util-deprecate "~1.0.1" + +readable-stream@~1.0.26, readable-stream@~1.0.26-4: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +regenerate-unicode-properties@^8.0.2: + version "8.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" + integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.2.1, regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" + integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== + +regenerator-transform@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz#2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf" + integrity sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w== + dependencies: + private "^0.1.6" + +regexp-tree@^0.1.6: + version "0.1.10" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.10.tgz#d837816a039c7af8a8d64d7a7c3cf6a1d93450bc" + integrity sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ== + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae" + integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.0.2" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.1.0" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + +regjsgen@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" + integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA== + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + dependencies: + jsesc "~0.5.0" + +regjsparser@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" + integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== + dependencies: + jsesc "~0.5.0" + +require-from-string@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +reserved-words@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" + integrity sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE= + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: + version "1.11.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" + integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rollup-plugin-babel@^4.2.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.3.2.tgz#8c0e1bd7aa9826e90769cf76895007098ffd1413" + integrity sha512-KfnizE258L/4enADKX61ozfwGHoqYauvoofghFJBhFnpH9Sb9dNPpWg8QHOaAfVASUYV8w0mCx430i9z0LJoJg== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + rollup-pluginutils "^2.3.0" + +rollup-plugin-commonjs@^9.2.0: + version "9.3.4" + resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.3.4.tgz#2b3dddbbbded83d45c36ff101cdd29e924fd23bc" + integrity sha512-DTZOvRoiVIHHLFBCL4pFxOaJt8pagxsVldEXBOn6wl3/V21wVaj17HFfyzTsQUuou3sZL3lEJZVWKPFblJfI6w== + dependencies: + estree-walker "^0.6.0" + magic-string "^0.25.2" + resolve "^1.10.0" + rollup-pluginutils "^2.6.0" + +rollup-plugin-node-builtins@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.1.2.tgz#24a1fed4a43257b6b64371d8abc6ce1ab14597e9" + integrity sha1-JKH+1KQyV7a2Q3HYq8bOGrFFl+k= + dependencies: + browserify-fs "^1.0.0" + buffer-es6 "^4.9.2" + crypto-browserify "^3.11.0" + process-es6 "^0.11.2" + +rollup-plugin-node-resolve@^4.0.0: + version "4.2.4" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.2.4.tgz#7d370f8d6fd3031006a0032c38262dd9be3c6250" + integrity sha512-t/64I6l7fZ9BxqD3XlX4ZeO6+5RLKyfpwE2CiPNUKa+GocPlQhf/C208ou8y3AwtNsc6bjSk/8/6y/YAyxCIvw== + dependencies: + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + is-module "^1.0.0" + resolve "^1.10.0" + +rollup-plugin-peer-deps-external@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-peer-deps-external/-/rollup-plugin-peer-deps-external-2.2.0.tgz#99ef9231aa01736f3e9605b7c3084a0d627f665b" + integrity sha512-BmJMHUWQcvjS2dQMwJ7dzvdbwpRChnq4AYk2sTU/4aySt9Kumk8y8W3HhTHss31wxzKb0AC/wsiX1AqDcOBIEA== + +rollup-plugin-postcss@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/rollup-plugin-postcss/-/rollup-plugin-postcss-2.0.3.tgz#1fd5b7e1fc7545cb0084d9c99d11b259e41a05e6" + integrity sha512-d12oKl6za/GGXmlytzVPzzTdPCKgti/Kq2kNhtfm5vv9hkNbyrTvizMBm6zZ5rRWX/sIWl3znjIJ8xy6Hofoeg== + dependencies: + chalk "^2.4.2" + concat-with-sourcemaps "^1.0.5" + cssnano "^4.1.8" + import-cwd "^2.1.0" + p-queue "^2.4.2" + pify "^3.0.0" + postcss "^7.0.14" + postcss-load-config "^2.0.0" + postcss-modules "^1.4.1" + promise.series "^0.2.0" + reserved-words "^0.1.2" + resolve "^1.5.0" + rollup-pluginutils "^2.0.1" + style-inject "^0.3.0" + +rollup-plugin-url@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-url/-/rollup-plugin-url-2.2.1.tgz#cddd38dfab2848e77532c92e04fa17663ef9bd0c" + integrity sha512-Zw7u1SX64LDBty38ghqBVwc55JhQDlvXPt0fSzwRY7Mdlhu6wtQq5t2q1siHi7SLwRqgvAMeuJGjOqPOIB/sSw== + dependencies: + mime "^2.3.1" + mkpath "^1.0.0" + rollup-pluginutils "^2.3.3" + +rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.0, rollup-pluginutils@^2.3.3, rollup-pluginutils@^2.6.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.0.tgz#d7ece1502958a35748a74080c7ac5e95681bcbe9" + integrity sha512-8TomM64VQH6w+13lemFHX5sZYxLCxHhf9gzdRUEFNXH3Z+0CDYy7Grzqa6YUbZc0GIrfbWoD5GXZ3o5Teqh9ew== + dependencies: + estree-walker "^0.6.1" + +rollup@^1.1.2: + version "1.13.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.13.1.tgz#86a474c29df0f303ed31e4c8be5d81c1038beae8" + integrity sha512-TWBmVU5WS4wOy5Ij2qxrJYRUn/keECvStcXDpJSwgr95JZ6VFf1PDewiAk4VPf5vxr7drRJlxh9kYpxHveYOOg== + dependencies: + "@types/estree" "0.0.39" + "@types/node" "^12.0.3" + acorn "^6.1.1" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + +rxjs@^6.4.0: + version "6.5.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" + integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== + dependencies: + tslib "^1.9.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + +semver@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b" + integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ== + +semver@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz#b9848f25d6cf36333073ec9ef8856d42f1233e52" + integrity sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI= + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sourcemap-codec@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz#c63ea927c029dd6bd9a2b7fa03b3fec02ad56e9f" + integrity sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg== + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" + integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +string-hash@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= + +string-range@~1.2, string-range@~1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/string-range/-/string-range-1.2.2.tgz#a893ed347e72299bc83befbbf2a692a8d239d5dd" + integrity sha1-qJPtNH5yKZvIO++78qaSqNI51d0= + +string-width@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-json-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +style-inject@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3" + integrity sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw== + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0, supports-color@^5.4.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +svgo@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.2.2.tgz#0253d34eccf2aed4ad4f283e11ee75198f9d7316" + integrity sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.28" + css-url-regex "^1.1.0" + csso "^3.5.1" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +table@^5.0.2: + version "5.4.0" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.0.tgz#d772a3216e68829920a41a32c18eda286c95d780" + integrity sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw== + dependencies: + ajv "^6.9.1" + lodash "^4.17.11" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + +tslib@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +typedarray-to-buffer@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-1.0.4.tgz#9bb8ba0e841fb3f4cf1fe7c245e9f3fa8a5fe99c" + integrity sha1-m7i6DoQfs/TPH+fCRenz+opf6Zw= + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" + integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" + integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vendors@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" + integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw== + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= + dependencies: + mkdirp "^0.5.1" + +xtend@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9" + integrity sha1-7vax8ZjByN6vrYsXZaBNrUoBxak= + +xtend@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.0.6.tgz#5ea657a6dba447069c2e59c58a1138cb0c5e6cee" + integrity sha1-XqZXptukRwacLlnFihE4ywxebO4= + dependencies: + is-object "~0.1.2" + object-keys "~0.2.0" + +xtend@~2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" + integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= + dependencies: + object-keys "~0.4.0" + +xtend@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" + integrity sha1-XM50B7r2Qsunvs2laBEcST9ZZlo= diff --git a/package.json b/package.json index 9fb3da250..fd77ef390 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "react-resize-detector": "^3.4.0", "react-router": "^4.3.1", "react-router-dom": "^4.3.1", - "react-viewerbase": "0.4.2", + "react-viewerbase": "file:.yalc/react-viewerbase", "react-vtkjs-viewport": "^0.0.7", "redux": "^4.0.1", "redux-oidc": "3.1.x" diff --git a/src/locales/en/common.json b/src/locales/en/common.json index 6b89c3168..18a5b4ea3 100755 --- a/src/locales/en/common.json +++ b/src/locales/en/common.json @@ -1,5 +1,5 @@ { "Welcome to React": "Welcome to React and react-i18next", "welcomeMsg": "welcome", - "test": "Coffee time" + "test": "Lunch time" } From 99c95fc1e1edaccc8abdcec7a957ec4d6218655d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joa=CC=83o=20Felipe=20Medeiros=20Moreira?= Date: Mon, 3 Jun 2019 18:02:01 -0300 Subject: [PATCH 03/42] Creating spanish translation --- src/components/Header/Header.js | 44 +++++++++++++++++++++++++++------ src/locales/en-ES/Header.json | 7 ++++++ src/locales/en-ES/Toolbar.json | 13 ++++++++++ src/locales/en-ES/common.json | 20 +++++++++++++++ src/locales/en-US/Header.json | 6 +++++ src/locales/en-US/Toolbar.json | 19 ++++++++++++++ src/locales/en/Header.json | 6 ++++- 7 files changed, 106 insertions(+), 9 deletions(-) create mode 100644 src/locales/en-ES/Header.json create mode 100644 src/locales/en-ES/Toolbar.json create mode 100644 src/locales/en-ES/common.json create mode 100644 src/locales/en-US/Toolbar.json diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 0dd96b529..71a661c63 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -13,6 +13,8 @@ class Header extends Component { location: PropTypes.object.isRequired, openUserPreferencesModal: PropTypes.func, children: PropTypes.node, + t: PropTypes.func, + i18n: PropTypes.object, }; static defaultProps = { @@ -27,21 +29,33 @@ class Header extends Component { userPreferencesOpen: false, }; + this.loadOptions(); + } + + loadOptions() { + const { t } = this.props; this.options = [ { - title: 'Preferences ', + title: t('header_preferences'), icon: 'fa fa-user', onClick: this.props.openUserPreferencesModal, }, { - title: 'About', + title: t('header_about'), icon: 'fa fa-info', link: 'http://ohif.org', }, ]; } + changeLanguage(language) { + const { i18n } = this.props; + i18n.changeLanguage(language); + this.loadOptions(); + } + render() { + const { t } = this.props; return (
@@ -50,7 +64,7 @@ class Header extends Component { to={this.props.location.studyLink} className="header-btn header-viewerLink" > - Back to Viewer + {t('header_back_to_viewer')} )} @@ -64,16 +78,30 @@ class Header extends Component { state: { studyLink: this.props.location.pathname }, }} > - Study list + {t('header_study_list')} )}
- - INVESTIGATIONAL USE ONLY {this.props.t('header_test')} - - + {t('header_research_use')} + + +
diff --git a/src/locales/en-ES/Header.json b/src/locales/en-ES/Header.json new file mode 100644 index 000000000..6a3f997c4 --- /dev/null +++ b/src/locales/en-ES/Header.json @@ -0,0 +1,7 @@ +{ + "header_research_use": "SOLO USO DE INVESTIGACI脫N", + "header_options": "Opciones", + "header_about": "Sobre", + "header_preferences": "Preferencias", + "header_study_list": "Lista de estudio" +} diff --git a/src/locales/en-ES/Toolbar.json b/src/locales/en-ES/Toolbar.json new file mode 100644 index 000000000..8da9042d2 --- /dev/null +++ b/src/locales/en-ES/Toolbar.json @@ -0,0 +1,13 @@ +{ + "toolbar_series": "Series", + "toolbar_measurements": "Medidas", + "toolbar_stack_scroll": "Avance X slice", + "toolbar_zoom": "Zoom", + "toolbar_levels": "Niveles", + "toolbar_pan": "Mover", + "toolbar_length": "Medici贸n", + "toolbar_annotate": "Anotaci贸n", + "toolbar_angle": "脕ngulo", + "toolbar_reset": "Reiniciar", + "toolbar_cine": "CINE" +} diff --git a/src/locales/en-ES/common.json b/src/locales/en-ES/common.json new file mode 100644 index 000000000..178881ee3 --- /dev/null +++ b/src/locales/en-ES/common.json @@ -0,0 +1,20 @@ +{ + "Themes": "Temas", + "Previous": "Anterior", + "Next": "Pr贸ximo", + "Play": "Play", + "Stop": "Stop", + "Layout": "Esquema", + "More": "M谩s", + "Crosshairs": "Cruces", + "Magnify": "Lupa", + "ROI Window": "Ventana ROI", + "Probe": "Probar", + "Ellipse": "Elipse", + "Rectangle": "Rect谩ngulo", + "Invert": "Invertido", + "Rotate Right": "Rotar ->", + "Flip H": "Espejo Hor.", + "Flip V": "Espejo Ver.", + "Clear": "Limpiar" +} diff --git a/src/locales/en-US/Header.json b/src/locales/en-US/Header.json index 383d28867..2f2d32c23 100644 --- a/src/locales/en-US/Header.json +++ b/src/locales/en-US/Header.json @@ -1,3 +1,9 @@ { + "header_preferences": "Preferences", + "header_options": "Options", + "header_about": "About", + "header_back_to_viewer": "Back to Viewer", + "header_study_list": "Study list", + "header_research_use": "INVESTIGATIONAL USE ONLY", "header_test": "$t(common:test)" } diff --git a/src/locales/en-US/Toolbar.json b/src/locales/en-US/Toolbar.json new file mode 100644 index 000000000..143d98711 --- /dev/null +++ b/src/locales/en-US/Toolbar.json @@ -0,0 +1,19 @@ +{ + "toolbar_series": "Series", + "toolbar_measurements": "Measurements", + "toolbar_stack_scroll": "Stack Scroll", + "toolbar_zoom": "Zoom", + "toolbar_levels": "Levels", + "toolbar_pan": "Pan", + "toolbar_length": "Length", + "toolbar_annotate": "Annotate", + "toolbar_angle": "Angle", + "toolbar_reset": "Reset", + "toolbar_cine": "CINE", + "toolbar_bidirectional": "Bidirectional", + "toolbar_brush": "Brush", + "toolbar_freehand": "Freehand", + "toolbar_elliptical_roi": "EllipticalRoi", + "toolbar_circle_roi": "CircleRoi", + "toolbar_rectangle_roi": "RectangleRoi" +} diff --git a/src/locales/en/Header.json b/src/locales/en/Header.json index 383d28867..6a3f997c4 100644 --- a/src/locales/en/Header.json +++ b/src/locales/en/Header.json @@ -1,3 +1,7 @@ { - "header_test": "$t(common:test)" + "header_research_use": "SOLO USO DE INVESTIGACI脫N", + "header_options": "Opciones", + "header_about": "Sobre", + "header_preferences": "Preferencias", + "header_study_list": "Lista de estudio" } From d678a617dc9f2c662a02df2a9445b9fd827d9481 Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Mon, 3 Jun 2019 19:56:59 -0300 Subject: [PATCH 04/42] i18n - extension extraction --- src/components/Header/Header.js | 2 +- src/i18n.js | 61 +++++++++++------------ src/locales/en-UK/common.json | 6 --- src/locales/en/CineDialog.json | 3 ++ src/locales/{en-UK => en/UK}/Header.json | 0 src/locales/en/UK/common.json | 4 ++ src/locales/{en-US => en/US}/Header.json | 0 src/locales/{en-US => en/US}/Toolbar.json | 0 src/locales/{en-US => en/US}/common.json | 0 src/locales/es/CineDialog.json | 3 ++ src/locales/{en-ES => es}/Header.json | 0 src/locales/es/MX/CineDialog.json | 3 ++ src/locales/es/MX/Header.json | 7 +++ src/locales/{en-ES => es/MX}/Toolbar.json | 0 src/locales/{en-ES => es/MX}/common.json | 0 src/locales/es/common.json | 5 ++ yarn.lock | 8 +-- 17 files changed, 58 insertions(+), 44 deletions(-) delete mode 100755 src/locales/en-UK/common.json create mode 100644 src/locales/en/CineDialog.json rename src/locales/{en-UK => en/UK}/Header.json (100%) create mode 100755 src/locales/en/UK/common.json rename src/locales/{en-US => en/US}/Header.json (100%) rename src/locales/{en-US => en/US}/Toolbar.json (100%) rename src/locales/{en-US => en/US}/common.json (100%) create mode 100644 src/locales/es/CineDialog.json rename src/locales/{en-ES => es}/Header.json (100%) create mode 100644 src/locales/es/MX/CineDialog.json create mode 100644 src/locales/es/MX/Header.json rename src/locales/{en-ES => es/MX}/Toolbar.json (100%) rename src/locales/{en-ES => es/MX}/common.json (100%) create mode 100755 src/locales/es/common.json diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 71a661c63..92c588727 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -93,7 +93,7 @@ class Header extends Component { diff --git a/src/i18n.js b/src/i18n.js index b2fa0104e..cca942b8c 100755 --- a/src/i18n.js +++ b/src/i18n.js @@ -1,59 +1,51 @@ import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; -const currentLanguage = process.env.APP_LANG || 'en-US'; +const currentLanguage = process.env.APP_LANG || 'es-MX'; function getDefaultLanguage() { const mainLanguage = currentLanguage.match(/(.*.)(-)/); return mainLanguage !== null ? mainLanguage[1] : null; } -function getCleanKeyForNameSpaces(key) { - const regexKeyCleaner = new RegExp( - `^(\\.\\/${currentLanguage}\\/)(.*.)(\\.json)$` - ); - const cleanedKey = key.match(regexKeyCleaner); - return cleanedKey !== null ? cleanedKey[2] : null; +function getNameSpaceString(key) { + const nameSpaceMatcher = key.match(/[^/]+$/g); + let finalNameSpace; + + if (nameSpaceMatcher !== null) { + finalNameSpace = nameSpaceMatcher[0].replace('.json', ''); + } + + return finalNameSpace; } -function getCleanKeyForDefaults(key) { - const regexKeyCleaner = new RegExp( - `^(\\.\\/${getDefaultLanguage()}\\/)(.*.)(\\.json)$` - ); - const cleanedKey = key.match(regexKeyCleaner); - return cleanedKey !== null ? cleanedKey[2] : null; +function getCleanKeyForNameSpaces(key) { + const cleanedKey = key.match(/[/\\].+(?=[/\\])/); + let finalKey; + + if (cleanedKey !== null) { + finalKey = cleanedKey[0].replace(/[/\\]/, ''); + finalKey = finalKey.replace(/[/\\]/, '-'); + } + + return finalKey; } function getLocales() { - const currentLangList = {}; - const defaultLangList = {}; - const locales = {}; const context = require.context(`./locales`, true, /\.json$/); + const locales = {}; context.keys().forEach(key => { - const isTheSameOfCurrentLang = key.indexOf(currentLanguage) >= 0; - const isADefaultLang = key.indexOf(`${getDefaultLanguage()}/`) >= 0; - - if (isTheSameOfCurrentLang) { - currentLangList[getCleanKeyForNameSpaces(key)] = context(key); - } - - if (isADefaultLang) { - defaultLangList[getCleanKeyForDefaults(key)] = context(key); - } + locales[getCleanKeyForNameSpaces(key)] = { + ...locales[getCleanKeyForNameSpaces(key)], + [getNameSpaceString(key)]: context(key), + }; }); - locales[currentLanguage] = { ...currentLangList }; - locales[getDefaultLanguage()] = { ...defaultLangList }; return locales; } -console.log(getLocales(), ' > ', getDefaultLanguage()); - -// console.log(getLocales(), currentLanguage, getDefaultLanguage()); - i18n.use(initReactI18next).init({ - // resources: getLocales(), resources: getLocales(), fallbackLng: getDefaultLanguage(), lng: currentLanguage, @@ -65,6 +57,9 @@ i18n.use(initReactI18next).init({ escapeValue: false, }, + fallbackNS: ['common'], + defaultNS: 'common', + react: { wait: true, }, diff --git a/src/locales/en-UK/common.json b/src/locales/en-UK/common.json deleted file mode 100755 index f47a451d8..000000000 --- a/src/locales/en-UK/common.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "common": { - "Welcome to React": "Welcome to React and react-i18next", - "welcomeMsg": "welcome" - } -} diff --git a/src/locales/en/CineDialog.json b/src/locales/en/CineDialog.json new file mode 100644 index 000000000..9e9a7e759 --- /dev/null +++ b/src/locales/en/CineDialog.json @@ -0,0 +1,3 @@ +{ + "fps": "ingles fps" +} diff --git a/src/locales/en-UK/Header.json b/src/locales/en/UK/Header.json similarity index 100% rename from src/locales/en-UK/Header.json rename to src/locales/en/UK/Header.json diff --git a/src/locales/en/UK/common.json b/src/locales/en/UK/common.json new file mode 100755 index 000000000..3135ef203 --- /dev/null +++ b/src/locales/en/UK/common.json @@ -0,0 +1,4 @@ +{ + "Welcome to React": "Welcome to React and react-i18next", + "welcomeMsg": "welcome" +} diff --git a/src/locales/en-US/Header.json b/src/locales/en/US/Header.json similarity index 100% rename from src/locales/en-US/Header.json rename to src/locales/en/US/Header.json diff --git a/src/locales/en-US/Toolbar.json b/src/locales/en/US/Toolbar.json similarity index 100% rename from src/locales/en-US/Toolbar.json rename to src/locales/en/US/Toolbar.json diff --git a/src/locales/en-US/common.json b/src/locales/en/US/common.json similarity index 100% rename from src/locales/en-US/common.json rename to src/locales/en/US/common.json diff --git a/src/locales/es/CineDialog.json b/src/locales/es/CineDialog.json new file mode 100644 index 000000000..2cff386d4 --- /dev/null +++ b/src/locales/es/CineDialog.json @@ -0,0 +1,3 @@ +{ + "fps": "ES RAIZ cps" +} diff --git a/src/locales/en-ES/Header.json b/src/locales/es/Header.json similarity index 100% rename from src/locales/en-ES/Header.json rename to src/locales/es/Header.json diff --git a/src/locales/es/MX/CineDialog.json b/src/locales/es/MX/CineDialog.json new file mode 100644 index 000000000..f8b56b10a --- /dev/null +++ b/src/locales/es/MX/CineDialog.json @@ -0,0 +1,3 @@ +{ + "fps": "MX cps" +} diff --git a/src/locales/es/MX/Header.json b/src/locales/es/MX/Header.json new file mode 100644 index 000000000..6a3f997c4 --- /dev/null +++ b/src/locales/es/MX/Header.json @@ -0,0 +1,7 @@ +{ + "header_research_use": "SOLO USO DE INVESTIGACI脫N", + "header_options": "Opciones", + "header_about": "Sobre", + "header_preferences": "Preferencias", + "header_study_list": "Lista de estudio" +} diff --git a/src/locales/en-ES/Toolbar.json b/src/locales/es/MX/Toolbar.json similarity index 100% rename from src/locales/en-ES/Toolbar.json rename to src/locales/es/MX/Toolbar.json diff --git a/src/locales/en-ES/common.json b/src/locales/es/MX/common.json similarity index 100% rename from src/locales/en-ES/common.json rename to src/locales/es/MX/common.json diff --git a/src/locales/es/common.json b/src/locales/es/common.json new file mode 100755 index 000000000..18a5b4ea3 --- /dev/null +++ b/src/locales/es/common.json @@ -0,0 +1,5 @@ +{ + "Welcome to React": "Welcome to React and react-i18next", + "welcomeMsg": "welcome", + "test": "Lunch time" +} diff --git a/yarn.lock b/yarn.lock index b5373f36e..f37f32229 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11782,13 +11782,12 @@ react-transition-group@^2.0.0, react-transition-group@^2.2.0: prop-types "^15.6.2" react-lifecycles-compat "^3.0.4" -react-viewerbase@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/react-viewerbase/-/react-viewerbase-0.4.2.tgz#a890db450c0f6d1ec495dc2ceb85dbe38fcb7fda" - integrity sha512-1rqdXZ3gQIuRtuxOTKwg9D4EJ1NJ8ug9mQWOAFxx+7PSFhfbjXn55O4Fko92qXrlKqd+Rba1jqBvzTXPr0h0fQ== +"react-viewerbase@file:.yalc/react-viewerbase": + version "0.2.17-1a8178ff" dependencies: "@babel/runtime" "7.2.0" classnames "2.2.6" + i18next "^15.1.3" lodash.isequal "4.5.0" moment "2.24.0" prop-types "15.6.2" @@ -11796,6 +11795,7 @@ react-viewerbase@0.4.2: react-dates "18.4.1" react-dnd "7.0.2" react-dnd-html5-backend "7.0.2" + react-i18next "^10.11.0" react-with-direction "1.3.0" react-vtkjs-viewport@^0.0.7: From 1874f93bcc9885353ba7358b291769558b51b14e Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Tue, 4 Jun 2019 12:34:57 -0300 Subject: [PATCH 05/42] i18n - Multiple languages overrides --- extensions/ohif-vtk-extension/package.json | 4 ++- src/components/Header/Header.js | 32 ++++++++++++----- src/i18n.js | 20 ++++++++--- src/locales/en/Buttons.json | 39 +++++++++++++++++++++ src/locales/en/CineDialog.json | 17 ++++++++- src/locales/en/Header.json | 11 +++--- src/locales/en/UK/Header.json | 2 +- src/locales/en/UK/common.json | 4 --- src/locales/en/US/Header.json | 9 ++--- src/locales/en/US/Toolbar.json | 19 ---------- src/locales/en/US/common.json | 3 -- src/locales/es/AR/Header.json | 3 ++ src/locales/es/Buttons.json | 40 ++++++++++++++++++++++ src/locales/es/CineDialog.json | 7 +++- src/locales/es/Header.json | 10 +++--- src/locales/es/MX/CineDialog.json | 3 -- src/locales/es/MX/Header.json | 6 +--- src/locales/es/MX/Toolbar.json | 13 ------- src/locales/es/MX/common.json | 20 ----------- src/locales/es/common.json | 22 ++++++++++-- 20 files changed, 180 insertions(+), 104 deletions(-) create mode 100644 src/locales/en/Buttons.json delete mode 100755 src/locales/en/UK/common.json delete mode 100644 src/locales/en/US/Toolbar.json delete mode 100755 src/locales/en/US/common.json create mode 100644 src/locales/es/AR/Header.json create mode 100644 src/locales/es/Buttons.json delete mode 100644 src/locales/es/MX/CineDialog.json delete mode 100644 src/locales/es/MX/Toolbar.json delete mode 100644 src/locales/es/MX/common.json diff --git a/extensions/ohif-vtk-extension/package.json b/extensions/ohif-vtk-extension/package.json index c4123e36e..f2a5da283 100644 --- a/extensions/ohif-vtk-extension/package.json +++ b/extensions/ohif-vtk-extension/package.json @@ -30,7 +30,9 @@ "react-dom": "^15.0.0 || ^16.0.0", "react-redux": "^6.0.0", "react-resize-detector": "^3.4.0", - "redux": "^4.0.1" + "redux": "^4.0.1", + "i18next": "^15.1.3", + "react-i18next": "^10.11.0" }, "devDependencies": { "@babel/core": "^7.2.2", diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 92c588727..f04ec8b34 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -36,12 +36,12 @@ class Header extends Component { const { t } = this.props; this.options = [ { - title: t('header_preferences'), + title: t('preferences'), icon: 'fa fa-user', onClick: this.props.openUserPreferencesModal, }, { - title: t('header_about'), + title: t('about'), icon: 'fa fa-info', link: 'http://ohif.org', }, @@ -50,7 +50,9 @@ class Header extends Component { changeLanguage(language) { const { i18n } = this.props; - i18n.changeLanguage(language); + i18n.init({ + lng: language + }); this.loadOptions(); } @@ -64,7 +66,7 @@ class Header extends Component { to={this.props.location.studyLink} className="header-btn header-viewerLink" > - {t('header_back_to_viewer')} + {t('back_to_viewer')} )} @@ -78,27 +80,39 @@ class Header extends Component { state: { studyLink: this.props.location.pathname }, }} > - {t('header_study_list')} + {t('study_list')} )}
- {t('header_research_use')} + {t('research_use')} + + diff --git a/src/i18n.js b/src/i18n.js index cca942b8c..d18457cfe 100755 --- a/src/i18n.js +++ b/src/i18n.js @@ -3,10 +3,10 @@ import { initReactI18next } from 'react-i18next'; const currentLanguage = process.env.APP_LANG || 'es-MX'; -function getDefaultLanguage() { +/*function getDefaultLanguage() { const mainLanguage = currentLanguage.match(/(.*.)(-)/); return mainLanguage !== null ? mainLanguage[1] : null; -} +}*/ function getNameSpaceString(key) { const nameSpaceMatcher = key.match(/[^/]+$/g); @@ -47,7 +47,19 @@ function getLocales() { i18n.use(initReactI18next).init({ resources: getLocales(), - fallbackLng: getDefaultLanguage(), + // fallbackLng: getDefaultLanguage(), + fallbackLng:{ + 'es-MX': ['es'], + 'default': ['en'] + }, + + /*fallbackLng: { + 'de-CH': ['fr', 'it'], + 'zh-Hant': ['zh-Hans', 'en'], + 'es': ['fr'], + 'default': ['en'] + },*/ + lng: currentLanguage, debug: true, @@ -57,7 +69,7 @@ i18n.use(initReactI18next).init({ escapeValue: false, }, - fallbackNS: ['common'], + fallbackNS: ['Header'], defaultNS: 'common', react: { diff --git a/src/locales/en/Buttons.json b/src/locales/en/Buttons.json new file mode 100644 index 000000000..2725ce65b --- /dev/null +++ b/src/locales/en/Buttons.json @@ -0,0 +1,39 @@ +{ + "Themes": "Themes", + "Previous": "Previous", + "Next": "Next", + "Play": "Play", + "Stop": "Stop", + "Layout": "Layout", + "More": "More", + "Crosshairs": "Crosshairs", + "Magnify": "Magnify", + "ROI Window": "ROI Window", + "Probe": "Probe", + "Ellipse": "Ellipse", + "Rectangle": "Rectangle", + "Invert": "Invert", + "Rotate Right": "Rotate Right", + "Flip H": "Flip H", + "Flip V": "Flip V", + "Clear": "Clear", + "Brush": "Brush", + "Coronal": "Coronal", + "Stack Scroll": "Stack Scroll", + "Measurements": "Measurements", + "Zoom": "Zoom", + "Levels": "Levels", + "Pan": "Pan", + "Length": "Length", + "Angle": "Angle", + "Bidirectional": "Bidirectional", + "Freehand": "Freehand", + "EllipticalRoi": "EllipticalRoi", + "CircleRoi": "CircleRoi", + "RectangleRoi": "RectangleRoi", + "Reset": "Reset", + "CINE": "CINE", + "Acquired": "Acquired", + "Sagittal": "Sagittal", + "Axial": "Axial" +} diff --git a/src/locales/en/CineDialog.json b/src/locales/en/CineDialog.json index 9e9a7e759..5c8624060 100644 --- a/src/locales/en/CineDialog.json +++ b/src/locales/en/CineDialog.json @@ -1,3 +1,18 @@ { - "fps": "ingles fps" + "fps": "ingles fps", + "Skip to first image": "Skip to first image", + "Previous image": "Previous, image", + "Play / Stop": "Play, / Stop", + "Next image": "Next, image", + "Skip to last image": "Skip, to last image", + "Skip to first image": "Skip, to first image", + "Previous image": "Previous, image", + "Play / Stop": "Play, / Stop", + "Next image": "Next, image", + "Skip to last image": "Skip, to last image", + "Skip to first image": "Skip, to first image", + "Previous image": "Previous, image", + "Play / Stop": "Play, / Stop", + "Next image": "Next, image", + "Skip to last image": "Skip, to last image" } diff --git a/src/locales/en/Header.json b/src/locales/en/Header.json index 6a3f997c4..0536f8aa5 100644 --- a/src/locales/en/Header.json +++ b/src/locales/en/Header.json @@ -1,7 +1,8 @@ { - "header_research_use": "SOLO USO DE INVESTIGACI脫N", - "header_options": "Opciones", - "header_about": "Sobre", - "header_preferences": "Preferencias", - "header_study_list": "Lista de estudio" + "preferences": "Preferences", + "options": "Options", + "about": "About", + "back_to_viewer": "Back to Viewer", + "study_list": "Study list", + "research_use": "INVESTIGATIONAL USE ONLY" } diff --git a/src/locales/en/UK/Header.json b/src/locales/en/UK/Header.json index d4909843d..e08956bcc 100644 --- a/src/locales/en/UK/Header.json +++ b/src/locales/en/UK/Header.json @@ -1,3 +1,3 @@ { - "header_test": "Joao Grandao" + "header_research_use": "INVESTIGATIONAL PURPOSES ONLY" } diff --git a/src/locales/en/UK/common.json b/src/locales/en/UK/common.json deleted file mode 100755 index 3135ef203..000000000 --- a/src/locales/en/UK/common.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "Welcome to React": "Welcome to React and react-i18next", - "welcomeMsg": "welcome" -} diff --git a/src/locales/en/US/Header.json b/src/locales/en/US/Header.json index 2f2d32c23..651730074 100644 --- a/src/locales/en/US/Header.json +++ b/src/locales/en/US/Header.json @@ -1,9 +1,4 @@ { - "header_preferences": "Preferences", - "header_options": "Options", - "header_about": "About", - "header_back_to_viewer": "Back to Viewer", - "header_study_list": "Study list", - "header_research_use": "INVESTIGATIONAL USE ONLY", - "header_test": "$t(common:test)" + "options": "Options", + "about": "About" } diff --git a/src/locales/en/US/Toolbar.json b/src/locales/en/US/Toolbar.json deleted file mode 100644 index 143d98711..000000000 --- a/src/locales/en/US/Toolbar.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "toolbar_series": "Series", - "toolbar_measurements": "Measurements", - "toolbar_stack_scroll": "Stack Scroll", - "toolbar_zoom": "Zoom", - "toolbar_levels": "Levels", - "toolbar_pan": "Pan", - "toolbar_length": "Length", - "toolbar_annotate": "Annotate", - "toolbar_angle": "Angle", - "toolbar_reset": "Reset", - "toolbar_cine": "CINE", - "toolbar_bidirectional": "Bidirectional", - "toolbar_brush": "Brush", - "toolbar_freehand": "Freehand", - "toolbar_elliptical_roi": "EllipticalRoi", - "toolbar_circle_roi": "CircleRoi", - "toolbar_rectangle_roi": "RectangleRoi" -} diff --git a/src/locales/en/US/common.json b/src/locales/en/US/common.json deleted file mode 100755 index 1d6ab1537..000000000 --- a/src/locales/en/US/common.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "tests___": "test common" -} diff --git a/src/locales/es/AR/Header.json b/src/locales/es/AR/Header.json new file mode 100644 index 000000000..78cedf142 --- /dev/null +++ b/src/locales/es/AR/Header.json @@ -0,0 +1,3 @@ +{ + "research_use": "SOLO USO DE DESAROLLO" +} diff --git a/src/locales/es/Buttons.json b/src/locales/es/Buttons.json new file mode 100644 index 000000000..0d9ac91cc --- /dev/null +++ b/src/locales/es/Buttons.json @@ -0,0 +1,40 @@ +{ + "Themes": "Temas", + "Previous": "Anterior", + "Next": "Pr贸ximo", + "Play": "Play", + "Stop": "Stop", + "Layout": "Esquema", + "More": "M谩s", + "Crosshairs": "Cruces", + "Magnify": "Lupa", + "ROI Window": "Ventana ROI", + "Probe": "Probar", + "Ellipse": "Elipse", + "Rectangle": "Rect谩ngulo", + "Invert": "Invertido", + "Rotate Right": "Rotar ->", + "Flip H": "Espejo Hor.", + "Flip V": "Espejo Ver.", + "Clear": "Limpiar", + "Brush": "Escoba", + "Coronal": "Coronal", + "Stack Scroll": "Avance X slice", + "Measurements": "Medidas", + "Zoom": "Zoom", + "Levels": "Niveles", + "Pan": "Mover", + "Length": "Medici贸n", + "Angle": "脕ngulo", + "Bidirectional": "Bidirectional", + "Freehand": "Freehand", + "EllipticalRoi": "EllipticalRoi", + "CircleRoi": "CircleRoi", + "RectangleRoi": "RectangleRoi", + "Reset": "Reiniciar", + "CINE": "CINE", + "Acquired": "Acquired", + "Sagittal": "Sagittal", + "Axial": "Axial" + +} diff --git a/src/locales/es/CineDialog.json b/src/locales/es/CineDialog.json index 2cff386d4..6f7ff3ec9 100644 --- a/src/locales/es/CineDialog.json +++ b/src/locales/es/CineDialog.json @@ -1,3 +1,8 @@ { - "fps": "ES RAIZ cps" + "fps": "fps", + "Skip to first image": "Avanza para la primera imagen", + "Previous image": "Imagen anterior", + "Play / Stop": "Play / Stop", + "Next image": "Pr贸ximo image", + "Skip to last image": "Pular para la ultima imagen" } diff --git a/src/locales/es/Header.json b/src/locales/es/Header.json index 6a3f997c4..46d616270 100644 --- a/src/locales/es/Header.json +++ b/src/locales/es/Header.json @@ -1,7 +1,7 @@ { - "header_research_use": "SOLO USO DE INVESTIGACI脫N", - "header_options": "Opciones", - "header_about": "Sobre", - "header_preferences": "Preferencias", - "header_study_list": "Lista de estudio" + "research_use": "SOLO USO DE INVESTIGACI脫N", + "options": "Opciones", + "about": "Sobre", + "preferences": "Preferencias", + "study_list": "Lista de estudio" } diff --git a/src/locales/es/MX/CineDialog.json b/src/locales/es/MX/CineDialog.json deleted file mode 100644 index f8b56b10a..000000000 --- a/src/locales/es/MX/CineDialog.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "fps": "MX cps" -} diff --git a/src/locales/es/MX/Header.json b/src/locales/es/MX/Header.json index 6a3f997c4..5ffb6a29b 100644 --- a/src/locales/es/MX/Header.json +++ b/src/locales/es/MX/Header.json @@ -1,7 +1,3 @@ { - "header_research_use": "SOLO USO DE INVESTIGACI脫N", - "header_options": "Opciones", - "header_about": "Sobre", - "header_preferences": "Preferencias", - "header_study_list": "Lista de estudio" + "Opciones": "Elecciones" } diff --git a/src/locales/es/MX/Toolbar.json b/src/locales/es/MX/Toolbar.json deleted file mode 100644 index 8da9042d2..000000000 --- a/src/locales/es/MX/Toolbar.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "toolbar_series": "Series", - "toolbar_measurements": "Medidas", - "toolbar_stack_scroll": "Avance X slice", - "toolbar_zoom": "Zoom", - "toolbar_levels": "Niveles", - "toolbar_pan": "Mover", - "toolbar_length": "Medici贸n", - "toolbar_annotate": "Anotaci贸n", - "toolbar_angle": "脕ngulo", - "toolbar_reset": "Reiniciar", - "toolbar_cine": "CINE" -} diff --git a/src/locales/es/MX/common.json b/src/locales/es/MX/common.json deleted file mode 100644 index 178881ee3..000000000 --- a/src/locales/es/MX/common.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "Themes": "Temas", - "Previous": "Anterior", - "Next": "Pr贸ximo", - "Play": "Play", - "Stop": "Stop", - "Layout": "Esquema", - "More": "M谩s", - "Crosshairs": "Cruces", - "Magnify": "Lupa", - "ROI Window": "Ventana ROI", - "Probe": "Probar", - "Ellipse": "Elipse", - "Rectangle": "Rect谩ngulo", - "Invert": "Invertido", - "Rotate Right": "Rotar ->", - "Flip H": "Espejo Hor.", - "Flip V": "Espejo Ver.", - "Clear": "Limpiar" -} diff --git a/src/locales/es/common.json b/src/locales/es/common.json index 18a5b4ea3..3cbc9da4b 100755 --- a/src/locales/es/common.json +++ b/src/locales/es/common.json @@ -1,5 +1,21 @@ { - "Welcome to React": "Welcome to React and react-i18next", - "welcomeMsg": "welcome", - "test": "Lunch time" + "Themes": "Temas", + "Previous": "Anterior", + "Next": "Pr贸ximo", + "Play": "Play", + "Stop": "Stop", + "Layout": "Esquema", + "More": "M谩s", + "Crosshairs": "Cruces", + "Magnify": "Lupa", + "ROI Window": "Ventana ROI", + "Probe": "Probar", + "Ellipse": "Elipse", + "Rectangle": "Rect谩ngulo", + "Invert": "Invertido", + "Rotate Right": "Rotar ->", + "Flip H": "Espejo Hor.", + "Flip V": "Espejo Ver.", + "Clear": "Limpiar", + "Brush": "Escoba" } From 236a115112d497c00a0a0cb57c0cd73dcc53c1b3 Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Tue, 4 Jun 2019 18:16:07 -0300 Subject: [PATCH 06/42] i18n - Multiple languages overrides --- extensions/ohif-i18n/package.json | 7 +- extensions/ohif-i18n/rollup.config.js | 23 +- extensions/ohif-i18n/src/i18n.js | 70 - extensions/ohif-i18n/src/index.js | 79 +- .../ohif-i18n/src/locales/en-UK/Header.json | 3 - .../ohif-i18n/src/locales/en-UK/common.json | 6 - .../ohif-i18n/src/locales/en-US/Header.json | 3 - .../ohif-i18n/src/locales/en-US/common.json | 3 - .../ohif-i18n/src}/locales/en/Buttons.json | 0 .../ohif-i18n/src/locales/en/CineDialog.json | 18 + .../ohif-i18n/src/locales/en/Header.json | 7 +- .../ohif-i18n/src/locales/en/UK/Header.json | 3 + .../ohif-i18n/src/locales/en/US/Header.json | 4 + .../ohif-i18n/src}/locales/es/AR/Header.json | 0 .../ohif-i18n/src}/locales/es/Buttons.json | 1 - .../ohif-i18n/src/locales/es/CineDialog.json | 8 + .../ohif-i18n/src}/locales/es/Header.json | 0 .../ohif-i18n/src}/locales/es/MX/Header.json | 0 .../ohif-i18n/src}/locales/es/common.json | 0 extensions/ohif-i18n/yarn.lock | 1264 ++++++++++++++++- extensions/ohif-vtk-extension/package.json | 5 +- extensions/ohif-vtk-extension/yarn.lock | 439 +----- package.json | 1 + src/App.js | 8 +- src/components/Header/Header.js | 9 +- src/i18n.js | 79 +- src/locales/en/CineDialog.json | 18 - src/locales/en/Header.json | 8 - src/locales/en/UK/Header.json | 3 - src/locales/en/US/Header.json | 4 - src/locales/en/common.json | 5 - src/locales/es/CineDialog.json | 8 - yarn.lock | 10 +- 33 files changed, 1401 insertions(+), 695 deletions(-) delete mode 100755 extensions/ohif-i18n/src/i18n.js mode change 100644 => 100755 extensions/ohif-i18n/src/index.js delete mode 100644 extensions/ohif-i18n/src/locales/en-UK/Header.json delete mode 100755 extensions/ohif-i18n/src/locales/en-UK/common.json delete mode 100644 extensions/ohif-i18n/src/locales/en-US/Header.json delete mode 100755 extensions/ohif-i18n/src/locales/en-US/common.json rename {src => extensions/ohif-i18n/src}/locales/en/Buttons.json (100%) create mode 100644 extensions/ohif-i18n/src/locales/en/CineDialog.json create mode 100644 extensions/ohif-i18n/src/locales/en/UK/Header.json create mode 100644 extensions/ohif-i18n/src/locales/en/US/Header.json rename {src => extensions/ohif-i18n/src}/locales/es/AR/Header.json (100%) rename {src => extensions/ohif-i18n/src}/locales/es/Buttons.json (99%) create mode 100644 extensions/ohif-i18n/src/locales/es/CineDialog.json rename {src => extensions/ohif-i18n/src}/locales/es/Header.json (100%) rename {src => extensions/ohif-i18n/src}/locales/es/MX/Header.json (100%) rename {src => extensions/ohif-i18n/src}/locales/es/common.json (100%) delete mode 100644 src/locales/en/CineDialog.json delete mode 100644 src/locales/en/Header.json delete mode 100644 src/locales/en/UK/Header.json delete mode 100644 src/locales/en/US/Header.json delete mode 100755 src/locales/en/common.json delete mode 100644 src/locales/es/CineDialog.json diff --git a/extensions/ohif-i18n/package.json b/extensions/ohif-i18n/package.json index 2b09a84f4..880ec4172 100644 --- a/extensions/ohif-i18n/package.json +++ b/extensions/ohif-i18n/package.json @@ -1,7 +1,7 @@ { "name": "ohif-i18n", "version": "0.0.1", - "description": "OHIF extension internationalization", + "description": "OHIF extension for internationalization", "author": "OHIF", "license": "MIT", "repository": "OHIF/Viewers", @@ -17,8 +17,8 @@ "prepublishOnly": "npm run build" }, "peerDependencies": { - "react-i18next": "^10.11.0", - "i18next": "^15.1.3" + "i18next": "^15.1.3", + "react-i18next": "^10.11.0" }, "devDependencies": { "@babel/core": "^7.2.2", @@ -40,6 +40,7 @@ "rollup": "^1.1.2", "rollup-plugin-babel": "^4.2.0", "rollup-plugin-commonjs": "^9.2.0", + "rollup-plugin-copy": "^2.0.1", "rollup-plugin-node-builtins": "^2.1.2", "rollup-plugin-node-resolve": "^4.0.0", "rollup-plugin-peer-deps-external": "^2.2.0", diff --git a/extensions/ohif-i18n/rollup.config.js b/extensions/ohif-i18n/rollup.config.js index ceb293597..81fd1a56f 100644 --- a/extensions/ohif-i18n/rollup.config.js +++ b/extensions/ohif-i18n/rollup.config.js @@ -7,6 +7,7 @@ import url from 'rollup-plugin-url' import pkg from './package.json' // Deal with https://github.com/rollup/rollup-plugin-commonjs/issues/297 import builtins from 'rollup-plugin-node-builtins'; +import copy from 'rollup-plugin-copy' const globals = { 'react': 'React', @@ -39,6 +40,12 @@ export default { postcss({ modules: false }), + copy({ + targets: [ + 'src/locales' + ], + outputFolder: 'dist' + }), url(), babel({ exclude: 'node_modules/**', @@ -47,21 +54,7 @@ export default { }), resolve(), commonjs({ - include: ['node_modules/**', '.yalc/**'], - namedExports: { - 'node_modules/react-vtkjs-viewport/dist/index.js': [ - 'getImageData', - 'loadImageData', - 'VTKViewport', - 'VTKMPRViewport', - ], - '.yalc/react-vtkjs-viewport/dist/index.js': [ - 'getImageData', - 'loadImageData', - 'VTKViewport', - 'VTKMPRViewport', - ] - } + include: ['node_modules/**', '.yalc/**'] }) ], external: Object.keys(pkg.peerDependencies || {}), diff --git a/extensions/ohif-i18n/src/i18n.js b/extensions/ohif-i18n/src/i18n.js deleted file mode 100755 index fbb95926d..000000000 --- a/extensions/ohif-i18n/src/i18n.js +++ /dev/null @@ -1,70 +0,0 @@ -import i18n from 'i18next'; -import { initReactI18next } from 'react-i18next'; - -const currentLanguage = process.env.APP_LANG || 'en-US'; - -function getDefaultLanguage() { - const mainLanguage = currentLanguage.match(/(.*.)(-)/); - return mainLanguage !== null ? mainLanguage[1] : null; -} - -function getCleanKeyForNameSpaces(key) { - const regexKeyCleaner = new RegExp( - `^(\\.\\/${currentLanguage}\\/)(.*.)(\\.json)$` - ); - const cleanedKey = key.match(regexKeyCleaner); - return cleanedKey !== null ? cleanedKey[2] : null; -} - -function getCleanKeyForDefaults(key) { - const regexKeyCleaner = new RegExp( - `^(\\.\\/${getDefaultLanguage()}\\/)(.*.)(\\.json)$` - ); - const cleanedKey = key.match(regexKeyCleaner); - return cleanedKey !== null ? cleanedKey[2] : null; -} - -function getLocales() { - const currentLangList = {}; - const defaultLangList = {}; - const locales = {}; - const context = require.context(`./locales`, true, /\.json$/); - - context.keys().forEach(key => { - const isTheSameOfCurrentLang = key.indexOf(currentLanguage) >= 0; - const isADefaultLang = key.indexOf(`${getDefaultLanguage()}/`) >= 0; - - if (isTheSameOfCurrentLang) { - currentLangList[getCleanKeyForNameSpaces(key)] = context(key); - } - - if (isADefaultLang) { - defaultLangList[getCleanKeyForDefaults(key)] = context(key); - } - }); - - locales[currentLanguage] = { ...currentLangList }; - locales[getDefaultLanguage()] = { ...defaultLangList }; - return locales; -} - -// console.log(getLocales(), currentLanguage, getDefaultLanguage()); - -i18n.use(initReactI18next).init({ - resources: getLocales(), - fallbackLng: getDefaultLanguage(), - lng: currentLanguage, - debug: true, - - // have a common namespace used around the full app - keySeparator: false, // uses content as keys - interpolation: { - escapeValue: false, - }, - - react: { - wait: true, - }, -}); - -export default i18n; diff --git a/extensions/ohif-i18n/src/index.js b/extensions/ohif-i18n/src/index.js old mode 100644 new mode 100755 index 25ec0f5eb..2a4a477a7 --- a/extensions/ohif-i18n/src/index.js +++ b/extensions/ohif-i18n/src/index.js @@ -1 +1,78 @@ -export { default } from './i18n'; +import i18n from 'i18next'; +import { initReactI18next } from 'react-i18next'; + +const currentLanguage = process.env.APP_LANG || 'en-US'; +const debugMode = process.env.I18N_DEBUG || false; + +function getDefaultLanguage() { + const mainLanguage = currentLanguage.match(/(.*.)(-)/); + return mainLanguage !== null ? mainLanguage[1] : null; +} + +function getNameSpaceString(key) { + const nameSpaceMatcher = key.match(/[^/]+$/g); + let finalNameSpace; + + if (nameSpaceMatcher !== null) { + finalNameSpace = nameSpaceMatcher[0].replace('.json', ''); + } + + return finalNameSpace; +} + +function getCleanKeyForNameSpaces(key) { + const cleanedKey = key.match(/[/\\].+(?=[/\\])/); + let finalKey; + + if (cleanedKey !== null) { + finalKey = cleanedKey[0].replace(/[/\\]/, ''); + finalKey = finalKey.replace(/[/\\]/, '-'); + } + + return finalKey; +} + +function getLocales() { + const context = require.context(`./locales`, true, /\.json$/); + const locales = {}; + + context.keys().forEach(key => { + locales[getCleanKeyForNameSpaces(key)] = { + ...locales[getCleanKeyForNameSpaces(key)], + [getNameSpaceString(key)]: context(key), + }; + }); + + return locales; +} + +let translate; + +i18n + .use(initReactI18next) + .init({ + resources: getLocales(), + fallbackLng: getDefaultLanguage(), + + lng: currentLanguage, + debug: debugMode, + + // have a common namespace used around the full app + keySeparator: false, // uses content as keys + interpolation: { + escapeValue: false, + }, + + fallbackNS: ['common'], + defaultNS: 'common', + + react: { + wait: true, + }, + }) + .then(function(t) { + translate = t; + }); + +export { translate as t }; +export default i18n; diff --git a/extensions/ohif-i18n/src/locales/en-UK/Header.json b/extensions/ohif-i18n/src/locales/en-UK/Header.json deleted file mode 100644 index d4909843d..000000000 --- a/extensions/ohif-i18n/src/locales/en-UK/Header.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "header_test": "Joao Grandao" -} diff --git a/extensions/ohif-i18n/src/locales/en-UK/common.json b/extensions/ohif-i18n/src/locales/en-UK/common.json deleted file mode 100755 index f47a451d8..000000000 --- a/extensions/ohif-i18n/src/locales/en-UK/common.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "common": { - "Welcome to React": "Welcome to React and react-i18next", - "welcomeMsg": "welcome" - } -} diff --git a/extensions/ohif-i18n/src/locales/en-US/Header.json b/extensions/ohif-i18n/src/locales/en-US/Header.json deleted file mode 100644 index 383d28867..000000000 --- a/extensions/ohif-i18n/src/locales/en-US/Header.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "header_test": "$t(common:test)" -} diff --git a/extensions/ohif-i18n/src/locales/en-US/common.json b/extensions/ohif-i18n/src/locales/en-US/common.json deleted file mode 100755 index 1d6ab1537..000000000 --- a/extensions/ohif-i18n/src/locales/en-US/common.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "tests___": "test common" -} diff --git a/src/locales/en/Buttons.json b/extensions/ohif-i18n/src/locales/en/Buttons.json similarity index 100% rename from src/locales/en/Buttons.json rename to extensions/ohif-i18n/src/locales/en/Buttons.json diff --git a/extensions/ohif-i18n/src/locales/en/CineDialog.json b/extensions/ohif-i18n/src/locales/en/CineDialog.json new file mode 100644 index 000000000..f7a07113f --- /dev/null +++ b/extensions/ohif-i18n/src/locales/en/CineDialog.json @@ -0,0 +1,18 @@ +{ + "fps": "ingles fps", + "Skip to first image": "Skip to first image", + "Previous image": "Previous, image", + "Play / Stop": "Play, / Stop", + "Next image": "Next, image", + "Skip to last image": "Skip, to last image", + "Skip to first image": "Skip, to first image", + "Previous image": "Previous, image", + "Play / Stop": "Play, / Stop", + "Next image": "Next, image", + "Skip to last image": "Skip, to last image", + "Skip to first image": "Skip, to first image", + "Previous image": "Previous, image", + "Play / Stop": "Play, / Stop", + "Next image": "Next, image", + "Skip to last image": "Skip, to last image" +} diff --git a/extensions/ohif-i18n/src/locales/en/Header.json b/extensions/ohif-i18n/src/locales/en/Header.json index 383d28867..0536f8aa5 100644 --- a/extensions/ohif-i18n/src/locales/en/Header.json +++ b/extensions/ohif-i18n/src/locales/en/Header.json @@ -1,3 +1,8 @@ { - "header_test": "$t(common:test)" + "preferences": "Preferences", + "options": "Options", + "about": "About", + "back_to_viewer": "Back to Viewer", + "study_list": "Study list", + "research_use": "INVESTIGATIONAL USE ONLY" } diff --git a/extensions/ohif-i18n/src/locales/en/UK/Header.json b/extensions/ohif-i18n/src/locales/en/UK/Header.json new file mode 100644 index 000000000..00cca20e1 --- /dev/null +++ b/extensions/ohif-i18n/src/locales/en/UK/Header.json @@ -0,0 +1,3 @@ +{ + "research_use": "INVESTIGATIONAL PURPOSES ONLY" +} diff --git a/extensions/ohif-i18n/src/locales/en/US/Header.json b/extensions/ohif-i18n/src/locales/en/US/Header.json new file mode 100644 index 000000000..5ee6f4f79 --- /dev/null +++ b/extensions/ohif-i18n/src/locales/en/US/Header.json @@ -0,0 +1,4 @@ +{ + "options": "Erik Options", + "about": "About" +} diff --git a/src/locales/es/AR/Header.json b/extensions/ohif-i18n/src/locales/es/AR/Header.json similarity index 100% rename from src/locales/es/AR/Header.json rename to extensions/ohif-i18n/src/locales/es/AR/Header.json diff --git a/src/locales/es/Buttons.json b/extensions/ohif-i18n/src/locales/es/Buttons.json similarity index 99% rename from src/locales/es/Buttons.json rename to extensions/ohif-i18n/src/locales/es/Buttons.json index 0d9ac91cc..870f0cb9e 100644 --- a/src/locales/es/Buttons.json +++ b/extensions/ohif-i18n/src/locales/es/Buttons.json @@ -36,5 +36,4 @@ "Acquired": "Acquired", "Sagittal": "Sagittal", "Axial": "Axial" - } diff --git a/extensions/ohif-i18n/src/locales/es/CineDialog.json b/extensions/ohif-i18n/src/locales/es/CineDialog.json new file mode 100644 index 000000000..6073c562e --- /dev/null +++ b/extensions/ohif-i18n/src/locales/es/CineDialog.json @@ -0,0 +1,8 @@ +{ + "fps": "fps", + "Skip to first image": "Avanza para la primera imagen", + "Previous image": "Imagen anterior", + "Play / Stop": "Play / Stop", + "Next image": "Pr贸ximo image", + "Skip to last image": "Pular para la ultima imagen" +} diff --git a/src/locales/es/Header.json b/extensions/ohif-i18n/src/locales/es/Header.json similarity index 100% rename from src/locales/es/Header.json rename to extensions/ohif-i18n/src/locales/es/Header.json diff --git a/src/locales/es/MX/Header.json b/extensions/ohif-i18n/src/locales/es/MX/Header.json similarity index 100% rename from src/locales/es/MX/Header.json rename to extensions/ohif-i18n/src/locales/es/MX/Header.json diff --git a/src/locales/es/common.json b/extensions/ohif-i18n/src/locales/es/common.json similarity index 100% rename from src/locales/es/common.json rename to extensions/ohif-i18n/src/locales/es/common.json diff --git a/extensions/ohif-i18n/yarn.lock b/extensions/ohif-i18n/yarn.lock index 8e231ebf3..5f2e07d90 100644 --- a/extensions/ohif-i18n/yarn.lock +++ b/extensions/ohif-i18n/yarn.lock @@ -680,7 +680,7 @@ "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" -"@babel/runtime@^7.2.0": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.2.0": version "7.4.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12" integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ== @@ -720,6 +720,13 @@ lodash "^4.17.11" to-fast-properties "^2.0.0" +"@samverschueren/stream-to-observable@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" + integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== + dependencies: + any-observable "^0.3.0" + "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" @@ -774,7 +781,7 @@ alphanum-sort@^1.0.0: resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= -ansi-escapes@^3.2.0: +ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== @@ -806,6 +813,11 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +any-observable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" + integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -813,6 +825,21 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + array-includes@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" @@ -821,6 +848,28 @@ array-includes@^3.0.3: define-properties "^1.1.2" es-abstract "^1.7.0" +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" @@ -830,11 +879,21 @@ asn1.js@^4.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + babel-eslint@^10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.0.1.tgz#919681dc099614cd7d31d45c8908695092a1faed" @@ -852,6 +911,19 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" @@ -882,6 +954,22 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -977,6 +1065,21 @@ builtin-modules@^3.1.0: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" @@ -1016,7 +1119,7 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000971: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000971.tgz#d1000e4546486a6977756547352bc96a4cfd2b13" integrity sha512-TQFYFhRS0O5rdsmSbF1Wn+16latXYsQJat66f7S7lizXW1PVpWJeZw9wqqVLIjuxDRz7s7xRUj13QCfd8hKn6g== -chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -1027,7 +1130,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1041,6 +1144,11 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -1054,18 +1162,36 @@ circular-json@^0.3.1: resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + classnames@^2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== -cli-cursor@^2.1.0: +cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= dependencies: restore-cursor "^2.0.0" +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" @@ -1085,6 +1211,19 @@ coa@^2.0.2: chalk "^2.4.1" q "^1.1.2" +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1118,6 +1257,16 @@ color@^3.0.0: color-convert "^1.9.1" color-string "^1.5.2" +commander@^2.14.1, commander@^2.9.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1152,6 +1301,11 @@ convert-source-map@^1.1.0: dependencies: safe-buffer "~5.1.1" +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + core-js-compat@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.1.3.tgz#0cc3ba4c7f62928c2837e1cffbe8dc78b4f1ae14" @@ -1181,7 +1335,7 @@ cosmiconfig@^4.0.0: parse-json "^4.0.0" require-from-string "^2.0.1" -cosmiconfig@^5.0.0: +cosmiconfig@^5.0.0, cosmiconfig@^5.0.7, cosmiconfig@^5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== @@ -1230,7 +1384,7 @@ cross-env@^5.2.0: cross-spawn "^6.0.5" is-windows "^1.0.0" -cross-spawn@^6.0.5: +cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -1423,13 +1577,25 @@ csso@^3.5.1: dependencies: css-tree "1.0.0-alpha.29" -debug@^2.6.8, debug@^2.6.9: +date-fns@^1.27.2: + version "1.30.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + +debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" +debug@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + debug@^4.0.1, debug@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" @@ -1437,6 +1603,16 @@ debug@^4.0.1, debug@^4.1.0: dependencies: ms "^2.1.1" +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -1456,6 +1632,40 @@ define-properties@^1.1.2, define-properties@^1.1.3: dependencies: object-keys "^1.0.12" +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + des.js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" @@ -1521,6 +1731,11 @@ electron-to-chromium@^1.3.137: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.143.tgz#8b2a631ab75157aa53d0c2933275643b99ef580b" integrity sha512-J9jOpxIljQZlV6GIP2fwAWq0T69syawU0sH3EW3O2Bgxquiy+veeIT5mBDRz+i3oHUSL1tvVgRKH3/4QiQh9Pg== +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= + elliptic@^6.0.0: version "6.4.1" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" @@ -1544,6 +1759,13 @@ emojis-list@^2.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +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" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + dependencies: + once "^1.4.0" + entities@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -1584,7 +1806,7 @@ es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -1779,6 +2001,47 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + external-editor@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" @@ -1788,6 +2051,20 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" @@ -1808,6 +2085,14 @@ fastparse@^1.1.1: resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -1823,6 +2108,21 @@ file-entry-cache@^2.0.0: flat-cache "^1.2.1" object-assign "^4.0.1" +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +find-parent-dir@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" + integrity sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ= + find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -1830,6 +2130,13 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + flat-cache@^1.2.1: version "1.3.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" @@ -1840,11 +2147,37 @@ flat-cache@^1.2.1: rimraf "~2.6.2" write "^0.2.1" +fn-name@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" + integrity sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc= + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + foreach@~2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1867,6 +2200,15 @@ fwd-stream@^1.0.4: dependencies: readable-stream "~1.0.26-4" +g-status@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/g-status/-/g-status-2.0.2.tgz#270fd32119e8fc9496f066fe5fe88e0a6bc78b97" + integrity sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA== + dependencies: + arrify "^1.0.1" + matcher "^1.0.0" + simple-git "^1.85.0" + generic-names@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-1.0.3.tgz#2d786a121aee508876796939e8e3bff836c20917" @@ -1874,7 +2216,29 @@ generic-names@^1.0.3: dependencies: loader-utils "^0.2.16" -glob@^7.1.2, glob@^7.1.3: +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" + integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg== + +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob@^7.0.3, glob@^7.1.2, glob@^7.1.3: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== @@ -1891,7 +2255,18 @@ globals@^11.1.0, globals@^11.7.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -graceful-fs@^4.1.2: +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== @@ -1918,6 +2293,37 @@ has-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + has@^1.0.0, has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -1975,6 +2381,22 @@ html-comment-regex@^1.1.0: resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== +husky@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/husky/-/husky-1.3.1.tgz#26823e399300388ca2afff11cfa8a86b0033fae0" + integrity sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg== + dependencies: + cosmiconfig "^5.0.7" + execa "^1.0.0" + find-up "^3.0.0" + get-stdin "^6.0.0" + is-ci "^2.0.0" + pkg-dir "^3.0.0" + please-upgrade-node "^3.1.1" + read-pkg "^4.0.1" + run-node "^1.0.0" + slash "^2.0.0" + iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -2037,6 +2459,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" @@ -2091,6 +2518,20 @@ is-absolute-url@^2.0.0: resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -2101,11 +2542,23 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + is-color-stop@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" @@ -2118,27 +2571,97 @@ is-color-stop@^1.0.0: rgb-regex "^1.0.1" rgba-regex "^1.0.0" +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= +is-glob@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= -is-obj@^1.0.0: +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= @@ -2148,6 +2671,46 @@ is-object@~0.1.2: resolved "https://registry.yarnpkg.com/is-object/-/is-object-0.1.2.tgz#00efbc08816c33cfc4ac8251d132e10dc65098d7" integrity sha1-AO+8CIFsM8/ErIJR0TLhDcZQmNc= +is-observable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" + integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== + dependencies: + symbol-observable "^1.1.0" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= + dependencies: + path-is-inside "^1.0.1" + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-plain-object@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" + integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== + dependencies: + isobject "^4.0.0" + is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -2160,11 +2723,21 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + is-svg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" @@ -2179,7 +2752,7 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.0" -is-windows@^1.0.0: +is-windows@^1.0.0, is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -2194,7 +2767,7 @@ isarray@0.0.1: resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= -isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -2209,6 +2782,23 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isobject@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" + integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== + js-levenshtein@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" @@ -2264,6 +2854,13 @@ json5@^2.1.0: dependencies: minimist "^1.2.0" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + jsx-ast-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz#0ee4e2c971fb9601c67b5641b71be80faecf0b36" @@ -2271,6 +2868,30 @@ jsx-ast-utils@^2.1.0: dependencies: array-includes "^3.0.3" +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + level-blobs@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/level-blobs/-/level-blobs-0.1.7.tgz#9ab9b97bb99f1edbf9f78a3433e21ed56386bdaf" @@ -2364,6 +2985,81 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lint-staged@^8.1.0: + version "8.1.7" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.1.7.tgz#a8988bc83bdffa97d04adb09dbc0b1f3a58fa6fc" + integrity sha512-egT0goFhIFoOGk6rasPngTFh2qDqxZddM0PwI58oi66RxCDcn5uDwxmiasWIF0qGnchHSYVJ8HPRD5LrFo7TKA== + dependencies: + chalk "^2.3.1" + commander "^2.14.1" + cosmiconfig "^5.2.0" + debug "^3.1.0" + dedent "^0.7.0" + del "^3.0.0" + execa "^1.0.0" + find-parent-dir "^0.3.0" + g-status "^2.0.2" + is-glob "^4.0.0" + is-windows "^1.0.2" + listr "^0.14.2" + listr-update-renderer "^0.5.0" + lodash "^4.17.11" + log-symbols "^2.2.0" + micromatch "^3.1.8" + npm-which "^3.0.1" + p-map "^1.1.1" + path-is-inside "^1.0.2" + pify "^3.0.0" + please-upgrade-node "^3.0.2" + staged-git-files "1.1.2" + string-argv "^0.0.2" + stringify-object "^3.2.2" + yup "^0.27.0" + +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= + +listr-update-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" + integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^2.3.0" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" + integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== + dependencies: + chalk "^2.4.1" + cli-cursor "^2.1.0" + date-fns "^1.27.2" + figures "^2.0.0" + +listr@^0.14.2: + version "0.14.3" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" + integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== + dependencies: + "@samverschueren/stream-to-observable" "^0.3.0" + is-observable "^1.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.5.0" + listr-verbose-renderer "^0.5.0" + p-map "^2.0.0" + rxjs "^6.3.3" + load-json-file@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" @@ -2392,6 +3088,14 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -2412,6 +3116,29 @@ lodash@^4.17.11, lodash@^4.17.5: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + dependencies: + chalk "^1.0.0" + +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" + integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + dependencies: + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" + loose-envify@^1.0.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -2431,6 +3158,25 @@ magic-string@^0.25.2: dependencies: sourcemap-codec "^1.4.4" +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +matcher@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.1.1.tgz#51d8301e138f840982b338b116bb0c09af62c1c2" + integrity sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg== + dependencies: + escape-string-regexp "^1.0.4" + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -2445,6 +3191,25 @@ mdn-data@~1.1.0: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== +micromatch@^3.1.8: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -2490,6 +3255,14 @@ minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + mkdirp@^0.5.1, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -2517,6 +3290,23 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -2549,6 +3339,29 @@ normalize-url@^3.0.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== +npm-path@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" + integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw== + dependencies: + which "^1.2.10" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-which@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" + integrity sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo= + dependencies: + commander "^2.9.0" + npm-path "^2.0.2" + which "^1.2.10" + nth-check@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -2556,11 +3369,25 @@ nth-check@^1.0.2: dependencies: boolbase "~1.0.0" -object-assign@^4.0.1, object-assign@^4.1.1: +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + object-keys@^1.0.12: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" @@ -2580,6 +3407,13 @@ object-keys@~0.4.0: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + object.fromentries@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" @@ -2598,6 +3432,13 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.2" es-abstract "^1.5.1" +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + object.values@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" @@ -2613,7 +3454,7 @@ octal@^1.0.0: resolved "https://registry.yarnpkg.com/octal/-/octal-1.0.0.tgz#63e7162a68efbeb9e213588d58e989d1e5c4530b" integrity sha1-Y+cWKmjvvrniE1iNWOmJ0eXEUws= -once@^1.3.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -2644,6 +3485,11 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -2651,6 +3497,13 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" +p-limit@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" + integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -2658,6 +3511,23 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + p-queue@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-2.4.2.tgz#03609826682b743be9a22dba25051bd46724fc34" @@ -2668,6 +3538,11 @@ p-try@^1.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -2702,6 +3577,11 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -2712,12 +3592,12 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.2: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= -path-key@^2.0.1: +path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= @@ -2755,6 +3635,18 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" @@ -2762,6 +3654,25 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +please-upgrade-node@^3.0.2, please-upgrade-node@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac" + integrity sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ== + dependencies: + semver-compare "^1.0.0" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + postcss-calc@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" @@ -3115,6 +4026,11 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +prettier@^1.15.3: + version "1.17.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.17.1.tgz#ed64b4e93e370cb8a25b9ef7fef3e4fd1c0995db" + integrity sha512-TzGRNvuUSmPgwivDqkZ9tM/qTGW9hqDKWOE9YHiyQdixlKbv7kvEqsmDPrcHJTKwthU774TQwZXVtaQ/mMsvjg== + private@^0.1.6: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -3149,6 +4065,11 @@ prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" +property-expr@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-1.5.1.tgz#22e8706894a0c8e28d58735804f6ba3a3673314f" + integrity sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g== + prr@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" @@ -3171,6 +4092,14 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -3218,6 +4147,15 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" +read-pkg@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" + integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= + dependencies: + normalize-package-data "^2.3.2" + parse-json "^4.0.0" + pify "^3.0.0" + readable-stream@^1.0.26-4: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -3275,6 +4213,14 @@ regenerator-transform@^0.14.0: dependencies: private "^0.1.6" +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + regexp-tree@^0.1.6: version "0.1.10" resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.10.tgz#d837816a039c7af8a8d64d7a7c3cf6a1d93450bc" @@ -3330,6 +4276,16 @@ regjsparser@^0.6.0: dependencies: jsesc "~0.5.0" +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + require-from-string@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" @@ -3350,6 +4306,11 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1: version "1.11.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" @@ -3365,6 +4326,11 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + rgb-regex@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" @@ -3375,7 +4341,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@~2.6.2: +rimraf@^2.2.8, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -3408,6 +4374,15 @@ rollup-plugin-commonjs@^9.2.0: resolve "^1.10.0" rollup-pluginutils "^2.6.0" +rollup-plugin-copy@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-copy/-/rollup-plugin-copy-2.0.1.tgz#2a45e45be84a0d4054d1774604044e7f7581fdae" + integrity sha512-IE+Ob5k1Pi/DLi8SlFcf9jN1m2p0ovIwMuz0GM5NeQeV14puW/bCUpmXlqVtQVy+ErXOhZEeBaqinJ0xnJdxKg== + dependencies: + chalk "^2.4.2" + fs-extra "^7.0.1" + is-plain-object "^3.0.0" + rollup-plugin-node-builtins@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.1.2.tgz#24a1fed4a43257b6b64371d8abc6ce1ab14597e9" @@ -3485,7 +4460,12 @@ run-async@^2.2.0: dependencies: is-promise "^2.1.0" -rxjs@^6.4.0: +run-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" + integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== + +rxjs@^6.3.3, rxjs@^6.4.0: version "6.5.2" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== @@ -3497,6 +4477,13 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -3507,6 +4494,11 @@ sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" @@ -3522,6 +4514,26 @@ semver@~2.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz#b9848f25d6cf36333073ec9ef8856d42f1233e52" integrity sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI= +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -3542,11 +4554,18 @@ shebang-regex@^1.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= -signal-exit@^3.0.2: +signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +simple-git@^1.85.0: + version "1.113.0" + resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.113.0.tgz#668989728a1e9cf4ec6c72b69ea2eecc93489bea" + integrity sha512-i9WVsrK2u0G/cASI9nh7voxOk9mhanWY9eGtWBDSYql6m49Yk5/Fan6uZsDr/xmzv8n+eQ8ahKCoEr8cvU3h+g== + dependencies: + debug "^4.0.1" + simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -3554,6 +4573,16 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= + slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -3563,6 +4592,52 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -3604,6 +4679,13 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -3614,6 +4696,24 @@ stable@^0.1.8: resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== +staged-git-files@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.1.2.tgz#4326d33886dc9ecfa29a6193bf511ba90a46454b" + integrity sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +string-argv@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" + integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY= + string-hash@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" @@ -3624,7 +4724,16 @@ string-range@~1.2, string-range@~1.2.1: resolved "https://registry.yarnpkg.com/string-range/-/string-range-1.2.2.tgz#a893ed347e72299bc83befbbf2a692a8d239d5dd" integrity sha1-qJPtNH5yKZvIO++78qaSqNI51d0= -string-width@^2.1.0: +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -3653,7 +4762,16 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^3.0.0: +stringify-object@^3.2.2: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= @@ -3679,6 +4797,11 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + strip-json-comments@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -3744,6 +4867,16 @@ svgo@^1.0.0: unquote "~1.1.1" util.promisify "~1.0.0" +symbol-observable@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +synchronous-promise@^2.0.6: + version "2.0.9" + resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.9.tgz#b83db98e9e7ae826bf9c8261fd8ac859126c780a" + integrity sha512-LO95GIW16x69LuND1nuuwM4pjgFGupg7pZ/4lU86AmchPKrhk0o2tpMU2unXRrqo81iAFe1YJ0nAGEVwsrZAgg== + table@^5.0.2: version "5.4.0" resolved "https://registry.yarnpkg.com/table/-/table-5.4.0.tgz#d772a3216e68829920a41a32c18eda286c95d780" @@ -3781,6 +4914,36 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" + integrity sha1-riF2gXXRVZ1IvvNUILL0li8JwzA= + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -3831,6 +4994,16 @@ unicode-property-aliases-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -3841,11 +5014,24 @@ uniqs@^2.0.0: resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + unquote@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -3853,6 +5039,16 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -3879,7 +5075,7 @@ vendors@^1.0.0: resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw== -which@^1.2.9: +which@^1.2.10, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -3891,6 +5087,14 @@ wordwrap@~1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -3927,3 +5131,15 @@ xtend@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xtend/-/xtend-3.0.0.tgz#5cce7407baf642cba7becda568111c493f59665a" integrity sha1-XM50B7r2Qsunvs2laBEcST9ZZlo= + +yup@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/yup/-/yup-0.27.0.tgz#f8cb198c8e7dd2124beddc2457571329096b06e7" + integrity sha512-v1yFnE4+u9za42gG/b/081E7uNW9mUj3qtkmelLbW5YPROZzSH/KUUyJu9Wt8vxFJcT9otL/eZopS0YK1L5yPQ== + dependencies: + "@babel/runtime" "^7.0.0" + fn-name "~2.0.1" + lodash "^4.17.11" + property-expr "^1.5.0" + synchronous-promise "^2.0.6" + toposort "^2.0.2" diff --git a/extensions/ohif-vtk-extension/package.json b/extensions/ohif-vtk-extension/package.json index f2a5da283..fd77160e9 100644 --- a/extensions/ohif-vtk-extension/package.json +++ b/extensions/ohif-vtk-extension/package.json @@ -32,7 +32,8 @@ "react-resize-detector": "^3.4.0", "redux": "^4.0.1", "i18next": "^15.1.3", - "react-i18next": "^10.11.0" + "react-i18next": "^10.11.0", + "react-viewerbase": "^0.6.1" }, "devDependencies": { "@babel/core": "^7.2.2", @@ -54,7 +55,6 @@ "prettier": "^1.15.3", "react": "^16.6.3", "react-dom": "^16.6.3", - "react-viewerbase": "^0.2.11", "rollup": "^1.1.2", "rollup-plugin-babel": "^4.2.0", "rollup-plugin-commonjs": "^9.2.0", @@ -90,6 +90,7 @@ "dependencies": { "@babel/runtime": "^7.2.0", "classnames": "^2.2.6", + "ohif-vtk-extension": "file:.yalc/ohif-vtk-extension", "react-vtkjs-viewport": "^0.0.7" } } diff --git a/extensions/ohif-vtk-extension/yarn.lock b/extensions/ohif-vtk-extension/yarn.lock index 7bbe5bc73..74b43e077 100644 --- a/extensions/ohif-vtk-extension/yarn.lock +++ b/extensions/ohif-vtk-extension/yarn.lock @@ -660,7 +660,7 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.2.0": +"@babel/runtime@^7.2.0": version "7.3.1" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.3.1.tgz#574b03e8e8a9898eaf4a872a92ea20b7846f6f2a" integrity sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA== @@ -815,22 +815,6 @@ agentkeepalive@^3.3.0, agentkeepalive@^3.4.1: dependencies: humanize-ms "^1.2.1" -airbnb-prop-types@^2.10.0, airbnb-prop-types@^2.8.1: - version "2.12.0" - resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.12.0.tgz#67b30a5ba4dda9b9e70a480f85150a2ccd7fa132" - integrity sha512-EJLaLf0Rjg+AouOgIBlO1rerwgwu3Y0dwxp7BWzUemY9J1UPO9XOlMmOXzpaHW9O0RzpofiThVl0sIToHtLPAQ== - dependencies: - array.prototype.find "^2.0.4" - function.prototype.name "^1.1.0" - has "^1.0.3" - is-regex "^1.0.4" - object-is "^1.0.1" - object.assign "^4.1.0" - object.entries "^1.1.0" - prop-types "^15.6.2" - prop-types-exact "^1.2.0" - react-is "^16.8.1" - ajv@^6.5.3, ajv@^6.5.5, ajv@^6.9.1: version "6.9.1" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.9.1.tgz#a4d3683d74abc5670e75f0b16520f70a20ea8dc1" @@ -980,29 +964,12 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.find@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90" - integrity sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA= - dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" - -array.prototype.flat@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz#812db8f02cad24d3fab65dd67eabe3b8903494a4" - integrity sha512-rVqIs330nLJvfC7JqYvEWwqVr5QjYF1ib02i3YJtR/fICO6527Tjpc/e4Mvmxh3GIePPreRXMdaGyC99YphWEw== - dependencies: - define-properties "^1.1.2" - es-abstract "^1.10.0" - function-bind "^1.1.1" - arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asap@^2.0.0, asap@^2.0.6, asap@~2.0.3: +asap@^2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -1211,11 +1178,6 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" -brcast@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/brcast/-/brcast-2.0.2.tgz#2db16de44140e418dc37fab10beec0369e78dcef" - integrity sha512-Tfn5JSE7hrUlFcOoaLzVvkbgIemIorMIyoMr3TgvszWW7jFt2C9PdeMLtysYD9RU0MmU17b69+XJG1eRY2OBRg== - brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -1492,11 +1454,6 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4 escape-string-regexp "^1.0.5" supports-color "^5.3.0" -change-emitter@^0.1.2: - version "0.1.6" - resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" - integrity sha1-6LL+PX8at9aaMhma/5HqaTFAlRU= - character-entities-html4@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.2.tgz#c44fdde3ce66b52e8d321d6c1bf46101f0150610" @@ -1570,7 +1527,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2.2.5, classnames@^2.2.6: +classnames@^2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== @@ -1810,11 +1767,6 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control- resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= -"consolidated-events@^1.1.1 || ^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/consolidated-events/-/consolidated-events-2.0.2.tgz#da8d8f8c2b232831413d9e190dc11669c79f4a91" - integrity sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ== - contains-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -1844,11 +1796,6 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@^1.0.0: - version "1.2.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" - integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= - core-js@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" @@ -2238,11 +2185,6 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -deepmerge@^1.5.1, deepmerge@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" - integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ== - defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -2350,21 +2292,6 @@ dir-glob@^2.2.1: dependencies: path-type "^3.0.0" -direction@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/direction/-/direction-1.0.2.tgz#ac49c4699edf1283fd82f34e701ca668ea4883b9" - integrity sha512-hSKoz5FBn+zhP9vWKkVQaaxnRDg3/MoPdcg2au54HIUDR8MrP8Ah1jXSJwCXel6SV3Afh5DSzc8Uqv2r1UoQwQ== - -dnd-core@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/dnd-core/-/dnd-core-7.0.2.tgz#6c080eb57243fa0372fd083b3db242d9eb525010" - integrity sha512-InwRBi6zTndtE3+3nTYpLJkYMEr7utSR7OziAoSFhtQsbUfJE1KeqxM+ZFRIMKn6ehxUTAC+QU6QC7IG9u86Mg== - dependencies: - asap "^2.0.6" - invariant "^2.2.4" - lodash "^4.17.11" - redux "^4.0.1" - doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" @@ -2380,13 +2307,6 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" -dom-helpers@^3.2.1, dom-helpers@^3.3.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" - integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== - dependencies: - "@babel/runtime" "^7.1.2" - dom-serializer@0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" @@ -2531,7 +2451,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0: +es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.5.1, es-abstract@^1.7.0: version "1.13.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== @@ -2899,19 +2819,6 @@ fastparse@^1.1.1: resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== -fbjs@^0.8.1, fbjs@^0.8.4: - version "0.8.17" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" - integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= - 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.18" - figgy-pudding@^3.0.0, figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" @@ -3142,15 +3049,6 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz#8bd763cc0af860a859cc5d49384d74b932cd2327" - integrity sha512-Bs0VRrTz4ghD8pTmbJQD1mZ8A/mN0ur/jGz+A6FBxPDUPkm1tNfF6bhTYPA7i7aF4lZJVr+OXTNNrnnIl58Wfg== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - is-callable "^1.1.3" - functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" @@ -3314,14 +3212,6 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -global-cache@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/global-cache/-/global-cache-1.2.1.tgz#39ca020d3dd7b3f0934c52b75363f8d53312c16d" - integrity sha512-EOeUaup5DgWKlCMhA9YFqNRIlZwoxt731jCh47WBV9fQqHgXhr3Fa55hfgIUqilIcPsfdNKN7LHjrNY+Km40KA== - dependencies: - define-properties "^1.1.2" - is-symbol "^1.0.1" - global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -3516,18 +3406,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0: - version "2.5.5" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" - integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== - -hoist-non-react-statics@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b" - integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA== - dependencies: - react-is "^16.7.0" - hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" @@ -3786,7 +3664,7 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== -invariant@^2.1.0, invariant@^2.2.2, invariant@^2.2.4: +invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -3867,7 +3745,7 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" -is-callable@^1.1.3, is-callable@^1.1.4: +is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== @@ -4105,7 +3983,7 @@ is-retry-allowed@^1.0.0: resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= -is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: +is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= @@ -4122,18 +4000,13 @@ is-svg@^3.0.0: dependencies: html-comment-regex "^1.1.0" -is-symbol@^1.0.1, is-symbol@^1.0.2: +is-symbol@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== dependencies: has-symbols "^1.0.0" -is-touch-device@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-touch-device/-/is-touch-device-1.0.1.tgz#9a2fd59f689e9a9bf6ae9a86924c4ba805a42eab" - integrity sha512-LAYzo9kMT1b2p19L/1ATGt2XcSilnzNlyvq6c0pbPRVisLbAPpLqr53tIJS00kvrTkj0HtR8U7+u8X0yR8lPSw== - is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -4191,14 +4064,6 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isomorphic-fetch@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" - integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= - dependencies: - node-fetch "^1.0.1" - whatwg-fetch ">=0.10.0" - isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -4669,11 +4534,6 @@ lodash.get@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= - lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -4699,7 +4559,7 @@ lodash@^3.10.1: resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@^4.1.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5: +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== @@ -5106,11 +4966,6 @@ mkpath@^1.0.0: resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-1.0.0.tgz#ebb3a977e7af1c683ae6fda12b545a6ba6c5853d" integrity sha1-67Opd+evHGg65v2hK1Raa6bFhT0= -moment@>=1.6.0, moment@^2.24.0: - version "2.24.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" - integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -5179,14 +5034,6 @@ node-fetch-npm@^2.0.2: json-parse-better-errors "^1.0.0" safe-buffer "^5.1.1" -node-fetch@^1.0.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - node-gyp@^3.6.2, node-gyp@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" @@ -5582,12 +5429,7 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-is@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" - integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= - -object-keys@^1.0.11, object-keys@^1.0.12: +object-keys@^1.0.12: version "1.1.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032" integrity sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg== @@ -5613,26 +5455,6 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.entries@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" - integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.12.0" - function-bind "^1.1.1" - has "^1.0.3" - object.fromentries@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" @@ -6525,13 +6347,6 @@ promise.series@^0.2.0: resolved "https://registry.yarnpkg.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd" integrity sha1-LMfr6Vn8OmYZwEq029yeRS2GS70= -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - promzard@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" @@ -6539,24 +6354,7 @@ promzard@^0.3.0: dependencies: read "1" -prop-types-exact@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" - integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== - dependencies: - has "^1.0.3" - object.assign "^4.1.0" - reflect.ownkeys "^0.2.0" - -prop-types-extra@^1.0.1, prop-types-extra@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.0.tgz#32609910ea2dcf190366bacd3490d5a6412a605f" - integrity sha512-QFyuDxvMipmIVKD2TwxLVPzMnO4e5oOf1vr3tJIomL8E7d0lr6phTHd5nkPhFIzTD1idBLLEPeylL9g+rrTzRg== - dependencies: - react-is "^16.3.2" - warning "^3.0.0" - -prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2: +prop-types@^15.6.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -6723,66 +6521,6 @@ rc@^1.0.1, rc@^1.1.6: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-addons-shallow-compare@^15.6.2: - version "15.6.2" - resolved "https://registry.yarnpkg.com/react-addons-shallow-compare/-/react-addons-shallow-compare-15.6.2.tgz#198a00b91fc37623db64a28fd17b596ba362702f" - integrity sha1-GYoAuR/DdiPbZKKP0XtZa6NicC8= - dependencies: - fbjs "^0.8.4" - object-assign "^4.1.0" - -react-bootstrap-modal@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/react-bootstrap-modal/-/react-bootstrap-modal-4.2.0.tgz#010b3ca9230a3c147fa5fc6aa39b6971e34151bd" - integrity sha512-2Xx9yvPEnMNhJIAKCg+t3CECF6w3qt2mmICv1Y1vwDBHeuyyf3OvSFcnRM8E0Tn7pywgopL2qyU4yx0vnGKmdA== - dependencies: - classnames "^2.2.6" - dom-helpers "^3.3.1" - prop-types "^15.6.1" - prop-types-extra "^1.1.0" - react-overlays "^0.8.0" - react-transition-group "^2.0.0" - -react-dates@^18.4.1: - version "18.5.0" - resolved "https://registry.yarnpkg.com/react-dates/-/react-dates-18.5.0.tgz#31cc8ab01b2cc546b938e198fd8d4316878f5717" - integrity sha512-5zWR3+ekkRzf740omDkO+N0JifsGGOeyvWwQ/7dFxSb2CqHUsOfKgvpXOiwd3hBm4yr+lelESI3b458BEOU5og== - dependencies: - airbnb-prop-types "^2.10.0" - consolidated-events "^1.1.1 || ^2.0.0" - is-touch-device "^1.0.1" - lodash "^4.1.1" - object.assign "^4.1.0" - object.values "^1.0.4" - prop-types "^15.6.1" - react-addons-shallow-compare "^15.6.2" - react-moment-proptypes "^1.6.0" - react-outside-click-handler "^1.2.0" - react-portal "^4.1.5" - react-with-direction "^1.3.0" - react-with-styles "^3.2.0" - react-with-styles-interface-css "^4.0.2" - -react-dnd-html5-backend@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/react-dnd-html5-backend/-/react-dnd-html5-backend-7.0.2.tgz#f74181ca0ff05be13eb6094629c5ad560f558a7e" - integrity sha512-BPhmHeQjvhPXRykHvFLbM+TJFrrarcuf/mIArNEmXzZuNhLfbOnHtMSzR8lPwodABcDAYj7hEF7vTABXX298vA== - dependencies: - dnd-core "^7.0.2" - lodash "^4.17.11" - -react-dnd@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/react-dnd/-/react-dnd-7.0.2.tgz#8f5611a6e877592932c082d6280c64d1c817f420" - integrity sha512-nJnHJo/tNQjyod234+hPNopWHPvgH0gujf3pcdJWRe3l0GL+jSXXwXJ2SFwIHkVmxPYrx8+gbKU3+Pq26p6fkg== - dependencies: - dnd-core "^7.0.2" - hoist-non-react-statics "^3.1.0" - invariant "^2.1.0" - lodash "^4.17.11" - recompose "^0.30.0" - shallowequal "^1.1.0" - react-dom@^16.6.3: version "16.8.3" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.3.tgz#ae236029e66210783ac81999d3015dfc475b9c32" @@ -6793,78 +6531,11 @@ react-dom@^16.6.3: prop-types "^15.6.2" scheduler "^0.13.3" -react-is@^16.3.2, react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.8.1: version "16.8.3" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.3.tgz#4ad8b029c2a718fc0cfc746c8d4e1b7221e5387d" integrity sha512-Y4rC1ZJmsxxkkPuMLwvKvlL1Zfpbcu+Bf4ZigkHup3v9EfdYhAlWAaVyA19olXq2o2mGn0w+dFKvk3pVVlYcIA== -react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" - integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== - -react-moment-proptypes@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/react-moment-proptypes/-/react-moment-proptypes-1.6.0.tgz#8ec266ee392a08ba3412d2df2eebf833ab1046df" - integrity sha512-4h7EuhDMTzQqZ+02KUUO+AVA7PqhbD88yXB740nFpNDyDS/bj9jiPyn2rwr9sa8oDyaE1ByFN9+t5XPyPTmN6g== - dependencies: - moment ">=1.6.0" - -react-outside-click-handler@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/react-outside-click-handler/-/react-outside-click-handler-1.2.2.tgz#2c4609fbaacbfc192e269786d555419b115bf93f" - integrity sha512-MgCxmFARGN1VrZdwoLkER/y3So6mC/fSniXI4XcXcB+Jt05nw/k8a/R1hSoa7p414uZUZ8NfClN3eVmZm9bM5Q== - dependencies: - airbnb-prop-types "^2.10.0" - consolidated-events "^1.1.1 || ^2.0.0" - object.values "^1.0.4" - prop-types "^15.6.1" - -react-overlays@^0.8.0: - version "0.8.3" - resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-0.8.3.tgz#fad65eea5b24301cca192a169f5dddb0b20d3ac5" - integrity sha512-h6GT3jgy90PgctleP39Yu3eK1v9vaJAW73GOA/UbN9dJ7aAN4BTZD6793eI1D5U+ukMk17qiqN/wl3diK1Z5LA== - dependencies: - classnames "^2.2.5" - dom-helpers "^3.2.1" - prop-types "^15.5.10" - prop-types-extra "^1.0.1" - react-transition-group "^2.2.0" - warning "^3.0.0" - -react-portal@^4.1.5: - version "4.2.0" - resolved "https://registry.yarnpkg.com/react-portal/-/react-portal-4.2.0.tgz#5400831cdb0ae64dccb8128121cf076089ab1afd" - integrity sha512-Zf+vGQ/VEAb5XAy+muKEn48yhdCNYPZaB1BWg1xc8sAZWD8pXTgPtQT4ihBdmWzsfCq8p8/kqf0GWydSBqc+Eg== - dependencies: - prop-types "^15.5.8" - -react-transition-group@^2.0.0, react-transition-group@^2.2.0: - version "2.5.3" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.5.3.tgz#26de363cab19e5c88ae5dbae105c706cf953bb92" - integrity sha512-2DGFck6h99kLNr8pOFk+z4Soq3iISydwOFeeEVPjTN6+Y01CmvbWmnN02VuTWyFdnRtIDPe+wy2q6Ui8snBPZg== - dependencies: - dom-helpers "^3.3.1" - loose-envify "^1.4.0" - prop-types "^15.6.2" - react-lifecycles-compat "^3.0.4" - -react-viewerbase@^0.2.11: - version "0.2.11" - resolved "https://registry.yarnpkg.com/react-viewerbase/-/react-viewerbase-0.2.11.tgz#1015bb6c2876b2ce1a40dece8d614f7266d9fcb1" - integrity sha512-s2Nr3VSjANIvalhTPKn2CUoHzDpKiHl81BYYEFdcAt20chTmpBRlH6J6uQ7rrxpO8Iz3OblpWinNJf9+6E0pDg== - dependencies: - "@babel/runtime" "^7.2.0" - classnames "^2.2.6" - lodash.isequal "^4.5.0" - moment "^2.24.0" - prop-types "^15.6.2" - react-bootstrap-modal "^4.2.0" - react-dates "^18.4.1" - react-dnd "^7.0.2" - react-dnd-html5-backend "^7.0.2" - react-with-direction "^1.3.0" - react-vtkjs-viewport@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/react-vtkjs-viewport/-/react-vtkjs-viewport-0.0.7.tgz#8fcb3adfc6609d6e3fc6d5af94d59cb1ec4426c0" @@ -6874,38 +6545,6 @@ react-vtkjs-viewport@^0.0.7: cornerstone-math "^0.1.8" vtk.js "^8.3.11" -react-with-direction@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/react-with-direction/-/react-with-direction-1.3.0.tgz#9885f5941aa986be753db95a41e8f3d8f8de97ff" - integrity sha512-2TflEebNckTNUybw3Rzqjg4BwM/H380ZL5lsbZ5f4UTY2JyE5uQdQZK5T2w+BDJSAMcqoA2RDJYa4e7Cl6C2Kg== - dependencies: - airbnb-prop-types "^2.8.1" - brcast "^2.0.2" - deepmerge "^1.5.1" - direction "^1.0.1" - hoist-non-react-statics "^2.3.1" - object.assign "^4.1.0" - object.values "^1.0.4" - prop-types "^15.6.0" - -react-with-styles-interface-css@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/react-with-styles-interface-css/-/react-with-styles-interface-css-4.0.3.tgz#c4a61277b2b8e4126b2cd25eca3ac4097bd2af09" - integrity sha512-wE43PIyjal2dexxyyx4Lhbcb+E42amoYPnkunRZkb9WTA+Z+9LagbyxwsI352NqMdFmghR0opg29dzDO4/YXbw== - dependencies: - array.prototype.flat "^1.2.1" - global-cache "^1.2.1" - -react-with-styles@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/react-with-styles/-/react-with-styles-3.2.1.tgz#57a313ae3dcd0b347193a5538d5061d3bb96bab4" - integrity sha512-L+x/EDgrKkqV6pTfDtLMShf7Xs+bVQ+HAT5rByX88QYX+ft9t5Gn4PWMmg36Ur21IVEBMGjjQQIJGJpBrzbsyg== - dependencies: - deepmerge "^1.5.2" - hoist-non-react-statics "^2.5.0" - prop-types "^15.6.1" - react-with-direction "^1.3.0" - react@^16.6.3: version "16.8.3" resolved "https://registry.yarnpkg.com/react/-/react-16.8.3.tgz#c6f988a2ce895375de216edcfaedd6b9a76451d9" @@ -7081,18 +6720,6 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -recompose@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.30.0.tgz#82773641b3927e8c7d24a0d87d65aeeba18aabd0" - integrity sha512-ZTrzzUDa9AqUIhRk4KmVFihH0rapdCSMFXjhHbNrjAWxBuUD/guYlyysMnuHjlZC/KRiOKRtB4jf96yYSkKE8w== - dependencies: - "@babel/runtime" "^7.0.0" - change-emitter "^0.1.2" - fbjs "^0.8.1" - hoist-non-react-statics "^2.3.1" - react-lifecycles-compat "^3.0.2" - symbol-observable "^1.0.4" - redent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" @@ -7101,19 +6728,6 @@ redent@^2.0.0: indent-string "^3.0.0" strip-indent "^2.0.0" -redux@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz#436cae6cc40fbe4727689d7c8fae44808f1bfef5" - integrity sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg== - dependencies: - loose-envify "^1.4.0" - symbol-observable "^1.2.0" - -reflect.ownkeys@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" - integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= - regenerate-unicode-properties@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" @@ -7603,11 +7217,6 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -7624,11 +7233,6 @@ sha@~2.0.1: graceful-fs "^4.1.2" readable-stream "^2.0.2" -shallowequal@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -8233,7 +7837,7 @@ svgo@^1.0.0: unquote "~1.1.1" util.promisify "~1.0.0" -symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: +symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== @@ -8431,11 +8035,6 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -ua-parser-js@^0.7.18: - version "0.7.19" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz#94151be4c0a7fb1d001af7022fdaca4642659e4b" - integrity sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ== - uid-number@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" @@ -8728,13 +8327,6 @@ vtk.js@^8.3.11: webvr-polyfill "0.10.8" webworker-promise "0.4.2" -warning@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" - integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= - dependencies: - loose-envify "^1.0.0" - wcwidth@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -8759,11 +8351,6 @@ webworker-promise@0.4.2: resolved "https://registry.yarnpkg.com/webworker-promise/-/webworker-promise-0.4.2.tgz#aeb92684a3a5a05e95ddaeccf8482254c6cf5dc0" integrity sha512-/se9zS6MpRhyodk+C7YcBZq5mY1apJvKys6Tb6t2NDDeRMGgRuuyYjox38PssylFyPodjPEab/S0WuA20CFu7g== -whatwg-fetch@>=0.10.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" - integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" diff --git a/package.json b/package.json index fd77ef390..4de3cf1c2 100644 --- a/package.json +++ b/package.json @@ -83,6 +83,7 @@ "ohif-dicom-html-extension": "^0.0.2", "ohif-dicom-microscopy-extension": "^0.0.5", "ohif-dicom-pdf-extension": "^0.0.6", + "ohif-i18n": "file:.yalc/ohif-i18n", "ohif-vtk-extension": "^0.0.1", "oidc-client": "1.7.x", "prop-types": "^15.6.2", diff --git a/src/App.js b/src/App.js index 8141279fc..6b2f899e5 100644 --- a/src/App.js +++ b/src/App.js @@ -109,8 +109,8 @@ class App extends Component { if (userManager) { return ( - - + + - - + + ); } diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index f04ec8b34..3c0c7f0da 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -3,6 +3,7 @@ import PropTypes from 'prop-types'; import { Link, withRouter } from 'react-router-dom'; import { Dropdown } from 'react-viewerbase'; import { withTranslation } from 'react-i18next'; +import i18n, { t } from 'ohif-i18n'; import './Header.css'; import OHIFLogo from '../OHIFLogo/OHIFLogo.js'; import ConnectedUserPreferencesModal from '../../connectedComponents/ConnectedUserPreferencesModal.js'; @@ -12,9 +13,7 @@ class Header extends Component { home: PropTypes.bool.isRequired, location: PropTypes.object.isRequired, openUserPreferencesModal: PropTypes.func, - children: PropTypes.node, - t: PropTypes.func, - i18n: PropTypes.object, + children: PropTypes.node }; static defaultProps = { @@ -33,7 +32,6 @@ class Header extends Component { } loadOptions() { - const { t } = this.props; this.options = [ { title: t('preferences'), @@ -49,15 +47,14 @@ class Header extends Component { } changeLanguage(language) { - const { i18n } = this.props; i18n.init({ + fallbackLng: language.substring(0, 2), lng: language }); this.loadOptions(); } render() { - const { t } = this.props; return (
diff --git a/src/i18n.js b/src/i18n.js index d18457cfe..1449340c9 100755 --- a/src/i18n.js +++ b/src/i18n.js @@ -1,80 +1,3 @@ -import i18n from 'i18next'; -import { initReactI18next } from 'react-i18next'; - -const currentLanguage = process.env.APP_LANG || 'es-MX'; - -/*function getDefaultLanguage() { - const mainLanguage = currentLanguage.match(/(.*.)(-)/); - return mainLanguage !== null ? mainLanguage[1] : null; -}*/ - -function getNameSpaceString(key) { - const nameSpaceMatcher = key.match(/[^/]+$/g); - let finalNameSpace; - - if (nameSpaceMatcher !== null) { - finalNameSpace = nameSpaceMatcher[0].replace('.json', ''); - } - - return finalNameSpace; -} - -function getCleanKeyForNameSpaces(key) { - const cleanedKey = key.match(/[/\\].+(?=[/\\])/); - let finalKey; - - if (cleanedKey !== null) { - finalKey = cleanedKey[0].replace(/[/\\]/, ''); - finalKey = finalKey.replace(/[/\\]/, '-'); - } - - return finalKey; -} - -function getLocales() { - const context = require.context(`./locales`, true, /\.json$/); - const locales = {}; - - context.keys().forEach(key => { - locales[getCleanKeyForNameSpaces(key)] = { - ...locales[getCleanKeyForNameSpaces(key)], - [getNameSpaceString(key)]: context(key), - }; - }); - - return locales; -} - -i18n.use(initReactI18next).init({ - resources: getLocales(), - // fallbackLng: getDefaultLanguage(), - fallbackLng:{ - 'es-MX': ['es'], - 'default': ['en'] - }, - - /*fallbackLng: { - 'de-CH': ['fr', 'it'], - 'zh-Hant': ['zh-Hans', 'en'], - 'es': ['fr'], - 'default': ['en'] - },*/ - - lng: currentLanguage, - debug: true, - - // have a common namespace used around the full app - keySeparator: false, // uses content as keys - interpolation: { - escapeValue: false, - }, - - fallbackNS: ['Header'], - defaultNS: 'common', - - react: { - wait: true, - }, -}); +import i18n from 'ohif-i18n'; export default i18n; diff --git a/src/locales/en/CineDialog.json b/src/locales/en/CineDialog.json deleted file mode 100644 index 5c8624060..000000000 --- a/src/locales/en/CineDialog.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "fps": "ingles fps", - "Skip to first image": "Skip to first image", - "Previous image": "Previous, image", - "Play / Stop": "Play, / Stop", - "Next image": "Next, image", - "Skip to last image": "Skip, to last image", - "Skip to first image": "Skip, to first image", - "Previous image": "Previous, image", - "Play / Stop": "Play, / Stop", - "Next image": "Next, image", - "Skip to last image": "Skip, to last image", - "Skip to first image": "Skip, to first image", - "Previous image": "Previous, image", - "Play / Stop": "Play, / Stop", - "Next image": "Next, image", - "Skip to last image": "Skip, to last image" -} diff --git a/src/locales/en/Header.json b/src/locales/en/Header.json deleted file mode 100644 index 0536f8aa5..000000000 --- a/src/locales/en/Header.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "preferences": "Preferences", - "options": "Options", - "about": "About", - "back_to_viewer": "Back to Viewer", - "study_list": "Study list", - "research_use": "INVESTIGATIONAL USE ONLY" -} diff --git a/src/locales/en/UK/Header.json b/src/locales/en/UK/Header.json deleted file mode 100644 index e08956bcc..000000000 --- a/src/locales/en/UK/Header.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "header_research_use": "INVESTIGATIONAL PURPOSES ONLY" -} diff --git a/src/locales/en/US/Header.json b/src/locales/en/US/Header.json deleted file mode 100644 index 651730074..000000000 --- a/src/locales/en/US/Header.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "options": "Options", - "about": "About" -} diff --git a/src/locales/en/common.json b/src/locales/en/common.json deleted file mode 100755 index 18a5b4ea3..000000000 --- a/src/locales/en/common.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "Welcome to React": "Welcome to React and react-i18next", - "welcomeMsg": "welcome", - "test": "Lunch time" -} diff --git a/src/locales/es/CineDialog.json b/src/locales/es/CineDialog.json deleted file mode 100644 index 6f7ff3ec9..000000000 --- a/src/locales/es/CineDialog.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "fps": "fps", - "Skip to first image": "Avanza para la primera imagen", - "Previous image": "Imagen anterior", - "Play / Stop": "Play / Stop", - "Next image": "Pr贸ximo image", - "Skip to last image": "Pular para la ultima imagen" -} diff --git a/yarn.lock b/yarn.lock index f37f32229..83308e455 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9737,6 +9737,12 @@ ohif-dicom-pdf-extension@^0.0.6: classnames "^2.2.6" lodash.isequal "^4.5.0" +"ohif-i18n@file:.yalc/ohif-i18n": + version "0.0.1-b9613c88" + dependencies: + "@babel/runtime" "^7.2.0" + classnames "^2.2.6" + ohif-vtk-extension@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/ohif-vtk-extension/-/ohif-vtk-extension-0.0.1.tgz#aec448c1d0a905d162154c65982227b3503f5f15" @@ -11783,11 +11789,10 @@ react-transition-group@^2.0.0, react-transition-group@^2.2.0: react-lifecycles-compat "^3.0.4" "react-viewerbase@file:.yalc/react-viewerbase": - version "0.2.17-1a8178ff" + version "0.2.17-3da063a9" dependencies: "@babel/runtime" "7.2.0" classnames "2.2.6" - i18next "^15.1.3" lodash.isequal "4.5.0" moment "2.24.0" prop-types "15.6.2" @@ -11795,7 +11800,6 @@ react-transition-group@^2.0.0, react-transition-group@^2.2.0: react-dates "18.4.1" react-dnd "7.0.2" react-dnd-html5-backend "7.0.2" - react-i18next "^10.11.0" react-with-direction "1.3.0" react-vtkjs-viewport@^0.0.7: From 520f07ec23a8b3078a0ca0e2d3cb98e58c423d0d Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Wed, 5 Jun 2019 17:09:35 -0300 Subject: [PATCH 07/42] remove yalc react-viewerbase --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4de3cf1c2..c1c88dfa8 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,7 @@ "react-resize-detector": "^3.4.0", "react-router": "^4.3.1", "react-router-dom": "^4.3.1", - "react-viewerbase": "file:.yalc/react-viewerbase", + "react-viewerbase": "0.4.2", "react-vtkjs-viewport": "^0.0.7", "redux": "^4.0.1", "redux-oidc": "3.1.x" From a11fae01dc67c9e3831c54f55da1e4108ae33cc3 Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Wed, 5 Jun 2019 17:09:54 -0300 Subject: [PATCH 08/42] use t prop from withTranslation --- src/components/Header/Header.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 3c0c7f0da..624b8dd15 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import { Link, withRouter } from 'react-router-dom'; import { Dropdown } from 'react-viewerbase'; import { withTranslation } from 'react-i18next'; -import i18n, { t } from 'ohif-i18n'; +import i18n from 'ohif-i18n'; import './Header.css'; import OHIFLogo from '../OHIFLogo/OHIFLogo.js'; import ConnectedUserPreferencesModal from '../../connectedComponents/ConnectedUserPreferencesModal.js'; @@ -13,7 +13,8 @@ class Header extends Component { home: PropTypes.bool.isRequired, location: PropTypes.object.isRequired, openUserPreferencesModal: PropTypes.func, - children: PropTypes.node + children: PropTypes.node, + t: PropTypes.func.isRequired, }; static defaultProps = { @@ -32,6 +33,7 @@ class Header extends Component { } loadOptions() { + const { t } = this.props; this.options = [ { title: t('preferences'), @@ -49,12 +51,13 @@ class Header extends Component { changeLanguage(language) { i18n.init({ fallbackLng: language.substring(0, 2), - lng: language + lng: language, }); this.loadOptions(); } render() { + const { t } = this.props; return (
@@ -108,11 +111,7 @@ class Header extends Component { > ES-MX - +
From a747590ab887b1f65f6939cce63d8f791dd24410 Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Wed, 5 Jun 2019 17:36:38 -0300 Subject: [PATCH 09/42] fix typo --- extensions/ohif-i18n/src/locales/en/US/Header.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ohif-i18n/src/locales/en/US/Header.json b/extensions/ohif-i18n/src/locales/en/US/Header.json index 5ee6f4f79..651730074 100644 --- a/extensions/ohif-i18n/src/locales/en/US/Header.json +++ b/extensions/ohif-i18n/src/locales/en/US/Header.json @@ -1,4 +1,4 @@ { - "options": "Erik Options", + "options": "Options", "about": "About" } From 9fd39dbf848bede96a8996788ba11e9f902d3834 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joa=CC=83o=20Felipe=20Medeiros=20Moreira?= Date: Thu, 6 Jun 2019 15:11:34 -0300 Subject: [PATCH 10/42] Exports provider and HOC to be used by any application without install I18Next libraries --- extensions/ohif-i18n/src/index.js | 8 ++++++-- .../ohif-i18n/src/locales/en/CineDialog.json | 10 ---------- src/components/Header/Header.js | 14 ++++++-------- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/extensions/ohif-i18n/src/index.js b/extensions/ohif-i18n/src/index.js index 2a4a477a7..1a14356df 100755 --- a/extensions/ohif-i18n/src/index.js +++ b/extensions/ohif-i18n/src/index.js @@ -1,5 +1,9 @@ import i18n from 'i18next'; -import { initReactI18next } from 'react-i18next'; +import { + initReactI18next, + withTranslation, + I18nextProvider, +} from 'react-i18next'; const currentLanguage = process.env.APP_LANG || 'en-US'; const debugMode = process.env.I18N_DEBUG || false; @@ -74,5 +78,5 @@ i18n translate = t; }); -export { translate as t }; +export { translate as t, withTranslation, I18nextProvider }; export default i18n; diff --git a/extensions/ohif-i18n/src/locales/en/CineDialog.json b/extensions/ohif-i18n/src/locales/en/CineDialog.json index f7a07113f..ebd909e73 100644 --- a/extensions/ohif-i18n/src/locales/en/CineDialog.json +++ b/extensions/ohif-i18n/src/locales/en/CineDialog.json @@ -4,15 +4,5 @@ "Previous image": "Previous, image", "Play / Stop": "Play, / Stop", "Next image": "Next, image", - "Skip to last image": "Skip, to last image", - "Skip to first image": "Skip, to first image", - "Previous image": "Previous, image", - "Play / Stop": "Play, / Stop", - "Next image": "Next, image", - "Skip to last image": "Skip, to last image", - "Skip to first image": "Skip, to first image", - "Previous image": "Previous, image", - "Play / Stop": "Play, / Stop", - "Next image": "Next, image", "Skip to last image": "Skip, to last image" } diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 3c0c7f0da..de92761fc 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import { Link, withRouter } from 'react-router-dom'; import { Dropdown } from 'react-viewerbase'; import { withTranslation } from 'react-i18next'; -import i18n, { t } from 'ohif-i18n'; +import i18n from 'ohif-i18n'; import './Header.css'; import OHIFLogo from '../OHIFLogo/OHIFLogo.js'; import ConnectedUserPreferencesModal from '../../connectedComponents/ConnectedUserPreferencesModal.js'; @@ -13,7 +13,7 @@ class Header extends Component { home: PropTypes.bool.isRequired, location: PropTypes.object.isRequired, openUserPreferencesModal: PropTypes.func, - children: PropTypes.node + children: PropTypes.node, }; static defaultProps = { @@ -32,6 +32,7 @@ class Header extends Component { } loadOptions() { + const { t } = this.props; this.options = [ { title: t('preferences'), @@ -49,12 +50,13 @@ class Header extends Component { changeLanguage(language) { i18n.init({ fallbackLng: language.substring(0, 2), - lng: language + lng: language, }); this.loadOptions(); } render() { + const { t } = this.props; return (
@@ -108,11 +110,7 @@ class Header extends Component { > ES-MX - +
From ebcd9b3838416d5c8c97cde1df0fcc3e7f003017 Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Thu, 6 Jun 2019 18:57:19 -0300 Subject: [PATCH 11/42] i18n - Documentation --- docs/latest/SUMMARY.md | 1 + .../img/ohif-i18n-extending-files-tree.png | Bin 0 -> 22000 bytes docs/latest/essentials/translating.md | 152 ++++++++++++++++++ 3 files changed, 153 insertions(+) create mode 100644 docs/latest/assets/img/ohif-i18n-extending-files-tree.png create mode 100644 docs/latest/essentials/translating.md diff --git a/docs/latest/SUMMARY.md b/docs/latest/SUMMARY.md index 7534de5f6..f9c2bb5e5 100644 --- a/docs/latest/SUMMARY.md +++ b/docs/latest/SUMMARY.md @@ -6,6 +6,7 @@ - [Data Source](essentials/data-source.md) - [Configuration](essentials/configuration.md) - [Themeing](essentials/themeing.md) + - [Translating](essentials/translating.md) - [Troubleshooting](essentials/troubleshooting.md) - [Scope of Project](essentials/scope-of-project.md) diff --git a/docs/latest/assets/img/ohif-i18n-extending-files-tree.png b/docs/latest/assets/img/ohif-i18n-extending-files-tree.png new file mode 100644 index 0000000000000000000000000000000000000000..8bf3ff1759b5885fb05d1e96d18401d7a949db43 GIT binary patch literal 22000 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 literal 0 HcmV?d00001 diff --git a/docs/latest/essentials/translating.md b/docs/latest/essentials/translating.md new file mode 100644 index 000000000..34d1b4432 --- /dev/null +++ b/docs/latest/essentials/translating.md @@ -0,0 +1,152 @@ +# Translating +OHIF supports internationalization using [i18next](https://www.i18next.com/) through the npm package [ohif-i18n](https://www.npmjs.com/package/ohif-i18n), where is the main instance of i18n containing several languages and tools. + +### Installing +```bash +yarn add ohif-i18n + +# OR + +npm install --save ohif-i18n +``` + +### How it works +After installing `ohif-i18n` npm package, the translation function [t](https://www.i18next.com/overview/api#t) can be used [with](#with-react) or [without](#without-react) React. + +A translation will occur every time a text match happens in a [t](https://www.i18next.com/overview/api#t) function. + +The [t](https://www.i18next.com/overview/api#t) function is responsible for getting translations using all the power of i18next. + +E.g. + +Before: +````html +
my translated text
+```` +After: +````html +
{t('my translated text')}
+```` + +If the translation.json file contains a key that matches the HTML content e.g. `my translated text`, it will be replaced automatically by the [t](https://www.i18next.com/overview/api#t) function. + +--- +#### With React +This section will introduce you to [react-i18next](https://react.i18next.com/) basics and show how to implement the [t](https://www.i18next.com/overview/api#t) function easily. + +##### Using HOCs +In most cases we used [High Order Components](https://react.i18next.com/latest/withtranslation-hoc) to get the `t` tool between OHIF's components. + +E.g. + +```js +import React from 'react'; +import { withTranslation } from 'ohif-i18n'; + +function MyComponent({ t, i18n }) { + return

{t('my translated text')}

+} + +export default withTranslation('MyNameSpace')(MyComponent); +``` +> Important: if you are using React outside the OHIF Viewer, check the [I18nextProvider](#using-outside-of-ohif-viewer) section, `withTranslation` HOC doesnt works without a I18nextProvider + +##### Using Hooks +Also, it's possible to get the `t` tool using [React Hooks](https://react.i18next.com/latest/usetranslation-hook), but it requires at least React > 16.8. + + +#### Using outside of OHIF viewer +OHIF Viewer already sets a main [I18nextProvider](https://react.i18next.com/latest/i18nextprovider) connected to the shared i18n instance from `ohif-i18n`, +all extensions inside the Viewer will share this same provider at the end, you don't need a provider when developing a react Extension if you use `ohif-i18n`; + +But, if you need to use it completely outside of OHIF viewer, you can set the I18nextProvider this way: + +```js +import i18n, { I18nextProvider } from 'ohif-i18n'; +import App from './App'; + + + + +``` +After setting `I18nextProvider` in your React App, all translations from `ohif-i18n` should be available following [With React](#with-react) usage. + +---- + +#### Without React +When needed, you can also use available translations *without React*. + +E.g. + +```js +import { t } from 'ohif-i18n'; +console.log( t('my translated text') ); +``` + +--- + +# Main Concepts While Translating + +### - Namespaces +Namespaces are being used to organize translations in smaller portions, combined semantically or by use. +Each `.json` file inside `ohif-i18n` npm package becomes a new namespace automatically. + + +- Buttons: All buttons translations +- CineDialog: Translations for the toll tips inside the Cine Player Dialog +- common: all common jargons that can be reused like `t('$t(common:image)')` +- Header: translations related to OHIF's Header Top Bar + +### - Extending Languages in ohif-i18n +Sometimes, even in the same language, some nouns or jargons can change in different countries, states or even from Hospital to Hospital, in this cases, we can extend languages. + +To extend a language, create a new folder inside a language with two characters as name, like the `UK` in the following file tree: + +Files Tree for Extending Purpouses + +All properties inside a Namespace (.json file) will be replaced in the new sub language, e.g en-US, en-UK, es-AR, es-MX, etc. + + +#### - Extending languages dynamically + +Once you have access to the i18n instance, you can use the [addResourceBundle](https://www.i18next.com/how-to/add-or-load-translations#add-after-init) method to add and change language resources. + +E.g. +```js +import { i18n } from 'ohif-i18n'; +i18next.addResourceBundle('pt-BR', 'Buttons', { + 'Angle': '脗ngulo' +}); +``` +------ + +### How to set a whole new language +To set a brand new language you can do it in two different ways: +* Opening a pull request for `ohif-i18n` and sharing the translation with the community. Please see [Contributing](#contributing-with-new-languages) section for further information +* Setting it only in your project or extension + +To set it apart of `ohif-i18n`, follow this snippet: + +File: myJsonFileWithLanguage.json // TODO - This example is a working in progress +```json +{ + "prop1": "value1", + "prop2": "value2", + "prop3": "value3", + "prop4": "value4" +} +``` + +```js +import { extendLanguage } from 'ohif-i18n'; +import myJsonFileWithLanguage from './myJsonFileWithLanguage.json'; + +extendLanguage(myJsonFileWithLanguage); +// TODO - This example is a working in progress +``` + +### Contributing with new languages +This project follows the +[all-contributors](https://github.com/all-contributors/all-contributors) +specification. Contributions of any kind are welcome! + From eca7d9be6a74b2e73b86fbed80927d905afb1fc5 Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Thu, 6 Jun 2019 18:57:45 -0300 Subject: [PATCH 12/42] i18n - Adding Provider to non Admins --- src/App.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/App.js b/src/App.js index 6b2f899e5..f38947e60 100644 --- a/src/App.js +++ b/src/App.js @@ -127,11 +127,13 @@ class App extends Component { return ( - - - - - + + + + + + + ); } From 6e295ba7c6ee84d0d97d3ec10f9bbff4ef9f340c Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Thu, 6 Jun 2019 19:13:16 -0300 Subject: [PATCH 13/42] i18n - Documentation for i18n --- docs/latest/essentials/translating.md | 4 ++++ .../ohif-i18n/src/locales/en/CineDialog.json | 2 +- .../ohif-i18n/src/locales/en/common.json | 4 +--- .../ohif-i18n/src/locales/es/common.json | 20 +------------------ 4 files changed, 7 insertions(+), 23 deletions(-) diff --git a/docs/latest/essentials/translating.md b/docs/latest/essentials/translating.md index 34d1b4432..45bfd4b5f 100644 --- a/docs/latest/essentials/translating.md +++ b/docs/latest/essentials/translating.md @@ -145,6 +145,10 @@ extendLanguage(myJsonFileWithLanguage); // TODO - This example is a working in progress ``` + +#Debugging translations +#TODO - WIP + ### Contributing with new languages This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) diff --git a/extensions/ohif-i18n/src/locales/en/CineDialog.json b/extensions/ohif-i18n/src/locales/en/CineDialog.json index ebd909e73..14877a857 100644 --- a/extensions/ohif-i18n/src/locales/en/CineDialog.json +++ b/extensions/ohif-i18n/src/locales/en/CineDialog.json @@ -1,5 +1,5 @@ { - "fps": "ingles fps", + "fps": "fps", "Skip to first image": "Skip to first image", "Previous image": "Previous, image", "Play / Stop": "Play, / Stop", diff --git a/extensions/ohif-i18n/src/locales/en/common.json b/extensions/ohif-i18n/src/locales/en/common.json index 18a5b4ea3..5fdbf7431 100755 --- a/extensions/ohif-i18n/src/locales/en/common.json +++ b/extensions/ohif-i18n/src/locales/en/common.json @@ -1,5 +1,3 @@ { - "Welcome to React": "Welcome to React and react-i18next", - "welcomeMsg": "welcome", - "test": "Lunch time" + "Welcome to React": "Welcome to React and react-i18next" } diff --git a/extensions/ohif-i18n/src/locales/es/common.json b/extensions/ohif-i18n/src/locales/es/common.json index 3cbc9da4b..ea3a56575 100755 --- a/extensions/ohif-i18n/src/locales/es/common.json +++ b/extensions/ohif-i18n/src/locales/es/common.json @@ -1,21 +1,3 @@ { - "Themes": "Temas", - "Previous": "Anterior", - "Next": "Pr贸ximo", - "Play": "Play", - "Stop": "Stop", - "Layout": "Esquema", - "More": "M谩s", - "Crosshairs": "Cruces", - "Magnify": "Lupa", - "ROI Window": "Ventana ROI", - "Probe": "Probar", - "Ellipse": "Elipse", - "Rectangle": "Rect谩ngulo", - "Invert": "Invertido", - "Rotate Right": "Rotar ->", - "Flip H": "Espejo Hor.", - "Flip V": "Espejo Ver.", - "Clear": "Limpiar", - "Brush": "Escoba" + "Welcome to React": "Bienvenido a React" } From 065204a87e22cc78311bc5840a57e83f7ff72292 Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Thu, 6 Jun 2019 19:26:08 -0300 Subject: [PATCH 14/42] i18n - Documentation for i18n --- docs/latest/essentials/translating.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/latest/essentials/translating.md b/docs/latest/essentials/translating.md index 45bfd4b5f..f14e2353c 100644 --- a/docs/latest/essentials/translating.md +++ b/docs/latest/essentials/translating.md @@ -150,7 +150,5 @@ extendLanguage(myJsonFileWithLanguage); #TODO - WIP ### Contributing with new languages -This project follows the -[all-contributors](https://github.com/all-contributors/all-contributors) -specification. Contributions of any kind are welcome! +Contributions of any kind are welcome! Please check the [instructions](https://docs.ohif.org/contributing.html). From 42cb8e32c795075565a2281f1b15a2557263422d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joa=CC=83o=20Felipe=20Medeiros=20Moreira?= Date: Fri, 7 Jun 2019 15:35:54 -0300 Subject: [PATCH 15/42] Configures hif-vtk-extention to use ohif-i18n for translation and include load more locations --- extensions/ohif-i18n/rollup.config.js | 44 +++++++-------- extensions/ohif-i18n/src/index.js | 14 ++++- extensions/ohif-vtk-extension/package.json | 11 ++-- .../ohif-vtk-extension/rollup.config.js | 55 ++++++++++--------- extensions/ohif-vtk-extension/src/index.js | 4 ++ .../ohif-vtk-extension/src/loadLocales.js | 8 +++ .../src/locales/en/US/Buttons.json | 3 + extensions/ohif-vtk-extension/yarn.lock | 23 +++++++- package.json | 4 +- yarn.lock | 10 ++-- 10 files changed, 113 insertions(+), 63 deletions(-) create mode 100644 extensions/ohif-vtk-extension/src/loadLocales.js create mode 100644 extensions/ohif-vtk-extension/src/locales/en/US/Buttons.json diff --git a/extensions/ohif-i18n/rollup.config.js b/extensions/ohif-i18n/rollup.config.js index 81fd1a56f..91f4ceaab 100644 --- a/extensions/ohif-i18n/rollup.config.js +++ b/extensions/ohif-i18n/rollup.config.js @@ -1,20 +1,20 @@ -import babel from 'rollup-plugin-babel' -import commonjs from 'rollup-plugin-commonjs' -import external from 'rollup-plugin-peer-deps-external' -import postcss from 'rollup-plugin-postcss' -import resolve from 'rollup-plugin-node-resolve' -import url from 'rollup-plugin-url' -import pkg from './package.json' +import babel from 'rollup-plugin-babel'; +import commonjs from 'rollup-plugin-commonjs'; +import external from 'rollup-plugin-peer-deps-external'; +import postcss from 'rollup-plugin-postcss'; +import resolve from 'rollup-plugin-node-resolve'; +import url from 'rollup-plugin-url'; +import pkg from './package.json'; // Deal with https://github.com/rollup/rollup-plugin-commonjs/issues/297 import builtins from 'rollup-plugin-node-builtins'; -import copy from 'rollup-plugin-copy' +import copy from 'rollup-plugin-copy'; -const globals = { - 'react': 'React', +const globals = { + react: 'React', 'react-dom': 'ReactDOM', 'react-redux': 'ReactRedux', 'react-resize-detector': 'ReactResizeDetector', - 'prop-types': 'PropTypes' + 'prop-types': 'PropTypes', }; export default { @@ -25,37 +25,35 @@ export default { format: 'umd', name: 'ohif-i18n', sourcemap: true, - globals + globals, }, { file: pkg.module, format: 'es', sourcemap: true, - globals - } + globals, + }, ], plugins: [ builtins(), external(), postcss({ - modules: false + modules: false, }), copy({ - targets: [ - 'src/locales' - ], - outputFolder: 'dist' + targets: ['src/locales'], + outputFolder: 'dist', }), url(), babel({ exclude: 'node_modules/**', externalHelpers: true, - runtimeHelpers: true + runtimeHelpers: true, }), resolve(), commonjs({ - include: ['node_modules/**', '.yalc/**'] - }) + include: ['node_modules/**', '.yalc/**'], + }), ], external: Object.keys(pkg.peerDependencies || {}), -} +}; diff --git a/extensions/ohif-i18n/src/index.js b/extensions/ohif-i18n/src/index.js index 1a14356df..bb274074e 100755 --- a/extensions/ohif-i18n/src/index.js +++ b/extensions/ohif-i18n/src/index.js @@ -50,6 +50,18 @@ function getLocales() { return locales; } +function addLocales(context) { + context.keys().forEach(key => { + i18n.addResourceBundle( + getCleanKeyForNameSpaces(key), + getNameSpaceString(key), + context(key), + true, + true + ); + }); +} + let translate; i18n @@ -78,5 +90,5 @@ i18n translate = t; }); -export { translate as t, withTranslation, I18nextProvider }; +export { translate as t, withTranslation, I18nextProvider, addLocales }; export default i18n; diff --git a/extensions/ohif-vtk-extension/package.json b/extensions/ohif-vtk-extension/package.json index fd77160e9..a46e9c457 100644 --- a/extensions/ohif-vtk-extension/package.json +++ b/extensions/ohif-vtk-extension/package.json @@ -24,16 +24,17 @@ "dcmjs": "^0.3.6", "dicom-parser": "^1.8.3", "hammerjs": "^2.0.8", + "i18next": "^15.1.3", "ohif-core": "^0.3.3", + "ohif-i18n": "file:.yalc/ohif-i18n", "prop-types": "^15.6.2", "react": "^15.0.0 || ^16.0.0", "react-dom": "^15.0.0 || ^16.0.0", + "react-i18next": "^10.11.0", "react-redux": "^6.0.0", "react-resize-detector": "^3.4.0", - "redux": "^4.0.1", - "i18next": "^15.1.3", - "react-i18next": "^10.11.0", - "react-viewerbase": "^0.6.1" + "react-viewerbase": "^0.6.1", + "redux": "^4.0.1" }, "devDependencies": { "@babel/core": "^7.2.2", @@ -58,6 +59,7 @@ "rollup": "^1.1.2", "rollup-plugin-babel": "^4.2.0", "rollup-plugin-commonjs": "^9.2.0", + "rollup-plugin-copy": "^2.0.1", "rollup-plugin-node-builtins": "^2.1.2", "rollup-plugin-node-resolve": "^4.0.0", "rollup-plugin-peer-deps-external": "^2.2.0", @@ -90,7 +92,6 @@ "dependencies": { "@babel/runtime": "^7.2.0", "classnames": "^2.2.6", - "ohif-vtk-extension": "file:.yalc/ohif-vtk-extension", "react-vtkjs-viewport": "^0.0.7" } } diff --git a/extensions/ohif-vtk-extension/rollup.config.js b/extensions/ohif-vtk-extension/rollup.config.js index 41f477179..bb5a67d50 100644 --- a/extensions/ohif-vtk-extension/rollup.config.js +++ b/extensions/ohif-vtk-extension/rollup.config.js @@ -1,15 +1,16 @@ -import babel from 'rollup-plugin-babel' -import commonjs from 'rollup-plugin-commonjs' -import external from 'rollup-plugin-peer-deps-external' -import postcss from 'rollup-plugin-postcss' -import resolve from 'rollup-plugin-node-resolve' -import url from 'rollup-plugin-url' -import pkg from './package.json' +import babel from 'rollup-plugin-babel'; +import commonjs from 'rollup-plugin-commonjs'; +import external from 'rollup-plugin-peer-deps-external'; +import postcss from 'rollup-plugin-postcss'; +import resolve from 'rollup-plugin-node-resolve'; +import url from 'rollup-plugin-url'; +import copy from 'rollup-plugin-copy'; +import pkg from './package.json'; // Deal with https://github.com/rollup/rollup-plugin-commonjs/issues/297 import builtins from 'rollup-plugin-node-builtins'; -const globals = { - 'react': 'React', +const globals = { + react: 'React', 'react-dom': 'ReactDOM', 'react-redux': 'ReactRedux', 'react-resize-detector': 'ReactResizeDetector', @@ -18,10 +19,10 @@ const globals = { 'cornerstone-wado-image-loader': 'cornerstoneWADOImageLoader', 'cornerstone-math': 'cornerstoneMath', 'cornerstone-tools': 'cornerstoneTools', - 'dcmjs': 'dcmjs', + dcmjs: 'dcmjs', 'dicom-parser': 'dicomParser', 'ohif-core': 'OHIF', - 'hammerjs': 'Hammer' + hammerjs: 'Hammer' }; export default { @@ -47,6 +48,10 @@ export default { postcss({ modules: false }), + copy({ + targets: ['src/locales'], + outputFolder: 'dist' + }), url(), babel({ exclude: 'node_modules/**', @@ -57,20 +62,20 @@ export default { commonjs({ include: ['node_modules/**', '.yalc/**'], namedExports: { - 'node_modules/react-vtkjs-viewport/dist/index.js': [ - 'getImageData', - 'loadImageData', - 'VTKViewport', - 'VTKMPRViewport', - ], - '.yalc/react-vtkjs-viewport/dist/index.js': [ - 'getImageData', - 'loadImageData', - 'VTKViewport', - 'VTKMPRViewport', - ] + 'node_modules/react-vtkjs-viewport/dist/index.js': [ + 'getImageData', + 'loadImageData', + 'VTKViewport', + 'VTKMPRViewport' + ], + '.yalc/react-vtkjs-viewport/dist/index.js': [ + 'getImageData', + 'loadImageData', + 'VTKViewport', + 'VTKMPRViewport' + ] } }) ], - external: Object.keys(pkg.peerDependencies || {}), -} + external: Object.keys(pkg.peerDependencies || {}) +}; diff --git a/extensions/ohif-vtk-extension/src/index.js b/extensions/ohif-vtk-extension/src/index.js index 6176c5935..95116b66c 100644 --- a/extensions/ohif-vtk-extension/src/index.js +++ b/extensions/ohif-vtk-extension/src/index.js @@ -1,3 +1,7 @@ +import loadLocales from './loadLocales'; + import OHIFVTKExtension from './OHIFVTKExtension.js'; +loadLocales(); + export default OHIFVTKExtension; diff --git a/extensions/ohif-vtk-extension/src/loadLocales.js b/extensions/ohif-vtk-extension/src/loadLocales.js new file mode 100644 index 000000000..90ce5c1d4 --- /dev/null +++ b/extensions/ohif-vtk-extension/src/loadLocales.js @@ -0,0 +1,8 @@ +import { addLocales } from 'ohif-i18n'; + +function loadLocales() { + const context = require.context(`./locales`, true, /\.json$/); + addLocales(context); +} + +export default loadLocales; diff --git a/extensions/ohif-vtk-extension/src/locales/en/US/Buttons.json b/extensions/ohif-vtk-extension/src/locales/en/US/Buttons.json new file mode 100644 index 000000000..b37fbcce3 --- /dev/null +++ b/extensions/ohif-vtk-extension/src/locales/en/US/Buttons.json @@ -0,0 +1,3 @@ +{ + "Rotate": "Rotate VTK" +} diff --git a/extensions/ohif-vtk-extension/yarn.lock b/extensions/ohif-vtk-extension/yarn.lock index 74b43e077..1b72e3275 100644 --- a/extensions/ohif-vtk-extension/yarn.lock +++ b/extensions/ohif-vtk-extension/yarn.lock @@ -2994,7 +2994,7 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" -fs-extra@^7.0.0: +fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== @@ -3951,6 +3951,13 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-plain-object@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" + integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== + dependencies: + isobject "^4.0.0" + is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -4064,6 +4071,11 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= +isobject@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" + integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -7029,6 +7041,15 @@ rollup-plugin-commonjs@^9.2.0: resolve "^1.8.1" rollup-pluginutils "^2.3.3" +rollup-plugin-copy@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-copy/-/rollup-plugin-copy-2.0.1.tgz#2a45e45be84a0d4054d1774604044e7f7581fdae" + integrity sha512-IE+Ob5k1Pi/DLi8SlFcf9jN1m2p0ovIwMuz0GM5NeQeV14puW/bCUpmXlqVtQVy+ErXOhZEeBaqinJ0xnJdxKg== + dependencies: + chalk "^2.4.2" + fs-extra "^7.0.1" + is-plain-object "^3.0.0" + rollup-plugin-node-builtins@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.1.2.tgz#24a1fed4a43257b6b64371d8abc6ce1ab14597e9" diff --git a/package.json b/package.json index c1c88dfa8..19f831a3d 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "ohif-dicom-microscopy-extension": "^0.0.5", "ohif-dicom-pdf-extension": "^0.0.6", "ohif-i18n": "file:.yalc/ohif-i18n", - "ohif-vtk-extension": "^0.0.1", + "ohif-vtk-extension": "file:.yalc/ohif-vtk-extension", "oidc-client": "1.7.x", "prop-types": "^15.6.2", "react-bootstrap-modal": "^4.2.0", @@ -95,7 +95,7 @@ "react-resize-detector": "^3.4.0", "react-router": "^4.3.1", "react-router-dom": "^4.3.1", - "react-viewerbase": "0.4.2", + "react-viewerbase": "file:.yalc/react-viewerbase", "react-vtkjs-viewport": "^0.0.7", "redux": "^4.0.1", "redux-oidc": "3.1.x" diff --git a/yarn.lock b/yarn.lock index 83308e455..6ebf6ff9f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9738,15 +9738,13 @@ ohif-dicom-pdf-extension@^0.0.6: lodash.isequal "^4.5.0" "ohif-i18n@file:.yalc/ohif-i18n": - version "0.0.1-b9613c88" + version "0.0.1-57e63603" dependencies: "@babel/runtime" "^7.2.0" classnames "^2.2.6" -ohif-vtk-extension@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/ohif-vtk-extension/-/ohif-vtk-extension-0.0.1.tgz#aec448c1d0a905d162154c65982227b3503f5f15" - integrity sha512-JfLh0AyEc2hOstpiXj9wMwvuYIQathOmsbb49SZFTw9Y9jMjgdxzdTJaiGtERsVT/92I9u42YrMYk6w5TQCT6A== +"ohif-vtk-extension@file:.yalc/ohif-vtk-extension": + version "0.0.1-cbcfa41e" dependencies: "@babel/runtime" "^7.2.0" classnames "^2.2.6" @@ -11789,7 +11787,7 @@ react-transition-group@^2.0.0, react-transition-group@^2.2.0: react-lifecycles-compat "^3.0.4" "react-viewerbase@file:.yalc/react-viewerbase": - version "0.2.17-3da063a9" + version "0.2.17-f0fa6ce6" dependencies: "@babel/runtime" "7.2.0" classnames "2.2.6" From 401eab50627454e7994b947b5df2871fca2dd126 Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Fri, 7 Jun 2019 19:53:30 -0300 Subject: [PATCH 16/42] update i18n documentation --- docs/latest/essentials/translating.md | 221 ++++++++++++++++---------- 1 file changed, 141 insertions(+), 80 deletions(-) diff --git a/docs/latest/essentials/translating.md b/docs/latest/essentials/translating.md index f14e2353c..459567a3a 100644 --- a/docs/latest/essentials/translating.md +++ b/docs/latest/essentials/translating.md @@ -1,154 +1,215 @@ # Translating -OHIF supports internationalization using [i18next](https://www.i18next.com/) through the npm package [ohif-i18n](https://www.npmjs.com/package/ohif-i18n), where is the main instance of i18n containing several languages and tools. + +OHIF supports internationalization using [i18next](https://www.i18next.com/) +through the npm package [@ohif/i18n](https://www.npmjs.com/package/@ohif/i18n), +where is the main instance of i18n containing several languages and tools. ### Installing + ```bash -yarn add ohif-i18n +yarn add @ohif/i18n # OR -npm install --save ohif-i18n +npm install --save @ohif/i18n ``` ### How it works -After installing `ohif-i18n` npm package, the translation function [t](https://www.i18next.com/overview/api#t) can be used [with](#with-react) or [without](#without-react) React. -A translation will occur every time a text match happens in a [t](https://www.i18next.com/overview/api#t) function. +After installing `@ohif/i18n` npm package, the translation function +[t](https://www.i18next.com/overview/api#t) can be used [with](#with-react) or +[without](#without-react) React. -The [t](https://www.i18next.com/overview/api#t) function is responsible for getting translations using all the power of i18next. +A translation will occur every time a text match happens in a +[t](https://www.i18next.com/overview/api#t) function. + +The [t](https://www.i18next.com/overview/api#t) function is responsible for +getting translations using all the power of i18next. E.g. Before: -````html -
my translated text
-```` -After: -````html -
{t('my translated text')}
-```` -If the translation.json file contains a key that matches the HTML content e.g. `my translated text`, it will be replaced automatically by the [t](https://www.i18next.com/overview/api#t) function. +```html +
my translated text
+``` + +After: + +```html +
{t('my translated text')}
+``` + +If the translation.json file contains a key that matches the HTML content e.g. +`my translated text`, it will be replaced automatically by the +[t](https://www.i18next.com/overview/api#t) function. --- + #### With React -This section will introduce you to [react-i18next](https://react.i18next.com/) basics and show how to implement the [t](https://www.i18next.com/overview/api#t) function easily. + +This section will introduce you to [react-i18next](https://react.i18next.com/) +basics and show how to implement the [t](https://www.i18next.com/overview/api#t) +function easily. ##### Using HOCs -In most cases we used [High Order Components](https://react.i18next.com/latest/withtranslation-hoc) to get the `t` tool between OHIF's components. -E.g. - -```js -import React from 'react'; -import { withTranslation } from 'ohif-i18n'; - -function MyComponent({ t, i18n }) { - return

{t('my translated text')}

-} - -export default withTranslation('MyNameSpace')(MyComponent); -``` -> Important: if you are using React outside the OHIF Viewer, check the [I18nextProvider](#using-outside-of-ohif-viewer) section, `withTranslation` HOC doesnt works without a I18nextProvider - -##### Using Hooks -Also, it's possible to get the `t` tool using [React Hooks](https://react.i18next.com/latest/usetranslation-hook), but it requires at least React > 16.8. - - -#### Using outside of OHIF viewer -OHIF Viewer already sets a main [I18nextProvider](https://react.i18next.com/latest/i18nextprovider) connected to the shared i18n instance from `ohif-i18n`, -all extensions inside the Viewer will share this same provider at the end, you don't need a provider when developing a react Extension if you use `ohif-i18n`; - -But, if you need to use it completely outside of OHIF viewer, you can set the I18nextProvider this way: - -```js -import i18n, { I18nextProvider } from 'ohif-i18n'; -import App from './App'; - - - - -``` -After setting `I18nextProvider` in your React App, all translations from `ohif-i18n` should be available following [With React](#with-react) usage. - ----- - -#### Without React -When needed, you can also use available translations *without React*. +In most cases we used +[High Order Components](https://react.i18next.com/latest/withtranslation-hoc) to +get the `t` tool between OHIF's components. E.g. ```js -import { t } from 'ohif-i18n'; -console.log( t('my translated text') ); +import React from 'react'; +import { withTranslation } from '@ohif/i18n'; + +function MyComponent({ t, i18n }) { + return

{t('my translated text')}

; +} + +export default withTranslation('MyNameSpace')(MyComponent); +``` + +> Important: if you are using React outside the OHIF Viewer, check the +> [I18nextProvider](#using-outside-of-ohif-viewer) section, `withTranslation` +> HOC doesnt works without a I18nextProvider + +##### Using Hooks + +Also, it's possible to get the `t` tool using +[React Hooks](https://react.i18next.com/latest/usetranslation-hook), but it +requires at least React > 16.8. + +#### Using outside of OHIF viewer + +OHIF Viewer already sets a main +[I18nextProvider](https://react.i18next.com/latest/i18nextprovider) connected to +the shared i18n instance from `@ohif/i18n`, all extensions inside the Viewer +will share this same provider at the end, you don't need a provider when +developing a react Extension if you use `@ohif/i18n`; + +But, if you need to use it completely outside of OHIF viewer, you can set the +I18nextProvider this way: + +```js +import i18n, { I18nextProvider } from '@ohif/i18n'; +import App from './App'; + + + +; +``` + +After setting `I18nextProvider` in your React App, all translations from +`@ohif/i18n` should be available following [With React](#with-react) usage. + +--- + +#### Without React + +When needed, you can also use available translations _without React_. + +E.g. + +```js +import { t } from '@ohif/i18n'; +console.log(t('my translated text')); ``` --- # Main Concepts While Translating -### - Namespaces -Namespaces are being used to organize translations in smaller portions, combined semantically or by use. -Each `.json` file inside `ohif-i18n` npm package becomes a new namespace automatically. +### - Namespaces +Namespaces are being used to organize translations in smaller portions, combined +semantically or by use. Each `.json` file inside `@ohif/i18n` npm package +becomes a new namespace automatically. - Buttons: All buttons translations - CineDialog: Translations for the toll tips inside the Cine Player Dialog - common: all common jargons that can be reused like `t('$t(common:image)')` - Header: translations related to OHIF's Header Top Bar -### - Extending Languages in ohif-i18n -Sometimes, even in the same language, some nouns or jargons can change in different countries, states or even from Hospital to Hospital, in this cases, we can extend languages. +### - Extending Languages in @ohif/i18n -To extend a language, create a new folder inside a language with two characters as name, like the `UK` in the following file tree: +Sometimes, even in the same language, some nouns or jargons can change in +different countries, states or even from Hospital to Hospital, in this cases, we +can extend languages. + +To extend a language, create a new folder inside a language with two characters +as name, like the `UK` in the following file tree: Files Tree for Extending Purpouses -All properties inside a Namespace (.json file) will be replaced in the new sub language, e.g en-US, en-UK, es-AR, es-MX, etc. - +All properties inside a Namespace (.json file) will be replaced in the new sub +language, e.g en-US, en-UK, es-AR, es-MX, etc. #### - Extending languages dynamically -Once you have access to the i18n instance, you can use the [addResourceBundle](https://www.i18next.com/how-to/add-or-load-translations#add-after-init) method to add and change language resources. +Once you have access to the i18n instance, you can use the +[addResourceBundle](https://www.i18next.com/how-to/add-or-load-translations#add-after-init) +method to add and change language resources. E.g. + ```js -import { i18n } from 'ohif-i18n'; +import { i18n } from '@ohif/i18n'; i18next.addResourceBundle('pt-BR', 'Buttons', { - 'Angle': '脗ngulo' + Angle: '脗ngulo', }); ``` ------- + +--- ### How to set a whole new language + To set a brand new language you can do it in two different ways: -* Opening a pull request for `ohif-i18n` and sharing the translation with the community. Please see [Contributing](#contributing-with-new-languages) section for further information -* Setting it only in your project or extension -To set it apart of `ohif-i18n`, follow this snippet: +- Opening a pull request for `@ohif/i18n` and sharing the translation with the + community. Please see [Contributing](#contributing-with-new-languages) section + for further information +- Setting it only in your project or extension + +To set it apart of `@ohif/i18n`, follow this snippet: + +File: myJsonFileWithLanguage.json // TODO - This example is a working in +progress -File: myJsonFileWithLanguage.json // TODO - This example is a working in progress ```json { - "prop1": "value1", - "prop2": "value2", - "prop3": "value3", - "prop4": "value4" + "en": { + "ns": { + "prop1": "value1", + "prop2": "value2", + "prop3": "value3", + "prop4": "value4" + } + } } ``` ```js -import { extendLanguage } from 'ohif-i18n'; +import { extendLanguage } from '@ohif/i18n'; import myJsonFileWithLanguage from './myJsonFileWithLanguage.json'; extendLanguage(myJsonFileWithLanguage); // TODO - This example is a working in progress ``` +## Debugging translations -#Debugging translations -#TODO - WIP +There are two environment variables responsible for debugging the translations: +`REACT_APP_I18N_DEBUG` and `REACT_APP_LANG`. + +For debugging, you can run the project as following: + +```bash +yarn; REACT_APP_I18N_DEBUG=true REACT_APP_LANG=es-MX yarn run dev +``` ### Contributing with new languages -Contributions of any kind are welcome! Please check the [instructions](https://docs.ohif.org/contributing.html). +Contributions of any kind are welcome! Please check the +[instructions](https://docs.ohif.org/contributing.html). From fe827b5b2ae6b00a4c12113e733c22d06326bc4f Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Fri, 7 Jun 2019 19:53:49 -0300 Subject: [PATCH 17/42] add language detector lib --- extensions/ohif-i18n/package.json | 5 +++-- extensions/ohif-i18n/src/index.js | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/extensions/ohif-i18n/package.json b/extensions/ohif-i18n/package.json index 291e46352..812afabdc 100644 --- a/extensions/ohif-i18n/package.json +++ b/extensions/ohif-i18n/package.json @@ -17,9 +17,9 @@ "prepublishOnly": "npm run build" }, "peerDependencies": { + "i18next": "^15.1.3", "react": "^16.0.0", "react-dom": "^16.0.0", - "i18next": "^15.1.3", "react-i18next": "^10.11.0" }, "devDependencies": { @@ -51,7 +51,8 @@ "rollup-plugin-node-resolve": "^4.0.0", "rollup-plugin-peer-deps-external": "^2.2.0", "rollup-plugin-postcss": "^2.0.3", - "rollup-plugin-url": "^2.1.0" + "rollup-plugin-url": "^2.1.0", + "i18next-browser-languagedetector": "^3.0.1" }, "husky": { "hooks": { diff --git a/extensions/ohif-i18n/src/index.js b/extensions/ohif-i18n/src/index.js index 41d7362b8..69b2b9f9d 100755 --- a/extensions/ohif-i18n/src/index.js +++ b/extensions/ohif-i18n/src/index.js @@ -1,5 +1,6 @@ import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; +import LngDetector from 'i18next-browser-languagedetector'; const currentLanguage = process.env.REACT_APP_LANG || 'en-US'; const debugMode = !!( @@ -63,6 +64,7 @@ function addLocales(context) { let translate; i18n + .use(LngDetector) .use(initReactI18next) .init({ resources: getLocales(), From ee42257736993010d47dd2fc7bdae0e0bea7cfc9 Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Fri, 7 Jun 2019 19:53:56 -0300 Subject: [PATCH 18/42] fix text --- extensions/ohif-i18n/src/locales/en/Header.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ohif-i18n/src/locales/en/Header.json b/extensions/ohif-i18n/src/locales/en/Header.json index eefaf4542..c373fcb67 100644 --- a/extensions/ohif-i18n/src/locales/en/Header.json +++ b/extensions/ohif-i18n/src/locales/en/Header.json @@ -1,5 +1,5 @@ { - "INVESTIGATIONAL USE ONLY": "Preferences", + "INVESTIGATIONAL USE ONLY": "INVESTIGATIONAL USE ONLY", "Options": "Options", "About": "About", "Preferences": "Preferences", From ebb2e839250e323f647420d3f17ca2ee0bce2a37 Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Fri, 7 Jun 2019 19:54:22 -0300 Subject: [PATCH 19/42] WIP - using yalc for react-viewerbase --- extensions/ohif-i18n/yarn.lock | 5 +++++ package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/extensions/ohif-i18n/yarn.lock b/extensions/ohif-i18n/yarn.lock index 6514cfc50..91116e353 100644 --- a/extensions/ohif-i18n/yarn.lock +++ b/extensions/ohif-i18n/yarn.lock @@ -2404,6 +2404,11 @@ husky@^1.3.1: run-node "^1.0.0" slash "^2.0.0" +i18next-browser-languagedetector@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-3.0.1.tgz#a47c43176e8412c91e808afb7c6eb5367649aa8e" + integrity sha512-WFjPLNPWl62uu07AHY2g+KsC9qz0tyMq+OZEB/H7N58YKL/JLiCz9U709gaR20Mule/Ppn+uyfVx5REJJjn1HA== + i18next@^15.1.3: version "15.1.3" resolved "https://registry.yarnpkg.com/i18next/-/i18next-15.1.3.tgz#f1984cbee0e3cb00cff9008b037264289ce8840a" diff --git a/package.json b/package.json index 51c7bdc09..aecf4cab9 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "react-resize-detector": "^3.4.0", "react-router": "^4.3.1", "react-router-dom": "^4.3.1", - "react-viewerbase": "0.7.0", + "react-viewerbase": "file:.yalc/react-viewerbase", "react-vtkjs-viewport": "^0.0.7", "redux": "^4.0.1", "redux-oidc": "3.1.x" From 5bbd6f14636e504bd0c975ed959cec340545fc8a Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Fri, 7 Jun 2019 19:54:35 -0300 Subject: [PATCH 20/42] remove unused switch language buttons --- src/components/Header/Header.js | 35 +-------------------------------- 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/src/components/Header/Header.js b/src/components/Header/Header.js index 8b0c2d7cf..1fe1adcc0 100644 --- a/src/components/Header/Header.js +++ b/src/components/Header/Header.js @@ -2,7 +2,6 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { Link, withRouter } from 'react-router-dom'; import { Dropdown } from 'react-viewerbase'; -import i18n from '@ohif/i18n'; import { withTranslation } from 'react-i18next'; import './Header.css'; import OHIFLogo from '../OHIFLogo/OHIFLogo.js'; @@ -43,21 +42,13 @@ class Header extends Component { { title: t('About'), icon: { - name: 'info' + name: 'info', }, link: 'http://ohif.org', }, ]; } - changeLanguage(language) { - i18n.init({ - fallbackLng: language.substring(0, 2), - lng: language, - }); - this.loadOptions(); - } - render() { const { t } = this.props; return ( @@ -89,30 +80,6 @@ class Header extends Component {
{t('INVESTIGATIONAL USE ONLY')} - - - -
From ff382b02124df0dfc45c71d7792ac36a83998522 Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Fri, 7 Jun 2019 19:54:49 -0300 Subject: [PATCH 21/42] Update yarn.lock --- yarn.lock | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/yarn.lock b/yarn.lock index 287051e87..f19be5a3f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1043,7 +1043,7 @@ react-vtkjs-viewport "^0.0.7" "@ohif/i18n@file:.yalc/@ohif/i18n": - version "0.0.2-4597feaf" + version "0.0.2-f8005bc6" dependencies: "@babel/runtime" "^7.2.0" classnames "^2.2.6" @@ -11788,10 +11788,8 @@ react-transition-group@^2.0.0, react-transition-group@^2.2.0: prop-types "^15.6.2" react-lifecycles-compat "^3.0.4" -react-viewerbase@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/react-viewerbase/-/react-viewerbase-0.7.0.tgz#b0f48a0f003b849c280b8ca67927d4780c68b0dc" - integrity sha512-1VQXREKSsqxtOSSHRou0gjBODrSOjE8SBJ6/dHG0gPgdmeotOg68xPMKYf9K7fYyGZ6CDA7oVCAmdTE4SVYP5Q== +"react-viewerbase@file:.yalc/react-viewerbase": + version "0.2.17-1a0125ef" dependencies: "@babel/runtime" "7.2.0" classnames "2.2.6" From d5909f8d741385182d52840a96b18ed67bc73ba3 Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Mon, 10 Jun 2019 14:54:18 -0300 Subject: [PATCH 22/42] Merge branch 'master' of https://github.com/OHIF/Viewers into feature/i18n-basics # Conflicts: # extensions/ohif-vtk-extension/package.json # extensions/ohif-vtk-extension/rollup.config.js # extensions/ohif-vtk-extension/yarn.lock # package.json # src/App.js # src/components/Header/Header.js # yarn.lock --- .../img/ohif-i18n-extending-files-tree.png | Bin 22000 -> 21999 bytes extensions/ohif-i18n/package.json | 2 +- extensions/ohif-vtk-extension/package.json | 6 ++++-- .../ohif-vtk-extension/src/loadLocales.js | 2 +- .../src/locales/en/{US => }/Buttons.json | 0 .../src/locales/es/Buttons.json | 3 +++ extensions/ohif-vtk-extension/yarn.lock | 15 ++++++++++++++ package.json | 2 +- yarn.lock | 19 +++++++++++++----- 9 files changed, 39 insertions(+), 10 deletions(-) rename extensions/ohif-vtk-extension/src/locales/en/{US => }/Buttons.json (100%) create mode 100644 extensions/ohif-vtk-extension/src/locales/es/Buttons.json diff --git a/docs/latest/assets/img/ohif-i18n-extending-files-tree.png b/docs/latest/assets/img/ohif-i18n-extending-files-tree.png index 8bf3ff1759b5885fb05d1e96d18401d7a949db43..1166a533de94f07b54f9e43dad81c17b32b95870 100644 GIT binary patch delta 15 Wcmeycn(_T=MwZS1KlhESuR{Si?gpR$ delta 16 XcmaFAn(@PGM%K;%KX=}ZEU!ZWJ>3Sa diff --git a/extensions/ohif-i18n/package.json b/extensions/ohif-i18n/package.json index 291e46352..90059c7f8 100644 --- a/extensions/ohif-i18n/package.json +++ b/extensions/ohif-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@ohif/i18n", - "version": "0.0.2", + "version": "0.0.1-rc-001", "description": "OHIF extension for internationalization", "author": "OHIF", "license": "MIT", diff --git a/extensions/ohif-vtk-extension/package.json b/extensions/ohif-vtk-extension/package.json index 3a7b5ffc7..ea8ccfcbd 100644 --- a/extensions/ohif-vtk-extension/package.json +++ b/extensions/ohif-vtk-extension/package.json @@ -1,6 +1,6 @@ { "name": "@ohif/extension-vtk", - "version": "0.0.2", + "version": "0.0.3", "description": "OHIF extension for VTK.js", "author": "OHIF", "license": "MIT", @@ -25,7 +25,7 @@ "dicom-parser": "^1.8.3", "hammerjs": "^2.0.8", "ohif-core": "^0.3.3", - "ohif-i18n": "file:.yalc/ohif-i18n", + "@ohif/i18n": "0.0.1-rc-001", "prop-types": "^15.6.2", "react": "^15.0.0 || ^16.0.0", "react-dom": "^15.0.0 || ^16.0.0", @@ -41,6 +41,7 @@ "@babel/plugin-transform-runtime": "^7.2.0", "@babel/preset-env": "^7.2.3", "@babel/preset-react": "^7.0.0", + "@ohif/i18n": "0.0.1-rc-001", "babel-eslint": "^10.0.1", "cross-env": "^5.2.0", "eslint": "5.13.0", @@ -92,6 +93,7 @@ }, "dependencies": { "@babel/runtime": "^7.2.0", + "@ohif/extension-vtk": "file:.yalc/@ohif/extension-vtk", "classnames": "^2.2.6", "react-vtkjs-viewport": "^0.0.7" } diff --git a/extensions/ohif-vtk-extension/src/loadLocales.js b/extensions/ohif-vtk-extension/src/loadLocales.js index 90ce5c1d4..f88f89d61 100644 --- a/extensions/ohif-vtk-extension/src/loadLocales.js +++ b/extensions/ohif-vtk-extension/src/loadLocales.js @@ -1,4 +1,4 @@ -import { addLocales } from 'ohif-i18n'; +import { addLocales } from '@ohif/i18n'; function loadLocales() { const context = require.context(`./locales`, true, /\.json$/); diff --git a/extensions/ohif-vtk-extension/src/locales/en/US/Buttons.json b/extensions/ohif-vtk-extension/src/locales/en/Buttons.json similarity index 100% rename from extensions/ohif-vtk-extension/src/locales/en/US/Buttons.json rename to extensions/ohif-vtk-extension/src/locales/en/Buttons.json diff --git a/extensions/ohif-vtk-extension/src/locales/es/Buttons.json b/extensions/ohif-vtk-extension/src/locales/es/Buttons.json new file mode 100644 index 000000000..664a6a86c --- /dev/null +++ b/extensions/ohif-vtk-extension/src/locales/es/Buttons.json @@ -0,0 +1,3 @@ +{ + "Rotate": "Rotacionar VTK" +} diff --git a/extensions/ohif-vtk-extension/yarn.lock b/extensions/ohif-vtk-extension/yarn.lock index 4831e6ffb..26c0bb834 100644 --- a/extensions/ohif-vtk-extension/yarn.lock +++ b/extensions/ohif-vtk-extension/yarn.lock @@ -727,6 +727,21 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@ohif/extension-vtk@file:.yalc/@ohif/extension-vtk": + version "0.0.3-9acf58f8" + dependencies: + "@babel/runtime" "^7.2.0" + classnames "^2.2.6" + react-vtkjs-viewport "^0.0.7" + +"@ohif/i18n@0.0.1-rc-001": + version "0.0.1-rc-001" + resolved "https://registry.yarnpkg.com/@ohif/i18n/-/i18n-0.0.1-rc-001.tgz#47286daa1411efb5f0219f0310484c8919bfe607" + integrity sha512-CJ9wqd15DpJ6adVMyXkyqQqcRZgSnMWJ7L3WyUpMqf66CvAFKzCUuckyiFeCupIq8ZGv7w4jaADSYKrLcpviUw== + dependencies: + "@babel/runtime" "^7.2.0" + classnames "^2.2.6" + "@samverschueren/stream-to-observable@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" diff --git a/package.json b/package.json index 51c7bdc09..aecf4cab9 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,7 @@ "react-resize-detector": "^3.4.0", "react-router": "^4.3.1", "react-router-dom": "^4.3.1", - "react-viewerbase": "0.7.0", + "react-viewerbase": "file:.yalc/react-viewerbase", "react-vtkjs-viewport": "^0.0.7", "redux": "^4.0.1", "redux-oidc": "3.1.x" diff --git a/yarn.lock b/yarn.lock index 287051e87..2397e59bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1042,8 +1042,16 @@ classnames "^2.2.6" react-vtkjs-viewport "^0.0.7" +"@ohif/i18n@0.0.1-rc-001": + version "0.0.1-rc-001" + resolved "https://registry.yarnpkg.com/@ohif/i18n/-/i18n-0.0.1-rc-001.tgz#47286daa1411efb5f0219f0310484c8919bfe607" + integrity sha512-CJ9wqd15DpJ6adVMyXkyqQqcRZgSnMWJ7L3WyUpMqf66CvAFKzCUuckyiFeCupIq8ZGv7w4jaADSYKrLcpviUw== + dependencies: + "@babel/runtime" "^7.2.0" + classnames "^2.2.6" + "@ohif/i18n@file:.yalc/@ohif/i18n": - version "0.0.2-4597feaf" + version "0.0.2-a44efe70" dependencies: "@babel/runtime" "^7.2.0" classnames "^2.2.6" @@ -11788,13 +11796,13 @@ react-transition-group@^2.0.0, react-transition-group@^2.2.0: prop-types "^15.6.2" react-lifecycles-compat "^3.0.4" -react-viewerbase@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/react-viewerbase/-/react-viewerbase-0.7.0.tgz#b0f48a0f003b849c280b8ca67927d4780c68b0dc" - integrity sha512-1VQXREKSsqxtOSSHRou0gjBODrSOjE8SBJ6/dHG0gPgdmeotOg68xPMKYf9K7fYyGZ6CDA7oVCAmdTE4SVYP5Q== +"react-viewerbase@file:.yalc/react-viewerbase": + version "0.2.17-bffd4836" dependencies: "@babel/runtime" "7.2.0" + "@ohif/i18n" "0.0.1-rc-001" classnames "2.2.6" + i18next "^17.0.3" lodash.isequal "4.5.0" moment "2.24.0" prop-types "15.6.2" @@ -11802,6 +11810,7 @@ react-viewerbase@0.7.0: react-dates "18.4.1" react-dnd "7.0.2" react-dnd-html5-backend "7.0.2" + react-i18next "^10.11.0" react-with-direction "1.3.0" react-vtkjs-viewport@^0.0.7: From b4af4bed1783889d8f6101fa5d771d7eb8487f14 Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Tue, 11 Jun 2019 14:07:23 -0300 Subject: [PATCH 23/42] Adding language detector as Peer Dependency, its not working inside the rollup bundle. --- extensions/ohif-i18n/.gitignore | 2 +- extensions/ohif-i18n/package.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/extensions/ohif-i18n/.gitignore b/extensions/ohif-i18n/.gitignore index 32c3cd466..2eda3696e 100644 --- a/extensions/ohif-i18n/.gitignore +++ b/extensions/ohif-i18n/.gitignore @@ -23,4 +23,4 @@ yarn-error.log* .idea yalc.lock -.yalc \ No newline at end of file +.yalc diff --git a/extensions/ohif-i18n/package.json b/extensions/ohif-i18n/package.json index 8bdc9a1af..677066044 100644 --- a/extensions/ohif-i18n/package.json +++ b/extensions/ohif-i18n/package.json @@ -20,7 +20,8 @@ "i18next": "^15.1.3", "react": "^16.0.0", "react-dom": "^16.0.0", - "react-i18next": "^10.11.0" + "react-i18next": "^10.11.0", + "i18next-browser-languagedetector": "^3.0.1" }, "devDependencies": { "@babel/core": "^7.2.2", From fde6088cb11bec7b8f5480bac5dfe8f7490083d1 Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Tue, 11 Jun 2019 14:11:28 -0300 Subject: [PATCH 24/42] Upgrading i18next version. --- extensions/ohif-i18n/package.json | 4 ++-- yarn.lock | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/extensions/ohif-i18n/package.json b/extensions/ohif-i18n/package.json index 677066044..26ca6ae98 100644 --- a/extensions/ohif-i18n/package.json +++ b/extensions/ohif-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@ohif/i18n", - "version": "0.0.1-rc-001", + "version": "0.0.1-rc-003", "description": "OHIF extension for internationalization", "author": "OHIF", "license": "MIT", @@ -17,7 +17,7 @@ "prepublishOnly": "npm run build" }, "peerDependencies": { - "i18next": "^15.1.3", + "i18next": "^17.0.3", "react": "^16.0.0", "react-dom": "^16.0.0", "react-i18next": "^10.11.0", diff --git a/yarn.lock b/yarn.lock index 09b838efb..b78114a5e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11789,7 +11789,7 @@ react-transition-group@^2.0.0, react-transition-group@^2.2.0: react-lifecycles-compat "^3.0.4" "react-viewerbase@file:.yalc/react-viewerbase": - version "0.2.17-0cc70fd6" + version "0.2.17-a5956254" dependencies: "@babel/runtime" "7.2.0" "@ohif/i18n" "0.0.1-rc-001" From 0c8cd3fbe952cb73875ae44a4ef0a6269079066b Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Tue, 11 Jun 2019 20:05:14 -0300 Subject: [PATCH 25/42] Language Detection implementation, bug fixes related to i18n and debugger helper added. --- extensions/ohif-i18n/package.json | 11 +-- extensions/ohif-i18n/rollup.config.js | 9 +++ extensions/ohif-i18n/src/config.js | 24 +++++++ extensions/ohif-i18n/src/debugger.js | 8 +++ extensions/ohif-i18n/src/index.js | 78 +++++++++++----------- extensions/ohif-i18n/yarn.lock | 14 ++++ extensions/ohif-vtk-extension/package.json | 1 + extensions/ohif-vtk-extension/yarn.lock | 6 ++ package.json | 3 +- src/App.js | 2 +- yarn.lock | 26 +++++--- 11 files changed, 125 insertions(+), 57 deletions(-) create mode 100644 extensions/ohif-i18n/src/config.js create mode 100644 extensions/ohif-i18n/src/debugger.js diff --git a/extensions/ohif-i18n/package.json b/extensions/ohif-i18n/package.json index 26ca6ae98..605094a2a 100644 --- a/extensions/ohif-i18n/package.json +++ b/extensions/ohif-i18n/package.json @@ -18,10 +18,10 @@ }, "peerDependencies": { "i18next": "^17.0.3", + "i18next-browser-languagedetector": "^3.0.1", "react": "^16.0.0", "react-dom": "^16.0.0", - "react-i18next": "^10.11.0", - "i18next-browser-languagedetector": "^3.0.1" + "react-i18next": "^10.11.0" }, "devDependencies": { "@babel/core": "^7.2.2", @@ -39,6 +39,7 @@ "eslint-plugin-react": "^7.11.1", "husky": "^1.3.1", "i18next": "^15.1.3", + "i18next-browser-languagedetector": "^3.0.1", "lint-staged": "^8.1.0", "prettier": "^1.15.3", "react": "^16.0.0", @@ -52,8 +53,7 @@ "rollup-plugin-node-resolve": "^4.0.0", "rollup-plugin-peer-deps-external": "^2.2.0", "rollup-plugin-postcss": "^2.0.3", - "rollup-plugin-url": "^2.1.0", - "i18next-browser-languagedetector": "^3.0.1" + "rollup-plugin-url": "^2.1.0" }, "husky": { "hooks": { @@ -80,6 +80,7 @@ }, "dependencies": { "@babel/runtime": "^7.2.0", - "classnames": "^2.2.6" + "classnames": "^2.2.6", + "rollup-plugin-json": "^4.0.0" } } diff --git a/extensions/ohif-i18n/rollup.config.js b/extensions/ohif-i18n/rollup.config.js index 10231e4ba..ef2ba0713 100644 --- a/extensions/ohif-i18n/rollup.config.js +++ b/extensions/ohif-i18n/rollup.config.js @@ -8,6 +8,7 @@ import pkg from './package.json'; // Deal with https://github.com/rollup/rollup-plugin-commonjs/issues/297 import builtins from 'rollup-plugin-node-builtins'; import copy from 'rollup-plugin-copy'; +import json from 'rollup-plugin-json'; const globals = { react: 'React', @@ -17,6 +18,7 @@ const globals = { 'prop-types': 'PropTypes', 'i18next': 'i18next', 'react-i18next': 'react-i18next', + 'i18next-browser-languagedetector': 'LngDetector' }; export default { @@ -48,6 +50,13 @@ export default { targets: ['src/locales'], outputFolder: 'dist', }), + json({ + // ignores indent and generates the smallest code + compact: true, // Default: false + + // generate a named export for every property of the JSON object + namedExports: true // Default: true + }), url(), babel({ exclude: 'node_modules/**', diff --git a/extensions/ohif-i18n/src/config.js b/extensions/ohif-i18n/src/config.js new file mode 100644 index 000000000..e9e1c1685 --- /dev/null +++ b/extensions/ohif-i18n/src/config.js @@ -0,0 +1,24 @@ +const debugMode = !!( + process.env.NODE_ENV !== 'production' && process.env.REACT_APP_I18N_DEBUG +); + +const detectionOptions = { + // order and from where user language should be detected + order: ['querystring', 'cookie', 'localStorage', 'navigator', 'htmlTag', 'path', 'subdomain'], + + // keys or params to lookup language from + lookupQuerystring: 'lng', + lookupCookie: 'i18next', + lookupLocalStorage: 'i18nextLng', + lookupFromPathIndex: 0, + lookupFromSubdomainIndex: 0, + + // cache user language on + caches: ['localStorage', 'cookie'], + excludeCacheFor: ['cimode'], // languages to not persist (cookie, localStorage) + + // optional htmlTag with lang attribute, the default is: + htmlTag: document.documentElement +}; + +export { debugMode, detectionOptions }; diff --git a/extensions/ohif-i18n/src/debugger.js b/extensions/ohif-i18n/src/debugger.js new file mode 100644 index 000000000..8fd2f6ef6 --- /dev/null +++ b/extensions/ohif-i18n/src/debugger.js @@ -0,0 +1,8 @@ +import { debugMode } from './config'; + +export default (message, level = 'log') => { + if (debugMode) { + // eslint-disable-next-line + console[level](message); + } +}; diff --git a/extensions/ohif-i18n/src/index.js b/extensions/ohif-i18n/src/index.js index 69b2b9f9d..f244d5be1 100755 --- a/extensions/ohif-i18n/src/index.js +++ b/extensions/ohif-i18n/src/index.js @@ -1,16 +1,11 @@ import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; import LngDetector from 'i18next-browser-languagedetector'; +import customDebug from './debugger'; +import pkg from '../package.json'; +import { debugMode, detectionOptions } from './config'; -const currentLanguage = process.env.REACT_APP_LANG || 'en-US'; -const debugMode = !!( - process.env.NODE_ENV !== 'production' && process.env.REACT_APP_I18N_DEBUG -); - -function getDefaultLanguage() { - const mainLanguage = currentLanguage.match(/(.*.)(-)/); - return mainLanguage !== null ? mainLanguage[1] : null; -} +let translate; function getNameSpaceString(key) { const nameSpaceMatcher = key.match(/[^/]+$/g); @@ -23,7 +18,7 @@ function getNameSpaceString(key) { return finalNameSpace; } -function getCleanKeyForNameSpaces(key) { +function getKeyForNameSpaces(key) { const cleanedKey = key.match(/[/\\].+(?=[/\\])/); let finalKey; @@ -40,8 +35,8 @@ function getLocales() { const locales = {}; context.keys().forEach(key => { - locales[getCleanKeyForNameSpaces(key)] = { - ...locales[getCleanKeyForNameSpaces(key)], + locales[getKeyForNameSpaces(key)] = { + ...locales[getKeyForNameSpaces(key)], [getNameSpaceString(key)]: context(key), }; }); @@ -52,43 +47,48 @@ function getLocales() { function addLocales(context) { context.keys().forEach(key => { i18n.addResourceBundle( - getCleanKeyForNameSpaces(key), + getKeyForNameSpaces(key), getNameSpaceString(key), context(key), true, true ); }); + customDebug(`Locales added successfully`, 'info'); } -let translate; +function initI18n(detection = detectionOptions) { + i18n + .use(LngDetector) + .use(initReactI18next) + .init({ + resources: getLocales(), + debug: debugMode, + keySeparator: false, + interpolation: { + escapeValue: false, + }, + detection, + fallbackNS: ['common'], + defaultNS: 'common', + react: { + wait: true, + }, + }) + .then(function(t) { + translate = t; + customDebug(`t function available.`, 'info'); + }); +} -i18n - .use(LngDetector) - .use(initReactI18next) - .init({ - resources: getLocales(), - fallbackLng: getDefaultLanguage(), +customDebug(`@ohif/i18n version ${pkg.version} loaded.`, 'info'); - lng: currentLanguage, - debug: debugMode, +initI18n(); - // have a common namespace used around the full app - keySeparator: false, // uses content as keys - interpolation: { - escapeValue: false, - }, +export { + translate as t, + addLocales, + initI18n +}; - fallbackNS: ['common'], - defaultNS: 'common', - - react: { - wait: true, - }, - }) - .then(function(t) { - translate = t; - }); - -export { translate as t, addLocales }; export default i18n; diff --git a/extensions/ohif-i18n/yarn.lock b/extensions/ohif-i18n/yarn.lock index 91116e353..89c09ec6d 100644 --- a/extensions/ohif-i18n/yarn.lock +++ b/extensions/ohif-i18n/yarn.lock @@ -4430,6 +4430,13 @@ rollup-plugin-copy@^2.0.1: fs-extra "^7.0.1" is-plain-object "^3.0.0" +rollup-plugin-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz#a18da0a4b30bf5ca1ee76ddb1422afbb84ae2b9e" + integrity sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow== + dependencies: + rollup-pluginutils "^2.5.0" + rollup-plugin-node-builtins@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.1.2.tgz#24a1fed4a43257b6b64371d8abc6ce1ab14597e9" @@ -4491,6 +4498,13 @@ rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.0, rollup-pluginutils@^2.3.3, dependencies: estree-walker "^0.6.1" +rollup-pluginutils@^2.5.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz#8fa6dd0697344938ef26c2c09d2488ce9e33ce97" + integrity sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg== + dependencies: + estree-walker "^0.6.1" + rollup@^1.1.2: version "1.13.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.13.1.tgz#86a474c29df0f303ed31e4c8be5d81c1038beae8" diff --git a/extensions/ohif-vtk-extension/package.json b/extensions/ohif-vtk-extension/package.json index 492862ec7..c307490e2 100644 --- a/extensions/ohif-vtk-extension/package.json +++ b/extensions/ohif-vtk-extension/package.json @@ -93,6 +93,7 @@ }, "dependencies": { "@babel/runtime": "^7.2.0", + "@ohif/i18n": "file:.yalc/@ohif/i18n", "classnames": "^2.2.6", "react-vtkjs-viewport": "^0.0.7" } diff --git a/extensions/ohif-vtk-extension/yarn.lock b/extensions/ohif-vtk-extension/yarn.lock index a109a0e37..aafd7402a 100644 --- a/extensions/ohif-vtk-extension/yarn.lock +++ b/extensions/ohif-vtk-extension/yarn.lock @@ -727,6 +727,12 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@ohif/i18n@file:.yalc/@ohif/i18n": + version "0.0.1-rc-003-62f0a044" + dependencies: + "@babel/runtime" "^7.2.0" + classnames "^2.2.6" + "@samverschueren/stream-to-observable@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" diff --git a/package.json b/package.json index 5eb2012f2..e44837be7 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "@ohif/extension-cornerstone": "0.0.34", "@ohif/extension-dicom-microscopy": "0.0.6", "@ohif/extension-vtk": "file:.yalc/@ohif/extension-vtk", - "@ohif/i18n": "0.0.1-rc-001", + "@ohif/i18n": "file:.yalc/@ohif/i18n", "classnames": "^2.2.6", "cornerstone-core": "^2.2.8", "cornerstone-math": "^0.1.8", @@ -81,6 +81,7 @@ "dicomweb-client": "^0.4.2", "hammerjs": "^2.0.8", "i18next": "^17.0.3", + "i18next-browser-languagedetector": "^3.0.1", "lodash.isequal": "4.5.0", "moment": "^2.24.0", "ohif-core": "0.5.6", diff --git a/src/App.js b/src/App.js index 5c870d93b..3946c00d2 100644 --- a/src/App.js +++ b/src/App.js @@ -24,7 +24,7 @@ import WhiteLabellingContext from './WhiteLabellingContext'; import setupTools from './setupTools'; import ui from './redux/ui.js'; import i18n from '@ohif/i18n'; -import { I18nextProvider } from 'react-i18next'; +import { I18nextProvider } from 'react-i18next'; const { ExtensionManager } = OHIF.extensions; const { reducers, localStorage } = OHIF.redux; diff --git a/yarn.lock b/yarn.lock index b78114a5e..428ee2a02 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1033,17 +1033,17 @@ classnames "^2.2.6" dicom-microscopy-viewer "^0.4.3" -"@ohif/extension-vtk@file:.yalc/@ohif/extension-vtk": - version "0.0.3-3bee9176" +"@ohif/extension-vtk@0.0.2": + version "0.0.2" + resolved "https://registry.yarnpkg.com/@ohif/extension-vtk/-/extension-vtk-0.0.2.tgz#99f0ea796ddae14d7e64cff958c0656b5d964f4e" + integrity sha512-WDuQVwK4RlHgXwbmKIECZrP90x8cVOwESQz8bJOeNG2eVPDBVlNWx/zOXShAhn6J62QG6Sn1RnHQWLedgGnhyA== dependencies: "@babel/runtime" "^7.2.0" classnames "^2.2.6" react-vtkjs-viewport "^0.0.7" -"@ohif/i18n@0.0.1-rc-001": - version "0.0.1-rc-001" - resolved "https://registry.yarnpkg.com/@ohif/i18n/-/i18n-0.0.1-rc-001.tgz#47286daa1411efb5f0219f0310484c8919bfe607" - integrity sha512-CJ9wqd15DpJ6adVMyXkyqQqcRZgSnMWJ7L3WyUpMqf66CvAFKzCUuckyiFeCupIq8ZGv7w4jaADSYKrLcpviUw== +"@ohif/i18n@file:.yalc/@ohif/i18n": + version "0.0.1-rc-003-18e6caf4" dependencies: "@babel/runtime" "^7.2.0" classnames "^2.2.6" @@ -6335,6 +6335,11 @@ husky@1.3.x: run-node "^1.0.0" slash "^2.0.0" +i18next-browser-languagedetector@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-3.0.1.tgz#a47c43176e8412c91e808afb7c6eb5367649aa8e" + integrity sha512-WFjPLNPWl62uu07AHY2g+KsC9qz0tyMq+OZEB/H7N58YKL/JLiCz9U709gaR20Mule/Ppn+uyfVx5REJJjn1HA== + i18next@^17.0.3: version "17.0.3" resolved "https://registry.yarnpkg.com/i18next/-/i18next-17.0.3.tgz#82d67826d13e8ca2cd2a3c87871533414e952d03" @@ -11788,13 +11793,13 @@ react-transition-group@^2.0.0, react-transition-group@^2.2.0: prop-types "^15.6.2" react-lifecycles-compat "^3.0.4" -"react-viewerbase@file:.yalc/react-viewerbase": - version "0.2.17-a5956254" +react-viewerbase@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/react-viewerbase/-/react-viewerbase-0.7.0.tgz#b0f48a0f003b849c280b8ca67927d4780c68b0dc" + integrity sha512-1VQXREKSsqxtOSSHRou0gjBODrSOjE8SBJ6/dHG0gPgdmeotOg68xPMKYf9K7fYyGZ6CDA7oVCAmdTE4SVYP5Q== dependencies: "@babel/runtime" "7.2.0" - "@ohif/i18n" "0.0.1-rc-001" classnames "2.2.6" - i18next "^17.0.3" lodash.isequal "4.5.0" moment "2.24.0" prop-types "15.6.2" @@ -11802,7 +11807,6 @@ react-transition-group@^2.0.0, react-transition-group@^2.2.0: react-dates "18.4.1" react-dnd "7.0.2" react-dnd-html5-backend "7.0.2" - react-i18next "^10.11.0" react-with-direction "1.3.0" react-vtkjs-viewport@^0.0.7: From 4a4d7a217165041fd8ad9eb52861d46d7802a6a0 Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Wed, 12 Jun 2019 03:35:17 -0300 Subject: [PATCH 26/42] Updating i18next documentation. --- docs/latest/essentials/translating.md | 127 ++++++++++++------ extensions/ohif-i18n/src/debugger.js | 2 +- extensions/ohif-i18n/src/index.js | 6 +- .../ohif-i18n/src/locales/en/Buttons.json | 22 +-- .../ohif-i18n/src/locales/en/Common.json | 10 ++ .../src/locales/en/MeasurementTable.json | 9 ++ .../src/locales/en/UserPreferencesModal.json | 6 + .../ohif-i18n/src/locales/en/common.json | 3 - .../ohif-i18n/src/locales/es/Buttons.json | 20 ++- .../ohif-i18n/src/locales/es/CineDialog.json | 10 +- .../ohif-i18n/src/locales/es/Common.json | 10 ++ .../src/locales/es/MeasurementTable.json | 11 ++ .../src/locales/es/UserPreferencesModal.json | 6 + .../ohif-i18n/src/locales/es/common.json | 3 - 14 files changed, 171 insertions(+), 74 deletions(-) create mode 100755 extensions/ohif-i18n/src/locales/en/Common.json create mode 100644 extensions/ohif-i18n/src/locales/en/MeasurementTable.json create mode 100644 extensions/ohif-i18n/src/locales/en/UserPreferencesModal.json delete mode 100755 extensions/ohif-i18n/src/locales/en/common.json create mode 100755 extensions/ohif-i18n/src/locales/es/Common.json create mode 100644 extensions/ohif-i18n/src/locales/es/MeasurementTable.json create mode 100644 extensions/ohif-i18n/src/locales/es/UserPreferencesModal.json delete mode 100755 extensions/ohif-i18n/src/locales/es/common.json diff --git a/docs/latest/essentials/translating.md b/docs/latest/essentials/translating.md index 459567a3a..33f3c5391 100644 --- a/docs/latest/essentials/translating.md +++ b/docs/latest/essentials/translating.md @@ -56,7 +56,7 @@ function easily. In most cases we used [High Order Components](https://react.i18next.com/latest/withtranslation-hoc) to -get the `t` tool between OHIF's components. +share the `t` function among OHIF's components. E.g. @@ -79,15 +79,14 @@ export default withTranslation('MyNameSpace')(MyComponent); Also, it's possible to get the `t` tool using [React Hooks](https://react.i18next.com/latest/usetranslation-hook), but it -requires at least React > 16.8. +requires at least React > 16.8 馃槈 #### Using outside of OHIF viewer OHIF Viewer already sets a main [I18nextProvider](https://react.i18next.com/latest/i18nextprovider) connected to -the shared i18n instance from `@ohif/i18n`, all extensions inside the Viewer -will share this same provider at the end, you don't need a provider when -developing a react Extension if you use `@ohif/i18n`; +the shared i18n instance from `@ohif/i18n`, all extensions inside OHIF Viewer +will share this same provider at the end, you don't need to set new providers at all. But, if you need to use it completely outside of OHIF viewer, you can set the I18nextProvider this way: @@ -102,7 +101,7 @@ import App from './App'; ``` After setting `I18nextProvider` in your React App, all translations from -`@ohif/i18n` should be available following [With React](#with-react) usage. +`@ohif/i18n` should be available following the basic [With React](#with-react) usage. --- @@ -115,13 +114,14 @@ E.g. ```js import { t } from '@ohif/i18n'; console.log(t('my translated text')); +console.log(t('$t(Common:Play) my translated text')); ``` --- # Main Concepts While Translating -### - Namespaces +## - Namespaces Namespaces are being used to organize translations in smaller portions, combined semantically or by use. Each `.json` file inside `@ohif/i18n` npm package @@ -129,26 +129,36 @@ becomes a new namespace automatically. - Buttons: All buttons translations - CineDialog: Translations for the toll tips inside the Cine Player Dialog -- common: all common jargons that can be reused like `t('$t(common:image)')` +- Common: all common jargons that can be reused like `t('$t(common:image)')` - Header: translations related to OHIF's Header Top Bar +- MeasurementTable - Translations for the react-viewerbase Measurement Table +- UserPreferencesModal - Translations for the react-viewerbase Preferences Modal -### - Extending Languages in @ohif/i18n +### How to use another NameSpace inside the current NameSpace? +i18next provides a parsing feature able to get translations strings from any NameSpace, + like this following example getting data from `Common` NameSpace: +``` +$t(Common:Reset) +``` -Sometimes, even in the same language, some nouns or jargons can change in -different countries, states or even from Hospital to Hospital, in this cases, we -can extend languages. +## - Extending Languages in @ohif/i18n -To extend a language, create a new folder inside a language with two characters -as name, like the `UK` in the following file tree: +Sometimes, even using the same language, some nouns or jargons can change according to +the country, states or even from Hospital to Hospital. + +In this cases, you don't need to set an entire language again, you can extend languages creating a new folder inside a pre existent language folder and @ohif/i18n will do the hard work. + +This new folder must to be called with a double character name, like the `UK` in the following file tree: Files Tree for Extending Purpouses -All properties inside a Namespace (.json file) will be replaced in the new sub -language, e.g en-US, en-UK, es-AR, es-MX, etc. +All properties inside a Namespace will be merged in the new sub language, e.g `en-US` and `en-UK` will merge the props with `en`. -#### - Extending languages dynamically +This feature is based on i18next's fallback languages tool. -Once you have access to the i18n instance, you can use the +### - Extending languages dynamically + +Once you have access to the i18n instance, you can use the [addResourceBundle](https://www.i18next.com/how-to/add-or-load-translations#add-after-init) method to add and change language resources. @@ -168,45 +178,74 @@ i18next.addResourceBundle('pt-BR', 'Buttons', { To set a brand new language you can do it in two different ways: - Opening a pull request for `@ohif/i18n` and sharing the translation with the - community. Please see [Contributing](#contributing-with-new-languages) section - for further information -- Setting it only in your project or extension + community. 馃槏 Please see [Contributing](#contributing-with-new-languages) section + for further information. + +- Setting it only in your project or extension: -To set it apart of `@ohif/i18n`, follow this snippet: +You'll need a folder structure like the following, which you can load using the `node context` and send it to `addLocales` method. -File: myJsonFileWithLanguage.json // TODO - This example is a working in -progress - -```json -{ - "en": { - "ns": { - "prop1": "value1", - "prop2": "value2", - "prop3": "value3", - "prop4": "value4" - } - } -} +Folder structure: +```bash + |-- ... + |-- src + |-- locales + |-- en + |-- Buttons.json + |-- es + | CO + |-- Buttons.js + |-- Buttons.json + ... ``` +E.g. of `addLocales` usage ```js -import { extendLanguage } from '@ohif/i18n'; -import myJsonFileWithLanguage from './myJsonFileWithLanguage.json'; +import { addLocales } from '@ohif/i18n'; -extendLanguage(myJsonFileWithLanguage); -// TODO - This example is a working in progress +const localesPath = './locales'; +const context = require.context(localesPath, true, /\.json$/); +addLocales(context); ``` +Also, [i18next](https://www.i18next.com/how-to/add-or-load-translations#add-after-init) provides a few methods to deal with languages, you have access to it's instance importing the default of @ohif/i18n; +Fell fre to play around with i18next like this: + +``` +import i18next from '@ohif/i18n'; + +i18next.addResourceBundle('en', 'namespace1', { + key: 'hello from namespace 1' +}); + +``` + +--- + +## language Detections +@ohif/i18n uses [i18next-browser-languageDetector](https://github.com/i18next/i18next-browser-languageDetector) to manage detections, also exports a method called initI18n that accepts a new detector config as parameter. + +### Changing the language +OHIF Viewer accepts a query param called `lng` in the url to change the language. + +E.g. +``` +https://docs.ohif.org/demo/?lng=es-MX +``` + +### Language Persistence +The user's language preference is kept automatically by the detector and stored at a cookie called 'i18next', and in a localstorage key called 'i18nextLng'. +These names can be changed with a new [Detector Config](https://github.com/i18next/i18next-browser-languageDetector). + + ## Debugging translations -There are two environment variables responsible for debugging the translations: -`REACT_APP_I18N_DEBUG` and `REACT_APP_LANG`. +There is an environment variable responsible for debugging the translations, called `REACT_APP_I18N_DEBUG`. -For debugging, you can run the project as following: +Run the project as following to get full debug information: ```bash -yarn; REACT_APP_I18N_DEBUG=true REACT_APP_LANG=es-MX yarn run dev +REACT_APP_I18N_DEBUG=true yarn run dev ``` ### Contributing with new languages diff --git a/extensions/ohif-i18n/src/debugger.js b/extensions/ohif-i18n/src/debugger.js index 8fd2f6ef6..9b6881ee5 100644 --- a/extensions/ohif-i18n/src/debugger.js +++ b/extensions/ohif-i18n/src/debugger.js @@ -3,6 +3,6 @@ import { debugMode } from './config'; export default (message, level = 'log') => { if (debugMode) { // eslint-disable-next-line - console[level](message); + console[level]('@ohif/i18n: ', message); } }; diff --git a/extensions/ohif-i18n/src/index.js b/extensions/ohif-i18n/src/index.js index f244d5be1..8214b013f 100755 --- a/extensions/ohif-i18n/src/index.js +++ b/extensions/ohif-i18n/src/index.js @@ -69,8 +69,8 @@ function initI18n(detection = detectionOptions) { escapeValue: false, }, detection, - fallbackNS: ['common'], - defaultNS: 'common', + fallbackNS: ['Common'], + defaultNS: 'Common', react: { wait: true, }, @@ -81,7 +81,7 @@ function initI18n(detection = detectionOptions) { }); } -customDebug(`@ohif/i18n version ${pkg.version} loaded.`, 'info'); +customDebug(`version ${pkg.version} loaded.`, 'info'); initI18n(); diff --git a/extensions/ohif-i18n/src/locales/en/Buttons.json b/extensions/ohif-i18n/src/locales/en/Buttons.json index 2725ce65b..b8f722f92 100644 --- a/extensions/ohif-i18n/src/locales/en/Buttons.json +++ b/extensions/ohif-i18n/src/locales/en/Buttons.json @@ -1,11 +1,11 @@ { "Themes": "Themes", - "Previous": "Previous", - "Next": "Next", - "Play": "Play", - "Stop": "Stop", - "Layout": "Layout", - "More": "More", + "Previous": "$t(Common:Previous)", + "Next": "$t(Common:Next)", + "Play": "$t(Common:Play)", + "Stop": "$t(Common:Stop)", + "Layout": "$t(Common:Layout)", + "More": "$t(Common:More)", "Crosshairs": "Crosshairs", "Magnify": "Magnify", "ROI Window": "ROI Window", @@ -31,9 +31,15 @@ "EllipticalRoi": "EllipticalRoi", "CircleRoi": "CircleRoi", "RectangleRoi": "RectangleRoi", - "Reset": "Reset", + "Reset": "$t(Common:Reset)", + "Reset 2": "$t(Common:Reset) 2", "CINE": "CINE", "Acquired": "Acquired", "Sagittal": "Sagittal", - "Axial": "Axial" + "Axial": "Axial", + "Manual": "Manual", + "Manual 2": "Manual 2", + "Save": "Save", + "Reset to Defaults": "$t(Common:Reset) to Defaults", + "Cancel": "Cancel" } diff --git a/extensions/ohif-i18n/src/locales/en/Common.json b/extensions/ohif-i18n/src/locales/en/Common.json new file mode 100755 index 000000000..42c203b0f --- /dev/null +++ b/extensions/ohif-i18n/src/locales/en/Common.json @@ -0,0 +1,10 @@ +{ + "Reset": "Reset", + "Previous": "Previous", + "Next": "Next", + "Play": "Play", + "Stop": "Stop", + "Layout": "Layout", + "More": "More", + "Image": "Image" +} diff --git a/extensions/ohif-i18n/src/locales/en/MeasurementTable.json b/extensions/ohif-i18n/src/locales/en/MeasurementTable.json new file mode 100644 index 000000000..e42616335 --- /dev/null +++ b/extensions/ohif-i18n/src/locales/en/MeasurementTable.json @@ -0,0 +1,9 @@ +{ + "Criteria nonconformities": "Criteria nonconformities", + "Relabel": "Relabel", + "Description": "Description", + "Delete": "Delete", + "Targets": "Targets", + "NonTargets": "NonTargets", + "MAX": "MAX" +} diff --git a/extensions/ohif-i18n/src/locales/en/UserPreferencesModal.json b/extensions/ohif-i18n/src/locales/en/UserPreferencesModal.json new file mode 100644 index 000000000..d7e792d2f --- /dev/null +++ b/extensions/ohif-i18n/src/locales/en/UserPreferencesModal.json @@ -0,0 +1,6 @@ +{ + "User Preferences": "User Preferences", + "Save": "$t(Buttons:Save)", + "Reset to Defaults": "$t(Buttons:Reset to Defaults)", + "Cancel": "$t(Buttons:Cancel)" +} diff --git a/extensions/ohif-i18n/src/locales/en/common.json b/extensions/ohif-i18n/src/locales/en/common.json deleted file mode 100755 index 5fdbf7431..000000000 --- a/extensions/ohif-i18n/src/locales/en/common.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Welcome to React": "Welcome to React and react-i18next" -} diff --git a/extensions/ohif-i18n/src/locales/es/Buttons.json b/extensions/ohif-i18n/src/locales/es/Buttons.json index 870f0cb9e..1b8fd5e60 100644 --- a/extensions/ohif-i18n/src/locales/es/Buttons.json +++ b/extensions/ohif-i18n/src/locales/es/Buttons.json @@ -1,11 +1,11 @@ { "Themes": "Temas", - "Previous": "Anterior", - "Next": "Pr贸ximo", - "Play": "Play", - "Stop": "Stop", - "Layout": "Esquema", - "More": "M谩s", + "Previous": "$t(Common:Previous)", + "Next": "$t(Common:Next)", + "Play": "$t(Common:Play)", + "Stop": "$t(Common:Stop)", + "Layout": "$t(Common:Layout)", + "More": "$t(Common:More)", "Crosshairs": "Cruces", "Magnify": "Lupa", "ROI Window": "Ventana ROI", @@ -32,8 +32,14 @@ "CircleRoi": "CircleRoi", "RectangleRoi": "RectangleRoi", "Reset": "Reiniciar", + "Reset 2": "Reiniciar 2", "CINE": "CINE", "Acquired": "Acquired", "Sagittal": "Sagittal", - "Axial": "Axial" + "Axial": "Axial", + "Manual": "Manual", + "Manual 2": "Manual 2", + "Save": "Guardar", + "Reset to Defaults": "$t(Common:reset) por defectos", + "Cancel": "Cancelar" } diff --git a/extensions/ohif-i18n/src/locales/es/CineDialog.json b/extensions/ohif-i18n/src/locales/es/CineDialog.json index 6073c562e..1126f7ed0 100644 --- a/extensions/ohif-i18n/src/locales/es/CineDialog.json +++ b/extensions/ohif-i18n/src/locales/es/CineDialog.json @@ -1,8 +1,8 @@ { "fps": "fps", - "Skip to first image": "Avanza para la primera imagen", - "Previous image": "Imagen anterior", - "Play / Stop": "Play / Stop", - "Next image": "Pr贸ximo image", - "Skip to last image": "Pular para la ultima imagen" + "Skip to first image": "Avanza para la primera $t(Common:Image)", + "Previous image": "$t(Common:Image) $t(Common:Previous)", + "Play / Stop": "$t(Common:Play) / $t(Common:Stop)", + "Next image": "$t(Common:Play) $t(Common:Image)", + "Skip to last image": "Pular para la ultima $t(Common:Image)" } diff --git a/extensions/ohif-i18n/src/locales/es/Common.json b/extensions/ohif-i18n/src/locales/es/Common.json new file mode 100755 index 000000000..458505e74 --- /dev/null +++ b/extensions/ohif-i18n/src/locales/es/Common.json @@ -0,0 +1,10 @@ +{ + "reset": "Reiniciar", + "Previous": "Anterior", + "Next": "Pr贸ximo", + "Play": "Play", + "Stop": "Stop", + "Layout": "Esquema", + "More": "M谩s", + "Image": "Imagen" +} diff --git a/extensions/ohif-i18n/src/locales/es/MeasurementTable.json b/extensions/ohif-i18n/src/locales/es/MeasurementTable.json new file mode 100644 index 000000000..8e3070696 --- /dev/null +++ b/extensions/ohif-i18n/src/locales/es/MeasurementTable.json @@ -0,0 +1,11 @@ +{ + "Criteria nonconformities": "Criterios de no conformidades", + "Relabel": "Reetiquetar", + "Description": "Descripci贸n", + "Delete": "Borrar", + "Targets": "Objetivos", + "NonTargets": "NonObjetivos", + "MAX": "m谩ximo", + "Chest Wall Posterior": "Pared pectoral posterior", + "Bone Extremity": "Extremidad 贸sea" +} diff --git a/extensions/ohif-i18n/src/locales/es/UserPreferencesModal.json b/extensions/ohif-i18n/src/locales/es/UserPreferencesModal.json new file mode 100644 index 000000000..aa3b4f442 --- /dev/null +++ b/extensions/ohif-i18n/src/locales/es/UserPreferencesModal.json @@ -0,0 +1,6 @@ +{ + "User Preferences": "Preferencias de usuario", + "Save": "$t(Buttons:Save)", + "Reset to Defaults": "$t(Buttons:Reset to Defaults)", + "Cancel": "$t(Buttons:Cancel)" +} diff --git a/extensions/ohif-i18n/src/locales/es/common.json b/extensions/ohif-i18n/src/locales/es/common.json deleted file mode 100755 index ea3a56575..000000000 --- a/extensions/ohif-i18n/src/locales/es/common.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Welcome to React": "Bienvenido a React" -} From ab0e2fe9e26a4adbcca23032c0e3e19adcd64694 Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Wed, 12 Jun 2019 03:43:02 -0300 Subject: [PATCH 27/42] i18n implementation - Adding final packages --- extensions/ohif-i18n/package.json | 2 +- extensions/ohif-vtk-extension/package.json | 2 +- package.json | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/extensions/ohif-i18n/package.json b/extensions/ohif-i18n/package.json index 605094a2a..3998974af 100644 --- a/extensions/ohif-i18n/package.json +++ b/extensions/ohif-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@ohif/i18n", - "version": "0.0.1-rc-003", + "version": "0.0.1", "description": "OHIF extension for internationalization", "author": "OHIF", "license": "MIT", diff --git a/extensions/ohif-vtk-extension/package.json b/extensions/ohif-vtk-extension/package.json index c307490e2..5cc9434bb 100644 --- a/extensions/ohif-vtk-extension/package.json +++ b/extensions/ohif-vtk-extension/package.json @@ -93,7 +93,7 @@ }, "dependencies": { "@babel/runtime": "^7.2.0", - "@ohif/i18n": "file:.yalc/@ohif/i18n", + "@ohif/i18n": "0.0.1", "classnames": "^2.2.6", "react-vtkjs-viewport": "^0.0.7" } diff --git a/package.json b/package.json index e44837be7..0ac910053 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ohif-viewer", - "version": "0.0.20", + "version": "0.0.21", "description": "OHIF Viewer", "author": "OHIF Contributors", "license": "MIT", @@ -69,8 +69,8 @@ "@babel/runtime": "^7.2.0", "@ohif/extension-cornerstone": "0.0.34", "@ohif/extension-dicom-microscopy": "0.0.6", - "@ohif/extension-vtk": "file:.yalc/@ohif/extension-vtk", - "@ohif/i18n": "file:.yalc/@ohif/i18n", + "@ohif/extension-vtk": "0.0.2", + "@ohif/i18n": "0.0.1", "classnames": "^2.2.6", "cornerstone-core": "^2.2.8", "cornerstone-math": "^0.1.8", @@ -97,7 +97,7 @@ "react-resize-detector": "^3.4.0", "react-router": "^4.3.1", "react-router-dom": "^4.3.1", - "react-viewerbase": "file:.yalc/react-viewerbase", + "react-viewerbase": "0.7.0", "react-vtkjs-viewport": "^0.0.7", "redux": "^4.0.1", "redux-oidc": "3.1.x" From 45993e423dd8540163b2995b832e352162855528 Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Wed, 12 Jun 2019 13:30:08 -0300 Subject: [PATCH 28/42] small fix --- src/App.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.js b/src/App.js index 3c6ca6659..f0b3e2344 100644 --- a/src/App.js +++ b/src/App.js @@ -28,7 +28,6 @@ import { BrowserRouter as Router } from 'react-router-dom'; import WhiteLabellingContext from './WhiteLabellingContext'; import appCommands from './appCommands'; import setupTools from './setupTools'; -import ui from './redux/ui.js'; import i18n from '@ohif/i18n'; import { I18nextProvider } from 'react-i18next'; import store from './store'; From b89fada19e3a5057ee45898e2ea85e5d8beceb94 Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Thu, 13 Jun 2019 14:16:30 -0300 Subject: [PATCH 29/42] i18n implementation - Fixing up vtk-extension's packages --- extensions/ohif-vtk-extension/package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/extensions/ohif-vtk-extension/package.json b/extensions/ohif-vtk-extension/package.json index 5cc9434bb..d64f0e815 100644 --- a/extensions/ohif-vtk-extension/package.json +++ b/extensions/ohif-vtk-extension/package.json @@ -25,7 +25,7 @@ "dicom-parser": "^1.8.3", "hammerjs": "^2.0.8", "ohif-core": "^0.3.3", - "@ohif/i18n": "0.0.1-rc-001", + "@ohif/i18n": "0.0.2", "prop-types": "^15.6.2", "react": "^15.0.0 || ^16.0.0", "react-dom": "^15.0.0 || ^16.0.0", @@ -93,7 +93,6 @@ }, "dependencies": { "@babel/runtime": "^7.2.0", - "@ohif/i18n": "0.0.1", "classnames": "^2.2.6", "react-vtkjs-viewport": "^0.0.7" } From 94a7caa2c49fbba35e68a73a4e7de617687f5d38 Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Thu, 13 Jun 2019 14:16:43 -0300 Subject: [PATCH 30/42] i18n implementation - Fixing up translations --- extensions/ohif-vtk-extension/src/locales/en/Buttons.json | 2 +- extensions/ohif-vtk-extension/src/locales/es/Buttons.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/ohif-vtk-extension/src/locales/en/Buttons.json b/extensions/ohif-vtk-extension/src/locales/en/Buttons.json index b37fbcce3..eed369e25 100644 --- a/extensions/ohif-vtk-extension/src/locales/en/Buttons.json +++ b/extensions/ohif-vtk-extension/src/locales/en/Buttons.json @@ -1,3 +1,3 @@ { - "Rotate": "Rotate VTK" + "Rotate": "Rotate" } diff --git a/extensions/ohif-vtk-extension/src/locales/es/Buttons.json b/extensions/ohif-vtk-extension/src/locales/es/Buttons.json index 664a6a86c..c34c4b6f6 100644 --- a/extensions/ohif-vtk-extension/src/locales/es/Buttons.json +++ b/extensions/ohif-vtk-extension/src/locales/es/Buttons.json @@ -1,3 +1,3 @@ { - "Rotate": "Rotacionar VTK" + "Rotate": "Rotacionar" } From 082656182b35ccf4273ae9983aea52a3dd4ad35a Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Thu, 13 Jun 2019 14:17:04 -0300 Subject: [PATCH 31/42] i18n implementation - Updating yarn.lock --- extensions/ohif-vtk-extension/yarn.lock | 6 ------ package.json | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/extensions/ohif-vtk-extension/yarn.lock b/extensions/ohif-vtk-extension/yarn.lock index aafd7402a..a109a0e37 100644 --- a/extensions/ohif-vtk-extension/yarn.lock +++ b/extensions/ohif-vtk-extension/yarn.lock @@ -727,12 +727,6 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== -"@ohif/i18n@file:.yalc/@ohif/i18n": - version "0.0.1-rc-003-62f0a044" - dependencies: - "@babel/runtime" "^7.2.0" - classnames "^2.2.6" - "@samverschueren/stream-to-observable@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" diff --git a/package.json b/package.json index 0ac910053..fc583b1f4 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "@ohif/extension-cornerstone": "0.0.34", "@ohif/extension-dicom-microscopy": "0.0.6", "@ohif/extension-vtk": "0.0.2", - "@ohif/i18n": "0.0.1", + "@ohif/i18n": "0.0.2", "classnames": "^2.2.6", "cornerstone-core": "^2.2.8", "cornerstone-math": "^0.1.8", From 66fc1dd73921ad020dfc9e8386e75e8557f01a29 Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Thu, 13 Jun 2019 14:22:10 -0300 Subject: [PATCH 32/42] fix require.context bug --- extensions/ohif-i18n/src/index.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/extensions/ohif-i18n/src/index.js b/extensions/ohif-i18n/src/index.js index 8214b013f..f11da3c37 100755 --- a/extensions/ohif-i18n/src/index.js +++ b/extensions/ohif-i18n/src/index.js @@ -31,6 +31,12 @@ function getKeyForNameSpaces(key) { } function getLocales() { + const isWebpackEnv = typeof require.context === 'function'; + // require.context is exclusive from webpack, it's needed to escape inside jest + if (!isWebpackEnv) { + return {}; + } + const context = require.context(`./locales`, true, /\.json$/); const locales = {}; @@ -85,10 +91,6 @@ customDebug(`version ${pkg.version} loaded.`, 'info'); initI18n(); -export { - translate as t, - addLocales, - initI18n -}; +export { translate as t, addLocales, initI18n }; export default i18n; From 9321c31235153dc5985e82d83730c4fd63ad079f Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Thu, 13 Jun 2019 14:22:23 -0300 Subject: [PATCH 33/42] udpate ohif/i18n version --- extensions/ohif-i18n/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ohif-i18n/package.json b/extensions/ohif-i18n/package.json index 3998974af..527f4af85 100644 --- a/extensions/ohif-i18n/package.json +++ b/extensions/ohif-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@ohif/i18n", - "version": "0.0.1", + "version": "0.0.2", "description": "OHIF extension for internationalization", "author": "OHIF", "license": "MIT", From 414ebd5d8b1604e3eeeaba3fe1de57f76c3c2d3b Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Thu, 13 Jun 2019 14:31:04 -0300 Subject: [PATCH 34/42] i18n implementation - Updating yarn.lock --- yarn.lock | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index e3c133d71..9dd5beca9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1042,11 +1042,14 @@ classnames "^2.2.6" react-vtkjs-viewport "^0.0.7" -"@ohif/i18n@file:.yalc/@ohif/i18n": - version "0.0.1-rc-003-18e6caf4" +"@ohif/i18n@0.0.2": + version "0.0.2" + resolved "https://registry.yarnpkg.com/@ohif/i18n/-/i18n-0.0.2.tgz#3f00d10d18c17765b4b48e408e2267f5a5119933" + integrity sha512-kb+0fkySMJJaS10eB3T9UXlCTzhaKooKOsa3Ijg/ODIsv3htT0ZP3g0HinpV/3I0hJ8CwL025AqPnULl4R2jpg== dependencies: "@babel/runtime" "^7.2.0" classnames "^2.2.6" + rollup-plugin-json "^4.0.0" "@samverschueren/stream-to-observable@^0.3.0": version "0.3.0" @@ -4842,6 +4845,11 @@ estree-walker@^0.6.0: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.0.tgz#5d865327c44a618dde5699f763891ae31f257dae" integrity sha512-peq1RfVAVzr3PU/jL31RaOjUKLoZJpObQWJJ+LgfcxDUifyLZ1RjPQZTl0pzj2uJ45b7A7XpyppXvxdEqzo4rw== +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + esutils@^2.0.0, esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -12545,6 +12553,13 @@ rollup-plugin-json@^3.1.0: dependencies: rollup-pluginutils "^2.3.1" +rollup-plugin-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz#a18da0a4b30bf5ca1ee76ddb1422afbb84ae2b9e" + integrity sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow== + dependencies: + rollup-pluginutils "^2.5.0" + rollup-plugin-node-builtins@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.1.2.tgz#24a1fed4a43257b6b64371d8abc6ce1ab14597e9" @@ -12607,6 +12622,13 @@ rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.0, rollup-pluginutils@^2.3.1, estree-walker "^0.6.0" micromatch "^3.1.10" +rollup-pluginutils@^2.5.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz#8fa6dd0697344938ef26c2c09d2488ce9e33ce97" + integrity sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg== + dependencies: + estree-walker "^0.6.1" + rollup@^1.1.2: version "1.10.0" resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.10.0.tgz#91d594aa4386c51ca0883ad4ef2050b469d3e8aa" From 3fa9bc54f87a444bc2fb00a9d70157f2739f96f9 Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Thu, 13 Jun 2019 14:59:16 -0300 Subject: [PATCH 35/42] i18n implementation - Removing bad image from docs --- .../img/ohif-i18n-extending-files-tree.png | Bin 21999 -> 0 bytes docs/latest/essentials/translating.md | 12 +++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) delete mode 100644 docs/latest/assets/img/ohif-i18n-extending-files-tree.png diff --git a/docs/latest/assets/img/ohif-i18n-extending-files-tree.png b/docs/latest/assets/img/ohif-i18n-extending-files-tree.png deleted file mode 100644 index 1166a533de94f07b54f9e43dad81c17b32b95870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21999 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 VE`ksvg4qFH<|Y@6E6%yz`U^k#*WdsE diff --git a/docs/latest/essentials/translating.md b/docs/latest/essentials/translating.md index 33f3c5391..0e6e575e1 100644 --- a/docs/latest/essentials/translating.md +++ b/docs/latest/essentials/translating.md @@ -150,7 +150,17 @@ In this cases, you don't need to set an entire language again, you can extend la This new folder must to be called with a double character name, like the `UK` in the following file tree: -Files Tree for Extending Purpouses +```bash + |-- src + |-- locales + |-- en + |-- Buttons.json + | UK + |-- Buttons.js + | US + |-- Buttons.js + ... +``` All properties inside a Namespace will be merged in the new sub language, e.g `en-US` and `en-UK` will merge the props with `en`. From f448a7cdcca5c661b2af795379b5bdab3b6fbbfc Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Thu, 13 Jun 2019 14:59:41 -0300 Subject: [PATCH 36/42] i18n implementation - Removing ROI from translations --- extensions/ohif-i18n/src/locales/en/Buttons.json | 8 +++----- extensions/ohif-i18n/src/locales/es/Buttons.json | 9 +++------ 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/extensions/ohif-i18n/src/locales/en/Buttons.json b/extensions/ohif-i18n/src/locales/en/Buttons.json index b8f722f92..a41347ca1 100644 --- a/extensions/ohif-i18n/src/locales/en/Buttons.json +++ b/extensions/ohif-i18n/src/locales/en/Buttons.json @@ -28,17 +28,15 @@ "Angle": "Angle", "Bidirectional": "Bidirectional", "Freehand": "Freehand", - "EllipticalRoi": "EllipticalRoi", - "CircleRoi": "CircleRoi", - "RectangleRoi": "RectangleRoi", + "Elliptical": "Elliptical", + "Circle": "Circle", + "Rectangle": "Rectangle", "Reset": "$t(Common:Reset)", - "Reset 2": "$t(Common:Reset) 2", "CINE": "CINE", "Acquired": "Acquired", "Sagittal": "Sagittal", "Axial": "Axial", "Manual": "Manual", - "Manual 2": "Manual 2", "Save": "Save", "Reset to Defaults": "$t(Common:Reset) to Defaults", "Cancel": "Cancel" diff --git a/extensions/ohif-i18n/src/locales/es/Buttons.json b/extensions/ohif-i18n/src/locales/es/Buttons.json index 1b8fd5e60..bf51d4654 100644 --- a/extensions/ohif-i18n/src/locales/es/Buttons.json +++ b/extensions/ohif-i18n/src/locales/es/Buttons.json @@ -28,17 +28,14 @@ "Angle": "脕ngulo", "Bidirectional": "Bidirectional", "Freehand": "Freehand", - "EllipticalRoi": "EllipticalRoi", - "CircleRoi": "CircleRoi", - "RectangleRoi": "RectangleRoi", - "Reset": "Reiniciar", - "Reset 2": "Reiniciar 2", + "Elliptical": "Elliptical", + "Circle": "Circle", + "Reset": "$t(Common:Reset)", "CINE": "CINE", "Acquired": "Acquired", "Sagittal": "Sagittal", "Axial": "Axial", "Manual": "Manual", - "Manual 2": "Manual 2", "Save": "Guardar", "Reset to Defaults": "$t(Common:reset) por defectos", "Cancel": "Cancelar" From 515768aff2e0bf42972a995706ad14987af497a3 Mon Sep 17 00:00:00 2001 From: romulo bordezani Date: Thu, 13 Jun 2019 15:02:06 -0300 Subject: [PATCH 37/42] i18n implementation - Fixing CineDialog translations --- extensions/ohif-i18n/src/locales/en/CineDialog.json | 10 +++++----- extensions/ohif-i18n/src/locales/es/CineDialog.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/extensions/ohif-i18n/src/locales/en/CineDialog.json b/extensions/ohif-i18n/src/locales/en/CineDialog.json index 14877a857..3e97830bd 100644 --- a/extensions/ohif-i18n/src/locales/en/CineDialog.json +++ b/extensions/ohif-i18n/src/locales/en/CineDialog.json @@ -1,8 +1,8 @@ { "fps": "fps", - "Skip to first image": "Skip to first image", - "Previous image": "Previous, image", - "Play / Stop": "Play, / Stop", - "Next image": "Next, image", - "Skip to last image": "Skip, to last image" + "Skip to first image": "Skip to first $t(Common:Image)", + "Previous image": "$t(Common:Previous) $t(Common:Image)", + "Play / Stop": "$t(Common:Play) / $t(Common:Stop)", + "Next image": "$t(Common:Play) $t(Common:Image)", + "Skip to last image": "Skip, to last $t(Common:Image)" } diff --git a/extensions/ohif-i18n/src/locales/es/CineDialog.json b/extensions/ohif-i18n/src/locales/es/CineDialog.json index 1126f7ed0..83c311ddc 100644 --- a/extensions/ohif-i18n/src/locales/es/CineDialog.json +++ b/extensions/ohif-i18n/src/locales/es/CineDialog.json @@ -1,7 +1,7 @@ { "fps": "fps", "Skip to first image": "Avanza para la primera $t(Common:Image)", - "Previous image": "$t(Common:Image) $t(Common:Previous)", + "Previous image": "$t(Common:Previous) $t(Common:Image)", "Play / Stop": "$t(Common:Play) / $t(Common:Stop)", "Next image": "$t(Common:Play) $t(Common:Image)", "Skip to last image": "Pular para la ultima $t(Common:Image)" From e90041ccd608e83d9ab8a09fe0c9a25152d7d7b6 Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Thu, 13 Jun 2019 15:30:05 -0300 Subject: [PATCH 38/42] update i18n package --- extensions/ohif-i18n/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/ohif-i18n/package.json b/extensions/ohif-i18n/package.json index 527f4af85..e6b49d9f8 100644 --- a/extensions/ohif-i18n/package.json +++ b/extensions/ohif-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@ohif/i18n", - "version": "0.0.2", + "version": "0.0.3", "description": "OHIF extension for internationalization", "author": "OHIF", "license": "MIT", From ea3142c1ea440e6f6cccf7dd4518134770918653 Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Thu, 13 Jun 2019 15:30:13 -0300 Subject: [PATCH 39/42] fix conditional --- extensions/ohif-i18n/src/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extensions/ohif-i18n/src/index.js b/extensions/ohif-i18n/src/index.js index f11da3c37..eb4f693e9 100755 --- a/extensions/ohif-i18n/src/index.js +++ b/extensions/ohif-i18n/src/index.js @@ -31,7 +31,8 @@ function getKeyForNameSpaces(key) { } function getLocales() { - const isWebpackEnv = typeof require.context === 'function'; + const isWebpackEnv = !!require.context('./locales', true, /\.json$/); + // require.context is exclusive from webpack, it's needed to escape inside jest if (!isWebpackEnv) { return {}; From 1cbbbd6989cc01698b49e6106af59c4182996e2a Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Thu, 13 Jun 2019 15:31:33 -0300 Subject: [PATCH 40/42] update i18n --- extensions/ohif-vtk-extension/package.json | 2 +- package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/extensions/ohif-vtk-extension/package.json b/extensions/ohif-vtk-extension/package.json index d64f0e815..056287502 100644 --- a/extensions/ohif-vtk-extension/package.json +++ b/extensions/ohif-vtk-extension/package.json @@ -25,7 +25,7 @@ "dicom-parser": "^1.8.3", "hammerjs": "^2.0.8", "ohif-core": "^0.3.3", - "@ohif/i18n": "0.0.2", + "@ohif/i18n": "0.0.3", "prop-types": "^15.6.2", "react": "^15.0.0 || ^16.0.0", "react-dom": "^15.0.0 || ^16.0.0", diff --git a/package.json b/package.json index efd0c9a8d..4457acd57 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "@ohif/extension-cornerstone": "0.0.34", "@ohif/extension-dicom-microscopy": "0.0.6", "@ohif/extension-vtk": "0.0.2", - "@ohif/i18n": "0.0.2", + "@ohif/i18n": "0.0.3", "classnames": "^2.2.6", "cornerstone-core": "^2.2.8", "cornerstone-math": "^0.1.8", diff --git a/yarn.lock b/yarn.lock index 9dd5beca9..8aaf3fe72 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1042,10 +1042,10 @@ classnames "^2.2.6" react-vtkjs-viewport "^0.0.7" -"@ohif/i18n@0.0.2": - version "0.0.2" - resolved "https://registry.yarnpkg.com/@ohif/i18n/-/i18n-0.0.2.tgz#3f00d10d18c17765b4b48e408e2267f5a5119933" - integrity sha512-kb+0fkySMJJaS10eB3T9UXlCTzhaKooKOsa3Ijg/ODIsv3htT0ZP3g0HinpV/3I0hJ8CwL025AqPnULl4R2jpg== +"@ohif/i18n@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@ohif/i18n/-/i18n-0.0.3.tgz#815574468856c01ca7b9ab4de2c1ef67681a4c19" + integrity sha512-XlE+lPfWUVTqerKQ16U3XlD/Sz18X6PBLD8nQsOQI5zb4PtgthJPdwUUfk1i72K47/klVe2ibY8R8V91DzpYkA== dependencies: "@babel/runtime" "^7.2.0" classnames "^2.2.6" From cb2871d377e1be39a50e60806e46bc5965105194 Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Thu, 13 Jun 2019 16:20:29 -0300 Subject: [PATCH 41/42] fix conditional --- extensions/ohif-i18n/package.json | 2 +- extensions/ohif-i18n/src/index.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/extensions/ohif-i18n/package.json b/extensions/ohif-i18n/package.json index e6b49d9f8..ee43842a0 100644 --- a/extensions/ohif-i18n/package.json +++ b/extensions/ohif-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@ohif/i18n", - "version": "0.0.3", + "version": "0.0.4", "description": "OHIF extension for internationalization", "author": "OHIF", "license": "MIT", diff --git a/extensions/ohif-i18n/src/index.js b/extensions/ohif-i18n/src/index.js index eb4f693e9..f0b297f41 100755 --- a/extensions/ohif-i18n/src/index.js +++ b/extensions/ohif-i18n/src/index.js @@ -31,10 +31,10 @@ function getKeyForNameSpaces(key) { } function getLocales() { - const isWebpackEnv = !!require.context('./locales', true, /\.json$/); + var isTestEnvironment = process.env.NODE_ENV === 'test'; - // require.context is exclusive from webpack, it's needed to escape inside jest - if (!isWebpackEnv) { + // require.context is exclusive from webpack. This conditional is needed to escape while running tests + if (isTestEnvironment) { return {}; } From 56e3982111e2199b487385b153a9cb604c5d163e Mon Sep 17 00:00:00 2001 From: Rodrigo Antinarelli Date: Thu, 13 Jun 2019 16:20:36 -0300 Subject: [PATCH 42/42] update @ohif/i18n --- extensions/ohif-vtk-extension/package.json | 2 +- package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/extensions/ohif-vtk-extension/package.json b/extensions/ohif-vtk-extension/package.json index 056287502..6f32e026f 100644 --- a/extensions/ohif-vtk-extension/package.json +++ b/extensions/ohif-vtk-extension/package.json @@ -25,7 +25,7 @@ "dicom-parser": "^1.8.3", "hammerjs": "^2.0.8", "ohif-core": "^0.3.3", - "@ohif/i18n": "0.0.3", + "@ohif/i18n": "0.0.4", "prop-types": "^15.6.2", "react": "^15.0.0 || ^16.0.0", "react-dom": "^15.0.0 || ^16.0.0", diff --git a/package.json b/package.json index 4457acd57..e6f6e48f5 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "@ohif/extension-cornerstone": "0.0.34", "@ohif/extension-dicom-microscopy": "0.0.6", "@ohif/extension-vtk": "0.0.2", - "@ohif/i18n": "0.0.3", + "@ohif/i18n": "0.0.4", "classnames": "^2.2.6", "cornerstone-core": "^2.2.8", "cornerstone-math": "^0.1.8", diff --git a/yarn.lock b/yarn.lock index 8aaf3fe72..b820f53fa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1042,10 +1042,10 @@ classnames "^2.2.6" react-vtkjs-viewport "^0.0.7" -"@ohif/i18n@0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@ohif/i18n/-/i18n-0.0.3.tgz#815574468856c01ca7b9ab4de2c1ef67681a4c19" - integrity sha512-XlE+lPfWUVTqerKQ16U3XlD/Sz18X6PBLD8nQsOQI5zb4PtgthJPdwUUfk1i72K47/klVe2ibY8R8V91DzpYkA== +"@ohif/i18n@0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@ohif/i18n/-/i18n-0.0.4.tgz#e54176e7799e311dbaff37995f9d2745b58cbd0f" + integrity sha512-lW+S9weZbJS300yCRR8Ygb1KTULbD1Qx5ZGcYUXyseJIWr5jeJ4V/6FdS30w8u8ejiIVwF8rYOguHsmueQrkdw== dependencies: "@babel/runtime" "^7.2.0" classnames "^2.2.6"