From 4f736d5fe264d2518d3916939142b0829d8839dc Mon Sep 17 00:00:00 2001 From: Sofiya Tepikin Date: Sat, 14 Mar 2020 16:35:11 +0100 Subject: [PATCH 01/94] Adds new font --- .../app/src/main/assets/fonts/Jost-400-Book.otf | Bin 0 -> 35776 bytes .../app/src/main/assets/fonts/Jost-700-Bold.otf | Bin 0 -> 39196 bytes assets/fonts/Jost-400-Book.otf | Bin 0 -> 35776 bytes assets/fonts/Jost-700-Bold.otf | Bin 0 -> 39196 bytes styles/index.js | 4 ++-- 5 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 android/app/src/main/assets/fonts/Jost-400-Book.otf create mode 100644 android/app/src/main/assets/fonts/Jost-700-Bold.otf create mode 100644 assets/fonts/Jost-400-Book.otf create mode 100644 assets/fonts/Jost-700-Bold.otf diff --git a/android/app/src/main/assets/fonts/Jost-400-Book.otf b/android/app/src/main/assets/fonts/Jost-400-Book.otf new file mode 100644 index 0000000000000000000000000000000000000000..7abf6cf32f1ddaccfe24bb94406995096b62539a GIT binary patch literal 35776 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/assets/fonts/Jost-700-Bold.otf b/android/app/src/main/assets/fonts/Jost-700-Bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..0c7d6759a5564fc03872f5bf05f8c6fd7fd772cf GIT binary patch literal 39196 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 B(i{K) literal 0 HcmV?d00001 diff --git a/assets/fonts/Jost-400-Book.otf b/assets/fonts/Jost-400-Book.otf new file mode 100644 index 0000000000000000000000000000000000000000..7abf6cf32f1ddaccfe24bb94406995096b62539a GIT binary patch literal 35776 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/Jost-700-Bold.otf b/assets/fonts/Jost-700-Bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..0c7d6759a5564fc03872f5bf05f8c6fd7fd772cf GIT binary patch literal 39196 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 B(i{K) literal 0 HcmV?d00001 diff --git a/styles/index.js b/styles/index.js index e54b8bb..787171e 100644 --- a/styles/index.js +++ b/styles/index.js @@ -15,8 +15,8 @@ export const periodColor = '#802249' const headerFont = 'Prompt-ExtraLight' -const textFont = 'OpenSans-Light' -const textFontBold = 'OpenSans-SemiBold' +const textFont = 'Jost-400-Book' +const textFontBold = 'Jost-700-Bold' const textFontItalic = 'OpenSans-LightItalic' const regularSize = 16 From d3e795a51fe3a239c07c99464e613e34b699370f Mon Sep 17 00:00:00 2001 From: mashazyu Date: Sun, 22 Mar 2020 17:02:47 +0100 Subject: [PATCH 02/94] Forbids landscape orientation for app --- android/app/src/main/AndroidManifest.xml | 3 ++- ios/drip/Info.plist | 31 ++++++++++++------------ 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index e1f7e77..4d86e06 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -29,7 +29,8 @@ android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize" - android:windowSoftInputMode="adjustResize"> + android:windowSoftInputMode="adjustResize" + android:screenOrientation="sensorPortrait"> diff --git a/ios/drip/Info.plist b/ios/drip/Info.plist index 8df975a..790ce8a 100644 --- a/ios/drip/Info.plist +++ b/ios/drip/Info.plist @@ -24,22 +24,6 @@ 1 LSRequiresIPhoneOS - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - NSLocationWhenInUseUsageDescription - NSAppTransportSecurity NSExceptionDomains @@ -51,6 +35,8 @@ + NSLocationWhenInUseUsageDescription + UIAppFonts Entypo.ttf @@ -89,5 +75,18 @@ AntDesign.ttf OpenSans-LightItalic.ttf + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + + UIViewControllerBasedStatusBarAppearance + From 1fc7bc17b9731ad089a744c112a939969d7ba9db Mon Sep 17 00:00:00 2001 From: mashazyu Date: Sun, 22 Mar 2020 17:18:28 +0100 Subject: [PATCH 03/94] AppLoading/AppText/AppTextInput/Button/FramedSegment/Link -> ./common --- components/app-wrapper.js | 2 +- components/chart/chart-legend.js | 2 +- components/chart/tick.js | 2 +- components/{ => common}/app-loading.js | 2 +- components/{ => common}/app-text-input.js | 2 +- components/{ => common}/app-text.js | 2 +- components/{ => common}/button.js | 2 +- components/{ => common}/framed-segment.js | 2 +- components/{ => common}/link.js | 4 ++-- components/cycle-day/SymptomBox.js | 2 +- components/cycle-day/select-box-group.js | 2 +- components/cycle-day/select-tab-group.js | 2 +- components/cycle-day/symptoms/info-symptom.js | 2 +- components/cycle-day/symptoms/symptom-section.js | 2 +- components/cycle-day/symptoms/temperature-input.js | 4 ++-- components/cycle-day/symptoms/temperature.js | 2 +- components/cycle-day/symptoms/time-input.js | 2 +- components/home-element.js | 2 +- components/home.js | 2 +- components/icon-text.js | 2 +- components/license.js | 4 ++-- components/password-prompt.js | 2 +- components/settings/about.js | 4 ++-- components/settings/data-management/index.js | 6 +++--- components/settings/license.js | 2 +- components/settings/nfp-settings/index.js | 4 ++-- components/settings/nfp-settings/temp-slider.js | 2 +- components/settings/nfp-settings/use-cervix.js | 2 +- components/settings/password/enter-new-password.js | 2 +- components/settings/password/index.js | 4 ++-- components/settings/reminders/index.js | 2 +- components/settings/reminders/period-reminder.js | 2 +- components/settings/reminders/temp-reminder-picker.js | 2 +- components/settings/settings-menu.js | 2 +- components/settings/shared/password-field.js | 2 +- components/settings/shared/settings-button.js | 2 +- components/stats.js | 4 ++-- 37 files changed, 46 insertions(+), 46 deletions(-) rename components/{ => common}/app-loading.js (88%) rename components/{ => common}/app-text-input.js (95%) rename components/{ => common}/app-text.js (94%) rename components/{ => common}/button.js (95%) rename components/{ => common}/framed-segment.js (95%) rename components/{ => common}/link.js (88%) diff --git a/components/app-wrapper.js b/components/app-wrapper.js index fc70bcd..cef5d06 100644 --- a/components/app-wrapper.js +++ b/components/app-wrapper.js @@ -7,7 +7,7 @@ import { openDb } from '../db' import App from './app' import PasswordPrompt from './password-prompt' import License from './license' -import AppLoadingView from './app-loading' +import AppLoadingView from './common/app-loading' import store from "../store" import { Provider } from 'react-redux' diff --git a/components/chart/chart-legend.js b/components/chart/chart-legend.js index 4dc00b6..f94609a 100644 --- a/components/chart/chart-legend.js +++ b/components/chart/chart-legend.js @@ -2,7 +2,7 @@ import React from 'react' import PropTypes from 'prop-types' import { View } from 'react-native' -import AppText from '../app-text' +import AppText from '../common/app-text' import DripHomeIcon from '../../assets/drip-home-icons' import styles from './styles' diff --git a/components/chart/tick.js b/components/chart/tick.js index 173cfbe..4dc6b28 100644 --- a/components/chart/tick.js +++ b/components/chart/tick.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' -import AppText from '../app-text' +import AppText from '../common/app-text' import styles from './styles' diff --git a/components/app-loading.js b/components/common/app-loading.js similarity index 88% rename from components/app-loading.js rename to components/common/app-loading.js index ebac28f..0c00571 100644 --- a/components/app-loading.js +++ b/components/common/app-loading.js @@ -3,7 +3,7 @@ import React from 'react' import { View } from 'react-native' import AppText from './app-text' -import { shared } from '../i18n/en/labels' +import { shared } from '../../i18n/en/labels' const AppLoadingView = () => { return ( diff --git a/components/app-text-input.js b/components/common/app-text-input.js similarity index 95% rename from components/app-text-input.js rename to components/common/app-text-input.js index 54e4a19..2353375 100644 --- a/components/app-text-input.js +++ b/components/common/app-text-input.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' import { TextInput } from 'react-native' -import styles from '../styles' +import styles from '../../styles' export default function AppTextInput({ style, ...props }) { if (!Array.isArray(style)) style = [style] diff --git a/components/app-text.js b/components/common/app-text.js similarity index 94% rename from components/app-text.js rename to components/common/app-text.js index e2c6210..ad861e6 100644 --- a/components/app-text.js +++ b/components/common/app-text.js @@ -1,7 +1,7 @@ import React from 'react' import PropTypes from 'prop-types' import { Text } from 'react-native' -import styles from "../styles" +import styles from "../../styles" import Link from './link' export default function AppText({ children, onPress, numberOfLines, style}) { diff --git a/components/button.js b/components/common/button.js similarity index 95% rename from components/button.js rename to components/common/button.js index be06408..f493cf7 100644 --- a/components/button.js +++ b/components/common/button.js @@ -2,7 +2,7 @@ import React from 'react' import PropTypes from 'prop-types' import { TouchableOpacity } from 'react-native' import AppText from './app-text' -import styles from '../styles' +import styles from '../../styles' export default function Button({ backgroundColor, diff --git a/components/framed-segment.js b/components/common/framed-segment.js similarity index 95% rename from components/framed-segment.js rename to components/common/framed-segment.js index 49bce23..7321615 100644 --- a/components/framed-segment.js +++ b/components/common/framed-segment.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import { View } from 'react-native' import AppText from './app-text' -import styles from '../styles' +import styles from '../../styles' const FramedSegment = ({ children, last, style, title }) => { const viewStyle = [styles.framedSegment, style] diff --git a/components/link.js b/components/common/link.js similarity index 88% rename from components/link.js rename to components/common/link.js index caea792..3b62c4c 100644 --- a/components/link.js +++ b/components/common/link.js @@ -1,8 +1,8 @@ import React from 'react' import PropTypes from 'prop-types' import Hyperlink from 'react-native-hyperlink' -import styles from '../styles' -import links from '../i18n/en/links' +import styles from '../../styles' +import links from '../../i18n/en/links' export default function Link(props) { return ( diff --git a/components/cycle-day/SymptomBox.js b/components/cycle-day/SymptomBox.js index 62f5df0..71bc042 100644 --- a/components/cycle-day/SymptomBox.js +++ b/components/cycle-day/SymptomBox.js @@ -2,7 +2,7 @@ import React from 'react' import PropTypes from 'prop-types' import { View, TouchableOpacity } from 'react-native' -import AppText from '../app-text' +import AppText from '../common/app-text' import DripIcon from '../../assets/drip-icons' import styles from '../../styles' diff --git a/components/cycle-day/select-box-group.js b/components/cycle-day/select-box-group.js index ee64d00..94a2607 100644 --- a/components/cycle-day/select-box-group.js +++ b/components/cycle-day/select-box-group.js @@ -2,7 +2,7 @@ import React from 'react' import PropTypes from 'prop-types' import { View, TouchableOpacity } from 'react-native' -import AppText from '../app-text' +import AppText from '../common/app-text' import styles from '../../styles' diff --git a/components/cycle-day/select-tab-group.js b/components/cycle-day/select-tab-group.js index a8fffc6..77dcc25 100644 --- a/components/cycle-day/select-tab-group.js +++ b/components/cycle-day/select-tab-group.js @@ -2,7 +2,7 @@ import React from 'react' import PropTypes from 'prop-types' import { View, TouchableOpacity } from 'react-native' -import AppText from '../app-text' +import AppText from '../common/app-text' import styles from '../../styles' diff --git a/components/cycle-day/symptoms/info-symptom.js b/components/cycle-day/symptoms/info-symptom.js index 93820e2..d45984a 100644 --- a/components/cycle-day/symptoms/info-symptom.js +++ b/components/cycle-day/symptoms/info-symptom.js @@ -2,7 +2,7 @@ import React from 'react' import PropTypes from 'prop-types' import { ScrollView, View, TouchableOpacity } from 'react-native' import Icon from 'react-native-vector-icons/SimpleLineIcons' -import AppText from '../../app-text' +import AppText from '../../common/app-text' import labels from '../../../i18n/en/symptom-info.js' import styles, {iconStyles} from '../../../styles/index' diff --git a/components/cycle-day/symptoms/symptom-section.js b/components/cycle-day/symptoms/symptom-section.js index 92192df..e2fe60b 100644 --- a/components/cycle-day/symptoms/symptom-section.js +++ b/components/cycle-day/symptoms/symptom-section.js @@ -1,6 +1,6 @@ import React, { Component } from 'react' import { View } from 'react-native' -import AppText from '../../app-text' +import AppText from '../../common/app-text' import styles from '../../../styles' export default class SymptomSection extends Component { diff --git a/components/cycle-day/symptoms/temperature-input.js b/components/cycle-day/symptoms/temperature-input.js index cc0dbd9..c333e77 100644 --- a/components/cycle-day/symptoms/temperature-input.js +++ b/components/cycle-day/symptoms/temperature-input.js @@ -2,8 +2,8 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import { View } from 'react-native' -import AppText from '../../app-text' -import AppTextInput from '../../app-text-input' +import AppText from '../../common/app-text' +import AppTextInput from '../../common/app-text-input' import { temperature as labels } from '../../../i18n/en/cycle-day' diff --git a/components/cycle-day/symptoms/temperature.js b/components/cycle-day/symptoms/temperature.js index 5c033c9..1acd975 100644 --- a/components/cycle-day/symptoms/temperature.js +++ b/components/cycle-day/symptoms/temperature.js @@ -6,7 +6,7 @@ import { LocalTime, ChronoUnit } from 'js-joda' import { temperature as labels } from '../../../i18n/en/cycle-day' import { shared as sharedLabels } from '../../../i18n/en/labels' -import AppTextInput from '../../app-text-input' +import AppTextInput from '../../common/app-text-input' import SymptomSection from './symptom-section' import SymptomView from './symptom-view' import TimeInput from './time-input' diff --git a/components/cycle-day/symptoms/time-input.js b/components/cycle-day/symptoms/time-input.js index 1d0bc0f..2c48923 100644 --- a/components/cycle-day/symptoms/time-input.js +++ b/components/cycle-day/symptoms/time-input.js @@ -2,7 +2,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import { Keyboard } from 'react-native' -import AppTextInput from '../../app-text-input' +import AppTextInput from '../../common/app-text-input' import styles from '../../../styles' import DateTimePicker from 'react-native-modal-datetime-picker-nevo' diff --git a/components/home-element.js b/components/home-element.js index 5c2423b..7f50f35 100644 --- a/components/home-element.js +++ b/components/home-element.js @@ -2,7 +2,7 @@ import React from 'react' import { View } from 'react-native' import PropTypes from 'prop-types' -import Button from './button' +import Button from './common/button' import styles from '../styles' diff --git a/components/home.js b/components/home.js index 2b900d5..b76bfd6 100644 --- a/components/home.js +++ b/components/home.js @@ -9,7 +9,7 @@ import { getDate, setDate } from '../slices/date' import DripHomeIcon from '../assets/drip-home-icons' -import AppText from './app-text' +import AppText from './common/app-text' import IconText from './icon-text' import HomeElement from './home-element' diff --git a/components/icon-text.js b/components/icon-text.js index be30d48..be3b406 100644 --- a/components/icon-text.js +++ b/components/icon-text.js @@ -2,7 +2,7 @@ import React from 'react' import { View } from 'react-native' import PropTypes from 'prop-types' -import AppText from './app-text' +import AppText from './common/app-text' import styles from '../styles' diff --git a/components/license.js b/components/license.js index b433063..fbe7928 100644 --- a/components/license.js +++ b/components/license.js @@ -1,11 +1,11 @@ import React from 'react' import PropTypes from 'prop-types' import { ScrollView, View, BackHandler } from 'react-native' -import AppText from './app-text' +import AppText from './common/app-text' import { shared } from '../i18n/en/labels' import settingsLabels from '../i18n/en/settings' import styles,{secondaryColor} from '../styles' -import Button from './button' +import Button from './common/button' import { saveLicenseFlag } from '../local-storage' const labels = settingsLabels.license diff --git a/components/password-prompt.js b/components/password-prompt.js index b2b7af4..152b93b 100644 --- a/components/password-prompt.js +++ b/components/password-prompt.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import { View, TextInput, TouchableOpacity, Alert } from 'react-native' import nodejs from 'nodejs-mobile-react-native' import { saveEncryptionFlag } from '../local-storage' -import AppText from './app-text' +import AppText from './common/app-text' import Header from './header' import styles from '../styles' import { passwordPrompt as labels, shared, menuTitles } from '../i18n/en/labels' diff --git a/components/settings/about.js b/components/settings/about.js index f5be4c4..5d289f1 100644 --- a/components/settings/about.js +++ b/components/settings/about.js @@ -1,9 +1,9 @@ import React, { Component } from 'react' import { ScrollView } from 'react-native' -import AppText from '../app-text' +import AppText from '../common/app-text' import labels from '../../i18n/en/settings' import links from '../../i18n/en/links' -import FramedSegment from '../framed-segment' +import FramedSegment from '../common/framed-segment' export default class AboutSection extends Component { render() { diff --git a/components/settings/data-management/index.js b/components/settings/data-management/index.js index bf32d6d..ff67c4d 100644 --- a/components/settings/data-management/index.js +++ b/components/settings/data-management/index.js @@ -1,8 +1,8 @@ import React, { Component } from 'react' import { ScrollView, View } from 'react-native' -import AppText from '../../app-text' -import FramedSegment from '../../framed-segment' -import AppLoadingView from '../../app-loading' +import AppText from '../../common/app-text' +import FramedSegment from '../../common/framed-segment' +import AppLoadingView from '../../common/app-loading' import SettingsButton from '../shared/settings-button' import { openImportDialog, getFileContent, importData } from './import-dialog' import openShareDialogAndExport from './export-dialog' diff --git a/components/settings/license.js b/components/settings/license.js index 7091882..7821edd 100644 --- a/components/settings/license.js +++ b/components/settings/license.js @@ -1,6 +1,6 @@ import React, { Component } from 'react' import { View, ScrollView } from 'react-native' -import AppText from '../app-text' +import AppText from '../common/app-text' import styles from '../../styles/index' import labels from '../../i18n/en/settings' diff --git a/components/settings/nfp-settings/index.js b/components/settings/nfp-settings/index.js index 423f8e7..2c077bb 100644 --- a/components/settings/nfp-settings/index.js +++ b/components/settings/nfp-settings/index.js @@ -4,8 +4,8 @@ import { } from 'react-native' import styles from '../../../styles' import labels from '../../../i18n/en/settings' -import AppText from '../../app-text' -import FramedSegment from '../../framed-segment' +import AppText from '../../common/app-text' +import FramedSegment from '../../common/framed-segment' import TempSlider from './temp-slider' import UseCervixSetting from './use-cervix' import Icon from 'react-native-vector-icons/Entypo' diff --git a/components/settings/nfp-settings/temp-slider.js b/components/settings/nfp-settings/temp-slider.js index ecccaf4..2def5c4 100644 --- a/components/settings/nfp-settings/temp-slider.js +++ b/components/settings/nfp-settings/temp-slider.js @@ -1,7 +1,7 @@ import React, { Component } from 'react' import { View } from 'react-native' import Slider from '@ptomasroos/react-native-multi-slider' -import AppText from '../../app-text' +import AppText from '../../common/app-text' import { scaleObservable, saveTempScale, diff --git a/components/settings/nfp-settings/use-cervix.js b/components/settings/nfp-settings/use-cervix.js index 2bb9ff9..1e38682 100644 --- a/components/settings/nfp-settings/use-cervix.js +++ b/components/settings/nfp-settings/use-cervix.js @@ -3,7 +3,7 @@ import { View, Switch } from 'react-native' -import AppText from '../../app-text' +import AppText from '../../common/app-text' import { useCervixObservable, saveUseCervix diff --git a/components/settings/password/enter-new-password.js b/components/settings/password/enter-new-password.js index cba3a11..cf884bb 100644 --- a/components/settings/password/enter-new-password.js +++ b/components/settings/password/enter-new-password.js @@ -3,7 +3,7 @@ import { View } from 'react-native' import nodejs from 'nodejs-mobile-react-native' import { requestHash, changeEncryptionAndRestartApp } from '../../../db' -import AppText from '../../app-text' +import AppText from '../../common/app-text' import PasswordField from '../shared/password-field' import SettingsButton from '../shared/settings-button' diff --git a/components/settings/password/index.js b/components/settings/password/index.js index 08406a4..0c874e2 100644 --- a/components/settings/password/index.js +++ b/components/settings/password/index.js @@ -3,8 +3,8 @@ import { ScrollView } from 'react-native' import CreatePassword from './create' import ChangePassword from './update' import DeletePassword from './delete' -import FramedSegment from '../../framed-segment' -import AppText from '../../app-text' +import FramedSegment from '../../common/framed-segment' +import AppText from '../../common/app-text' import { hasEncryptionObservable } from '../../../local-storage' diff --git a/components/settings/reminders/index.js b/components/settings/reminders/index.js index 93425af..10c844a 100644 --- a/components/settings/reminders/index.js +++ b/components/settings/reminders/index.js @@ -2,7 +2,7 @@ import React, { Component } from 'react' import { ScrollView, } from 'react-native' -import FramedSegment from '../../framed-segment' +import FramedSegment from '../../common/framed-segment' import TempReminderPicker from './temp-reminder-picker' import PeriodReminderPicker from './period-reminder' diff --git a/components/settings/reminders/period-reminder.js b/components/settings/reminders/period-reminder.js index f7e177c..6a07ffc 100644 --- a/components/settings/reminders/period-reminder.js +++ b/components/settings/reminders/period-reminder.js @@ -3,7 +3,7 @@ import { View, Switch } from 'react-native' -import AppText from '../../app-text' +import AppText from '../../common/app-text' import { periodReminderObservable, savePeriodReminder diff --git a/components/settings/reminders/temp-reminder-picker.js b/components/settings/reminders/temp-reminder-picker.js index a481d61..b35b0c1 100644 --- a/components/settings/reminders/temp-reminder-picker.js +++ b/components/settings/reminders/temp-reminder-picker.js @@ -5,7 +5,7 @@ import { Switch } from 'react-native' import DateTimePicker from 'react-native-modal-datetime-picker-nevo' -import AppText from '../../app-text' +import AppText from '../../common/app-text' import { tempReminderObservable, saveTempReminder diff --git a/components/settings/settings-menu.js b/components/settings/settings-menu.js index f6b6bc2..9f511cf 100644 --- a/components/settings/settings-menu.js +++ b/components/settings/settings-menu.js @@ -9,7 +9,7 @@ import styles from '../../styles/index' import settingsLabels from '../../i18n/en/settings' -import AppText from '../app-text' +import AppText from '../common/app-text' const labels = settingsLabels.menuTitles diff --git a/components/settings/shared/password-field.js b/components/settings/shared/password-field.js index 7937b66..d22fdd1 100644 --- a/components/settings/shared/password-field.js +++ b/components/settings/shared/password-field.js @@ -1,6 +1,6 @@ import React from 'react' import PropTypes from 'prop-types' -import AppTextInput from '../../app-text-input' +import AppTextInput from '../../common/app-text-input' import styles from '../../../styles' diff --git a/components/settings/shared/settings-button.js b/components/settings/shared/settings-button.js index 94aa210..93af5f2 100644 --- a/components/settings/shared/settings-button.js +++ b/components/settings/shared/settings-button.js @@ -2,7 +2,7 @@ import React from 'react' import PropTypes from 'prop-types' import { TouchableOpacity } from 'react-native' -import AppText from '../../app-text' +import AppText from '../../common/app-text' import styles from '../../../styles' const SettingsButton = ({ children, style, secondary, ...props }) => { diff --git a/components/stats.js b/components/stats.js index 2488510..3cae29b 100644 --- a/components/stats.js +++ b/components/stats.js @@ -8,8 +8,8 @@ import styles from '../styles/index' import cycleModule from '../lib/cycle' import {getCycleLengthStats as getCycleInfo} from '../lib/cycle-length' import {stats as labels} from '../i18n/en/labels' -import AppText from './app-text' -import FramedSegment from './framed-segment' +import AppText from './common/app-text' +import FramedSegment from './common/framed-segment' export default class Stats extends Component { render() { From 8c1c72ccc90783f8558cf3398bb76d653e25ba71 Mon Sep 17 00:00:00 2001 From: mashazyu Date: Mon, 23 Mar 2020 09:39:55 +0100 Subject: [PATCH 04/94] Introduces AppText, Link and FramedSegment redesign --- components/common/app-text.js | 15 +++++++++++--- components/common/framed-segment.js | 32 ++++++++++++++++++++--------- components/common/link.js | 26 +++++++++++++++-------- styles/colors.js | 10 +++++++++ styles/containers.js | 18 ++++++++++++++++ styles/redesign.js | 5 +++++ styles/spacing.js | 3 +++ styles/typography.js | 28 +++++++++++++++++++++++++ 8 files changed, 116 insertions(+), 21 deletions(-) create mode 100644 styles/colors.js create mode 100644 styles/containers.js create mode 100644 styles/redesign.js create mode 100644 styles/spacing.js create mode 100644 styles/typography.js diff --git a/components/common/app-text.js b/components/common/app-text.js index ad861e6..eb85c6e 100644 --- a/components/common/app-text.js +++ b/components/common/app-text.js @@ -1,14 +1,16 @@ import React from 'react' import PropTypes from 'prop-types' -import { Text } from 'react-native' -import styles from "../../styles" +import { StyleSheet, Text } from 'react-native' + import Link from './link' +import { Colors, Typography } from '../../styles/redesign' + export default function AppText({ children, onPress, numberOfLines, style}) { // we parse for links in case the text contains any return ( - @@ -24,3 +26,10 @@ AppText.propTypes = { numberOfLines: PropTypes.number, style: PropTypes.oneOfType([PropTypes.array, PropTypes.object]), } + +const styles = StyleSheet.create({ + text: { + color: Colors.grey, + ...Typography.mainText + } +}) \ No newline at end of file diff --git a/components/common/framed-segment.js b/components/common/framed-segment.js index 7321615..b20b871 100644 --- a/components/common/framed-segment.js +++ b/components/common/framed-segment.js @@ -1,29 +1,41 @@ import React from 'react' import PropTypes from 'prop-types' +import { StyleSheet, View } from 'react-native' -import { View } from 'react-native' import AppText from './app-text' -import styles from '../../styles' + +import { Containers, Typography } from '../../styles/redesign' const FramedSegment = ({ children, last, style, title }) => { - const viewStyle = [styles.framedSegment, style] - if (last) viewStyle.push(styles.framedSegmentLast) + const containerStyle = last ? styles.containerLast : styles.container + return ( - - {title && {title}} + + {title && {title}} {children} ) } FramedSegment.propTypes = { - children: PropTypes.oneOfType([ - PropTypes.arrayOf(PropTypes.node), - PropTypes.node - ]), + children: PropTypes.node, last: PropTypes.bool, style: PropTypes.object, title: PropTypes.string } +const styles = StyleSheet.create({ + container: { + ...Containers.segmentContainer, + ...Containers.bottomBorder + }, + containerLast: { + ...Containers.segmentContainer, + ...Containers.marginBottom + }, + title: { + ...Typography.titleSmall + } +}) + export default FramedSegment diff --git a/components/common/link.js b/components/common/link.js index 3b62c4c..26b4a5d 100644 --- a/components/common/link.js +++ b/components/common/link.js @@ -1,29 +1,39 @@ import React from 'react' import PropTypes from 'prop-types' import Hyperlink from 'react-native-hyperlink' -import styles from '../../styles' +import { StyleSheet } from 'react-native' + +import { Colors, Typography } from '../../styles/redesign' + import links from '../../i18n/en/links' -export default function Link(props) { +const Link = ({ children }) => { return ( - {props.children} + {children} ) } Link.propTypes = { - children: PropTypes.oneOfType([ - PropTypes.arrayOf(PropTypes.node), - PropTypes.node - ]) + children: PropTypes.node } +const styles = StyleSheet.create({ + link: { + color: Colors.purple, + ...Typography.mainText, + ...Typography.underline, + } +}) + function replaceUrlWithText(url) { const link = Object.values(links).find(l => l.url === url) return (link && link.text) || url -} \ No newline at end of file +} + +export default Link \ No newline at end of file diff --git a/styles/colors.js b/styles/colors.js new file mode 100644 index 0000000..8aecfb9 --- /dev/null +++ b/styles/colors.js @@ -0,0 +1,10 @@ +export default { + grey: '#A5A5A5', + greyLight: '#D2D2D2', + greySuperLight: '#F2F2F2', + orange: '#F38337', + purple: '#3A2671', + purpleLight: '#5D4F8A', + tourquise: '#69CBC1', + tourquiseLight: '#CFECEA', +} \ No newline at end of file diff --git a/styles/containers.js b/styles/containers.js new file mode 100644 index 0000000..50f986f --- /dev/null +++ b/styles/containers.js @@ -0,0 +1,18 @@ +import Colors from './colors' +import Spacing from './spacing' + +export default { + bottomBorder: { + borderStyle: 'solid', + borderBottomWidth: 2, + borderBottomColor: Colors.greySuperLight, + paddingBottom: Spacing.base + }, + centerItems: { + alignItems: 'center', + flex: 1, + justifyContent: 'center' + }, + marginBottom: { marginBottom: Spacing.base }, + segmentContainer: { marginHorizontal: Spacing.base } +} \ No newline at end of file diff --git a/styles/redesign.js b/styles/redesign.js new file mode 100644 index 0000000..5656d35 --- /dev/null +++ b/styles/redesign.js @@ -0,0 +1,5 @@ +import Colors from './colors' +import Containers from './containers' +import Typography from './typography' + +export { Colors, Containers, Typography } diff --git a/styles/spacing.js b/styles/spacing.js new file mode 100644 index 0000000..037caa1 --- /dev/null +++ b/styles/spacing.js @@ -0,0 +1,3 @@ +export default { + base: 16 +} \ No newline at end of file diff --git a/styles/typography.js b/styles/typography.js new file mode 100644 index 0000000..15371a1 --- /dev/null +++ b/styles/typography.js @@ -0,0 +1,28 @@ +import Colors from './colors' +import Spacing from './spacing' + +const fonts = { + main: 'Jost-400-Book', + bold : 'Jost-700-Bold', +} + +const sizes = { + mainMedium: 18, + mainLarge: 20, + titleSmall: 22, + titleMedium: 24, + titleLarge: 28 +} + +export default { + mainText: { + fontFamily: fonts.main, + fontSize: sizes.mainMedium + }, + underline: { textDecorationLine: 'underline' }, + titleSmall: { + color: Colors.purple, + fontSize: sizes.titleSmall, + marginVertical: Spacing.base + } +} From 3f8f6dbbe6717e46331ec86e215bc8bc2570e4b5 Mon Sep 17 00:00:00 2001 From: mashazyu Date: Mon, 23 Mar 2020 10:01:40 +0100 Subject: [PATCH 05/94] Introduces AppLoading, AppTextInput, Button components redesign --- components/common/app-loading.js | 18 ++++++++---- components/common/app-text-input.js | 33 ++++++++++++++++------ components/common/button.js | 43 +++++++++++++++++------------ styles/containers.js | 10 +++++++ styles/spacing.js | 3 +- styles/typography.js | 18 ++++++++++-- 6 files changed, 90 insertions(+), 35 deletions(-) diff --git a/components/common/app-loading.js b/components/common/app-loading.js index 0c00571..87612bb 100644 --- a/components/common/app-loading.js +++ b/components/common/app-loading.js @@ -1,18 +1,24 @@ import React from 'react' - -import { View } from 'react-native' +import { StyleSheet, View } from 'react-native' import AppText from './app-text' + +import { Containers } from '../../styles/redesign' + import { shared } from '../../i18n/en/labels' const AppLoadingView = () => { return ( - - - {shared.loading} - + + {shared.loading} ) } +const styles = StyleSheet.create({ + container: { + ...Containers.centerItems + } +}) + export default AppLoadingView diff --git a/components/common/app-text-input.js b/components/common/app-text-input.js index 2353375..79bcee9 100644 --- a/components/common/app-text-input.js +++ b/components/common/app-text-input.js @@ -1,17 +1,26 @@ import React from 'react' import PropTypes from 'prop-types' -import { TextInput } from 'react-native' -import styles from '../../styles' +import { StyleSheet, TextInput } from 'react-native' -export default function AppTextInput({ style, ...props }) { +import { Containers } from '../../styles/redesign' + +const AppTextInput = ({ + autoFocus, + onChangeText, + placeholder, + value, + style, + ...props +}) => { if (!Array.isArray(style)) style = [style] + return ( ) @@ -28,3 +37,11 @@ AppTextInput.propTypes = { AppTextInput.defaultProps = { style: [] } + +const styles = StyleSheet.create({ + input: { + ...Containers.greyBorder + } +}) + +export default AppTextInput diff --git a/components/common/button.js b/components/common/button.js index f493cf7..86f2582 100644 --- a/components/common/button.js +++ b/components/common/button.js @@ -1,31 +1,38 @@ import React from 'react' import PropTypes from 'prop-types' -import { TouchableOpacity } from 'react-native' -import AppText from './app-text' -import styles from '../../styles' +import { StyleSheet, TouchableOpacity } from 'react-native' -export default function Button({ - backgroundColor, - children, - onPress, - style, - testID -}) { +import AppText from './app-text' + +import { Containers, Typography } from '../../styles/redesign' + +const Button = ({ children, isOrange, onPress, testID }) => { + const buttonStyle = isOrange ? styles.orange : {} + const textStyle = isOrange ? styles.buttonTextBold : styles.buttonTextRegular return ( - - {children} + + {children} ) } Button.propTypes = { - backgroundColor: PropTypes.string, children: PropTypes.node, + isOrange: PropTypes.bool, onPress: PropTypes.func, - style: PropTypes.object, testID: PropTypes.string } + +const styles = StyleSheet.create({ + orange: { + ...Containers.orangeButton + }, + buttonTextBold: { + ...Typography.buttonTextBold + }, + buttonTextRegular: { + ...Typography.buttonTextRegular + } +}) + +export default Button diff --git a/styles/containers.js b/styles/containers.js index 50f986f..8927d29 100644 --- a/styles/containers.js +++ b/styles/containers.js @@ -13,6 +13,16 @@ export default { flex: 1, justifyContent: 'center' }, + greyBorder: { + borderColor: Colors.greyLight, + borderRadius: 5, + borderStyle: 'solid', + borderWidth: 1, + }, marginBottom: { marginBottom: Spacing.base }, + orangeButton: { + backgroundColor: Colors.orange, + borderRadius: 25 + }, segmentContainer: { marginHorizontal: Spacing.base } } \ No newline at end of file diff --git a/styles/spacing.js b/styles/spacing.js index 037caa1..d1dece0 100644 --- a/styles/spacing.js +++ b/styles/spacing.js @@ -1,3 +1,4 @@ export default { - base: 16 + base: 16, + large: 20 } \ No newline at end of file diff --git a/styles/typography.js b/styles/typography.js index 15371a1..f73d6f9 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -14,15 +14,29 @@ const sizes = { titleLarge: 28 } +const button = { + paddingHorizontal: Spacing.large, + paddingVertical: Spacing.base, + textTransform: 'uppercase' +} + export default { + buttonTextBold: { + fontFamily: fonts.bold, + ...button + }, + buttonTextRegular: { + fontFamily: fonts.main, + ...button + }, mainText: { fontFamily: fonts.main, fontSize: sizes.mainMedium }, - underline: { textDecorationLine: 'underline' }, titleSmall: { color: Colors.purple, fontSize: sizes.titleSmall, marginVertical: Spacing.base - } + }, + underline: { textDecorationLine: 'underline' } } From 4f30db69f3f946dcd123e12be1a4fcad7bb1b0ba Mon Sep 17 00:00:00 2001 From: mashazyu Date: Mon, 23 Mar 2020 10:48:12 +0100 Subject: [PATCH 06/94] Introduces License and About components redesign --- components/common/app-page.js | 32 ++++++++++++++++++ components/settings/about.js | 60 ++++++++++++++++++---------------- components/settings/license.js | 29 ++++++++-------- styles/colors.js | 1 + styles/containers.js | 6 +++- styles/typography.js | 16 +++++++-- 6 files changed, 98 insertions(+), 46 deletions(-) create mode 100644 components/common/app-page.js diff --git a/components/common/app-page.js b/components/common/app-page.js new file mode 100644 index 0000000..2e7027d --- /dev/null +++ b/components/common/app-page.js @@ -0,0 +1,32 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { ScrollView, StyleSheet } from 'react-native' + +import AppText from '../common/app-text' + +import { Containers, Typography } from '../../styles/redesign' + +const AppPage = ({ children, title }) => { + return( + + {title && {title}} + {children} + + ) +} + +AppPage.propTypes = { + children: PropTypes.node, + title: PropTypes.string +} + +const styles = StyleSheet.create({ + container: { + ...Containers.page + }, + title: { + ...Typography.pageTitle + } +}) + +export default AppPage \ No newline at end of file diff --git a/components/settings/about.js b/components/settings/about.js index 5d289f1..89b37d5 100644 --- a/components/settings/about.js +++ b/components/settings/about.js @@ -1,33 +1,35 @@ -import React, { Component } from 'react' -import { ScrollView } from 'react-native' +import React from 'react' + +import AppPage from '../common/app-page' import AppText from '../common/app-text' -import labels from '../../i18n/en/settings' -import links from '../../i18n/en/links' import FramedSegment from '../common/framed-segment' -export default class AboutSection extends Component { - render() { - return ( - - - {labels.aboutSection.text} - - - {labels.philosophy.text} - - - {labels.credits.note} - - - {labels.donate.note} - - - {links.website.url} - - - {require('../../package.json').version} - - - ) - } +import labels from '../../i18n/en/settings' +import links from '../../i18n/en/links' + +const AboutSection = () => { + return ( + + + {labels.aboutSection.text} + + + {labels.philosophy.text} + + + {labels.credits.note} + + + {labels.donate.note} + + + {links.website.url} + + + {require('../../package.json').version} + + + ) } + +export default AboutSection diff --git a/components/settings/license.js b/components/settings/license.js index 7821edd..20e3171 100644 --- a/components/settings/license.js +++ b/components/settings/license.js @@ -1,18 +1,19 @@ -import React, { Component } from 'react' -import { View, ScrollView } from 'react-native' +import React from 'react' + +import AppPage from '../common/app-page' import AppText from '../common/app-text' -import styles from '../../styles/index' +import FramedSegment from '../common/framed-segment' + import labels from '../../i18n/en/settings' -export default class License extends Component { - render() { - return ( - - - {`${labels.license.title} `} - {`${labels.license.text} `} - - - ) - } +const License = () => { + return ( + + + {labels.license.text} + + + ) } + +export default License diff --git a/styles/colors.js b/styles/colors.js index 8aecfb9..c1d4859 100644 --- a/styles/colors.js +++ b/styles/colors.js @@ -1,4 +1,5 @@ export default { + greenSuperLight: '#E9F2ED', grey: '#A5A5A5', greyLight: '#D2D2D2', greySuperLight: '#F2F2F2', diff --git a/styles/containers.js b/styles/containers.js index 8927d29..61cc282 100644 --- a/styles/containers.js +++ b/styles/containers.js @@ -5,7 +5,7 @@ export default { bottomBorder: { borderStyle: 'solid', borderBottomWidth: 2, - borderBottomColor: Colors.greySuperLight, + borderBottomColor: Colors.greyLight, paddingBottom: Spacing.base }, centerItems: { @@ -24,5 +24,9 @@ export default { backgroundColor: Colors.orange, borderRadius: 25 }, + page: { + backgroundColor: Colors.greenSuperLight, + flex: 1 + }, segmentContainer: { marginHorizontal: Spacing.base } } \ No newline at end of file diff --git a/styles/typography.js b/styles/typography.js index f73d6f9..81b098d 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -20,6 +20,12 @@ const button = { textTransform: 'uppercase' } +const title = { + color: Colors.purple, + marginHorizontal: Spacing.base, + marginVertical: Spacing.large +} + export default { buttonTextBold: { fontFamily: fonts.bold, @@ -33,10 +39,16 @@ export default { fontFamily: fonts.main, fontSize: sizes.mainMedium }, + pageTitle: { + alignSelf: 'center', + fontFamily: fonts.bold, + fontWeight: '700', + fontSize: sizes.titleMedium, + ...title + }, titleSmall: { - color: Colors.purple, fontSize: sizes.titleSmall, - marginVertical: Spacing.base + ...title }, underline: { textDecorationLine: 'underline' } } From 6fb1c7cce9e3b89e2b65c9431fe7dc6c033895e3 Mon Sep 17 00:00:00 2001 From: mashazyu Date: Mon, 23 Mar 2020 14:49:46 +0100 Subject: [PATCH 07/94] Fix color naming --- components/common/app-text.js | 2 +- styles/colors.js | 12 ++++++------ styles/containers.js | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/components/common/app-text.js b/components/common/app-text.js index eb85c6e..e7c1270 100644 --- a/components/common/app-text.js +++ b/components/common/app-text.js @@ -29,7 +29,7 @@ AppText.propTypes = { const styles = StyleSheet.create({ text: { - color: Colors.grey, + color: Colors.greyDark, ...Typography.mainText } }) \ No newline at end of file diff --git a/styles/colors.js b/styles/colors.js index c1d4859..3c797d5 100644 --- a/styles/colors.js +++ b/styles/colors.js @@ -1,11 +1,11 @@ export default { - greenSuperLight: '#E9F2ED', - grey: '#A5A5A5', - greyLight: '#D2D2D2', - greySuperLight: '#F2F2F2', + greyDark: '#A5A5A5', + grey: '#D2D2D2', + greyLight: '#F2F2F2', orange: '#F38337', purple: '#3A2671', purpleLight: '#5D4F8A', - tourquise: '#69CBC1', - tourquiseLight: '#CFECEA', + tourquiseDark: '#69CBC1', + tourquise: '#CFECEA', + tourquiseLight: '#E9F2ED', } \ No newline at end of file diff --git a/styles/containers.js b/styles/containers.js index 61cc282..731a1c2 100644 --- a/styles/containers.js +++ b/styles/containers.js @@ -5,7 +5,7 @@ export default { bottomBorder: { borderStyle: 'solid', borderBottomWidth: 2, - borderBottomColor: Colors.greyLight, + borderBottomColor: Colors.grey, paddingBottom: Spacing.base }, centerItems: { @@ -14,7 +14,7 @@ export default { justifyContent: 'center' }, greyBorder: { - borderColor: Colors.greyLight, + borderColor: Colors.grey, borderRadius: 5, borderStyle: 'solid', borderWidth: 1, @@ -25,7 +25,7 @@ export default { borderRadius: 25 }, page: { - backgroundColor: Colors.greenSuperLight, + backgroundColor: Colors.tourquiseLight, flex: 1 }, segmentContainer: { marginHorizontal: Spacing.base } From 78d4077fb4c443a95892b91fdd8cc54d5ff3841f Mon Sep 17 00:00:00 2001 From: mashazyu Date: Mon, 23 Mar 2020 15:02:08 +0100 Subject: [PATCH 08/94] Renames FramedSegment to Segment --- .../common/{framed-segment.js => segment.js} | 9 +++---- components/settings/about.js | 26 +++++++++---------- components/settings/data-management/index.js | 14 +++++----- components/settings/license.js | 6 ++--- components/settings/nfp-settings/index.js | 14 +++++----- components/settings/password/index.js | 6 ++--- components/settings/reminders/index.js | 10 +++---- components/stats.js | 6 ++--- 8 files changed, 45 insertions(+), 46 deletions(-) rename components/common/{framed-segment.js => segment.js} (79%) diff --git a/components/common/framed-segment.js b/components/common/segment.js similarity index 79% rename from components/common/framed-segment.js rename to components/common/segment.js index b20b871..beb7a67 100644 --- a/components/common/framed-segment.js +++ b/components/common/segment.js @@ -6,21 +6,20 @@ import AppText from './app-text' import { Containers, Typography } from '../../styles/redesign' -const FramedSegment = ({ children, last, style, title }) => { +const Segment = ({ children, last, title }) => { const containerStyle = last ? styles.containerLast : styles.container return ( - + {title && {title}} {children} ) } -FramedSegment.propTypes = { +Segment.propTypes = { children: PropTypes.node, last: PropTypes.bool, - style: PropTypes.object, title: PropTypes.string } @@ -38,4 +37,4 @@ const styles = StyleSheet.create({ } }) -export default FramedSegment +export default Segment diff --git a/components/settings/about.js b/components/settings/about.js index 89b37d5..ea2fc96 100644 --- a/components/settings/about.js +++ b/components/settings/about.js @@ -2,7 +2,7 @@ import React from 'react' import AppPage from '../common/app-page' import AppText from '../common/app-text' -import FramedSegment from '../common/framed-segment' +import Segment from '../common/segment' import labels from '../../i18n/en/settings' import links from '../../i18n/en/links' @@ -10,24 +10,24 @@ import links from '../../i18n/en/links' const AboutSection = () => { return ( - + {labels.aboutSection.text} - - + + {labels.philosophy.text} - - + + {labels.credits.note} - - + + {labels.donate.note} - - + + {links.website.url} - - + + {require('../../package.json').version} - + ) } diff --git a/components/settings/data-management/index.js b/components/settings/data-management/index.js index ff67c4d..558bdfd 100644 --- a/components/settings/data-management/index.js +++ b/components/settings/data-management/index.js @@ -1,7 +1,7 @@ import React, { Component } from 'react' import { ScrollView, View } from 'react-native' import AppText from '../../common/app-text' -import FramedSegment from '../../common/framed-segment' +import Segment from '../../common/segment' import AppLoadingView from '../../common/app-loading' import SettingsButton from '../shared/settings-button' import { openImportDialog, getFileContent, importData } from './import-dialog' @@ -58,21 +58,21 @@ export default class DataManagement extends Component { {!this.state.isLoading && - + {labels.export.segmentExplainer} {labels.export.button} - - + + {labels.import.segmentExplainer} {labels.import.button} - - + @@ -81,7 +81,7 @@ export default class DataManagement extends Component { isDeletingData = { currentAction === 'delete' } onStartDeletion = {() => this.setCurrentAction('delete')} /> - + } diff --git a/components/settings/license.js b/components/settings/license.js index 20e3171..bb06823 100644 --- a/components/settings/license.js +++ b/components/settings/license.js @@ -2,16 +2,16 @@ import React from 'react' import AppPage from '../common/app-page' import AppText from '../common/app-text' -import FramedSegment from '../common/framed-segment' +import Segment from '../common/segment' import labels from '../../i18n/en/settings' const License = () => { return ( - + {labels.license.text} - + ) } diff --git a/components/settings/nfp-settings/index.js b/components/settings/nfp-settings/index.js index 2c077bb..0857c16 100644 --- a/components/settings/nfp-settings/index.js +++ b/components/settings/nfp-settings/index.js @@ -5,7 +5,7 @@ import { import styles from '../../../styles' import labels from '../../../i18n/en/settings' import AppText from '../../common/app-text' -import FramedSegment from '../../common/framed-segment' +import Segment from '../../common/segment' import TempSlider from './temp-slider' import UseCervixSetting from './use-cervix' import Icon from 'react-native-vector-icons/Entypo' @@ -19,20 +19,20 @@ export default class Settings extends Component { render() { return ( - + - - + + {labels.tempScale.segmentExplainer} - - + + {` ${labels.preOvu.title} `} {labels.preOvu.note} - + ) } diff --git a/components/settings/password/index.js b/components/settings/password/index.js index 0c874e2..933cada 100644 --- a/components/settings/password/index.js +++ b/components/settings/password/index.js @@ -3,7 +3,7 @@ import { ScrollView } from 'react-native' import CreatePassword from './create' import ChangePassword from './update' import DeletePassword from './delete' -import FramedSegment from '../../common/framed-segment' +import Segment from '../../common/segment' import AppText from '../../common/app-text' import { hasEncryptionObservable @@ -52,7 +52,7 @@ export default class PasswordSetting extends Component { return ( - + { isPasswordSet ? explainerEnabled : explainerDisabled } @@ -72,7 +72,7 @@ export default class PasswordSetting extends Component { onCancelDelete = {this.onCancelDeletingPassword} /> )} - + ) } diff --git a/components/settings/reminders/index.js b/components/settings/reminders/index.js index 10c844a..7c35a14 100644 --- a/components/settings/reminders/index.js +++ b/components/settings/reminders/index.js @@ -2,7 +2,7 @@ import React, { Component } from 'react' import { ScrollView, } from 'react-native' -import FramedSegment from '../../common/framed-segment' +import Segment from '../../common/segment' import TempReminderPicker from './temp-reminder-picker' import PeriodReminderPicker from './period-reminder' @@ -17,12 +17,12 @@ export default class Settings extends Component { render() { return ( - + - - + + - + ) } diff --git a/components/stats.js b/components/stats.js index 3cae29b..a89ddcc 100644 --- a/components/stats.js +++ b/components/stats.js @@ -9,7 +9,7 @@ import cycleModule from '../lib/cycle' import {getCycleLengthStats as getCycleInfo} from '../lib/cycle-length' import {stats as labels} from '../i18n/en/labels' import AppText from './common/app-text' -import FramedSegment from './common/framed-segment' +import Segment from './common/segment' export default class Stats extends Component { render() { @@ -25,7 +25,7 @@ export default class Stats extends Component { } return ( - @@ -70,7 +70,7 @@ export default class Stats extends Component { {labels.basisOfStatsEnd} } - + ) } From fb519c43804af4292dc62dd780261d2c4fc1f31a Mon Sep 17 00:00:00 2001 From: mashazyu Date: Mon, 23 Mar 2020 15:32:53 +0100 Subject: [PATCH 09/94] Moves unique styles of Segment component from common files to local one --- components/common/segment.js | 24 ++++++++++++++++++------ styles/containers.js | 11 +---------- styles/redesign.js | 5 +++-- styles/typography.js | 28 ++++++++++------------------ 4 files changed, 32 insertions(+), 36 deletions(-) diff --git a/components/common/segment.js b/components/common/segment.js index beb7a67..1405845 100644 --- a/components/common/segment.js +++ b/components/common/segment.js @@ -4,7 +4,7 @@ import { StyleSheet, View } from 'react-native' import AppText from './app-text' -import { Containers, Typography } from '../../styles/redesign' +import { Colors, Spacing, Sizes, Typography } from '../../styles/redesign' const Segment = ({ children, last, title }) => { const containerStyle = last ? styles.containerLast : styles.container @@ -23,17 +23,29 @@ Segment.propTypes = { title: PropTypes.string } +const bottomBorder = { + borderStyle: 'solid', + borderBottomWidth: 2, + borderBottomColor: Colors.grey, + paddingBottom: Spacing.base +} + +const segmentContainer = { + marginHorizontal: Spacing.base, + marginBottom: Spacing.base, +} + const styles = StyleSheet.create({ container: { - ...Containers.segmentContainer, - ...Containers.bottomBorder + ...segmentContainer, + ...bottomBorder }, containerLast: { - ...Containers.segmentContainer, - ...Containers.marginBottom + ...segmentContainer }, title: { - ...Typography.titleSmall + fontSize: Sizes.subtitle, + ...Typography.title } }) diff --git a/styles/containers.js b/styles/containers.js index 731a1c2..66c3f0c 100644 --- a/styles/containers.js +++ b/styles/containers.js @@ -1,13 +1,6 @@ import Colors from './colors' -import Spacing from './spacing' export default { - bottomBorder: { - borderStyle: 'solid', - borderBottomWidth: 2, - borderBottomColor: Colors.grey, - paddingBottom: Spacing.base - }, centerItems: { alignItems: 'center', flex: 1, @@ -19,7 +12,6 @@ export default { borderStyle: 'solid', borderWidth: 1, }, - marginBottom: { marginBottom: Spacing.base }, orangeButton: { backgroundColor: Colors.orange, borderRadius: 25 @@ -27,6 +19,5 @@ export default { page: { backgroundColor: Colors.tourquiseLight, flex: 1 - }, - segmentContainer: { marginHorizontal: Spacing.base } + } } \ No newline at end of file diff --git a/styles/redesign.js b/styles/redesign.js index 5656d35..019a9b8 100644 --- a/styles/redesign.js +++ b/styles/redesign.js @@ -1,5 +1,6 @@ import Colors from './colors' import Containers from './containers' -import Typography from './typography' +import Spacing from './spacing' +import Typography, { sizes as Sizes } from './typography' -export { Colors, Containers, Typography } +export { Colors, Containers, Spacing, Sizes, Typography } diff --git a/styles/typography.js b/styles/typography.js index 81b098d..5e47d81 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -6,12 +6,10 @@ const fonts = { bold : 'Jost-700-Bold', } -const sizes = { - mainMedium: 18, - mainLarge: 20, - titleSmall: 22, - titleMedium: 24, - titleLarge: 28 +export const sizes = { + base: 18, + subtitle: 22, + title: 24 } const button = { @@ -20,12 +18,6 @@ const button = { textTransform: 'uppercase' } -const title = { - color: Colors.purple, - marginHorizontal: Spacing.base, - marginVertical: Spacing.large -} - export default { buttonTextBold: { fontFamily: fonts.bold, @@ -37,18 +29,18 @@ export default { }, mainText: { fontFamily: fonts.main, - fontSize: sizes.mainMedium + fontSize: sizes.base }, pageTitle: { alignSelf: 'center', fontFamily: fonts.bold, fontWeight: '700', - fontSize: sizes.titleMedium, - ...title + fontSize: sizes.title, + marginHorizontal: Spacing.base, }, - titleSmall: { - fontSize: sizes.titleSmall, - ...title + title: { + color: Colors.purple, + marginVertical: Spacing.large }, underline: { textDecorationLine: 'underline' } } From 1a46e1bb2e389c008028a9362e7f44ad4958510a Mon Sep 17 00:00:00 2001 From: mashazyu Date: Mon, 23 Mar 2020 15:35:47 +0100 Subject: [PATCH 10/94] Moves unique style of Link component from common to local file --- components/common/link.js | 2 +- styles/typography.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/components/common/link.js b/components/common/link.js index 26b4a5d..8b1293f 100644 --- a/components/common/link.js +++ b/components/common/link.js @@ -26,8 +26,8 @@ Link.propTypes = { const styles = StyleSheet.create({ link: { color: Colors.purple, + textDecorationLine: 'underline', ...Typography.mainText, - ...Typography.underline, } }) diff --git a/styles/typography.js b/styles/typography.js index 5e47d81..e28bf7e 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -41,6 +41,5 @@ export default { title: { color: Colors.purple, marginVertical: Spacing.large - }, - underline: { textDecorationLine: 'underline' } + } } From 652bc1ffe20b96db01a578605fcb06974ded5fd0 Mon Sep 17 00:00:00 2001 From: mashazyu Date: Mon, 23 Mar 2020 15:45:59 +0100 Subject: [PATCH 11/94] Moves unique styles of Button component from common to local file --- components/common/button.js | 25 +++++++++++++++++-------- styles/containers.js | 4 ---- styles/redesign.js | 4 ++-- styles/typography.js | 16 +--------------- 4 files changed, 20 insertions(+), 29 deletions(-) diff --git a/components/common/button.js b/components/common/button.js index 86f2582..afd57e5 100644 --- a/components/common/button.js +++ b/components/common/button.js @@ -4,11 +4,11 @@ import { StyleSheet, TouchableOpacity } from 'react-native' import AppText from './app-text' -import { Containers, Typography } from '../../styles/redesign' +import { Colors, Fonts, Spacing } from '../../styles/redesign' -const Button = ({ children, isOrange, onPress, testID }) => { - const buttonStyle = isOrange ? styles.orange : {} - const textStyle = isOrange ? styles.buttonTextBold : styles.buttonTextRegular +const Button = ({ children, isCTA, onPress, testID }) => { + const buttonStyle = isCTA ? styles.orange : {} + const textStyle = isCTA ? styles.buttonTextBold : styles.buttonTextRegular return ( {children} @@ -18,20 +18,29 @@ const Button = ({ children, isOrange, onPress, testID }) => { Button.propTypes = { children: PropTypes.node, - isOrange: PropTypes.bool, + isCTA: PropTypes.bool, onPress: PropTypes.func, testID: PropTypes.string } +const button = { + paddingHorizontal: Spacing.large, + paddingVertical: Spacing.base, + textTransform: 'uppercase' +} + const styles = StyleSheet.create({ orange: { - ...Containers.orangeButton + backgroundColor: Colors.orange, + borderRadius: 25 }, buttonTextBold: { - ...Typography.buttonTextBold + fontFamily: Fonts.main, + ...button }, buttonTextRegular: { - ...Typography.buttonTextRegular + fontFamily: Fonts.bold, + ...button } }) diff --git a/styles/containers.js b/styles/containers.js index 66c3f0c..32a2404 100644 --- a/styles/containers.js +++ b/styles/containers.js @@ -12,10 +12,6 @@ export default { borderStyle: 'solid', borderWidth: 1, }, - orangeButton: { - backgroundColor: Colors.orange, - borderRadius: 25 - }, page: { backgroundColor: Colors.tourquiseLight, flex: 1 diff --git a/styles/redesign.js b/styles/redesign.js index 019a9b8..080add1 100644 --- a/styles/redesign.js +++ b/styles/redesign.js @@ -1,6 +1,6 @@ import Colors from './colors' import Containers from './containers' import Spacing from './spacing' -import Typography, { sizes as Sizes } from './typography' +import Typography, { fonts as Fonts, sizes as Sizes } from './typography' -export { Colors, Containers, Spacing, Sizes, Typography } +export { Colors, Containers, Fonts, Spacing, Sizes, Typography } diff --git a/styles/typography.js b/styles/typography.js index e28bf7e..d567c32 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -1,7 +1,7 @@ import Colors from './colors' import Spacing from './spacing' -const fonts = { +export const fonts = { main: 'Jost-400-Book', bold : 'Jost-700-Bold', } @@ -12,21 +12,7 @@ export const sizes = { title: 24 } -const button = { - paddingHorizontal: Spacing.large, - paddingVertical: Spacing.base, - textTransform: 'uppercase' -} - export default { - buttonTextBold: { - fontFamily: fonts.bold, - ...button - }, - buttonTextRegular: { - fontFamily: fonts.main, - ...button - }, mainText: { fontFamily: fonts.main, fontSize: sizes.base From 3de92b9f77d1d9197818f123a80c602cf12cd538 Mon Sep 17 00:00:00 2001 From: mashazyu Date: Mon, 23 Mar 2020 15:51:23 +0100 Subject: [PATCH 12/94] Moves unique styles of AppTextInput to local file and does some cleanup --- components/common/app-text-input.js | 16 ++++++---------- styles/containers.js | 6 ------ 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/components/common/app-text-input.js b/components/common/app-text-input.js index 79bcee9..389490e 100644 --- a/components/common/app-text-input.js +++ b/components/common/app-text-input.js @@ -2,24 +2,22 @@ import React from 'react' import PropTypes from 'prop-types' import { StyleSheet, TextInput } from 'react-native' -import { Containers } from '../../styles/redesign' +import { Colors } from '../../styles/redesign' const AppTextInput = ({ autoFocus, onChangeText, placeholder, value, - style, ...props }) => { - if (!Array.isArray(style)) style = [style] return ( @@ -30,17 +28,15 @@ AppTextInput.propTypes = { autoFocus: PropTypes.bool, onChangeText: PropTypes.func, placeholder: PropTypes.string, - style: PropTypes.oneOfType([PropTypes.array, PropTypes.object]), value: PropTypes.string, } -AppTextInput.defaultProps = { - style: [] -} - const styles = StyleSheet.create({ input: { - ...Containers.greyBorder + borderColor: Colors.grey, + borderRadius: 5, + borderStyle: 'solid', + borderWidth: 1, } }) diff --git a/styles/containers.js b/styles/containers.js index 32a2404..1d96f0e 100644 --- a/styles/containers.js +++ b/styles/containers.js @@ -6,12 +6,6 @@ export default { flex: 1, justifyContent: 'center' }, - greyBorder: { - borderColor: Colors.grey, - borderRadius: 5, - borderStyle: 'solid', - borderWidth: 1, - }, page: { backgroundColor: Colors.tourquiseLight, flex: 1 From e80d8880b07fcf64e4a8bb553045ba6943bb69be Mon Sep 17 00:00:00 2001 From: mashazyu Date: Mon, 23 Mar 2020 15:55:51 +0100 Subject: [PATCH 13/94] Moves unique styles of AppPage component to local file --- components/common/app-page.js | 12 +++++++++--- styles/containers.js | 6 ------ styles/typography.js | 7 ------- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/components/common/app-page.js b/components/common/app-page.js index 2e7027d..f8b3e93 100644 --- a/components/common/app-page.js +++ b/components/common/app-page.js @@ -4,7 +4,7 @@ import { ScrollView, StyleSheet } from 'react-native' import AppText from '../common/app-text' -import { Containers, Typography } from '../../styles/redesign' +import { Colors, Fonts, Sizes, Spacing, Typography } from '../../styles/redesign' const AppPage = ({ children, title }) => { return( @@ -22,10 +22,16 @@ AppPage.propTypes = { const styles = StyleSheet.create({ container: { - ...Containers.page + backgroundColor: Colors.tourquiseLight, + flex: 1 }, title: { - ...Typography.pageTitle + alignSelf: 'center', + fontFamily: Fonts.bold, + fontWeight: '700', + fontSize: Sizes.title, + marginHorizontal: Spacing.base, + ...Typography.title } }) diff --git a/styles/containers.js b/styles/containers.js index 1d96f0e..d50910e 100644 --- a/styles/containers.js +++ b/styles/containers.js @@ -1,13 +1,7 @@ -import Colors from './colors' - export default { centerItems: { alignItems: 'center', flex: 1, justifyContent: 'center' - }, - page: { - backgroundColor: Colors.tourquiseLight, - flex: 1 } } \ No newline at end of file diff --git a/styles/typography.js b/styles/typography.js index d567c32..5539b6a 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -17,13 +17,6 @@ export default { fontFamily: fonts.main, fontSize: sizes.base }, - pageTitle: { - alignSelf: 'center', - fontFamily: fonts.bold, - fontWeight: '700', - fontSize: sizes.title, - marginHorizontal: Spacing.base, - }, title: { color: Colors.purple, marginVertical: Spacing.large From e609d5152836e9479581e05e53f7bd84a34de3f1 Mon Sep 17 00:00:00 2001 From: mashazyu Date: Mon, 23 Mar 2020 16:02:22 +0100 Subject: [PATCH 14/94] Removes unnecessary spaces --- components/settings/license.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/settings/license.js b/components/settings/license.js index bb06823..d3b53c9 100644 --- a/components/settings/license.js +++ b/components/settings/license.js @@ -8,8 +8,8 @@ import labels from '../../i18n/en/settings' const License = () => { return ( - - + + {labels.license.text} From e101ecb8d12f943e3bc89cb4b75d3b64adbc39c8 Mon Sep 17 00:00:00 2001 From: mashazyu Date: Mon, 23 Mar 2020 21:39:57 +0100 Subject: [PATCH 15/94] Introduces SettingsMenu component redesign --- components/common/app-icon.js | 34 ++++++++++ components/common/segment.js | 11 +--- components/pages.js | 14 ++--- components/settings/settings-menu.js | 92 +++++++++++++++++++--------- i18n/en/labels.js | 14 ++--- i18n/en/settings.js | 25 +++++--- styles/containers.js | 9 +++ styles/spacing.js | 1 + 8 files changed, 140 insertions(+), 60 deletions(-) create mode 100644 components/common/app-icon.js diff --git a/components/common/app-icon.js b/components/common/app-icon.js new file mode 100644 index 0000000..03bdb5e --- /dev/null +++ b/components/common/app-icon.js @@ -0,0 +1,34 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { StyleSheet } from 'react-native' +import Icon from 'react-native-vector-icons/Entypo' + +import { Colors, Sizes } from '../../styles/redesign' + +const AppIcon = ({ isCTA, name }) => { + const style = isCTA ? styles.iconCTA : styles.icon + + return +} + +AppIcon.propTypes = { + isCTA: PropTypes.bool, + name: PropTypes.string.isRequired +} + +AppIcon.defaultProps = { + isCTA: true +} + +const styles = StyleSheet.create({ + icon: { + color: 'black', + fontSize: Sizes.subtitle + }, + iconCTA: { + color: Colors.orange, + fontSize: Sizes.subtitle + } +}) + +export default AppIcon \ No newline at end of file diff --git a/components/common/segment.js b/components/common/segment.js index 1405845..edc525e 100644 --- a/components/common/segment.js +++ b/components/common/segment.js @@ -4,7 +4,7 @@ import { StyleSheet, View } from 'react-native' import AppText from './app-text' -import { Colors, Spacing, Sizes, Typography } from '../../styles/redesign' +import { Containers, Spacing, Sizes, Typography } from '../../styles/redesign' const Segment = ({ children, last, title }) => { const containerStyle = last ? styles.containerLast : styles.container @@ -23,13 +23,6 @@ Segment.propTypes = { title: PropTypes.string } -const bottomBorder = { - borderStyle: 'solid', - borderBottomWidth: 2, - borderBottomColor: Colors.grey, - paddingBottom: Spacing.base -} - const segmentContainer = { marginHorizontal: Spacing.base, marginBottom: Spacing.base, @@ -38,7 +31,7 @@ const segmentContainer = { const styles = StyleSheet.create({ container: { ...segmentContainer, - ...bottomBorder + ...Containers.bottomBorder }, containerLast: { ...segmentContainer diff --git a/components/pages.js b/components/pages.js index 943a6a9..3f11562 100644 --- a/components/pages.js +++ b/components/pages.js @@ -2,7 +2,7 @@ import symptomViews from './cycle-day/symptoms' import settingsViews from './settings' import settingsLabels from '../i18n/en/settings' -const labels = settingsLabels.menuTitles +const labels = settingsLabels.menuItems const symptomsPages = Object.keys(symptomViews).map(symptomView => ({ component: symptomView, @@ -53,32 +53,32 @@ export const pages = [ }, { component: 'Reminders', - label: labels.reminders, + label: labels.reminders.name, parent: 'SettingsMenu', }, { component: 'NfpSettings', - label: labels.nfpSettings, + label: labels.nfpSettings.name, parent: 'SettingsMenu', }, { component: 'DataManagement', - label: labels.dataManagement, + label: labels.dataManagement.name, parent: 'SettingsMenu', }, { component: 'Password', - label: labels.password, + label: labels.password.name, parent: 'SettingsMenu', }, { component: 'About', - label: labels.about, + label: 'About', parent: 'SettingsMenu', }, { component: 'License', - label: labels.license, + label: 'License', parent: 'SettingsMenu', }, { diff --git a/components/settings/settings-menu.js b/components/settings/settings-menu.js index 9f511cf..0305aad 100644 --- a/components/settings/settings-menu.js +++ b/components/settings/settings-menu.js @@ -1,51 +1,83 @@ import React from 'react' import PropTypes from 'prop-types' -import { TouchableOpacity, ScrollView } from 'react-native' -import { connect } from 'react-redux' - -import { navigate } from '../../slices/navigation' - -import styles from '../../styles/index' - -import settingsLabels from '../../i18n/en/settings' +import { StyleSheet, TouchableOpacity, View } from 'react-native' +import AppIcon from '../common/app-icon' +import AppPage from '../common/app-page' import AppText from '../common/app-text' -const labels = settingsLabels.menuTitles +import { connect } from 'react-redux' +import { navigate } from '../../slices/navigation' +import { Colors, Containers, Sizes, Spacing } from '../../styles/redesign' +import settingsLabels from '../../i18n/en/settings' + +const { menuItems } = settingsLabels const menu = [ - {title: labels.reminders, component: 'Reminders'}, - {title: labels.nfpSettings, component: 'NfpSettings'}, - {title: labels.dataManagement, component: 'DataManagement'}, - {title: labels.password, component: 'Password'}, - {title: labels.about, component: 'About'}, - {title: labels.license, component: 'License'} + { ...menuItems.reminders, component: 'Reminders'}, + { ...menuItems.nfpSettings, component: 'NfpSettings'}, + { ...menuItems.dataManagement, component: 'DataManagement'}, + { ...menuItems.password, component: 'Password'} ] const SettingsMenu = ({ navigate }) => { return ( - - { menu.map(menuItem)} - + + {menu.map((menuItem, i) => + + )} + ) - - function menuItem(item) { - return ( - navigate(item.component)} - > - {item.title.toLowerCase()} - - ) - } } SettingsMenu.propTypes = { navigate: PropTypes.func.isRequired } +const MenuItem = ({ i, item, navigate }) => { + const isLast = (menu.length === i + 1) + const containerStyle = isLast ? styles.containerLast : styles.container + + return ( + navigate(item.component)} + > + + {item.name} + {item.text.length > 0 && {item.text}} + + + + ) +} + +MenuItem.propTypes = { + i: PropTypes.number.isRequired, + item: PropTypes.object.isRequired, + navigate: PropTypes.func.isRequired +} + +const menuItemContainer = { + margin: Spacing.base, + ...Containers.rowContainer +} + +const styles = StyleSheet.create({ + container: { + ...menuItemContainer, + ...Containers.bottomBorder + }, + containerLast: { + ...menuItemContainer + }, + title: { + color: Colors.purple, + fontSize: Sizes.subtitle + }, +}) + const mapDispatchToProps = (dispatch) => { return({ navigate: (page) => dispatch(navigate(page)), diff --git a/i18n/en/labels.js b/i18n/en/labels.js index 8047813..7aec163 100644 --- a/i18n/en/labels.js +++ b/i18n/en/labels.js @@ -1,5 +1,5 @@ import labels from './settings' -const settingsTitles = labels.menuTitles +const settingsTitles = labels.menuItems export const shared = { cancel: 'Cancel', @@ -27,12 +27,12 @@ export const headerTitles = { Chart: 'Chart', Stats: 'Statistics', SettingsMenu: 'Settings', - Reminders: settingsTitles.reminders, - NfpSettings: settingsTitles.nfpSettings, - DataManagement: settingsTitles.dataManagement, - Password: settingsTitles.password, - About: settingsTitles.about, - License: settingsTitles.license, + Reminders: settingsTitles.reminders.name, + NfpSettings: settingsTitles.nfpSettings.name, + DataManagement: settingsTitles.dataManagement.name, + Password: settingsTitles.password.name, + About: 'About', + License: 'License', bleeding: 'Bleeding', temperature: 'Temperature', mucus: 'Cervical Mucus', diff --git a/i18n/en/settings.js b/i18n/en/settings.js index 36f63de..c1f6ec6 100644 --- a/i18n/en/settings.js +++ b/i18n/en/settings.js @@ -3,13 +3,24 @@ import links from './links' const currentYear = new Date().getFullYear() export default { - menuTitles: { - reminders: 'Reminders', - dataManagement: 'Manage your data', - nfpSettings: 'NFP settings', - password: 'Password', - about: 'About', - license: 'License' + title: 'Settings', + menuItems: { + reminders: { + name: 'Reminders', + text: 'turn on/off reminders' + }, + nfpSettings: { + name:'NFP settings', + text: 'define how you want to use NFP', + }, + dataManagement: { + name: 'Data', + text: 'import, export or delete your data' + }, + password: { + name:'Password', + text: '' + } }, export: { errors: { diff --git a/styles/containers.js b/styles/containers.js index d50910e..78194a4 100644 --- a/styles/containers.js +++ b/styles/containers.js @@ -1,4 +1,13 @@ +import Colors from './colors' +import Spacing from './spacing' + export default { + bottomBorder: { + borderStyle: 'solid', + borderBottomWidth: 2, + borderBottomColor: Colors.grey, + paddingBottom: Spacing.base + }, centerItems: { alignItems: 'center', flex: 1, diff --git a/styles/spacing.js b/styles/spacing.js index d1dece0..9b2a0b5 100644 --- a/styles/spacing.js +++ b/styles/spacing.js @@ -1,4 +1,5 @@ export default { + small: 10, base: 16, large: 20 } \ No newline at end of file From ce92b0af338ce3baad982c09922452bbaf31348a Mon Sep 17 00:00:00 2001 From: mashazyu Date: Mon, 23 Mar 2020 22:20:17 +0100 Subject: [PATCH 16/94] Introduces Header redesign along with some global styles changes --- components/common/app-page.js | 7 +- components/common/segment.js | 5 +- components/header/delete-icon.js | 27 ------ components/header/index.js | 96 ++++++++++++++++------ components/header/navigation-arrow.js | 30 ------- components/header/side-menu.js | 114 ++++++++++++++++++++++++++ components/header/title.js | 36 -------- i18n/en/settings.js | 5 +- styles/containers.js | 5 ++ styles/typography.js | 17 +++- 10 files changed, 210 insertions(+), 132 deletions(-) delete mode 100644 components/header/delete-icon.js delete mode 100644 components/header/navigation-arrow.js create mode 100644 components/header/side-menu.js delete mode 100644 components/header/title.js diff --git a/components/common/app-page.js b/components/common/app-page.js index f8b3e93..a7b5a49 100644 --- a/components/common/app-page.js +++ b/components/common/app-page.js @@ -4,7 +4,7 @@ import { ScrollView, StyleSheet } from 'react-native' import AppText from '../common/app-text' -import { Colors, Fonts, Sizes, Spacing, Typography } from '../../styles/redesign' +import { Colors, Typography } from '../../styles/redesign' const AppPage = ({ children, title }) => { return( @@ -26,11 +26,6 @@ const styles = StyleSheet.create({ flex: 1 }, title: { - alignSelf: 'center', - fontFamily: Fonts.bold, - fontWeight: '700', - fontSize: Sizes.title, - marginHorizontal: Spacing.base, ...Typography.title } }) diff --git a/components/common/segment.js b/components/common/segment.js index edc525e..5037c5b 100644 --- a/components/common/segment.js +++ b/components/common/segment.js @@ -4,7 +4,7 @@ import { StyleSheet, View } from 'react-native' import AppText from './app-text' -import { Containers, Spacing, Sizes, Typography } from '../../styles/redesign' +import { Containers, Spacing, Typography } from '../../styles/redesign' const Segment = ({ children, last, title }) => { const containerStyle = last ? styles.containerLast : styles.container @@ -37,8 +37,7 @@ const styles = StyleSheet.create({ ...segmentContainer }, title: { - fontSize: Sizes.subtitle, - ...Typography.title + ...Typography.subtitle } }) diff --git a/components/header/delete-icon.js b/components/header/delete-icon.js deleted file mode 100644 index 1b67001..0000000 --- a/components/header/delete-icon.js +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react' -import { TouchableOpacity } from 'react-native' -import PropTypes from 'prop-types' - -import Icon from 'react-native-vector-icons/AntDesign' - -import styles, { iconStyles } from '../../styles' - -export default function DeleteIcon({ handleDelete }) { - - return ( - - - - ) -} - -DeleteIcon.propTypes = { - handleDelete: PropTypes.func, -} diff --git a/components/header/index.js b/components/header/index.js index 885eec3..13cb88b 100644 --- a/components/header/index.js +++ b/components/header/index.js @@ -1,36 +1,78 @@ -import React from 'react' -import { View } from 'react-native' +import React, { Component } from 'react' +import { StyleSheet, TouchableOpacity, View } from 'react-native' import PropTypes from 'prop-types' -import Title from './title' -import NavigationArrow from './navigation-arrow' -import DeleteIcon from './delete-icon' +import AppText from '../common/app-text' +import SideMenu from './side-menu' -import styles from '../../styles' +import { connect } from 'react-redux' +import { navigate } from '../../slices/navigation' -export default function Header({ - handleBack, - handleNext, - handleDelete, - title, - subtitle, -}) { +import { Colors, Containers, Fonts, Sizes } from '../../styles/redesign' - return ( - - - { handleBack && } - - { handleNext && <NavigationArrow handleNext={handleNext} /> } - { handleDelete && <DeleteIcon handleDelete={handleDelete} /> } - </View > +class Header extends Component { + + static propTypes = { + navigate: PropTypes.func.isRequired + } + + constructor(props) { + super(props) + + this.state = { shouldShowMenu: false } + } + + toggleMenu = () => { + this.setState({ shouldShowMenu: !this.state.shouldShowMenu}) + } + + render() { + const { shouldShowMenu } = this.state + + return ( + <View style={styles.header}> + <DripIcon navigate={this.props.navigate}/> + <SideMenu + shouldShowMenu={shouldShowMenu} + onPress={this.toggleMenu} + /> + </View > + ) + } +} + +const DripIcon = ({ navigate }) => { + return( + <TouchableOpacity onPress={() => navigate('Home')}> + <AppText style={styles.icon}>drip.</AppText> + </TouchableOpacity> ) } -Header.propTypes = { - handleBack: PropTypes.func, - handleDelete: PropTypes.func, - handleNext: PropTypes.func, - subtitle: PropTypes.string, - title: PropTypes.string.isRequired +DripIcon.propTypes = { + navigate: PropTypes.func.isRequired } + +const styles = StyleSheet.create({ + header: { + backgroundColor: Colors.purple, + padding: Sizes.base, + ...Containers.rowContainer + }, + icon: { + color: Colors.tourquiseDark, + fontFamily: Fonts.bold, + fontSize: Sizes.title + } +}) + +const mapDispatchToProps = (dispatch) => { + return({ + navigate: (page) => dispatch(navigate(page)), + }) +} + +export default connect( + null, + mapDispatchToProps, +)(Header) \ No newline at end of file diff --git a/components/header/navigation-arrow.js b/components/header/navigation-arrow.js deleted file mode 100644 index 7675893..0000000 --- a/components/header/navigation-arrow.js +++ /dev/null @@ -1,30 +0,0 @@ -import React from 'react' -import { TouchableOpacity } from 'react-native' -import PropTypes from 'prop-types' -import Icon from 'react-native-vector-icons/Entypo' - -import styles, { iconStyles } from '../../styles' - -export default function NavigationArrow({ handleBack, handleNext }) { - const navigationDirection = handleBack ? 'Left' : 'Right' - return ( - <TouchableOpacity - style={[ - styles.navigationArrow, - styles[`navigationArrow${navigationDirection}`] - ]} - onPress={ handleBack || handleNext } - testID={ handleBack ? 'backButton' : 'nextButton'} - > - <Icon - name={`chevron-thin-${navigationDirection.toLowerCase()}`} - {...iconStyles.navigationArrow} - /> - </TouchableOpacity> - ) -} - -NavigationArrow.propTypes = { - handleBack: PropTypes.func, - handleNext: PropTypes.func, -} \ No newline at end of file diff --git a/components/header/side-menu.js b/components/header/side-menu.js new file mode 100644 index 0000000..0b48e3e --- /dev/null +++ b/components/header/side-menu.js @@ -0,0 +1,114 @@ +import React from 'react' +import { Modal, StyleSheet, TouchableOpacity, View } from 'react-native' +import PropTypes from 'prop-types' + +import AppIcon from '../common/app-icon' +import AppText from '../common/app-text' + +import { connect } from 'react-redux' +import { navigate } from '../../slices/navigation' + +import { Sizes, Typography } from '../../styles/redesign' +import settingsLabels from '../../i18n/en/settings' + +const { menuItems } = settingsLabels + +const settingsMenuItems = [ + {name: menuItems.settings, component: 'SettingsMenu'}, + {name: menuItems.about, component: 'About'}, + {name: menuItems.license, component: 'License'}, +] + +const SideMenu = ({ navigate, onPress, shouldShowMenu }) => { + const navigateMenuItem = (page) => { + onPress() + navigate(page) + } + + return( + <React.Fragment> + {!shouldShowMenu && + <TouchableOpacity onPress={onPress}> + <AppIcon name={'dots-three-vertical'} isCTA/> + </TouchableOpacity> + } + {shouldShowMenu && + <Modal + animationType='fade' + onRequestClose={onPress} + transparent={true} + visible={shouldShowMenu} + > + <View style={styles.blackBackground}></View> + <View style={styles.menu}> + <TouchableOpacity onPress={onPress} style={styles.iconContainer}> + <AppIcon name={'cross'}/> + </TouchableOpacity> + {settingsMenuItems.map(item => + <MenuItem + item={item} + key={item.name} + navigate={navigateMenuItem} + /> + )} + </View> + </Modal> + } + </React.Fragment> + ) +} + +SideMenu.propTypes = { + navigate: PropTypes.func.isRequired, + onPress: PropTypes.func, + shouldShowMenu: PropTypes.bool.isRequired +} + +const MenuItem = ({ item, navigate }) => { + return( + <View style={styles.menuItem}> + <TouchableOpacity onPress={() => navigate(item.component)}> + <AppText style={styles.text}>{item.name}</AppText> + </TouchableOpacity> + </View> + ) +} + +MenuItem.propTypes = { + item: PropTypes.object.isRequired, + navigate: PropTypes.func.isRequired, +} + +const styles = StyleSheet.create({ + blackBackground: { + backgroundColor: 'black', + flex: 1, + opacity: 0.65, + }, + iconContainer: { + alignSelf: 'flex-end', + marginBottom: Sizes.base + }, + menu: { + alignSelf: 'flex-end', + backgroundColor: 'white', + height: '100%', + padding: Sizes.base, + position: 'absolute', + width: '60%' + }, + text: { + ...Typography.subtitle + } +}) + +const mapDispatchToProps = (dispatch) => { + return({ + navigate: (page) => dispatch(navigate(page)), + }) +} + +export default connect( + null, + mapDispatchToProps, +)(SideMenu) diff --git a/components/header/title.js b/components/header/title.js deleted file mode 100644 index f667ded..0000000 --- a/components/header/title.js +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react' -import { View, Text} from 'react-native' -import PropTypes from 'prop-types' - -import styles from '../../styles' - -export default function Title({ title, subtitle }) { - - if (subtitle !== undefined) { - return ( - <View> - <Text style={styles.dateHeader} testID='headerTitle'> - { // design wants everyhting lowercased, but we don't - // have CSS pseudo properties - title.toLowerCase()} - </Text> - { subtitle && - <Text style={styles.cycleDayNumber} testID='headerSubtitle'> - {subtitle.toLowerCase()} - </Text> - } - </View> - ) - } - - return ( - <Text testID='headerTitle' style={styles.headerText}> - {title.toLowerCase()} - </Text> - ) -} - -Title.propTypes = { - title: PropTypes.string, - subtitle: PropTypes.string, -} diff --git a/i18n/en/settings.js b/i18n/en/settings.js index c1f6ec6..ca83862 100644 --- a/i18n/en/settings.js +++ b/i18n/en/settings.js @@ -20,7 +20,10 @@ export default { password: { name:'Password', text: '' - } + }, + about: 'About', + license: 'License', + settings: 'Settings' }, export: { errors: { diff --git a/styles/containers.js b/styles/containers.js index 78194a4..37af327 100644 --- a/styles/containers.js +++ b/styles/containers.js @@ -12,5 +12,10 @@ export default { alignItems: 'center', flex: 1, justifyContent: 'center' + }, + rowContainer: { + alignItems: 'center', + flexDirection: 'row', + justifyContent: 'space-between' } } \ No newline at end of file diff --git a/styles/typography.js b/styles/typography.js index 5539b6a..effa01c 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -12,13 +12,26 @@ export const sizes = { title: 24 } +const title = { + color: Colors.purple, + marginVertical: Spacing.large +} + export default { mainText: { fontFamily: fonts.main, fontSize: sizes.base }, + subtitle: { + fontSize: sizes.subtitle, + ...title + }, title: { - color: Colors.purple, - marginVertical: Spacing.large + alignSelf: 'center', + fontFamily: fonts.bold, + fontWeight: '700', + fontSize: sizes.title, + marginHorizontal: Spacing.base, + ...title } } From 4d6f0db30ad64a438739d7a3ea501e07d08c2a3e Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Tue, 24 Mar 2020 12:26:15 +0100 Subject: [PATCH 17/94] Moves Segment stiles to local file, separates MenuItem component. --- components/common/segment.js | 9 ++-- components/settings/menu-item.js | 57 ++++++++++++++++++++ components/settings/settings-menu.js | 77 +++------------------------- styles/containers.js | 9 ---- 4 files changed, 71 insertions(+), 81 deletions(-) create mode 100644 components/settings/menu-item.js diff --git a/components/common/segment.js b/components/common/segment.js index 5037c5b..a0ad843 100644 --- a/components/common/segment.js +++ b/components/common/segment.js @@ -4,7 +4,7 @@ import { StyleSheet, View } from 'react-native' import AppText from './app-text' -import { Containers, Spacing, Typography } from '../../styles/redesign' +import { Colors, Spacing, Typography } from '../../styles/redesign' const Segment = ({ children, last, title }) => { const containerStyle = last ? styles.containerLast : styles.container @@ -30,8 +30,11 @@ const segmentContainer = { const styles = StyleSheet.create({ container: { - ...segmentContainer, - ...Containers.bottomBorder + borderStyle: 'solid', + borderBottomWidth: 2, + borderBottomColor: Colors.grey, + paddingBottom: Spacing.base, + ...segmentContainer }, containerLast: { ...segmentContainer diff --git a/components/settings/menu-item.js b/components/settings/menu-item.js new file mode 100644 index 0000000..b9336a1 --- /dev/null +++ b/components/settings/menu-item.js @@ -0,0 +1,57 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { StyleSheet, TouchableOpacity, View } from 'react-native' + +import AppIcon from '../common/app-icon' +import AppText from '../common/app-text' +import Segment from '../common/segment' + +import { connect } from 'react-redux' +import { navigate } from '../../slices/navigation' + +import { Colors, Containers, Sizes } from '../../styles/redesign' + +const MenuItem = ({ item, last, navigate }) => { + return ( + <Segment last={last}> + <TouchableOpacity + style={styles.container} + key={item.name} + onPress={() => navigate(item.component)} + > + <View> + <AppText style={styles.title}>{item.name}</AppText> + {item.text.length > 0 && <AppText>{item.text}</AppText>} + </View> + <AppIcon name={'chevron-right'} isCTA/> + </TouchableOpacity> + </Segment> + ) +} + +MenuItem.propTypes = { + item: PropTypes.object.isRequired, + last: PropTypes.bool.isRequired, + navigate: PropTypes.func.isRequired +} + +const styles = StyleSheet.create({ + container: { + ...Containers.rowContainer + }, + title: { + color: Colors.purple, + fontSize: Sizes.subtitle + } +}) + +const mapDispatchToProps = (dispatch) => { + return({ + navigate: (page) => dispatch(navigate(page)), + }) +} + +export default connect( + null, + mapDispatchToProps +)(MenuItem) \ No newline at end of file diff --git a/components/settings/settings-menu.js b/components/settings/settings-menu.js index 0305aad..4436c15 100644 --- a/components/settings/settings-menu.js +++ b/components/settings/settings-menu.js @@ -1,15 +1,8 @@ import React from 'react' -import PropTypes from 'prop-types' -import { StyleSheet, TouchableOpacity, View } from 'react-native' -import AppIcon from '../common/app-icon' import AppPage from '../common/app-page' -import AppText from '../common/app-text' +import MenuItem from './menu-item' -import { connect } from 'react-redux' -import { navigate } from '../../slices/navigation' - -import { Colors, Containers, Sizes, Spacing } from '../../styles/redesign' import settingsLabels from '../../i18n/en/settings' const { menuItems } = settingsLabels @@ -20,71 +13,17 @@ const menu = [ { ...menuItems.password, component: 'Password'} ] -const SettingsMenu = ({ navigate }) => { +const SettingsMenu = () => { return ( <AppPage title={settingsLabels.title}> - {menu.map((menuItem, i) => - <MenuItem item={menuItem} i={i} navigate={navigate} key={i}/> + {menu.map((menuItem, i) => { + const last = (menu.length === i + 1) + + return <MenuItem item={menuItem} key={i} last={last}/> + } )} </AppPage> ) } -SettingsMenu.propTypes = { - navigate: PropTypes.func.isRequired -} - -const MenuItem = ({ i, item, navigate }) => { - const isLast = (menu.length === i + 1) - const containerStyle = isLast ? styles.containerLast : styles.container - - return ( - <TouchableOpacity - style={containerStyle} - key={item.name} - onPress={() => navigate(item.component)} - > - <View> - <AppText style={styles.title}>{item.name}</AppText> - {item.text.length > 0 && <AppText>{item.text}</AppText>} - </View> - <AppIcon name={'chevron-right'} isCTA/> - </TouchableOpacity> - ) -} - -MenuItem.propTypes = { - i: PropTypes.number.isRequired, - item: PropTypes.object.isRequired, - navigate: PropTypes.func.isRequired -} - -const menuItemContainer = { - margin: Spacing.base, - ...Containers.rowContainer -} - -const styles = StyleSheet.create({ - container: { - ...menuItemContainer, - ...Containers.bottomBorder - }, - containerLast: { - ...menuItemContainer - }, - title: { - color: Colors.purple, - fontSize: Sizes.subtitle - }, -}) - -const mapDispatchToProps = (dispatch) => { - return({ - navigate: (page) => dispatch(navigate(page)), - }) -} - -export default connect( - null, - mapDispatchToProps -)(SettingsMenu) \ No newline at end of file +export default SettingsMenu \ No newline at end of file diff --git a/styles/containers.js b/styles/containers.js index 37af327..257c7b4 100644 --- a/styles/containers.js +++ b/styles/containers.js @@ -1,13 +1,4 @@ -import Colors from './colors' -import Spacing from './spacing' - export default { - bottomBorder: { - borderStyle: 'solid', - borderBottomWidth: 2, - borderBottomColor: Colors.grey, - paddingBottom: Spacing.base - }, centerItems: { alignItems: 'center', flex: 1, From bf4446c7426ad6ce12857dc4a76866b2836512af Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Tue, 24 Mar 2020 12:33:50 +0100 Subject: [PATCH 18/94] Moves Logo component to separate file --- components/header/index.js | 54 +++++--------------------------------- components/header/logo.js | 41 +++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 47 deletions(-) create mode 100644 components/header/logo.js diff --git a/components/header/index.js b/components/header/index.js index 13cb88b..7072d2f 100644 --- a/components/header/index.js +++ b/components/header/index.js @@ -1,21 +1,12 @@ import React, { Component } from 'react' -import { StyleSheet, TouchableOpacity, View } from 'react-native' -import PropTypes from 'prop-types' +import { StyleSheet, View } from 'react-native' -import AppText from '../common/app-text' +import Logo from './logo' import SideMenu from './side-menu' -import { connect } from 'react-redux' -import { navigate } from '../../slices/navigation' - -import { Colors, Containers, Fonts, Sizes } from '../../styles/redesign' - -class Header extends Component { - - static propTypes = { - navigate: PropTypes.func.isRequired - } +import { Colors, Containers, Sizes } from '../../styles/redesign' +export default class Header extends Component { constructor(props) { super(props) @@ -31,48 +22,17 @@ class Header extends Component { return ( <View style={styles.header}> - <DripIcon navigate={this.props.navigate}/> - <SideMenu - shouldShowMenu={shouldShowMenu} - onPress={this.toggleMenu} - /> + <Logo /> + <SideMenu shouldShowMenu={shouldShowMenu} onPress={this.toggleMenu}/> </View > ) } } -const DripIcon = ({ navigate }) => { - return( - <TouchableOpacity onPress={() => navigate('Home')}> - <AppText style={styles.icon}>drip.</AppText> - </TouchableOpacity> - ) -} - -DripIcon.propTypes = { - navigate: PropTypes.func.isRequired -} - const styles = StyleSheet.create({ header: { backgroundColor: Colors.purple, padding: Sizes.base, ...Containers.rowContainer - }, - icon: { - color: Colors.tourquiseDark, - fontFamily: Fonts.bold, - fontSize: Sizes.title } -}) - -const mapDispatchToProps = (dispatch) => { - return({ - navigate: (page) => dispatch(navigate(page)), - }) -} - -export default connect( - null, - mapDispatchToProps, -)(Header) \ No newline at end of file +}) \ No newline at end of file diff --git a/components/header/logo.js b/components/header/logo.js new file mode 100644 index 0000000..b05080a --- /dev/null +++ b/components/header/logo.js @@ -0,0 +1,41 @@ +import React from 'react' +import { StyleSheet, TouchableOpacity } from 'react-native' +import PropTypes from 'prop-types' + +import AppText from '../common/app-text' + +import { connect } from 'react-redux' +import { navigate } from '../../slices/navigation' + +import { Colors, Fonts, Sizes } from '../../styles/redesign' + +const Logo = ({ navigate }) => { + return( + <TouchableOpacity onPress={() => navigate('Home')}> + <AppText style={styles.logo}>drip.</AppText> + </TouchableOpacity> + ) +} + +Logo.propTypes = { + navigate: PropTypes.func.isRequired +} + +const styles = StyleSheet.create({ + logo: { + color: Colors.tourquiseDark, + fontFamily: Fonts.bold, + fontSize: Sizes.title + } +}) + +const mapDispatchToProps = (dispatch) => { + return({ + navigate: (page) => dispatch(navigate(page)), + }) +} + +export default connect( + null, + mapDispatchToProps, +)(Logo) \ No newline at end of file From f0caffacdd2cd7f96ebb80fc6cdc18f70b29c7f4 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Tue, 24 Mar 2020 13:21:35 +0100 Subject: [PATCH 19/94] Moves MenuItem component from Header to separate file, naming update --- components/header/index.js | 2 +- components/header/menu-item.js | 47 +++++++++++++++++++++++++ components/header/side-menu.js | 64 ++++++++-------------------------- 3 files changed, 62 insertions(+), 51 deletions(-) create mode 100644 components/header/menu-item.js diff --git a/components/header/index.js b/components/header/index.js index 7072d2f..d810ed6 100644 --- a/components/header/index.js +++ b/components/header/index.js @@ -23,7 +23,7 @@ export default class Header extends Component { return ( <View style={styles.header}> <Logo /> - <SideMenu shouldShowMenu={shouldShowMenu} onPress={this.toggleMenu}/> + <SideMenu shouldShowMenu={shouldShowMenu} toggleMenu={this.toggleMenu}/> </View > ) } diff --git a/components/header/menu-item.js b/components/header/menu-item.js new file mode 100644 index 0000000..d848059 --- /dev/null +++ b/components/header/menu-item.js @@ -0,0 +1,47 @@ +import React from 'react' +import { StyleSheet, TouchableOpacity } from 'react-native' +import PropTypes from 'prop-types' + +import AppText from '../common/app-text' + +import { connect } from 'react-redux' +import { navigate } from '../../slices/navigation' + +import { Typography } from '../../styles/redesign' + +const MenuItem = ({ item, navigate, closeMenu }) => { + const { component, name } = item + const onPress = () => { + closeMenu() + navigate(component) + } + + return( + <TouchableOpacity onPress={onPress}> + <AppText style={styles.text}>{name}</AppText> + </TouchableOpacity> + ) +} + +MenuItem.propTypes = { + item: PropTypes.object.isRequired, + navigate: PropTypes.func.isRequired, + closeMenu: PropTypes.func.isRequired +} + +const styles = StyleSheet.create({ + text: { + ...Typography.subtitle + } +}) + +const mapDispatchToProps = (dispatch) => { + return({ + navigate: (page) => dispatch(navigate(page)), + }) +} + +export default connect( + null, + mapDispatchToProps, +)(MenuItem) diff --git a/components/header/side-menu.js b/components/header/side-menu.js index 0b48e3e..3591eee 100644 --- a/components/header/side-menu.js +++ b/components/header/side-menu.js @@ -3,52 +3,44 @@ import { Modal, StyleSheet, TouchableOpacity, View } from 'react-native' import PropTypes from 'prop-types' import AppIcon from '../common/app-icon' -import AppText from '../common/app-text' +import MenuItem from './menu-item' -import { connect } from 'react-redux' -import { navigate } from '../../slices/navigation' - -import { Sizes, Typography } from '../../styles/redesign' +import { Sizes } from '../../styles/redesign' import settingsLabels from '../../i18n/en/settings' const { menuItems } = settingsLabels const settingsMenuItems = [ - {name: menuItems.settings, component: 'SettingsMenu'}, - {name: menuItems.about, component: 'About'}, - {name: menuItems.license, component: 'License'}, + { name: menuItems.settings, component: 'SettingsMenu' }, + { name: menuItems.about, component: 'About' }, + { name: menuItems.license, component: 'License' }, ] -const SideMenu = ({ navigate, onPress, shouldShowMenu }) => { - const navigateMenuItem = (page) => { - onPress() - navigate(page) - } - +const SideMenu = ({ shouldShowMenu, toggleMenu }) => { return( <React.Fragment> {!shouldShowMenu && - <TouchableOpacity onPress={onPress}> + <TouchableOpacity onPress={toggleMenu}> <AppIcon name={'dots-three-vertical'} isCTA/> </TouchableOpacity> } {shouldShowMenu && <Modal animationType='fade' - onRequestClose={onPress} + onRequestClose={toggleMenu} transparent={true} visible={shouldShowMenu} > <View style={styles.blackBackground}></View> <View style={styles.menu}> - <TouchableOpacity onPress={onPress} style={styles.iconContainer}> - <AppIcon name={'cross'}/> + <TouchableOpacity onPress={toggleMenu} style={styles.iconContainer}> + <AppIcon name={'cross'} isCTA={false}/> </TouchableOpacity> {settingsMenuItems.map(item => <MenuItem item={item} key={item.name} - navigate={navigateMenuItem} + closeMenu={toggleMenu} /> )} </View> @@ -59,24 +51,8 @@ const SideMenu = ({ navigate, onPress, shouldShowMenu }) => { } SideMenu.propTypes = { - navigate: PropTypes.func.isRequired, - onPress: PropTypes.func, - shouldShowMenu: PropTypes.bool.isRequired -} - -const MenuItem = ({ item, navigate }) => { - return( - <View style={styles.menuItem}> - <TouchableOpacity onPress={() => navigate(item.component)}> - <AppText style={styles.text}>{item.name}</AppText> - </TouchableOpacity> - </View> - ) -} - -MenuItem.propTypes = { - item: PropTypes.object.isRequired, - navigate: PropTypes.func.isRequired, + shouldShowMenu: PropTypes.bool.isRequired, + toggleMenu: PropTypes.func } const styles = StyleSheet.create({ @@ -96,19 +72,7 @@ const styles = StyleSheet.create({ padding: Sizes.base, position: 'absolute', width: '60%' - }, - text: { - ...Typography.subtitle } }) -const mapDispatchToProps = (dispatch) => { - return({ - navigate: (page) => dispatch(navigate(page)), - }) -} - -export default connect( - null, - mapDispatchToProps, -)(SideMenu) +export default SideMenu From b9d85042ef111cfd653a48cd91995f65c6bfba32 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Tue, 24 Mar 2020 13:27:59 +0100 Subject: [PATCH 20/94] AppIcon props update --- components/common/app-icon.js | 15 +++++---------- components/header/side-menu.js | 6 +++--- components/settings/menu-item.js | 2 +- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/components/common/app-icon.js b/components/common/app-icon.js index 03bdb5e..b0b3c35 100644 --- a/components/common/app-icon.js +++ b/components/common/app-icon.js @@ -3,30 +3,25 @@ import PropTypes from 'prop-types' import { StyleSheet } from 'react-native' import Icon from 'react-native-vector-icons/Entypo' -import { Colors, Sizes } from '../../styles/redesign' +import { Sizes } from '../../styles/redesign' -const AppIcon = ({ isCTA, name }) => { - const style = isCTA ? styles.iconCTA : styles.icon +const AppIcon = ({ color, name }) => { + const style = [styles.icon, { color }] return <Icon name={name} style={style}/> } AppIcon.propTypes = { - isCTA: PropTypes.bool, + color: PropTypes.string, name: PropTypes.string.isRequired } AppIcon.defaultProps = { - isCTA: true + isCTA: 'black' } const styles = StyleSheet.create({ icon: { - color: 'black', - fontSize: Sizes.subtitle - }, - iconCTA: { - color: Colors.orange, fontSize: Sizes.subtitle } }) diff --git a/components/header/side-menu.js b/components/header/side-menu.js index 3591eee..39107cd 100644 --- a/components/header/side-menu.js +++ b/components/header/side-menu.js @@ -5,7 +5,7 @@ import PropTypes from 'prop-types' import AppIcon from '../common/app-icon' import MenuItem from './menu-item' -import { Sizes } from '../../styles/redesign' +import { Colors, Sizes } from '../../styles/redesign' import settingsLabels from '../../i18n/en/settings' const { menuItems } = settingsLabels @@ -21,7 +21,7 @@ const SideMenu = ({ shouldShowMenu, toggleMenu }) => { <React.Fragment> {!shouldShowMenu && <TouchableOpacity onPress={toggleMenu}> - <AppIcon name={'dots-three-vertical'} isCTA/> + <AppIcon name={'dots-three-vertical'} color={Colors.orange}/> </TouchableOpacity> } {shouldShowMenu && @@ -34,7 +34,7 @@ const SideMenu = ({ shouldShowMenu, toggleMenu }) => { <View style={styles.blackBackground}></View> <View style={styles.menu}> <TouchableOpacity onPress={toggleMenu} style={styles.iconContainer}> - <AppIcon name={'cross'} isCTA={false}/> + <AppIcon name={'cross'} color={'black'}/> </TouchableOpacity> {settingsMenuItems.map(item => <MenuItem diff --git a/components/settings/menu-item.js b/components/settings/menu-item.js index b9336a1..1bef222 100644 --- a/components/settings/menu-item.js +++ b/components/settings/menu-item.js @@ -23,7 +23,7 @@ const MenuItem = ({ item, last, navigate }) => { <AppText style={styles.title}>{item.name}</AppText> {item.text.length > 0 && <AppText>{item.text}</AppText>} </View> - <AppIcon name={'chevron-right'} isCTA/> + <AppIcon name={'chevron-right'} color={Colors.orange}/> </TouchableOpacity> </Segment> ) From cec8dbaf38f7908b4b78592dd8e3cf2e7f304759 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Tue, 24 Mar 2020 16:02:38 +0100 Subject: [PATCH 21/94] Introduces bottom menu redesign (Menu component) --- assets/fonts/Menu.ttf | Bin 0 -> 3488 bytes components/common/menu-icon.js | 21 +++++++++ components/menu/index.js | 50 +++++++-------------- components/menu/menu-item.js | 78 ++++++++++++++++++++++++--------- components/pages.js | 8 ++-- selection.json | 1 + styles/typography.js | 4 +- 7 files changed, 100 insertions(+), 62 deletions(-) create mode 100644 assets/fonts/Menu.ttf create mode 100644 components/common/menu-icon.js create mode 100755 selection.json diff --git a/assets/fonts/Menu.ttf b/assets/fonts/Menu.ttf new file mode 100644 index 0000000000000000000000000000000000000000..985d8eeebc1d9fea33d57f044b75805f8329cb6a GIT binary patch literal 3488 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 literal 0 HcmV?d00001 diff --git a/components/common/menu-icon.js b/components/common/menu-icon.js new file mode 100644 index 0000000..636235e --- /dev/null +++ b/components/common/menu-icon.js @@ -0,0 +1,21 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { createIconSetFromIcoMoon } from 'react-native-vector-icons' +import iconConfig from '../../selection.json' + +import { Colors, Sizes } from '../../styles/redesign' + +const Icon = createIconSetFromIcoMoon(iconConfig, '', 'Menu') + +const MenuIcon = ({ isActive, name }) => { + const color = isActive ? Colors.greyDark : Colors.grey + + return <Icon name={name} size={Sizes.icon} color={color} /> +} + +MenuIcon.propTypes = { + isActive: PropTypes.bool, + name: PropTypes.string.isRequired +} + +export default MenuIcon \ No newline at end of file diff --git a/components/menu/index.js b/components/menu/index.js index 969082e..ab7c3c9 100644 --- a/components/menu/index.js +++ b/components/menu/index.js @@ -1,30 +1,23 @@ import React from 'react' -import { View } from 'react-native' -import PropTypes from 'prop-types' +import { StyleSheet, View } from 'react-native' import MenuItem from './menu-item' -import { connect } from 'react-redux' -import { getNavigation, navigate } from '../../slices/navigation' - +import { Containers } from '../../styles/redesign' import { pages } from '../pages' -import styles from '../../styles' - -const Menu = ({ navigate, navigation }) => { +const Menu = () => { const menuItems = pages.filter(page => page.isInMenu) + return ( - <View style={styles.menu}> - { menuItems.map(({ icon, label, component, children }) => { - const isActive = (component === navigation.currentPage) || - (children && children.indexOf(navigation.currentPage) !== -1) + <View style={styles.container}> + { menuItems.map(({ icon, label, component }) => { return ( <MenuItem + component={component} + icon={icon} key={label} label={label} - icon={icon} - active={isActive} - onPress={() => navigate(component)} /> )} )} @@ -32,24 +25,11 @@ const Menu = ({ navigate, navigation }) => { ) } -Menu.propTypes = { - navigation: PropTypes.object, - navigate: PropTypes.func, -} +const styles = StyleSheet.create({ + container: { + backgroundColor: 'white', + ...Containers.rowContainer + } +}) -const mapStateToProps = (state) => { - return({ - navigation: getNavigation(state), - }) -} - -const mapDispatchToProps = (dispatch) => { - return({ - navigate: (page) => dispatch(navigate(page)), - }) -} - -export default connect( - mapStateToProps, - mapDispatchToProps, -)(Menu) \ No newline at end of file +export default Menu \ No newline at end of file diff --git a/components/menu/menu-item.js b/components/menu/menu-item.js index 8dc1bcd..fc26212 100644 --- a/components/menu/menu-item.js +++ b/components/menu/menu-item.js @@ -1,36 +1,72 @@ import React from 'react' import PropTypes from 'prop-types' -import { Text, TouchableOpacity } from 'react-native' +import { StyleSheet, Text, TouchableOpacity } from 'react-native' -import styles, { iconStyles, secondaryColor } from '../../styles' -import Icon from 'react-native-vector-icons/MaterialCommunityIcons' +import Icon from '../common/menu-icon' -import { menuTitles } from '../../i18n/en/labels' +import { connect } from 'react-redux' +import { getNavigation, navigate } from '../../slices/navigation' -const menuTitlesLowerCase = Object.keys(menuTitles).reduce((acc, curr) => { - acc[curr] = menuTitles[curr].toLowerCase() - return acc -}, {}) +import { Colors, Containers, Fonts, Sizes, Spacing } from '../../styles/redesign' -export default function MenuItem({ active, icon, label, onPress }) { - const styleActive = active ? { color: secondaryColor } : null +const MenuItem = ({ component, icon, label, navigate, navigation }) => { + const isActive = (component === navigation.currentPage) + const textStyle = isActive ? styles.menuTextActive : styles.menuText + const testID = isActive ? 'activeMenuItem' : `menuItem${label}` return ( - <TouchableOpacity style={styles.menuItem} onPress={onPress} > - <Icon name={icon} {...iconStyles.menuIcon} {...styleActive} /> - <Text - testID={active ? 'activeMenuItem' : `menuItem${label}`} - style={[styles.menuText, styleActive]} - > - {menuTitlesLowerCase[label]} - </Text> + <TouchableOpacity + style={styles.button} + onPress={() => navigate(component)} + > + <Icon name={icon} isActive={isActive}/> + <Text testID={testID} style={textStyle} >{label}</Text> </TouchableOpacity> ) } MenuItem.propTypes = { - active: PropTypes.bool, + component: PropTypes.string.isRequired, icon: PropTypes.string.isRequired, label: PropTypes.string.isRequired, - onPress: PropTypes.func.isRequired -} \ No newline at end of file + navigation: PropTypes.object, + navigate: PropTypes.func, +} + +const text = { + fontFamily: Fonts.bold, + fontSize: Sizes.small, + textTransform: 'uppercase' +} + +const styles = StyleSheet.create({ + button: { + padding: Spacing.base, + ...Containers.centerItems + }, + menuText: { + color: Colors.grey, + ...text + }, + menuTextActive: { + color: Colors.orange, + ...text + } +}) + +const mapStateToProps = (state) => { + return({ + navigation: getNavigation(state), + }) +} + +const mapDispatchToProps = (dispatch) => { + return({ + navigate: (page) => dispatch(navigate(page)), + }) +} + +export default connect( + mapStateToProps, + mapDispatchToProps, +)(MenuItem) diff --git a/components/pages.js b/components/pages.js index 3f11562..a4e6bc6 100644 --- a/components/pages.js +++ b/components/pages.js @@ -19,26 +19,25 @@ export const pages = [ { component: 'Home', icon: 'home', - isInMenu: true, label: 'Home', }, { component: 'Calendar', - icon: 'calendar-range', + icon: 'calendar', isInMenu: true, label: 'Calendar', parent: 'Home', }, { component: 'Chart', - icon: 'chart-line', + icon: 'chart', isInMenu: true, label: 'Chart', parent: 'Home', }, { component: 'Stats', - icon: 'chart-pie', + icon: 'statistics', isInMenu: true, label: 'Stats', parent: 'Home', @@ -47,7 +46,6 @@ export const pages = [ children: Object.keys(settingsViews), component: 'SettingsMenu', icon: 'settings', - isInMenu: true, label: 'Settings', parent: 'Home', }, diff --git a/selection.json b/selection.json new file mode 100755 index 0000000..22aea2a --- /dev/null +++ b/selection.json @@ -0,0 +1 @@ +{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M978.192 487.15c-3.642-2.692-8.217-3.808-12.7-3.108l-404.883 62.3c-6.692 1.025-12.15 5.917-13.892 12.458-1.75 6.542 0.533 13.5 5.817 17.725l319.775 255.833c7.367 5.892 18.108 4.7 24-2.658 60.858-75.458 93.9-169.558 93.558-266.5-0.008-21.708-1.642-43.392-4.9-64.85-0.683-4.483-3.117-8.517-6.775-11.2v0zM880.042 794.808l-275.883-220.65 349.217-53.725c1.558 14.2 2.342 28.475 2.358 42.767 0.308 83.333-26.233 164.542-75.692 231.608z","M492.717 553.217l-114.842-387.667c-1.283-4.35-4.25-8.008-8.225-10.167-3.983-2.158-8.667-2.65-13.008-1.358-149.65 44.225-263.183 166.675-295.983 319.233s20.367 310.85 138.608 412.675l-103.933 103.933h-95.333v34.133h102.4c4.525 0 8.867-1.8 12.067-5l111.633-111.633c184.242 135.142 442.283 100.867 584.875-77.667 5.892-7.367 4.7-18.108-2.667-24l-315.592-252.483zM475.525 952.442c-80.117 0.058-158.242-24.958-223.417-71.542l55.092-55.075v56.708l34.133-34.133v-80.4h-80.433l-34.133 34.133h56.708l-58.025 58.025c-105.542-89.675-154.825-229.1-129.1-365.183 25.733-136.083 122.525-247.883 253.517-292.833l109.583 369.425c0.983 3.275 2.933 6.175 5.6 8.325l300.933 240.642c-73.108 84.008-179.092 132.133-290.458 131.908z","M921.6 0c-4.525 0-8.867 1.8-12.067 5l-132.492 132.492c-104.008-68.267-232.842-87.167-352.083-51.667-9.042 2.675-14.2 12.175-11.517 21.217l116.358 392.742c2.142 7.233 8.783 12.2 16.333 12.217 0.875 0 1.75-0.067 2.608-0.208l404.908-62.292c9.3-1.433 15.692-10.133 14.267-19.433-17.025-108.425-75.267-206.083-162.575-272.592l123.325-123.342h95.333v-34.133h-102.4zM926.092 416.425l-366.575 56.325-105.358-355.283c101.033-25.342 208.033-8.283 296.175 47.208l-84.733 84.7v-56.708l-34.133 34.133v80.4h80.433l34.133-34.133h-56.708l89.15-89.125c76.158 56.675 128.717 139.458 147.617 232.483v0z","M938.667 51.2h85.333v34.133h-85.333z","M887.467 102.4h136.533v34.133h-136.533z","M989.867 153.6h34.133v34.133h-34.133z","M887.467 153.6h85.333v34.133h-85.333z","M0 938.667h85.333v34.133h-85.333z","M0 887.467h136.533v34.133h-136.533z","M0 836.267h34.133v34.133h-34.133z","M51.2 836.267h85.333v34.133h-85.333z"],"attrs":[{},{},{},{},{},{},{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["statistics"]},"attrs":[{},{},{},{},{},{},{},{},{},{},{}],"properties":{"order":2,"id":2,"name":"statistics","prevSize":32,"code":59648},"setIdx":0,"setId":2,"iconIdx":0},{"icon":{"paths":["M18.006 0c-9.322 0-16.88 7.558-16.88 16.88v187.092c0.002 9.322 7.558 16.88 16.88 16.88s16.88-7.558 16.88-16.88v-187.092c0-9.322-7.556-16.88-16.88-16.88z","M1005.996 990.24h-967.94c13.25-74.266 64.254-339.404 134.452-446.468 12.788 11.386 29.62 18.324 48.046 18.324 17.384 0 33.35-6.166 45.84-16.422 9.598 26.156 15.472 60.96 21.592 97.334 11.464 68.13 23.322 138.452 63.164 176.572-0.254 2.464-0.39 4.964-0.39 7.496 0 39.89 32.452 72.344 72.344 72.344 39.89 0 72.342-32.452 72.342-72.344 0-7.7-1.22-15.114-3.46-22.080 31.302-49.986 38.098-137.474 45.272-229.966 6.288-81.084 12.784-164.584 36.87-210.060 13.13 13.336 31.372 21.624 51.522 21.624 20.19 0 38.464-8.322 51.6-21.704 17.594 32.478 22.606 84.46 27.474 135.012 5.922 61.51 11.526 119.708 38.352 155.906-1.414 5.634-2.174 11.522-2.174 17.59 0 39.89 32.452 72.344 72.344 72.344s72.344-32.452 72.344-72.344c0-7.744-1.236-15.2-3.5-22.2 28.724-43.006 35.702-114.888 43.062-190.832 5.062-52.238 10.294-106.254 23.212-145.062 12.93-38.846 30.704-56.172 57.63-56.172 9.324 0 16.88-7.558 16.88-16.88s-7.556-16.88-16.88-16.88c-41.986 0-72.152 26.668-89.662 79.268-14.118 42.42-19.542 98.366-24.784 152.468-5.914 61.050-12.014 123.864-30.228 162.294-12.79-11.402-29.636-18.348-48.076-18.348-19.902 0-37.948 8.080-51.042 21.128-14.75-30.794-19.38-78.816-23.876-125.518-5.99-62.238-12.184-126.46-42.508-164.826 1.414-5.636 2.174-11.526 2.174-17.592 0-39.89-32.452-72.344-72.344-72.344s-72.344 32.452-72.344 72.344c0 5.964 0.74 11.754 2.106 17.302-36.906 48.862-44.162 142.184-51.814 240.864-5.892 75.98-11.968 154.218-32.7 200.42-12.756-11.256-29.488-18.106-47.796-18.106-23.846 0-45.026 11.602-58.212 29.452-24.506-33.326-34.206-90.86-43.616-146.78-7.982-47.44-15.566-92.416-32.324-124.136 2.546-7.38 3.946-15.286 3.946-23.518 0-39.89-32.452-72.344-72.342-72.344s-72.344 32.452-72.344 72.344c0 8.406 1.456 16.474 4.104 23.986-50.636 68.72-91.154 209.734-117.428 323.118v-565.372c0-9.322-7.558-16.88-16.88-16.88s-16.88 7.558-16.88 16.88v735.642c0 0.104 0.014 0.202 0.016 0.306 0.006 0.336 0.024 0.668 0.050 1 0.018 0.234 0.036 0.466 0.062 0.696 0.038 0.32 0.088 0.634 0.144 0.948 0.042 0.246 0.088 0.488 0.14 0.73 0.062 0.282 0.138 0.56 0.216 0.838 0.072 0.264 0.146 0.526 0.232 0.784 0.082 0.248 0.174 0.488 0.268 0.732 0.106 0.274 0.212 0.55 0.33 0.818 0.098 0.22 0.208 0.434 0.312 0.65 0.136 0.272 0.272 0.542 0.42 0.806 0.12 0.21 0.248 0.412 0.374 0.614 0.158 0.252 0.316 0.502 0.486 0.748 0.146 0.21 0.302 0.41 0.46 0.612 0.172 0.22 0.34 0.442 0.52 0.652s0.37 0.412 0.558 0.614c0.176 0.186 0.348 0.374 0.534 0.554 0.212 0.204 0.432 0.4 0.654 0.596 0.182 0.16 0.362 0.32 0.552 0.472 0.234 0.19 0.48 0.364 0.724 0.542 0.198 0.142 0.392 0.284 0.596 0.416 0.246 0.16 0.498 0.308 0.752 0.456 0.224 0.13 0.45 0.26 0.68 0.382 0.24 0.124 0.486 0.238 0.734 0.354 0.264 0.122 0.526 0.24 0.796 0.348 0.228 0.090 0.462 0.174 0.694 0.254 0.302 0.106 0.606 0.208 0.916 0.294 0.22 0.064 0.446 0.118 0.672 0.174 0.326 0.078 0.654 0.152 0.988 0.212 0.1 0.018 0.194 0.048 0.292 0.062 0.086 0.014 0.168 0.010 0.254 0.020 0.796 0.118 1.606 0.196 2.438 0.198 0.014 0 0.024 0.002 0.038 0.002 0.016 0 0.032-0.002 0.050-0.002h987.914c9.324 0 16.88-7.558 16.88-16.88 0.004-9.32-7.55-16.88-16.874-16.88zM813.25 634.816c21.274 0 38.586 17.308 38.586 38.586 0 21.276-17.308 38.586-38.586 38.586-21.274 0-38.586-17.308-38.586-38.586s17.312-38.586 38.586-38.586zM625.654 275.666c21.274 0 38.586 17.308 38.586 38.586 0 21.276-17.308 38.586-38.586 38.586-21.274 0-38.586-17.308-38.586-38.586 0-21.276 17.312-38.586 38.586-38.586zM423.108 788.49c21.276 0 38.584 17.308 38.584 38.586s-17.308 38.586-38.584 38.586c-21.276 0-38.586-17.308-38.586-38.586s17.308-38.586 38.586-38.586zM220.558 451.166c21.276 0 38.584 17.308 38.584 38.586 0 21.276-17.308 38.586-38.584 38.586-13.382 0-25.186-6.856-32.11-17.23-0.652-2.33-1.822-4.528-3.468-6.434-1.934-4.594-3.006-9.634-3.006-14.922-0.002-21.276 17.308-38.586 38.584-38.586z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["chart"]},"attrs":[{},{}],"properties":{"order":3,"id":1,"name":"chart","prevSize":32,"code":59649},"setIdx":0,"setId":2,"iconIdx":1},{"icon":{"paths":["M757.389 70.621c-8.21-40.236-43.855-70.621-86.493-70.621-9.763 0-17.655 7.892-17.655 17.655s7.892 17.655 17.655 17.655c29.202 0 52.966 23.764 52.966 52.966s-23.764 52.966-52.966 52.966c-9.763 0-17.655 7.892-17.655 17.655s7.892 17.655 17.655 17.655c42.62 0 78.283-30.385 86.493-70.621h231.3v158.897h-953.379v-158.897h300.138c9.763 0 17.655-7.892 17.655-17.655s-7.892-17.655-17.655-17.655h-32.062c7.309-20.515 26.73-35.31 49.717-35.31 29.202 0 52.966 23.764 52.966 52.966s-23.764 52.966-52.966 52.966c-9.763 0-17.655 7.892-17.655 17.655s7.892 17.655 17.655 17.655c48.675 0 88.276-39.601 88.276-88.276s-39.601-88.276-88.276-88.276c-42.62 0-78.283 30.385-86.493 70.621h-266.611v935.724h1024v-935.724h-266.611zM988.69 971.034h-953.379v-670.897h953.379v670.897z","M459.034 35.31c29.202 0 52.966 23.764 52.966 52.966s-23.764 52.966-52.966 52.966c-9.763 0-17.655 7.892-17.655 17.655s7.892 17.655 17.655 17.655c48.675 0 88.276-39.601 88.276-88.276s-39.601-88.276-88.276-88.276c-9.763 0-17.655 7.892-17.655 17.655s7.892 17.655 17.655 17.655z","M564.966 35.31c29.202 0 52.966 23.764 52.966 52.966s-23.764 52.966-52.966 52.966c-9.763 0-17.655 7.892-17.655 17.655s7.892 17.655 17.655 17.655c48.675 0 88.276-39.601 88.276-88.276s-39.601-88.276-88.276-88.276c-9.763 0-17.655 7.892-17.655 17.655s7.892 17.655 17.655 17.655z","M409.747 423.724c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M533.333 423.724c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M656.92 423.724c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M780.506 423.724c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M904.092 423.724c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M162.575 564.966c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M286.161 564.966c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M409.747 564.966c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M533.333 564.966c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M656.92 564.966c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M780.506 564.966c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M904.092 564.966c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M162.575 688.552c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M286.161 688.552c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M409.747 688.552c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M533.333 688.552c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M656.92 688.552c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M780.506 688.552c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M904.092 688.552c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M162.575 829.793c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M286.161 829.793c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M409.747 829.793c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M533.333 829.793c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z","M656.92 829.793c0 11.782-9.551 21.333-21.333 21.333s-21.333-9.551-21.333-21.333c0-11.782 9.551-21.333 21.333-21.333s21.333 9.551 21.333 21.333z"],"attrs":[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["calendar"]},"attrs":[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}],"properties":{"order":4,"id":0,"name":"calendar","prevSize":32,"code":59650},"setIdx":0,"setId":2,"iconIdx":2}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon"},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"classSelector":".icon"},"historySize":50,"showCodes":true,"gridSize":16}} \ No newline at end of file diff --git a/styles/typography.js b/styles/typography.js index effa01c..82527a8 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -7,9 +7,11 @@ export const fonts = { } export const sizes = { + small: 14, base: 18, subtitle: 22, - title: 24 + title: 24, + icon: 40 } const title = { From 1077f878ae0c7cddfee9a23982ab7b1366ed3618 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Tue, 24 Mar 2020 16:09:44 +0100 Subject: [PATCH 22/94] AppIcon fix --- components/common/app-icon.js | 2 +- components/header/side-menu.js | 4 ++-- components/settings/menu-item.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/common/app-icon.js b/components/common/app-icon.js index b0b3c35..b719d74 100644 --- a/components/common/app-icon.js +++ b/components/common/app-icon.js @@ -17,7 +17,7 @@ AppIcon.propTypes = { } AppIcon.defaultProps = { - isCTA: 'black' + color: 'black' } const styles = StyleSheet.create({ diff --git a/components/header/side-menu.js b/components/header/side-menu.js index 39107cd..93d6f17 100644 --- a/components/header/side-menu.js +++ b/components/header/side-menu.js @@ -21,7 +21,7 @@ const SideMenu = ({ shouldShowMenu, toggleMenu }) => { <React.Fragment> {!shouldShowMenu && <TouchableOpacity onPress={toggleMenu}> - <AppIcon name={'dots-three-vertical'} color={Colors.orange}/> + <AppIcon name='dots-three-vertical' color={Colors.orange}/> </TouchableOpacity> } {shouldShowMenu && @@ -34,7 +34,7 @@ const SideMenu = ({ shouldShowMenu, toggleMenu }) => { <View style={styles.blackBackground}></View> <View style={styles.menu}> <TouchableOpacity onPress={toggleMenu} style={styles.iconContainer}> - <AppIcon name={'cross'} color={'black'}/> + <AppIcon name='cross' color='black'/> </TouchableOpacity> {settingsMenuItems.map(item => <MenuItem diff --git a/components/settings/menu-item.js b/components/settings/menu-item.js index 1bef222..7739b06 100644 --- a/components/settings/menu-item.js +++ b/components/settings/menu-item.js @@ -23,7 +23,7 @@ const MenuItem = ({ item, last, navigate }) => { <AppText style={styles.title}>{item.name}</AppText> {item.text.length > 0 && <AppText>{item.text}</AppText>} </View> - <AppIcon name={'chevron-right'} color={Colors.orange}/> + <AppIcon name='chevron-right' color={Colors.orange}/> </TouchableOpacity> </Segment> ) From b6c0fd0dce7fd015e8d5a1a7506eaf2650da11ec Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Tue, 24 Mar 2020 16:13:59 +0100 Subject: [PATCH 23/94] SideMenu fix --- components/header/side-menu.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/components/header/side-menu.js b/components/header/side-menu.js index 93d6f17..5c960fc 100644 --- a/components/header/side-menu.js +++ b/components/header/side-menu.js @@ -31,7 +31,11 @@ const SideMenu = ({ shouldShowMenu, toggleMenu }) => { transparent={true} visible={shouldShowMenu} > - <View style={styles.blackBackground}></View> + <TouchableOpacity + onPress={toggleMenu} + style={styles.blackBackground} + > + </TouchableOpacity> <View style={styles.menu}> <TouchableOpacity onPress={toggleMenu} style={styles.iconContainer}> <AppIcon name='cross' color='black'/> From 29d76d19b11e9fd94a6fd76e563108e5a16200d8 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Tue, 24 Mar 2020 20:15:01 +0100 Subject: [PATCH 24/94] Introduces Home component redesign --- components/common/app-text.js | 11 +- components/common/button.js | 31 ++++-- components/common/link.js | 7 +- components/common/menu-icon.js | 2 +- components/helpers/home.js | 7 ++ components/home-element.js | 40 ------- components/home.js | 197 +++++++++++++++++---------------- components/icon-text.js | 24 ---- i18n/en/labels.js | 8 +- styles/spacing.js | 1 + styles/typography.js | 2 +- 11 files changed, 150 insertions(+), 180 deletions(-) delete mode 100644 components/home-element.js delete mode 100644 components/icon-text.js diff --git a/components/common/app-text.js b/components/common/app-text.js index e7c1270..d431466 100644 --- a/components/common/app-text.js +++ b/components/common/app-text.js @@ -6,10 +6,16 @@ import Link from './link' import { Colors, Typography } from '../../styles/redesign' -export default function AppText({ children, onPress, numberOfLines, style}) { +export default function AppText({ + children, + linkStyle, + onPress, + numberOfLines, + style +}) { // we parse for links in case the text contains any return ( - <Link> + <Link style={linkStyle}> <Text style={[styles.text, style]} onPress={onPress} numberOfLines={numberOfLines} @@ -22,6 +28,7 @@ export default function AppText({ children, onPress, numberOfLines, style}) { AppText.propTypes = { children: PropTypes.node, + linkStyle: PropTypes.object, onPress: PropTypes.func, numberOfLines: PropTypes.number, style: PropTypes.oneOfType([PropTypes.array, PropTypes.object]), diff --git a/components/common/button.js b/components/common/button.js index afd57e5..fd2213f 100644 --- a/components/common/button.js +++ b/components/common/button.js @@ -7,7 +7,7 @@ import AppText from './app-text' import { Colors, Fonts, Spacing } from '../../styles/redesign' const Button = ({ children, isCTA, onPress, testID }) => { - const buttonStyle = isCTA ? styles.orange : {} + const buttonStyle = isCTA ? styles.cta : styles.regular const textStyle = isCTA ? styles.buttonTextBold : styles.buttonTextRegular return ( <TouchableOpacity onPress={onPress} style={buttonStyle} testID={testID}> @@ -23,24 +23,35 @@ Button.propTypes = { testID: PropTypes.string } -const button = { - paddingHorizontal: Spacing.large, - paddingVertical: Spacing.base, +const text = { + padding: Spacing.base, textTransform: 'uppercase' } +const button = { + alignItems: 'center', + justifyContent: 'center', + margin: Spacing.base +} + const styles = StyleSheet.create({ - orange: { + regular: { + ...button + }, + cta: { backgroundColor: Colors.orange, - borderRadius: 25 + borderRadius: 25, + ...button }, buttonTextBold: { - fontFamily: Fonts.main, - ...button + color: 'white', + fontFamily: Fonts.bold, + ...text }, buttonTextRegular: { - fontFamily: Fonts.bold, - ...button + color: Colors.greyDark, + fontFamily: Fonts.main, + ...text } }) diff --git a/components/common/link.js b/components/common/link.js index 8b1293f..c221361 100644 --- a/components/common/link.js +++ b/components/common/link.js @@ -7,10 +7,10 @@ import { Colors, Typography } from '../../styles/redesign' import links from '../../i18n/en/links' -const Link = ({ children }) => { +const Link = ({ children, style }) => { return ( <Hyperlink - linkStyle={styles.link} + linkStyle={[styles.link, style]} linkText={replaceUrlWithText} linkDefault > @@ -20,7 +20,8 @@ const Link = ({ children }) => { } Link.propTypes = { - children: PropTypes.node + children: PropTypes.node, + style: PropTypes.object } const styles = StyleSheet.create({ diff --git a/components/common/menu-icon.js b/components/common/menu-icon.js index 636235e..abe7f83 100644 --- a/components/common/menu-icon.js +++ b/components/common/menu-icon.js @@ -10,7 +10,7 @@ const Icon = createIconSetFromIcoMoon(iconConfig, '', 'Menu') const MenuIcon = ({ isActive, name }) => { const color = isActive ? Colors.greyDark : Colors.grey - return <Icon name={name} size={Sizes.icon} color={color} /> + return <Icon name={name} size={Sizes.huge} color={color} /> } MenuIcon.propTypes = { diff --git a/components/helpers/home.js b/components/helpers/home.js index 98e9f20..1da8516 100644 --- a/components/helpers/home.js +++ b/components/helpers/home.js @@ -62,3 +62,10 @@ export function getBleedingPredictionRange(prediction) { } return (daysToEnd === 0 ? '0' : `0 - ${daysToEnd}`) } + +export const dateEnding = { + '1': 'st', + '2': 'nd', + '3': 'rd', + 'default': 'th' +} diff --git a/components/home-element.js b/components/home-element.js deleted file mode 100644 index 7f50f35..0000000 --- a/components/home-element.js +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react' -import { View } from 'react-native' -import PropTypes from 'prop-types' - -import Button from './common/button' - -import styles from '../styles' - -const HomeElement = ({ children, onPress, buttonColor, buttonLabel }) => { - return ( - <View - onPress={ onPress } - style={ styles.homeElement } - > - <View style={styles.homeIconAndText}> - {children[0]} - {children[1]} - </View> - - <View style={{paddingLeft: 15}}> - {children.slice(2)} - <Button - style={styles.homeButton} - onPress={ onPress } - backgroundColor={ buttonColor }> - { buttonLabel } - </Button> - </View> - </View> - ) -} - -HomeElement.propTypes = { - buttonColor: PropTypes.string, - buttonLabel: PropTypes.string, - children: PropTypes.node, - onPress: PropTypes.func, -} - -export default HomeElement diff --git a/components/home.js b/components/home.js index b76bfd6..7cc52a0 100644 --- a/components/home.js +++ b/components/home.js @@ -1,54 +1,51 @@ -import { LocalDate } from 'js-joda' import React, { Component } from 'react' -import { ScrollView, View } from 'react-native' -import { connect } from 'react-redux' +import { ScrollView, StyleSheet, View } from 'react-native' import PropTypes from 'prop-types' +import { LocalDate } from 'js-joda' + +import { connect } from 'react-redux' import { navigate } from '../slices/navigation' import { getDate, setDate } from '../slices/date' -import DripHomeIcon from '../assets/drip-home-icons' - import AppText from './common/app-text' -import IconText from './icon-text' -import HomeElement from './home-element' - -import { home as labels } from '../i18n/en/labels' -import links from '../i18n/en/links' +import Button from './common/button' import cycleModule from '../lib/cycle' import { getFertilityStatusForDay } from '../lib/sympto-adapter' -import { - determinePredictionText, - getBleedingPredictionRange -} from './helpers/home' +import { determinePredictionText, dateEnding } from './helpers/home' -import styles, { cycleDayColor, periodColor, secondaryColor } from '../styles' +import { Colors, Fonts, Sizes, Spacing } from '../styles/redesign' +import { homeRedesign as labels, home as cycle } from '../i18n/en/labels' class Home extends Component { static propTypes = { navigate: PropTypes.func, - setDate: PropTypes.func, - // The following are not being used, - // we could see if it's possible to not pass them from the <App /> - cycleDay: PropTypes.object, - date: PropTypes.string, + setDate: PropTypes.func } constructor(props) { super(props) + const today = LocalDate.now() + this.todayDateString = today.toString() const { getCycleDayNumber, getPredictedMenses } = cycleModule() - - this.todayDateString = LocalDate.now().toString() this.cycleDayNumber = getCycleDayNumber(this.todayDateString) - + const {status, phase, statusText} = + getFertilityStatusForDay(this.todayDateString) const prediction = getPredictedMenses() - this.predictionText = determinePredictionText(prediction) - this.bleedingPredictionRange = getBleedingPredictionRange(prediction) - this.fertilityStatus = getFertilityStatusForDay(this.todayDateString) + this.cycleDayText = !this.cycleDayNumber ? cycle.cycleDayNotEnoughInfo + : `${this.cycleDayNumber}${dateEnding[this.cycleDayNumber] || dateEnding['default']}` + this.phase = phase + this.phaseText = !phase ? statusText + : `${phase}${dateEnding[phase] || dateEnding['default']}` + this.prediction = determinePredictionText(prediction) + this.status = status + this.statusText = statusText + this.title = `${today.dayOfMonth()} ${today.month()}` + } navigateToCycleDayView = () => { @@ -56,88 +53,92 @@ class Home extends Component { this.props.navigate('CycleDay') } - navigateToBleedingEditView = () => { - this.props.setDate(this.todayDateString) - this.props.navigate('BleedingEditView') - } - - navigateToChart = () => { - this.props.navigate('Chart') - } - render() { const { - cycleDayNumber, - predictionText, - bleedingPredictionRange, + cycleDayText, + phase, + phaseText, + prediction, + status, + statusText, + title } = this - const { phase, status, statusText } = this.fertilityStatus - - const cycleDayMoreText = cycleDayNumber ? - labels.cycleDayKnown(cycleDayNumber) : - labels.cycleDayNotEnoughInfo - return ( - <View flex={1}> - <ScrollView> - <View style={styles.homeView}> - <HomeElement - onPress={this.navigateToCycleDayView} - buttonColor={ cycleDayColor } - buttonLabel={ labels.editToday } - > - <View> - <DripHomeIcon name="circle" size={80} color={cycleDayColor}/> - </View> - <IconText>{cycleDayNumber || labels.unknown}</IconText> - - <AppText style={styles.homeDescriptionText}> - {cycleDayMoreText} - </AppText> - </HomeElement> - - <HomeElement - onPress={this.navigateToBleedingEditView} - buttonColor={ periodColor } - buttonLabel={ labels.trackPeriod } - > - <DripHomeIcon name="drop" size={100} color={periodColor} /> - - <IconText wrapperStyles={{ top: '45%' }}> - {bleedingPredictionRange} - </IconText> - - <AppText style={styles.homeDescriptionText}> - {predictionText} - </AppText> - </HomeElement> - - <HomeElement - onPress={this.navigateToChart} - buttonColor={ secondaryColor } - buttonLabel={ labels.checkFertility } - > - <View style={styles.homeCircle}/> - - <IconText>{ phase ? phase.toString() : labels.unknown }</IconText> - - { phase && - <AppText style={styles.homeDescriptionText}> - {`${labels.phase(phase)} (${status})`} - </AppText> - } - <AppText style={styles.homeDescriptionText}> - { `${statusText} Visit ${links.wiki.url}.` } - </AppText> - </HomeElement> + <ScrollView + style={styles.container} + contentContainerStyle={styles.contentContainer} + > + <AppText style={styles.title}>{title}</AppText> + <View style={styles.line}> + {this.cycleDayNumber && ( + <React.Fragment> + <AppText style={styles.whiteText}>{cycleDayText}</AppText> + <AppText>{labels.cycleDay}</AppText> + </React.Fragment> + )} + {!this.cycleDayNumber && <AppText>{cycleDayText}</AppText>} + </View> + <View style={styles.line}> + {!phase && <AppText>{phaseText}</AppText>} + {phase && ( + <React.Fragment> + <AppText style={styles.whiteText}>{phaseText}</AppText> + <AppText>{labels.cyclePhase}</AppText> + <AppText>{status}</AppText> + <Asterisk /> + </React.Fragment> + )} + </View> + <View style={styles.line}> + <AppText>{prediction}</AppText> + </View> + <Button onPress={this.navigateToCycleDayView} isCTA> + {labels.addData} + </Button> + {phase && ( + <View style={styles.line}> + <Asterisk /> + <AppText linkStyle={styles.whiteText}>{statusText}</AppText> </View> - </ScrollView> - </View> + )} + </ScrollView> ) } } +const Asterisk = () => { + return <AppText style={styles.asterisk}>*</AppText> +} + +const styles = StyleSheet.create({ + asterisk: { + color: Colors.orange, + paddingRight: Spacing.base + }, + container: { + backgroundColor: Colors.purple, + flex: 1 + }, + contentContainer: { + padding: Spacing.base + }, + line: { + flexDirection: 'row', + justifyContent: 'flex-start', + marginBottom: Spacing.tiny + }, + title: { + color: Colors.purpleLight, + fontFamily: Fonts.bold, + fontSize: Sizes.huge, + marginVertical: Spacing.base, + }, + whiteText: { + color: 'white' + } +}) + const mapStateToProps = (state) => { return({ date: getDate(state), diff --git a/components/icon-text.js b/components/icon-text.js deleted file mode 100644 index be3b406..0000000 --- a/components/icon-text.js +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react' -import { View } from 'react-native' -import PropTypes from 'prop-types' - -import AppText from './common/app-text' - -import styles from '../styles' - -const IconText = ({ children, wrapperStyles }) => { - return ( - <View style={[ styles.homeIconTextWrapper, wrapperStyles ]}> - <AppText style={styles.iconText}> - { children } - </AppText> - </View> - ) -} - -IconText.propTypes = { - children: PropTypes.node, - wrapperStyles: PropTypes.object, -} - -export default IconText diff --git a/i18n/en/labels.js b/i18n/en/labels.js index 7aec163..4dd59fe 100644 --- a/i18n/en/labels.js +++ b/i18n/en/labels.js @@ -1,6 +1,12 @@ import labels from './settings' const settingsTitles = labels.menuItems +export const homeRedesign = { + cycleDay: ' day of your cycle', + cyclePhase: ' cycle phase - ', + addData: 'add data for today' +} + export const shared = { cancel: 'Cancel', save: 'Save', @@ -113,7 +119,7 @@ export const fertilityStatus = { fertileUntilEvening: 'Fertile phase ends in the evening', unknown: 'We cannot show any cycle information because no period data has been added.', preOvuText: "With NFP rules, you may assume 5 days of infertility at the beginning of your cycle, provided you don't observe any fertile cervical mucus or cervix values.", - periOvuText: "We have not been able to detect both a temperature shift and cervical mucus or cervix shift. Please find more information on NFP rules here:", + periOvuText: "We have not been able to detect both a temperature shift and cervical mucus or cervix shift. Please find more information on NFP rules here: https://gitlab.com/bloodyhealth/drip/wikis/home", postOvuText: tempRule => { return ( 'We have detected a temperature shift (' + ['regular', '1st exception', '2nd exception'][tempRule] + diff --git a/styles/spacing.js b/styles/spacing.js index 9b2a0b5..32c5797 100644 --- a/styles/spacing.js +++ b/styles/spacing.js @@ -1,4 +1,5 @@ export default { + tiny: 4, small: 10, base: 16, large: 20 diff --git a/styles/typography.js b/styles/typography.js index 82527a8..4dcf274 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -11,7 +11,7 @@ export const sizes = { base: 18, subtitle: 22, title: 24, - icon: 40 + huge: 40 } const title = { From c090e14835a5d322523d92b354e92b409dff1a47 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Wed, 25 Mar 2020 13:47:21 +0100 Subject: [PATCH 25/94] Introduces Reminders page redesign --- components/common/app-switch.js | 38 +++++++ components/settings/reminders.js | 99 +++++++++++++++++++ components/settings/reminders/index.js | 29 ------ .../settings/reminders/period-reminder.js | 35 ------- .../reminders/temp-reminder-picker.js | 73 -------------- 5 files changed, 137 insertions(+), 137 deletions(-) create mode 100644 components/common/app-switch.js create mode 100644 components/settings/reminders.js delete mode 100644 components/settings/reminders/index.js delete mode 100644 components/settings/reminders/period-reminder.js delete mode 100644 components/settings/reminders/temp-reminder-picker.js diff --git a/components/common/app-switch.js b/components/common/app-switch.js new file mode 100644 index 0000000..71d5262 --- /dev/null +++ b/components/common/app-switch.js @@ -0,0 +1,38 @@ +import React from 'react' +import { StyleSheet, Switch, View } from 'react-native' +import PropTypes from 'prop-types' + +import AppText from './app-text' + +import { Containers } from '../../styles/redesign' + +const AppSwitch = ({ onToggle, text, value }) => { + return ( + <View style={styles.line}> + <View style={styles.textContainer}> + <AppText>{text}</AppText> + </View> + <Switch onValueChange={onToggle} style={styles.switch} value={value} /> + </View> + ) +} + +AppSwitch.propTypes = { + onToggle: PropTypes.func.isRequired, + text: PropTypes.string, + value: PropTypes.bool.isRequired +} + +const styles = StyleSheet.create({ + line: { + ...Containers.rowContainer + }, + switch: { + flex: 1, + }, + textContainer: { + flex: 4, + } +}) + +export default AppSwitch \ No newline at end of file diff --git a/components/settings/reminders.js b/components/settings/reminders.js new file mode 100644 index 0000000..76ed70c --- /dev/null +++ b/components/settings/reminders.js @@ -0,0 +1,99 @@ +import React, { Component } from 'react' +import DateTimePicker from 'react-native-modal-datetime-picker-nevo' + +import AppPage from '../common/app-page' +import AppSwitch from '../common/app-switch' +import Segment from '../common/segment' + +import { + periodReminderObservable, + savePeriodReminder, + saveTempReminder, + tempReminderObservable +} from '../../local-storage' +import padWithZeros from '../helpers/pad-time-with-zeros' + +import labels from '../../i18n/en/settings' + +export default class Reminders extends Component { + constructor(props) { + super(props) + + const { time, enabled } = tempReminderObservable.value + this.state = { + periodReminder: periodReminderObservable.value.enabled, + temperatureReminder: { + time, + enabled, + isTimePickerVisible: false + } + } + } + + periodReminderToggle = (value) => { + this.setState({ periodReminder: value }) + savePeriodReminder({ enabled: value }) + } + + temperatureReminderToggle = (value) => { + const { time } = this.state.temperatureReminder + const temperatureReminder = { enabled: value } + + if (value && !time) temperatureReminder.isTimePickerVisible = true + if (!value) saveTempReminder({ enabled: false }) + + this.setState({ temperatureReminder }) + } + + onPickDate = (date) => { + const time = padWithZeros(date) + const temperatureReminder = + { time, isTimePickerVisible: false, enabled: true } + + this.setState({ temperatureReminder }) + saveTempReminder({ time, enabled: true }) + } + + onPickDateCancel = () => { + const { time } = this.state.temperatureReminder + const temperatureReminder = { isTimePickerVisible: false } + + if (!time) temperatureReminder.enabled = false + + this.setState({ temperatureReminder }) + } + + render() { + const { periodReminder, temperatureReminder } = this.state + + const tempReminderText = + temperatureReminder.time && temperatureReminder.enabled ? + labels.tempReminder.timeSet(temperatureReminder.time) + : labels.tempReminder.noTimeSet + + return ( + <AppPage> + <Segment title={labels.tempReminder.title}> + <AppSwitch + onToggle={this.temperatureReminderToggle} + text={tempReminderText} + value={temperatureReminder.enabled} + /> + <DateTimePicker + isVisible={temperatureReminder.isTimePickerVisible} + mode="time" + onConfirm={this.onPickDate} + onCancel={this.onPickDateCancel} + /> + </Segment> + <Segment title={labels.periodReminder.title} last> + <AppSwitch + onToggle={this.periodReminderToggle} + text={labels.periodReminder.reminderText} + value={periodReminder} + /> + </Segment> + </AppPage> + ) + } +} diff --git a/components/settings/reminders/index.js b/components/settings/reminders/index.js deleted file mode 100644 index 7c35a14..0000000 --- a/components/settings/reminders/index.js +++ /dev/null @@ -1,29 +0,0 @@ -import React, { Component } from 'react' -import { - ScrollView, -} from 'react-native' -import Segment from '../../common/segment' -import TempReminderPicker from './temp-reminder-picker' -import PeriodReminderPicker from './period-reminder' - -import labels from '../../../i18n/en/settings' - -export default class Settings extends Component { - constructor(props) { - super(props) - this.state = {} - } - - render() { - return ( - <ScrollView> - <Segment title={labels.tempReminder.title}> - <TempReminderPicker/> - </Segment> - <Segment title={labels.periodReminder.title}> - <PeriodReminderPicker/> - </Segment> - </ScrollView> - ) - } -} diff --git a/components/settings/reminders/period-reminder.js b/components/settings/reminders/period-reminder.js deleted file mode 100644 index 6a07ffc..0000000 --- a/components/settings/reminders/period-reminder.js +++ /dev/null @@ -1,35 +0,0 @@ -import React, { Component } from 'react' -import { - View, - Switch -} from 'react-native' -import AppText from '../../common/app-text' -import { - periodReminderObservable, - savePeriodReminder -} from '../../../local-storage' -import labels from '../../../i18n/en/settings' - -export default class PeriodReminderPicker extends Component { - constructor(props) { - super(props) - this.state = periodReminderObservable.value - } - - render() { - return ( - <View style={{ flexDirection: 'row', alignItems: 'center' }}> - <View style={{ flex: 1 }}> - <AppText>{labels.periodReminder.reminderText}</AppText> - </View> - <Switch - value={this.state.enabled} - onValueChange={switchOn => { - this.setState({ enabled: switchOn }) - savePeriodReminder({enabled: switchOn}) - }} - /> - </View> - ) - } -} \ No newline at end of file diff --git a/components/settings/reminders/temp-reminder-picker.js b/components/settings/reminders/temp-reminder-picker.js deleted file mode 100644 index b35b0c1..0000000 --- a/components/settings/reminders/temp-reminder-picker.js +++ /dev/null @@ -1,73 +0,0 @@ -import React, { Component } from 'react' -import { - View, - TouchableOpacity, - Switch -} from 'react-native' -import DateTimePicker from 'react-native-modal-datetime-picker-nevo' -import AppText from '../../common/app-text' -import { - tempReminderObservable, - saveTempReminder -} from '../../../local-storage' -import labels from '../../../i18n/en/settings' -import padWithZeros from '../../helpers/pad-time-with-zeros' - -export default class TempReminderPicker extends Component { - constructor(props) { - super(props) - const { time, enabled } = tempReminderObservable.value - this.state = { - time, - enabled, - isTimePickerVisible: false - } - } - - render() { - return ( - <TouchableOpacity - style={{ flexDirection: 'row', alignItems: 'center' }} - onPress={() => this.setState({ isTimePickerVisible: true })} - > - <View style={{ flex: 1 }}> - {this.state.time && this.state.enabled ? - <AppText>{labels.tempReminder.timeSet(this.state.time)}</AppText> - : - <AppText>{labels.tempReminder.noTimeSet}</AppText> - } - </View> - <Switch - value={this.state.enabled} - onValueChange={switchOn => { - this.setState({ enabled: switchOn }) - if (switchOn && !this.state.time) { - this.setState({ isTimePickerVisible: true }) - } - if (!switchOn) saveTempReminder({ enabled: false }) - }} - /> - <DateTimePicker - mode="time" - isVisible={this.state.isTimePickerVisible} - onConfirm={jsDate => { - const time = padWithZeros(jsDate) - this.setState({ - time, - isTimePickerVisible: false, - enabled: true - }) - saveTempReminder({ - time, - enabled: true - }) - }} - onCancel={() => { - this.setState({ isTimePickerVisible: false }) - if (!this.state.time) this.setState({enabled: false}) - }} - /> - </TouchableOpacity> - ) - } -} From 842e8a2a2428ed389bb23db1f76423b924dd0218 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Wed, 25 Mar 2020 16:21:29 +0100 Subject: [PATCH 26/94] Introduces AppTextInput and Button components styling update --- components/common/app-text-input.js | 35 +++++++---------------------- components/common/button.js | 19 +++++++++++----- 2 files changed, 21 insertions(+), 33 deletions(-) diff --git a/components/common/app-text-input.js b/components/common/app-text-input.js index 389490e..a1c8f99 100644 --- a/components/common/app-text-input.js +++ b/components/common/app-text-input.js @@ -1,42 +1,23 @@ import React from 'react' -import PropTypes from 'prop-types' import { StyleSheet, TextInput } from 'react-native' -import { Colors } from '../../styles/redesign' +import { Colors, Spacing, Typography } from '../../styles/redesign' -const AppTextInput = ({ - autoFocus, - onChangeText, - placeholder, - value, - ...props -}) => { - - return ( - <TextInput - autoFocus={autoFocus} - onChangeText={onChangeText} - placeholder={placeholder} - style={styles.input} - value={value} - {...props} - /> - ) -} - -AppTextInput.propTypes = { - autoFocus: PropTypes.bool, - onChangeText: PropTypes.func, - placeholder: PropTypes.string, - value: PropTypes.string, +const AppTextInput = ({ ...props }) => { + return <TextInput style={styles.input} {...props} /> } const styles = StyleSheet.create({ input: { + backgroundColor: 'white', borderColor: Colors.grey, borderRadius: 5, borderStyle: 'solid', borderWidth: 1, + color: Colors.greyDark, + marginTop: Spacing.base, + paddingHorizontal: Spacing.base, + ...Typography.mainText } }) diff --git a/components/common/button.js b/components/common/button.js index fd2213f..8adf7ea 100644 --- a/components/common/button.js +++ b/components/common/button.js @@ -6,9 +6,11 @@ import AppText from './app-text' import { Colors, Fonts, Spacing } from '../../styles/redesign' -const Button = ({ children, isCTA, onPress, testID }) => { +const Button = ({ children, isCTA, isSmall, onPress, testID }) => { const buttonStyle = isCTA ? styles.cta : styles.regular - const textStyle = isCTA ? styles.buttonTextBold : styles.buttonTextRegular + const textCTA = isCTA ? styles.buttonTextBold : styles.buttonTextRegular + const textStyle = isSmall ? [ textCTA, textSmall ] : [textCTA, text] + return ( <TouchableOpacity onPress={onPress} style={buttonStyle} testID={testID}> <AppText style={textStyle}>{children}</AppText> @@ -19,6 +21,7 @@ const Button = ({ children, isCTA, onPress, testID }) => { Button.propTypes = { children: PropTypes.node, isCTA: PropTypes.bool, + isSmall: PropTypes.bool, onPress: PropTypes.func, testID: PropTypes.string } @@ -28,6 +31,12 @@ const text = { textTransform: 'uppercase' } +const textSmall = { + fontSize: Fonts.small, + padding: Spacing.small, + textTransform: 'uppercase' +} + const button = { alignItems: 'center', justifyContent: 'center', @@ -45,13 +54,11 @@ const styles = StyleSheet.create({ }, buttonTextBold: { color: 'white', - fontFamily: Fonts.bold, - ...text + fontFamily: Fonts.bold }, buttonTextRegular: { color: Colors.greyDark, - fontFamily: Fonts.main, - ...text + fontFamily: Fonts.main } }) From a68ec248b0997a1a78bd53014c0f31e07a0257e8 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Wed, 25 Mar 2020 16:26:57 +0100 Subject: [PATCH 27/94] Introduces password management section redesign --- components/settings/password/create.js | 25 ++++---- components/settings/password/delete.js | 27 ++++---- .../settings/password/enter-new-password.js | 64 +++++++++---------- components/settings/password/index.js | 28 ++++---- components/settings/password/update.js | 26 ++++---- .../settings/shared/confirm-with-password.js | 63 ++++++++---------- 6 files changed, 108 insertions(+), 125 deletions(-) diff --git a/components/settings/password/create.js b/components/settings/password/create.js index 9178312..8838b30 100644 --- a/components/settings/password/create.js +++ b/components/settings/password/create.js @@ -1,16 +1,17 @@ import React, { Component } from 'react' -import { View } from 'react-native' -import settings from '../../../i18n/en/settings' + +import Button from '../../common/button' + import EnterNewPassword from './enter-new-password' -import SettingsButton from '../shared/settings-button' import showBackUpReminder from './show-backup-reminder' +import settings from '../../../i18n/en/settings' + export default class CreatePassword extends Component { constructor() { super() - this.state = { - isSettingPassword: false - } + + this.state = { isSettingPassword: false } } toggleSettingPassword = () => { @@ -23,18 +24,14 @@ export default class CreatePassword extends Component { } render () { - const { - isSettingPassword - } = this.state + const { isSettingPassword } = this.state const labels = settings.passwordSettings if (!isSettingPassword) { return ( - <View> - <SettingsButton onPress={this.startSettingPassword}> - {labels.setPassword} - </SettingsButton> - </View> + <Button isCTA onPress={this.startSettingPassword}> + {labels.setPassword} + </Button> ) } else { return <EnterNewPassword /> diff --git a/components/settings/password/delete.js b/components/settings/password/delete.js index d034a73..e08d133 100644 --- a/components/settings/password/delete.js +++ b/components/settings/password/delete.js @@ -1,17 +1,22 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import labels from '../../../i18n/en/settings' -import { changeEncryptionAndRestartApp } from '../../../db' +import Button from '../../common/button' import ConfirmWithPassword from '../shared/confirm-with-password' -import SettingsButton from '../shared/settings-button' + +import { changeEncryptionAndRestartApp } from '../../../db' +import labels from '../../../i18n/en/settings' export default class DeletePassword extends Component { + static propTypes = { + onStartDelete: PropTypes.func, + onCancelDelete: PropTypes.func + } + constructor() { super() - this.state = { - enteringCurrentPassword: false - } + + this.state = { enteringCurrentPassword: false } } startConfirmWithPassword = () => { @@ -29,7 +34,6 @@ export default class DeletePassword extends Component { } render() { - const { enteringCurrentPassword } = this.state if (enteringCurrentPassword) { @@ -42,14 +46,9 @@ export default class DeletePassword extends Component { } return ( - <SettingsButton onPress={this.startConfirmWithPassword} > + <Button isCTA onPress={this.startConfirmWithPassword}> {labels.passwordSettings.deletePassword} - </SettingsButton> + </Button> ) } -} - -DeletePassword.propTypes = { - onStartDelete: PropTypes.func, - onCancelDelete: PropTypes.func } \ No newline at end of file diff --git a/components/settings/password/enter-new-password.js b/components/settings/password/enter-new-password.js index cf884bb..c457033 100644 --- a/components/settings/password/enter-new-password.js +++ b/components/settings/password/enter-new-password.js @@ -1,13 +1,13 @@ import React, { Component } from 'react' -import { View } from 'react-native' +import { StyleSheet } from 'react-native' import nodejs from 'nodejs-mobile-react-native' -import { requestHash, changeEncryptionAndRestartApp } from '../../../db' import AppText from '../../common/app-text' -import PasswordField from '../shared/password-field' -import SettingsButton from '../shared/settings-button' +import AppTextInput from '../../common/app-text-input' +import Button from '../../common/button' -import styles from '../../../styles' +import { requestHash, changeEncryptionAndRestartApp } from '../../../db' +import { Colors, Spacing } from '../../../styles/redesign' import settings from '../../../i18n/en/settings' const LISTENER_TYPE = 'create-or-change-pw' @@ -36,9 +36,7 @@ export default class EnterNewPassword extends Component { if (this.comparePasswords()) { requestHash(LISTENER_TYPE, this.state.password) } else { - this.setState({ - shouldShowErrorMessage: true - }) + this.setState({ shouldShowErrorMessage: true }) } } @@ -58,40 +56,40 @@ export default class EnterNewPassword extends Component { const { password, passwordConfirmation, - shouldShowErrorMessage, + shouldShowErrorMessage } = this.state const labels = settings.passwordSettings - - const isSaveButtonDisabled = - !password.length || - !passwordConfirmation.length + const isButtonActive = + Boolean(password.length && passwordConfirmation.length) return ( - <View> - <PasswordField - placeholder={labels.enterNew} - value={password} + <React.Fragment> + <AppTextInput onChangeText={this.handlePasswordInput} + placeholder={labels.enterNew} + textContentType="password" + value={password} /> - <PasswordField - autoFocus={false} - placeholder={labels.confirmPassword} - value={passwordConfirmation} + <AppTextInput onChangeText={this.handleConfirmationInput} + placeholder={labels.confirmPassword} + textContentType="password" + value={passwordConfirmation} /> - { - shouldShowErrorMessage && - <AppText style={styles.errorMessage}> - {labels.passwordsDontMatch} - </AppText> + {shouldShowErrorMessage && + <AppText style={styles.error}>{labels.passwordsDontMatch}</AppText> } - <SettingsButton - onPress={this.savePassword} - disabled={isSaveButtonDisabled} - > + <Button isCTA={isButtonActive} isSmall onPress={this.savePassword}> {labels.savePassword} - </SettingsButton> - </View> + </Button> + </React.Fragment> ) } -} \ No newline at end of file +} + +const styles = StyleSheet.create({ + error: { + color: Colors.orange, + marginTop: Spacing.base + } +}) \ No newline at end of file diff --git a/components/settings/password/index.js b/components/settings/password/index.js index 933cada..5e67e5d 100644 --- a/components/settings/password/index.js +++ b/components/settings/password/index.js @@ -1,18 +1,20 @@ import React, { Component } from 'react' -import { ScrollView } from 'react-native' + +import AppPage from '../../common/app-page' +import AppText from '../../common/app-text' +import Segment from '../../common/segment' + import CreatePassword from './create' import ChangePassword from './update' import DeletePassword from './delete' -import Segment from '../../common/segment' -import AppText from '../../common/app-text' -import { - hasEncryptionObservable -} from '../../../local-storage' + +import { hasEncryptionObservable } from '../../../local-storage' import labels from '../../../i18n/en/settings' export default class PasswordSetting extends Component { constructor(props) { super(props) + this.state = { isPasswordSet: hasEncryptionObservable.value, isChangingPassword: false, @@ -51,29 +53,29 @@ export default class PasswordSetting extends Component { } = labels.passwordSettings return ( - <ScrollView> - <Segment title={title}> + <AppPage> + <Segment title={title} last> <AppText> - { isPasswordSet ? explainerEnabled : explainerDisabled } + {isPasswordSet ? explainerEnabled : explainerDisabled} </AppText> - { !isPasswordSet && <CreatePassword/> } + {!isPasswordSet && <CreatePassword/>} - { (isPasswordSet && !isDeletingPassword) && ( + {(isPasswordSet && !isDeletingPassword) && ( <ChangePassword onStartChange = {this.onChangingPassword} onCancelChange = {this.onCancelChangingPassword} /> )} - { (isPasswordSet && !isChangingPassword) && ( + {(isPasswordSet && !isChangingPassword) && ( <DeletePassword onStartDelete = {this.onDeletingPassword} onCancelDelete = {this.onCancelDeletingPassword} /> )} </Segment> - </ScrollView> + </AppPage> ) } } diff --git a/components/settings/password/update.js b/components/settings/password/update.js index 447b9de..001441b 100644 --- a/components/settings/password/update.js +++ b/components/settings/password/update.js @@ -1,16 +1,23 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import settings from '../../../i18n/en/settings' +import Button from '../../common/button' + import EnterNewPassword from './enter-new-password' -import SettingsButton from '../shared/settings-button' import showBackUpReminder from './show-backup-reminder' import ConfirmWithPassword from '../shared/confirm-with-password' +import settings from '../../../i18n/en/settings' export default class ChangePassword extends Component { + static propTypes = { + onStartChange: PropTypes.func, + onCancelChange: PropTypes.func + } + constructor() { super() + this.state = { currentPassword: null, enteringCurrentPassword: false, @@ -48,14 +55,13 @@ export default class ChangePassword extends Component { } render() { - const { enteringCurrentPassword, enteringNewPassword, currentPassword } = this.state - const labels = settings.passwordSettings + const isDisabled = currentPassword !== null if (enteringCurrentPassword) { return ( @@ -71,17 +77,9 @@ export default class ChangePassword extends Component { } return ( - <SettingsButton - onPress={this.startChangingPassword} - disabled={currentPassword} - > + <Button disabled={isDisabled} isCTA onPress={this.startChangingPassword}> {labels.changePassword} - </SettingsButton> + </Button> ) } -} - -ChangePassword.propTypes = { - onStartChange: PropTypes.func, - onCancelChange: PropTypes.func } \ No newline at end of file diff --git a/components/settings/shared/confirm-with-password.js b/components/settings/shared/confirm-with-password.js index 02d5600..a3c845a 100644 --- a/components/settings/shared/confirm-with-password.js +++ b/components/settings/shared/confirm-with-password.js @@ -1,27 +1,22 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { View, Alert } from 'react-native' - +import { Alert, StyleSheet, View } from 'react-native' import nodejs from 'nodejs-mobile-react-native' + +import AppTextInput from '../../common/app-text-input' +import Button from '../../common/button' + import { requestHash, openDb } from '../../../db' - -import PasswordField from './password-field' -import SettingsButton from '../shared/settings-button' - +import { Containers } from '../../../styles/redesign' import settings from '../../../i18n/en/settings' import { shared } from '../../../i18n/en/labels' export default class ConfirmWithPassword extends Component { constructor() { super() - this.state = { - password: null - } - nodejs.channel.addListener( - 'password-check', - this.checkPassword, - this - ) + + this.state = { password: null } + nodejs.channel.addListener('password-check', this.checkPassword, this) } componentWillUnmount() { @@ -67,36 +62,24 @@ export default class ConfirmWithPassword extends Component { render() { const { password } = this.state const labels = settings.passwordSettings + const isCTA = password !== null return ( - <View> - <PasswordField + <React.Fragment> + <AppTextInput + onChangeText={this.handlePasswordInput} placeholder={labels.enterCurrent} value={password} - onChangeText={this.handlePasswordInput} /> - <View style={{ - flex: 1, - flexDirection: 'row', - justifyContent: 'space-between' - }}> - <SettingsButton - onPress={this.props.onCancel} - secondary - > + <View style={styles.container}> + <Button isSmall onPress={this.props.onCancel}> {shared.cancel} - </SettingsButton> - <SettingsButton - onPress={this.initPasswordCheck} - disabled={!password} - style={{ - flex: 1, - }} - > + </Button> + <Button isCTA={isCTA} isSmall onPress={this.initPasswordCheck}> {shared.confirmToProceed} - </SettingsButton> + </Button> </View> - </View> + </React.Fragment> ) } @@ -105,4 +88,10 @@ export default class ConfirmWithPassword extends Component { ConfirmWithPassword.propTypes = { onSuccess: PropTypes.func, onCancel: PropTypes.func -} \ No newline at end of file +} + +const styles = StyleSheet.create({ + container: { + ...Containers.rowContainer + } +}) \ No newline at end of file From f2706f509a24526413b2923f0a56c1a56b233423 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Wed, 25 Mar 2020 16:55:03 +0100 Subject: [PATCH 28/94] Introduces data management section redesign --- .../settings/data-management/delete-data.js | 12 +-- components/settings/data-management/index.js | 73 +++++++++---------- 2 files changed, 43 insertions(+), 42 deletions(-) diff --git a/components/settings/data-management/delete-data.js b/components/settings/data-management/delete-data.js index 6af5da3..9ad24bd 100644 --- a/components/settings/data-management/delete-data.js +++ b/components/settings/data-management/delete-data.js @@ -3,12 +3,13 @@ import RNFS from 'react-native-fs' import { Alert, ToastAndroid } from 'react-native' import PropTypes from 'prop-types' -import { clearDb, isDbEmpty } from '../../../db' -import { hasEncryptionObservable } from '../../../local-storage' -import SettingsButton from '../shared/settings-button' +import Button from '../../common/button' + import ConfirmWithPassword from '../shared/confirm-with-password' import alertError from '../shared/alert-error' +import { clearDb, isDbEmpty } from '../../../db' +import { hasEncryptionObservable } from '../../../local-storage' import settings from '../../../i18n/en/settings' import { shared as sharedLabels } from '../../../i18n/en/labels' import { EXPORT_FILE_NAME } from './constants' @@ -18,6 +19,7 @@ const exportedFilePath = `${RNFS.DocumentDirectoryPath}/${EXPORT_FILE_NAME}` export default class DeleteData extends Component { constructor() { super() + this.state = { isPasswordSet: hasEncryptionObservable.value, isConfirmingWithPassword: false @@ -92,9 +94,9 @@ export default class DeleteData extends Component { } return ( - <SettingsButton onPress={this.alertBeforeDeletion}> + <Button isCTA onPress={this.alertBeforeDeletion}> {settings.deleteSegment.title} - </SettingsButton> + </Button> ) } } diff --git a/components/settings/data-management/index.js b/components/settings/data-management/index.js index 558bdfd..ff9417a 100644 --- a/components/settings/data-management/index.js +++ b/components/settings/data-management/index.js @@ -1,18 +1,22 @@ import React, { Component } from 'react' -import { ScrollView, View } from 'react-native' -import AppText from '../../common/app-text' -import Segment from '../../common/segment' + import AppLoadingView from '../../common/app-loading' -import SettingsButton from '../shared/settings-button' +import AppPage from '../../common/app-page' +import AppText from '../../common/app-text' +import Button from '../../common/button' +import Segment from '../../common/segment' + import { openImportDialog, getFileContent, importData } from './import-dialog' import openShareDialogAndExport from './export-dialog' import DeleteData from './delete-data' + import labels from '../../../i18n/en/settings' export default class DataManagement extends Component { constructor(props) { super(props) + this.state = { isLoading: false, currentAction: null @@ -51,41 +55,36 @@ export default class DataManagement extends Component { } render() { - const { currentAction } = this.state + const { currentAction, isLoading } = this.state + const isDeletingData = currentAction === 'delete' + return ( - <View flex={1}> - {this.state.isLoading && <AppLoadingView />} - {!this.state.isLoading && - <ScrollView> - <View> - <Segment title={labels.export.button}> - <AppText>{labels.export.segmentExplainer}</AppText> - <SettingsButton onPress={this.startExport}> - {labels.export.button} - </SettingsButton> - </Segment> - <Segment title={labels.import.button}> - <AppText>{labels.import.segmentExplainer}</AppText> - <SettingsButton - onPress= {this.startImport} - > - {labels.import.button} - </SettingsButton> - </Segment> - <Segment - title={labels.deleteSegment.title} - last - > - <AppText>{labels.deleteSegment.explainer}</AppText> - <DeleteData - isDeletingData = { currentAction === 'delete' } - onStartDeletion = {() => this.setCurrentAction('delete')} - /> - </Segment> - </View> - </ScrollView> + <AppPage> + {isLoading && <AppLoadingView />} + {!isLoading && + <React.Fragment> + <Segment title={labels.export.button}> + <AppText>{labels.export.segmentExplainer}</AppText> + <Button isCTA onPress={this.startExport}> + {labels.export.button} + </Button> + </Segment> + <Segment title={labels.import.button}> + <AppText>{labels.import.segmentExplainer}</AppText> + <Button isCTA onPress= {this.startImport}> + {labels.import.button} + </Button> + </Segment> + <Segment title={labels.deleteSegment.title} last> + <AppText>{labels.deleteSegment.explainer}</AppText> + <DeleteData + isDeletingData = {isDeletingData} + onStartDeletion = {() => this.setCurrentAction('delete')} + /> + </Segment> + </React.Fragment> } - </View> + </AppPage> ) } } \ No newline at end of file From 08deb87df42bb9efc9f66b4807ed55d01c7110ed Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Fri, 27 Mar 2020 10:27:44 +0100 Subject: [PATCH 29/94] Introduces NFP section redesign, upgrades slider version --- .gitignore | 1 + components/common/segment.js | 17 +- components/settings/nfp-settings/index.js | 111 +- components/settings/nfp-settings/label.js | 52 + .../settings/nfp-settings/temp-slider.js | 71 - .../settings/nfp-settings/use-cervix.js | 39 - config.js | 1 + package-lock.json | 9644 +++++++---------- package.json | 2 +- styles/typography.js | 1 + 10 files changed, 4276 insertions(+), 5663 deletions(-) create mode 100644 components/settings/nfp-settings/label.js delete mode 100644 components/settings/nfp-settings/temp-slider.js delete mode 100644 components/settings/nfp-settings/use-cervix.js diff --git a/.gitignore b/.gitignore index 2e0ebe6..4663f1b 100644 --- a/.gitignore +++ b/.gitignore @@ -65,6 +65,7 @@ android/app/.project ios/Podfile.lock android/app/src/main/res/drawable-* +android/app/src/main/assets/* # nodejs-mobile creates these with every npm install nodejs-assets/nodejs-project/sample-* diff --git a/components/common/segment.js b/components/common/segment.js index a0ad843..f3d8e53 100644 --- a/components/common/segment.js +++ b/components/common/segment.js @@ -3,15 +3,21 @@ import PropTypes from 'prop-types' import { StyleSheet, View } from 'react-native' import AppText from './app-text' +import AppIcon from './app-icon' -import { Colors, Spacing, Typography } from '../../styles/redesign' +import { Colors, Containers, Spacing, Typography } from '../../styles/redesign' -const Segment = ({ children, last, title }) => { +const Segment = ({ children, icon, last, title }) => { const containerStyle = last ? styles.containerLast : styles.container return ( <View style={containerStyle}> - {title && <AppText style={styles.title}>{title}</AppText>} + {title && + <View style={styles.line}> + {icon && <AppIcon name={icon} color={Colors.purple} />} + <AppText style={styles.title}>{title}</AppText> + </View> + } {children} </View> ) @@ -19,6 +25,7 @@ const Segment = ({ children, last, title }) => { Segment.propTypes = { children: PropTypes.node, + icon: PropTypes.string, last: PropTypes.bool, title: PropTypes.string } @@ -39,6 +46,10 @@ const styles = StyleSheet.create({ containerLast: { ...segmentContainer }, + line: { + alignItems: 'center', + flexDirection: 'row' + }, title: { ...Typography.subtitle } diff --git a/components/settings/nfp-settings/index.js b/components/settings/nfp-settings/index.js index 0857c16..e8bcff3 100644 --- a/components/settings/nfp-settings/index.js +++ b/components/settings/nfp-settings/index.js @@ -1,39 +1,114 @@ import React, { Component } from 'react' -import { - ScrollView, View -} from 'react-native' -import styles from '../../../styles' -import labels from '../../../i18n/en/settings' +import { StyleSheet, View } from 'react-native' +import Slider from '@ptomasroos/react-native-multi-slider' + +import alertError from '../shared/alert-error' +import AppPage from '../../common/app-page' +import AppSwitch from '../../common/app-switch' import AppText from '../../common/app-text' +import Label from './label' import Segment from '../../common/segment' -import TempSlider from './temp-slider' -import UseCervixSetting from './use-cervix' -import Icon from 'react-native-vector-icons/Entypo' + +import { useCervixObservable, + saveUseCervix, + scaleObservable, + saveTempScale +} from '../../../local-storage' +import { Colors, Sizes } from '../../../styles/redesign' +import labels from '../../../i18n/en/settings' +import config from '../../../config' export default class Settings extends Component { constructor(props) { super(props) - this.state = {} + + this.state = { + useCervix: useCervixObservable.value, + temperatureScale: { ...scaleObservable.value } + } + } + + onCervixToggle = (value) => { + this.setState({ useCervix: value }) + saveUseCervix(value) + } + + onSliderChange = (values) => { + this.setState({ min: values[0], max: values[1] }) + } + + onSliderChangeFinish = (values) => { + this.setState({ min: values[0], max: values[1] }) + + try { + saveTempScale({ min: values[0], max: values[1] }) + } catch(err) { + alertError(labels.tempScale.saveError) + } } render() { + const { useCervix } = this.state + const cervixText = useCervix ? + labels.useCervix.cervixModeOn : labels.useCervix.cervixModeOff + const { min, max } = this.state.temperatureScale return ( - <ScrollView> + <AppPage> <Segment title={labels.useCervix.title}> - <UseCervixSetting/> + <AppSwitch + onToggle={this.onCervixToggle} + text={cervixText} + value={useCervix} + /> </Segment> <Segment title={labels.tempScale.segmentTitle}> <AppText>{labels.tempScale.segmentExplainer}</AppText> - <TempSlider/> - </Segment> - <Segment style={styles.framedSegmentLast} > - <View style={{flexDirection: 'row', alignItems: 'center'}}> - <Icon name="info-with-circle"/> - <AppText style={styles.framedSegmentTitle}>{` ${labels.preOvu.title} `}</AppText> + <View style={styles.container}> + <Slider + customLabel={Label} + enableLabel={true} + markerStyle={styles.marker} + markerOffsetY={Sizes.tiny} + max={config.temperatureScale.max} + min={config.temperatureScale.min} + onValuesChange={this.onSliderChange} + onValuesChangeFinish={this.onSliderChangeFinish} + selectedStyle={styles.sliderAccentBackground} + step={config.temperatureScale.step} + trackStyle={styles.slider} + unselectedStyle={styles.sliderBackground} + values={[min, max]} + /> </View> + </Segment> + <Segment icon="info-with-circle" last title={labels.preOvu.title}> <AppText>{labels.preOvu.note}</AppText> </Segment> - </ScrollView> + </AppPage> ) } } + +const styles = StyleSheet.create({ + container: { + alignItems: 'center', + paddingTop: Sizes.base + }, + marker: { + backgroundColor: Colors.tourquiseDark, + borderRadius: 50, + elevation: 4, + height: Sizes.subtitle, + width: Sizes.subtitle + }, + slider: { + borderRadius: 25, + height: Sizes.small + }, + sliderAccentBackground: { + backgroundColor: Colors.tourquiseDark + }, + sliderBackground: { + backgroundColor: Colors.tourquise + }, +}) diff --git a/components/settings/nfp-settings/label.js b/components/settings/nfp-settings/label.js new file mode 100644 index 0000000..af63de3 --- /dev/null +++ b/components/settings/nfp-settings/label.js @@ -0,0 +1,52 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { StyleSheet } from 'react-native' + +import AppText from '../../common/app-text' + +import { Sizes } from '../../../styles/redesign' + +const sliderRadius = 5 +const width = 50 + +export default class Label extends React.Component { + static propTypes = { + oneMarkerValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + twoMarkerValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + oneMarkerLeftPosition: PropTypes.number, + twoMarkerLeftPosition: PropTypes.number, + } + + + render() { + const { + oneMarkerValue, + twoMarkerValue, + oneMarkerLeftPosition, + twoMarkerLeftPosition, + } = this.props + + const minCoordinate = oneMarkerLeftPosition - width / 2 + sliderRadius + const maxCoordinate = twoMarkerLeftPosition - width / 2 + sliderRadius + const isMinNumber = Number.isFinite(oneMarkerLeftPosition) && + Number.isFinite(oneMarkerValue) + const isMaxNumber = Number.isFinite(twoMarkerLeftPosition) && + Number.isFinite(twoMarkerValue) + const minStyle = [styles.label, { left: minCoordinate }] + const maxStyle = [styles.label, { left: maxCoordinate }] + + return ( + <React.Fragment> + {isMinNumber && <AppText style={minStyle}>{oneMarkerValue}</AppText>} + {isMaxNumber && <AppText style={maxStyle}>{twoMarkerValue}</AppText>} + </React.Fragment> + ) + } +} + +const styles = StyleSheet.create({ + label: { + position: 'absolute', + marginTop: (-1) * Sizes.base + } +}) \ No newline at end of file diff --git a/components/settings/nfp-settings/temp-slider.js b/components/settings/nfp-settings/temp-slider.js deleted file mode 100644 index 2def5c4..0000000 --- a/components/settings/nfp-settings/temp-slider.js +++ /dev/null @@ -1,71 +0,0 @@ -import React, { Component } from 'react' -import { View } from 'react-native' -import Slider from '@ptomasroos/react-native-multi-slider' -import AppText from '../../common/app-text' -import { - scaleObservable, - saveTempScale, -} from '../../../local-storage' -import { secondaryColor } from '../../../styles/index' -import labels from '../../../i18n/en/settings' -import config from '../../../config' -import alertError from '../shared/alert-error' - -export default class TempSlider extends Component { - constructor(props) { - super(props) - this.state = Object.assign({}, scaleObservable.value) - } - - onValuesChange = (values) => { - this.setState({ - min: values[0], - max: values[1] - }) - } - - onValuesChangeFinish = (values) => { - this.setState({ - min: values[0], - max: values[1] - }) - try { - saveTempScale(this.state) - } catch(err) { - alertError(labels.tempScale.saveError) - } - } - - render() { - return ( - <View style={{ alignItems: 'center' }}> - <AppText>{`${labels.tempScale.min} ${this.state.min.toFixed(1)}`}</AppText> - <AppText>{`${labels.tempScale.max} ${this.state.max.toFixed(1)}`}</AppText> - <Slider - values={[this.state.min, this.state.max]} - min={config.temperatureScale.min} - max={config.temperatureScale.max} - step={0.5} - onValuesChange={this.onValuesChange} - onValuesChangeFinish={this.onValuesChangeFinish} - selectedStyle={{ - backgroundColor: 'darkgrey', - }} - unselectedStyle={{ - backgroundColor: 'silver', - }} - trackStyle={{ - height: 10, - }} - markerStyle={{ - backgroundColor: secondaryColor, - height: 20, - width: 20, - borderRadius: 100, - marginTop: 10 - }} - /> - </View> - ) - } -} \ No newline at end of file diff --git a/components/settings/nfp-settings/use-cervix.js b/components/settings/nfp-settings/use-cervix.js deleted file mode 100644 index 1e38682..0000000 --- a/components/settings/nfp-settings/use-cervix.js +++ /dev/null @@ -1,39 +0,0 @@ -import React, { Component } from 'react' -import { - View, - Switch -} from 'react-native' -import AppText from '../../common/app-text' -import { - useCervixObservable, - saveUseCervix -} from '../../../local-storage' -import labels from '../../../i18n/en/settings' - -export default class UseCervixSetting extends Component { - constructor() { - super() - this.state = {useCervix: useCervixObservable.value} - } - - render() { - return ( - <View style={{ flexDirection: 'row', alignItems: 'center' }}> - <View style={{ flex: 1 }}> - {this.state.useCervix ? - <AppText>{labels.useCervix.cervixModeOn}</AppText> - : - <AppText>{labels.useCervix.cervixModeOff}</AppText> - } - </View> - <Switch - value={this.state.useCervix} - onValueChange={bool => { - this.setState({ useCervix: bool }) - saveUseCervix(bool) - }} - /> - </View> - ) - } -} diff --git a/config.js b/config.js index 0fd19c5..7cd3960 100644 --- a/config.js +++ b/config.js @@ -9,6 +9,7 @@ const config = { defaultHigh: 38, min: 34, max: 40, + step: 0.5, units: 0.1, verticalPadding: 0.03 }, diff --git a/package-lock.json b/package-lock.json index 401667e..a5a8294 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,141 +5,44 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "7.9.0" } }, "@babel/core": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.2.tgz", - "integrity": "sha512-eeD7VEZKfhK1KUXGiyPFettgF3m513f8FoBSWiQ1xTvl1RAopLs42Wp9+Ze911I6H0N9lNqJMDgoZT7gHsipeQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helpers": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/template": "^7.7.0", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.7.2", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" + "@babel/code-frame": "7.8.3", + "@babel/generator": "7.9.4", + "@babel/helper-module-transforms": "7.9.0", + "@babel/helpers": "7.9.2", + "@babel/parser": "7.9.4", + "@babel/template": "7.8.6", + "@babel/traverse": "7.9.0", + "@babel/types": "7.9.0", + "convert-source-map": "1.7.0", + "debug": "4.1.1", + "gensync": "1.0.0-beta.1", + "json5": "2.1.2", + "lodash": "4.17.15", + "resolve": "1.15.1", + "semver": "5.7.1", + "source-map": "0.5.7" }, "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/generator": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", - "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", - "requires": { - "@babel/types": "^7.7.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", - "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==" - }, - "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/traverse": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", - "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/types": "^7.7.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -153,1686 +56,593 @@ } }, "@babel/generator": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", - "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", + "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", "requires": { - "@babel/types": "^7.4.4", - "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "@babel/types": "7.9.0", + "jsesc": "2.5.2", + "lodash": "4.17.15", + "source-map": "0.5.7" } }, "@babel/helper-annotate-as-pure": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.0.tgz", - "integrity": "sha512-k50CQxMlYTYo+GGyUGFwpxKVtxVJi9yh61sXZji3zYHccK9RYliZGSTOgci85T+r+0VFN2nWbGM04PIqwfrpMg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", "requires": { - "@babel/types": "^7.7.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "@babel/types": "7.9.0" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.0.tgz", - "integrity": "sha512-Cd8r8zs4RKDwMG/92lpZcnn5WPQ3LAMQbCw42oqUh4s7vsSN5ANUZjMel0OOnxDLq57hoDDbai+ryygYfCTOsw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", "requires": { - "@babel/helper-explode-assignable-expression": "^7.7.0", - "@babel/types": "^7.7.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "@babel/helper-explode-assignable-expression": "7.8.3", + "@babel/types": "7.9.0" } }, "@babel/helper-builder-react-jsx": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.7.0.tgz", - "integrity": "sha512-LSln3cexwInTMYYoFeVLKnYPPMfWNJ8PubTBs3hkh7wCu9iBaqq1OOyW+xGmEdLxT1nhsl+9SJ+h2oUDYz0l2A==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz", + "integrity": "sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw==", "requires": { - "@babel/types": "^7.7.0", - "esutils": "^2.0.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "@babel/helper-annotate-as-pure": "7.8.3", + "@babel/types": "7.9.0" } }, - "@babel/helper-call-delegate": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.0.tgz", - "integrity": "sha512-Su0Mdq7uSSWGZayGMMQ+z6lnL00mMCnGAbO/R0ZO9odIdB/WNU/VfQKqMQU0fdIsxQYbRjDM4BixIa93SQIpvw==", + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.0.tgz", + "integrity": "sha512-3xJEiyuYU4Q/Ar9BsHisgdxZsRlsShMe90URZ0e6przL26CCs8NJbDoxH94kKT17PcxlMhsCAwZd90evCo26VQ==", "requires": { - "@babel/helper-hoist-variables": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/generator": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", - "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", - "requires": { - "@babel/types": "^7.7.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", - "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==" - }, - "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/traverse": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", - "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/types": "^7.7.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } + "@babel/helper-annotate-as-pure": "7.8.3", + "@babel/helper-module-imports": "7.8.3", + "@babel/types": "7.9.0" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.0.tgz", - "integrity": "sha512-MZiB5qvTWoyiFOgootmRSDV1udjIqJW/8lmxgzKq6oDqxdmHUjeP2ZUOmgHdYjmUVNABqRrHjYAYRvj8Eox/UA==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz", + "integrity": "sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg==", "requires": { - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-member-expression-to-functions": "^7.7.0", - "@babel/helper-optimise-call-expression": "^7.7.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0" - }, - "dependencies": { - "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", - "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==" - }, - "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "@babel/helper-function-name": "7.8.3", + "@babel/helper-member-expression-to-functions": "7.8.3", + "@babel/helper-optimise-call-expression": "7.8.3", + "@babel/helper-plugin-utils": "7.8.3", + "@babel/helper-replace-supers": "7.8.6", + "@babel/helper-split-export-declaration": "7.8.3" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.2.tgz", - "integrity": "sha512-pAil/ZixjTlrzNpjx+l/C/wJk002Wo7XbbZ8oujH/AoJ3Juv0iN/UTcPUHXKMFLqsfS0Hy6Aow8M31brUYBlQQ==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", + "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", "requires": { - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" + "@babel/helper-annotate-as-pure": "7.8.3", + "@babel/helper-regex": "7.8.3", + "regexpu-core": "4.7.0" } }, "@babel/helper-define-map": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.0.tgz", - "integrity": "sha512-kPKWPb0dMpZi+ov1hJiwse9dWweZsz3V9rP4KdytnX1E7z3cTNmFGglwklzFPuqIcHLIY3bgKSs4vkwXXdflQA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", "requires": { - "@babel/helper-function-name": "^7.7.0", - "@babel/types": "^7.7.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", - "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==" - }, - "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "@babel/helper-function-name": "7.8.3", + "@babel/types": "7.9.0", + "lodash": "4.17.15" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.0.tgz", - "integrity": "sha512-CDs26w2shdD1urNUAji2RJXyBFCaR+iBEGnFz3l7maizMkQe3saVw9WtjG1tz8CwbjvlFnaSLVhgnu1SWaherg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", "requires": { - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/generator": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", - "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", - "requires": { - "@babel/types": "^7.7.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", - "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==" - }, - "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/traverse": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", - "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/types": "^7.7.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } + "@babel/traverse": "7.9.0", + "@babel/types": "7.9.0" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "7.8.3", + "@babel/template": "7.8.6", + "@babel/types": "7.9.0" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.0.tgz", - "integrity": "sha512-LUe/92NqsDAkJjjCEWkNe+/PcpnisvnqdlRe19FahVapa4jndeuJ+FBiTX1rcAKWKcJGE+C3Q3tuEuxkSmCEiQ==", - "requires": { - "@babel/types": "^7.7.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "@babel/types": "7.9.0" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.0.tgz", - "integrity": "sha512-QaCZLO2RtBcmvO/ekOLp8p7R5X2JriKRizeDpm5ChATAFWrrYDcDxPuCIBXKyBjY+i1vYSdcUTMIb8psfxHDPA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", "requires": { - "@babel/types": "^7.7.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "@babel/types": "7.9.0" } }, "@babel/helper-module-imports": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.0.tgz", - "integrity": "sha512-Dv3hLKIC1jyfTkClvyEkYP2OlkzNvWs5+Q8WgPbxM5LMeorons7iPP91JM+DU7tRbhqA1ZeooPaMFvQrn23RHw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", "requires": { - "@babel/types": "^7.7.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "@babel/types": "7.9.0" } }, "@babel/helper-module-transforms": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.0.tgz", - "integrity": "sha512-rXEefBuheUYQyX4WjV19tuknrJFwyKw0HgzRwbkyTbB+Dshlq7eqkWbyjzToLrMZk/5wKVKdWFluiAsVkHXvuQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", + "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", "requires": { - "@babel/helper-module-imports": "^7.7.0", - "@babel/helper-simple-access": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==" - }, - "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "@babel/helper-module-imports": "7.8.3", + "@babel/helper-replace-supers": "7.8.6", + "@babel/helper-simple-access": "7.8.3", + "@babel/helper-split-export-declaration": "7.8.3", + "@babel/template": "7.8.6", + "@babel/types": "7.9.0", + "lodash": "4.17.15" } }, "@babel/helper-optimise-call-expression": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.0.tgz", - "integrity": "sha512-48TeqmbazjNU/65niiiJIJRc5JozB8acui1OS7bSd6PgxfuovWsvjfWSzlgx+gPFdVveNzUdpdIg5l56Pl5jqg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", "requires": { - "@babel/types": "^7.7.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "@babel/types": "7.9.0" } }, "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==" + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==" }, "@babel/helper-regex": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", - "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", "requires": { - "lodash": "^4.17.13" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "lodash": "4.17.15" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.0.tgz", - "integrity": "sha512-pHx7RN8X0UNHPB/fnuDnRXVZ316ZigkO8y8D835JlZ2SSdFKb6yH9MIYRU4fy/KPe5sPHDFOPvf8QLdbAGGiyw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", "requires": { - "@babel/helper-annotate-as-pure": "^7.7.0", - "@babel/helper-wrap-function": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", - "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", - "requires": { - "@babel/types": "^7.7.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", - "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==" - }, - "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/traverse": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", - "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/types": "^7.7.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "requires": { - "@babel/highlight": "^7.0.0" - } - } - } - }, - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } + "@babel/helper-annotate-as-pure": "7.8.3", + "@babel/helper-wrap-function": "7.8.3", + "@babel/template": "7.8.6", + "@babel/traverse": "7.9.0", + "@babel/types": "7.9.0" } }, "@babel/helper-replace-supers": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.0.tgz", - "integrity": "sha512-5ALYEul5V8xNdxEeWvRsBzLMxQksT7MaStpxjJf9KsnLxpAKBtfw5NeMKZJSYDa0lKdOcy0g+JT/f5mPSulUgg==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", + "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.7.0", - "@babel/helper-optimise-call-expression": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/generator": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", - "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", - "requires": { - "@babel/types": "^7.7.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", - "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==" - }, - "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/traverse": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", - "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/types": "^7.7.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } + "@babel/helper-member-expression-to-functions": "7.8.3", + "@babel/helper-optimise-call-expression": "7.8.3", + "@babel/traverse": "7.9.0", + "@babel/types": "7.9.0" } }, "@babel/helper-simple-access": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.0.tgz", - "integrity": "sha512-AJ7IZD7Eem3zZRuj5JtzFAptBw7pMlS3y8Qv09vaBWoFsle0d1kAn5Wq6Q9MyBXITPOKnxwkZKoAm4bopmv26g==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", "requires": { - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" - }, - "dependencies": { - "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==" - }, - "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "@babel/template": "7.8.6", + "@babel/types": "7.9.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", "requires": { - "@babel/types": "^7.4.4" + "@babel/types": "7.9.0" } }, + "@babel/helper-validator-identifier": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", + "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==" + }, "@babel/helper-wrap-function": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.0.tgz", - "integrity": "sha512-sd4QjeMgQqzshSjecZjOp8uKfUtnpmCyQhKQrVJBBgeHAB/0FPi33h3AbVlVp07qQtMD4QgYSzaMI7VwncNK/w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", "requires": { - "@babel/helper-function-name": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", - "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", - "requires": { - "@babel/types": "^7.7.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", - "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==" - }, - "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/traverse": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", - "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/types": "^7.7.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "requires": { - "@babel/highlight": "^7.0.0" - } - } - } - }, - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } + "@babel/helper-function-name": "7.8.3", + "@babel/template": "7.8.6", + "@babel/traverse": "7.9.0", + "@babel/types": "7.9.0" } }, "@babel/helpers": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.0.tgz", - "integrity": "sha512-VnNwL4YOhbejHb7x/b5F39Zdg5vIQpUUNzJwx0ww1EcVRt41bbGRZWhAURrfY32T5zTT3qwNOQFWpn+P0i0a2g==", + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", + "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", "requires": { - "@babel/template": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", - "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", - "requires": { - "@babel/types": "^7.7.2", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", - "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==" - }, - "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/traverse": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", - "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.7.2", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "@babel/parser": "^7.7.2", - "@babel/types": "^7.7.2", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "requires": { - "@babel/highlight": "^7.0.0" - } - } - } - }, - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - } + "@babel/template": "7.8.6", + "@babel/traverse": "7.9.0", + "@babel/types": "7.9.0" } }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } + "@babel/helper-validator-identifier": "7.9.0", + "chalk": "2.4.2", + "js-tokens": "4.0.0" } }, "@babel/parser": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz", - "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==" + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", + "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==" }, "@babel/plugin-external-helpers": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.2.0.tgz", - "integrity": "sha512-QFmtcCShFkyAsNtdCM3lJPmRe1iB+vPZymlB4LnDIKEBj2yKQLQKtoxXxJ8ePT5fwMl4QGg303p4mB0UsSI2/g==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.8.3.tgz", + "integrity": "sha512-mx0WXDDiIl5DwzMtzWGRSPugXi9BxROS05GQrhLNbEamhBiicgn994ibwkyiBH+6png7bm/yA7AUsvHyCXi4Vw==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.0.tgz", - "integrity": "sha512-tufDcFA1Vj+eWvwHN+jvMN6QsV5o+vUlytNKrbMiCeDL0F2j92RURzUsUMWE5EJkLyWxjdUslCsMQa9FWth16A==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", + "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.7.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-create-class-features-plugin": "7.8.6", + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-proposal-export-default-from": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.5.2.tgz", - "integrity": "sha512-wr9Itk05L1/wyyZKVEmXWCdcsp/e185WUNl6AfYZeEKYaUPPvHXRDqO5K1VH7/UamYqGJowFRuCv30aDYZawsg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.8.3.tgz", + "integrity": "sha512-PYtv2S2OdCdp7GSPDg5ndGZFm9DmWFvuLoS5nBxZCgOBggluLnhTScspJxng96alHQzPyrrHxvC9/w4bFuspeA==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-export-default-from": "^7.2.0" + "@babel/helper-plugin-utils": "7.8.3", + "@babel/plugin-syntax-export-default-from": "7.8.3" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.4.4.tgz", - "integrity": "sha512-Amph7Epui1Dh/xxUxS2+K22/MUi6+6JVTvy3P58tja3B6yKTSjwwx0/d83rF7551D6PVSSoplQb8GCwqec7HRw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.2.0" + "@babel/helper-plugin-utils": "7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "7.8.3" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", - "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", + "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + "@babel/helper-plugin-utils": "7.8.3", + "@babel/plugin-syntax-object-rest-spread": "7.8.3" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + "@babel/helper-plugin-utils": "7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.6.0.tgz", - "integrity": "sha512-kj4gkZ6qUggkprRq3Uh5KP8XnE1MdIO0J7MhdDX8+rAbB6dJ2UrensGIS+0NPZAaaJ1Vr0PN6oLUgXMU1uMcSg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-chaining": "^7.2.0" + "@babel/helper-plugin-utils": "7.8.3", + "@babel/plugin-syntax-optional-chaining": "7.8.3" } }, "@babel/plugin-syntax-class-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz", - "integrity": "sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz", + "integrity": "sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-syntax-dynamic-import": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", - "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-syntax-export-default-from": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.2.0.tgz", - "integrity": "sha512-c7nqUnNST97BWPtoe+Ssi+fJukc9P9/JMZ71IOMNQWza2E+Psrd46N6AEvtw6pqK+gt7ChjXyrw4SPDO79f3Lw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.8.3.tgz", + "integrity": "sha512-a1qnnsr73KLNIQcQlcQ4ZHxqqfBKM6iNQZW2OMTyxNbA2WC7SHWHtGVpFzWtQAuS2pspkWVzdEBXXx8Ik0Za4w==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-syntax-flow": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.7.0.tgz", - "integrity": "sha512-vQMV07p+L+jZeUnvX3pEJ9EiXGCjB5CTTvsirFD9rpEuATnoAvLBLoYbw1v5tyn3d2XxSuvEKi8cV3KqYUa0vQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz", + "integrity": "sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-syntax-jsx": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz", - "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz", + "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.2.0.tgz", - "integrity": "sha512-lRCEaKE+LTxDQtgbYajI04ddt6WW0WJq57xqkAZ+s11h4YgfRHhVA/Y2VhfPzzFD4qeLHWg32DMp9HooY4Kqlg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-syntax-optional-chaining": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.2.0.tgz", - "integrity": "sha512-HtGCtvp5Uq/jH/WNUPkK6b7rufnCPLLlDAFN7cmACoIjaOOiXxUt3SswU5loHqrhtqTsa/WoLQ1OQ1AGuZqaWA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-syntax-typescript": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz", - "integrity": "sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz", + "integrity": "sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", - "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.0.tgz", - "integrity": "sha512-vLI2EFLVvRBL3d8roAMqtVY0Bm9C1QzLkdS57hiKrjUBSqsQYrBsMCeOg/0KK7B0eK9V71J5mWcha9yyoI2tZw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", "requires": { - "@babel/helper-module-imports": "^7.7.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.7.0" + "@babel/helper-module-imports": "7.8.3", + "@babel/helper-plugin-utils": "7.8.3", + "@babel/helper-remap-async-to-generator": "7.8.3" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz", - "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "@babel/helper-plugin-utils": "7.8.3", + "lodash": "4.17.15" } }, "@babel/plugin-transform-classes": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.0.tgz", - "integrity": "sha512-/b3cKIZwGeUesZheU9jNYcwrEA7f/Bo4IdPmvp7oHgvks2majB5BoT5byAql44fiNQYOPzhk2w8DbgfuafkMoA==", + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", + "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", "requires": { - "@babel/helper-annotate-as-pure": "^7.7.0", - "@babel/helper-define-map": "^7.7.0", - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-optimise-call-expression": "^7.7.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.7.0", - "@babel/helper-split-export-declaration": "^7.7.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", - "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", - "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==" - }, - "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "@babel/helper-annotate-as-pure": "7.8.3", + "@babel/helper-define-map": "7.8.3", + "@babel/helper-function-name": "7.8.3", + "@babel/helper-optimise-call-expression": "7.8.3", + "@babel/helper-plugin-utils": "7.8.3", + "@babel/helper-replace-supers": "7.8.6", + "@babel/helper-split-export-declaration": "7.8.3", + "globals": "11.12.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", - "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-destructuring": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", - "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", + "version": "7.8.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", + "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", - "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-builder-binary-assignment-operator-visitor": "7.8.3", + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.6.3.tgz", - "integrity": "sha512-l0ETkyEofkqFJ9LS6HChNIKtVJw2ylKbhYMlJ5C6df+ldxxaLIyXY4yOdDQQspfFpV8/vDiaWoJlvflstlYNxg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz", + "integrity": "sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.2.0" + "@babel/helper-plugin-utils": "7.8.3", + "@babel/plugin-syntax-flow": "7.8.3" } }, "@babel/plugin-transform-for-of": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", - "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", + "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.0.tgz", - "integrity": "sha512-P5HKu0d9+CzZxP5jcrWdpe7ZlFDe24bmqP6a6X8BHEBl/eizAsY8K6LX8LASZL0Jxdjm5eEfzp+FIrxCm/p8bA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", "requires": { - "@babel/helper-function-name": "^7.7.0", - "@babel/helper-plugin-utils": "^7.0.0" - }, - "dependencies": { - "@babel/helper-function-name": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", - "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", - "requires": { - "@babel/helper-get-function-arity": "^7.7.0", - "@babel/template": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", - "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", - "requires": { - "@babel/types": "^7.7.0" - } - }, - "@babel/parser": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==" - }, - "@babel/template": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", - "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/types": "^7.7.0" - } - }, - "@babel/types": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", - "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "@babel/helper-function-name": "7.8.3", + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", - "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", - "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.0.tgz", - "integrity": "sha512-KEMyWNNWnjOom8vR/1+d+Ocz/mILZG/eyHHO06OuBQ2aNhxT62fr4y6fGOplRx+CxCSp3IFwesL8WdINfY/3kg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", + "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", "requires": { - "@babel/helper-module-transforms": "^7.7.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.7.0", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-module-transforms": "7.9.0", + "@babel/helper-plugin-utils": "7.8.3", + "@babel/helper-simple-access": "7.8.3", + "babel-plugin-dynamic-import-node": "2.3.0" } }, "@babel/plugin-transform-object-assign": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.2.0.tgz", - "integrity": "sha512-nmE55cZBPFgUktbF2OuoZgPRadfxosLOpSgzEPYotKSls9J4pEPcembi8r78RU37Rph6UApCpNmsQA4QMWK9Ng==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.8.3.tgz", + "integrity": "sha512-i3LuN8tPDqUCRFu3dkzF2r1Nx0jp4scxtm7JxtIqI9he9Vk20YD+/zshdzR9JLsoBMlJlNR82a62vQExNEVx/Q==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-object-super": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz", - "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5" + "@babel/helper-plugin-utils": "7.8.3", + "@babel/helper-replace-supers": "7.8.6" } }, "@babel/plugin-transform-parameters": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", - "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "version": "7.9.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", + "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", "requires": { - "@babel/helper-call-delegate": "^7.4.4", - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-get-function-arity": "7.8.3", + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-property-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", - "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz", - "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz", + "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.7.0.tgz", - "integrity": "sha512-mXhBtyVB1Ujfy+0L6934jeJcSXj/VCg6whZzEcgiiZHNS0PGC7vUCsZDQCxxztkpIdF+dY1fUMcjAgEOC3ZOMQ==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz", + "integrity": "sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw==", "requires": { - "@babel/helper-builder-react-jsx": "^7.7.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" + "@babel/helper-builder-react-jsx": "7.9.0", + "@babel/helper-builder-react-jsx-experimental": "7.9.0", + "@babel/helper-plugin-utils": "7.8.3", + "@babel/plugin-syntax-jsx": "7.8.3" } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz", - "integrity": "sha512-58Q+Jsy4IDCZx7kqEZuSDdam/1oW8OdDX8f+Loo6xyxdfg1yF0GE2XNJQSTZCaMol93+FBzpWiPEwtbMloAcPg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz", + "integrity": "sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" + "@babel/helper-plugin-utils": "7.8.3", + "@babel/plugin-syntax-jsx": "7.8.3" } }, "@babel/plugin-transform-regenerator": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.0.tgz", - "integrity": "sha512-AXmvnC+0wuj/cFkkS/HFHIojxH3ffSXE+ttulrqWjZZRaUOonfJc60e1wSNT4rV8tIunvu/R3wCp71/tLAa9xg==", + "version": "7.8.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", + "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", "requires": { - "regenerator-transform": "^0.14.0" + "regenerator-transform": "0.14.4" } }, "@babel/plugin-transform-runtime": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.2.tgz", - "integrity": "sha512-cqULw/QB4yl73cS5Y0TZlQSjDvNkzDbu0FurTZyHlJpWE5T3PCMdnyV+xXoH1opr1ldyHODe3QAX3OMAii5NxA==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz", + "integrity": "sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw==", "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "resolve": "^1.8.1", - "semver": "^5.5.1" + "@babel/helper-module-imports": "7.8.3", + "@babel/helper-plugin-utils": "7.8.3", + "resolve": "1.15.1", + "semver": "5.7.1" }, "dependencies": { "semver": { @@ -1843,117 +653,127 @@ } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", - "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-spread": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", - "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", - "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" + "@babel/helper-plugin-utils": "7.8.3", + "@babel/helper-regex": "7.8.3" } }, "@babel/plugin-transform-template-literals": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", - "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-annotate-as-pure": "7.8.3", + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/plugin-transform-typescript": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.7.2.tgz", - "integrity": "sha512-UWhDaJRqdPUtdK1s0sKYdoRuqK0NepjZto2UZltvuCgMoMZmdjhgz5hcRokie/3aYEaSz3xvusyoayVaq4PjRg==", + "version": "7.9.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.4.tgz", + "integrity": "sha512-yeWeUkKx2auDbSxRe8MusAG+n4m9BFY/v+lPjmQDgOFX5qnySkUY5oXzkp6FwPdsYqnKay6lorXYdC0n3bZO7w==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.7.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-typescript": "^7.2.0" + "@babel/helper-create-class-features-plugin": "7.8.6", + "@babel/helper-plugin-utils": "7.8.3", + "@babel/plugin-syntax-typescript": "7.8.3" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.0.tgz", - "integrity": "sha512-RrThb0gdrNwFAqEAAx9OWgtx6ICK69x7i9tCnMdVrxQwSDp/Abu9DXFU5Hh16VP33Rmxh04+NGW28NsIkFvFKA==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.7.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-create-regexp-features-plugin": "7.8.8", + "@babel/helper-plugin-utils": "7.8.3" } }, "@babel/register": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.4.4.tgz", - "integrity": "sha512-sn51H88GRa00+ZoMqCVgOphmswG4b7mhf9VOB0LUBAieykq2GnRFerlN+JQkO/ntT7wz4jaHNSRPg9IdMPEUkA==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.9.0.tgz", + "integrity": "sha512-Tv8Zyi2J2VRR8g7pC5gTeIN8Ihultbmk0ocyNz8H2nEZbmhp1N6q0A1UGsQbDvGP/sNinQKUHf3SqXwqjtFv4Q==", "requires": { - "core-js": "^3.0.0", - "find-cache-dir": "^2.0.0", - "lodash": "^4.17.11", - "mkdirp": "^0.5.1", - "pirates": "^4.0.0", - "source-map-support": "^0.5.9" - }, - "dependencies": { - "core-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.1.tgz", - "integrity": "sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew==" - } + "find-cache-dir": "2.1.0", + "lodash": "4.17.15", + "make-dir": "2.1.0", + "pirates": "4.0.1", + "source-map-support": "0.5.16" } }, "@babel/runtime": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz", - "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==", + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", "requires": { - "regenerator-runtime": "^0.13.2" + "regenerator-runtime": "0.13.5" }, "dependencies": { "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" + } + } + }, + "@babel/runtime-corejs3": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.9.2.tgz", + "integrity": "sha512-HHxmgxbIzOfFlZ+tdeRKtaxWOMUoCG5Mu3wKeUmOxjYrwb3AAHgnmtCUbPPK11/raIWLIBK250t8E2BPO0p7jA==", + "dev": true, + "requires": { + "core-js-pure": "3.6.4", + "regenerator-runtime": "0.13.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true } } }, "@babel/template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", - "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", + "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" + "@babel/code-frame": "7.8.3", + "@babel/parser": "7.9.4", + "@babel/types": "7.9.0" } }, "@babel/traverse": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz", - "integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", + "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", "requires": { - "@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.4", - "@babel/types": "^7.4.4", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.11" + "@babel/code-frame": "7.8.3", + "@babel/generator": "7.9.4", + "@babel/helper-function-name": "7.8.3", + "@babel/helper-split-export-declaration": "7.8.3", + "@babel/parser": "7.9.4", + "@babel/types": "7.9.0", + "debug": "4.1.1", + "globals": "11.12.0", + "lodash": "4.17.15" }, "dependencies": { "debug": { @@ -1961,24 +781,24 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, "@babel/types": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", - "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", + "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", - "to-fast-properties": "^2.0.0" + "@babel/helper-validator-identifier": "7.9.0", + "lodash": "4.17.15", + "to-fast-properties": "2.0.0" } }, "@jest/console": { @@ -1987,9 +807,9 @@ "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", "dev": true, "requires": { - "@jest/source-map": "^24.9.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" + "@jest/source-map": "24.9.0", + "chalk": "2.4.2", + "slash": "2.0.0" } }, "@jest/core": { @@ -1998,44 +818,44 @@ "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.9.0", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-resolve-dependencies": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "jest-watcher": "^24.9.0", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", - "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "slash": "^2.0.0", - "strip-ansi": "^5.0.0" + "@jest/console": "24.9.0", + "@jest/reporters": "24.9.0", + "@jest/test-result": "24.9.0", + "@jest/transform": "24.9.0", + "@jest/types": "24.9.0", + "ansi-escapes": "3.2.0", + "chalk": "2.4.2", + "exit": "0.1.2", + "graceful-fs": "4.2.3", + "jest-changed-files": "24.9.0", + "jest-config": "24.9.0", + "jest-haste-map": "24.9.0", + "jest-message-util": "24.9.0", + "jest-regex-util": "24.9.0", + "jest-resolve": "24.9.0", + "jest-resolve-dependencies": "24.9.0", + "jest-runner": "24.9.0", + "jest-runtime": "24.9.0", + "jest-snapshot": "24.9.0", + "jest-util": "24.9.0", + "jest-validate": "24.9.0", + "jest-watcher": "24.9.0", + "micromatch": "3.1.10", + "p-each-series": "1.0.0", + "realpath-native": "1.1.0", + "rimraf": "2.7.1", + "slash": "2.0.0", + "strip-ansi": "5.2.0" }, "dependencies": { "@cnakazawa/watch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", - "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" + "exec-sh": "0.3.4", + "minimist": "1.2.5" } }, "ansi-regex": { @@ -2062,16 +882,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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" + "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.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -2080,7 +900,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -2091,7 +911,7 @@ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "rsvp": "^4.8.4" + "rsvp": "4.8.5" } }, "exec-sh": { @@ -2106,13 +926,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "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" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -2121,7 +941,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -2130,7 +950,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -2139,7 +959,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -2148,7 +968,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -2159,7 +979,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -2168,7 +988,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -2179,9 +999,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -2198,14 +1018,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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" + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -2214,7 +1034,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -2223,7 +1043,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -2234,10 +1054,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -2246,7 +1066,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -2257,7 +1077,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -2266,7 +1086,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -2275,9 +1095,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } }, "is-number": { @@ -2286,7 +1106,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -2295,7 +1115,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -2306,18 +1126,18 @@ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" + "@jest/types": "24.9.0", + "anymatch": "2.0.0", + "fb-watchman": "2.0.1", + "fsevents": "1.2.12", + "graceful-fs": "4.2.3", + "invariant": "2.2.4", + "jest-serializer": "24.9.0", + "jest-util": "24.9.0", + "jest-worker": "24.9.0", + "micromatch": "3.1.10", + "sane": "4.1.0", + "walker": "1.0.7" } }, "jest-worker": { @@ -2326,14 +1146,14 @@ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "merge-stream": "2.0.0", + "supports-color": "6.1.0" } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "merge-stream": { @@ -2348,27 +1168,21 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "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" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -2381,15 +1195,15 @@ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" + "@cnakazawa/watch": "1.0.4", + "anymatch": "2.0.0", + "capture-exit": "2.0.0", + "exec-sh": "0.3.4", + "execa": "1.0.0", + "fb-watchman": "2.0.1", + "micromatch": "3.1.10", + "minimist": "1.2.5", + "walker": "1.0.7" } }, "strip-ansi": { @@ -2398,7 +1212,7 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "4.1.0" } }, "supports-color": { @@ -2407,7 +1221,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -2418,10 +1232,10 @@ "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", "dev": true, "requires": { - "@jest/fake-timers": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0" + "@jest/fake-timers": "24.9.0", + "@jest/transform": "24.9.0", + "@jest/types": "24.9.0", + "jest-mock": "24.9.0" } }, "@jest/fake-timers": { @@ -2430,9 +1244,9 @@ "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0" + "@jest/types": "24.9.0", + "jest-message-util": "24.9.0", + "jest-mock": "24.9.0" } }, "@jest/reporters": { @@ -2441,37 +1255,37 @@ "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", "dev": true, "requires": { - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.1", - "istanbul-reports": "^2.2.6", - "jest-haste-map": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "node-notifier": "^5.4.2", - "slash": "^2.0.0", - "source-map": "^0.6.0", - "string-length": "^2.0.0" + "@jest/environment": "24.9.0", + "@jest/test-result": "24.9.0", + "@jest/transform": "24.9.0", + "@jest/types": "24.9.0", + "chalk": "2.4.2", + "exit": "0.1.2", + "glob": "7.1.6", + "istanbul-lib-coverage": "2.0.5", + "istanbul-lib-instrument": "3.3.0", + "istanbul-lib-report": "2.0.8", + "istanbul-lib-source-maps": "3.0.6", + "istanbul-reports": "2.2.7", + "jest-haste-map": "24.9.0", + "jest-resolve": "24.9.0", + "jest-runtime": "24.9.0", + "jest-util": "24.9.0", + "jest-worker": "24.9.0", + "node-notifier": "5.4.3", + "slash": "2.0.0", + "source-map": "0.6.1", + "string-length": "2.0.0" }, "dependencies": { "@cnakazawa/watch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", - "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" + "exec-sh": "0.3.4", + "minimist": "1.2.5" } }, "arr-diff": { @@ -2492,16 +1306,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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" + "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.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -2510,7 +1324,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -2521,7 +1335,7 @@ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "rsvp": "^4.8.4" + "rsvp": "4.8.5" } }, "exec-sh": { @@ -2536,13 +1350,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "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" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -2551,7 +1365,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -2560,7 +1374,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -2569,7 +1383,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -2578,7 +1392,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -2589,7 +1403,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -2598,7 +1412,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -2609,9 +1423,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -2628,14 +1442,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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" + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -2644,7 +1458,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -2653,7 +1467,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -2664,10 +1478,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -2676,7 +1490,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -2687,7 +1501,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -2696,7 +1510,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -2705,9 +1519,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } }, "is-number": { @@ -2716,7 +1530,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -2725,7 +1539,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -2736,18 +1550,18 @@ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" + "@jest/types": "24.9.0", + "anymatch": "2.0.0", + "fb-watchman": "2.0.1", + "fsevents": "1.2.12", + "graceful-fs": "4.2.3", + "invariant": "2.2.4", + "jest-serializer": "24.9.0", + "jest-util": "24.9.0", + "jest-worker": "24.9.0", + "micromatch": "3.1.10", + "sane": "4.1.0", + "walker": "1.0.7" } }, "jest-worker": { @@ -2756,14 +1570,14 @@ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "merge-stream": "2.0.0", + "supports-color": "6.1.0" } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "merge-stream": { @@ -2778,27 +1592,21 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "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" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -2811,15 +1619,15 @@ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" + "@cnakazawa/watch": "1.0.4", + "anymatch": "2.0.0", + "capture-exit": "2.0.0", + "exec-sh": "0.3.4", + "execa": "1.0.0", + "fb-watchman": "2.0.1", + "micromatch": "3.1.10", + "minimist": "1.2.5", + "walker": "1.0.7" } }, "source-map": { @@ -2834,7 +1642,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -2845,9 +1653,9 @@ "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", "dev": true, "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" + "callsites": "3.1.0", + "graceful-fs": "4.2.3", + "source-map": "0.6.1" }, "dependencies": { "callsites": { @@ -2870,9 +1678,9 @@ "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", "dev": true, "requires": { - "@jest/console": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/istanbul-lib-coverage": "^2.0.0" + "@jest/console": "24.9.0", + "@jest/types": "24.9.0", + "@types/istanbul-lib-coverage": "2.0.1" } }, "@jest/test-sequencer": { @@ -2881,20 +1689,20 @@ "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", "dev": true, "requires": { - "@jest/test-result": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-runner": "^24.9.0", - "jest-runtime": "^24.9.0" + "@jest/test-result": "24.9.0", + "jest-haste-map": "24.9.0", + "jest-runner": "24.9.0", + "jest-runtime": "24.9.0" }, "dependencies": { "@cnakazawa/watch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", - "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" + "exec-sh": "0.3.4", + "minimist": "1.2.5" } }, "arr-diff": { @@ -2915,16 +1723,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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" + "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.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -2933,7 +1741,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -2944,7 +1752,7 @@ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "rsvp": "^4.8.4" + "rsvp": "4.8.5" } }, "exec-sh": { @@ -2959,13 +1767,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "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" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -2974,7 +1782,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -2983,7 +1791,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -2992,7 +1800,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -3001,7 +1809,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3012,7 +1820,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -3021,7 +1829,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3032,9 +1840,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -3051,14 +1859,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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" + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -3067,7 +1875,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -3076,7 +1884,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -3087,10 +1895,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -3099,7 +1907,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -3110,7 +1918,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -3119,7 +1927,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -3128,9 +1936,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } }, "is-number": { @@ -3139,7 +1947,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -3148,7 +1956,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3159,18 +1967,18 @@ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" + "@jest/types": "24.9.0", + "anymatch": "2.0.0", + "fb-watchman": "2.0.1", + "fsevents": "1.2.12", + "graceful-fs": "4.2.3", + "invariant": "2.2.4", + "jest-serializer": "24.9.0", + "jest-util": "24.9.0", + "jest-worker": "24.9.0", + "micromatch": "3.1.10", + "sane": "4.1.0", + "walker": "1.0.7" } }, "jest-worker": { @@ -3179,14 +1987,14 @@ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "merge-stream": "2.0.0", + "supports-color": "6.1.0" } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "merge-stream": { @@ -3201,27 +2009,21 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "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" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -3234,15 +2036,15 @@ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" + "@cnakazawa/watch": "1.0.4", + "anymatch": "2.0.0", + "capture-exit": "2.0.0", + "exec-sh": "0.3.4", + "execa": "1.0.0", + "fb-watchman": "2.0.1", + "micromatch": "3.1.10", + "minimist": "1.2.5", + "walker": "1.0.7" } }, "supports-color": { @@ -3251,7 +2053,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -3262,32 +2064,32 @@ "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.9.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.9.0", - "jest-regex-util": "^24.9.0", - "jest-util": "^24.9.0", - "micromatch": "^3.1.10", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", + "@babel/core": "7.9.0", + "@jest/types": "24.9.0", + "babel-plugin-istanbul": "5.2.0", + "chalk": "2.4.2", + "convert-source-map": "1.7.0", + "fast-json-stable-stringify": "2.1.0", + "graceful-fs": "4.2.3", + "jest-haste-map": "24.9.0", + "jest-regex-util": "24.9.0", + "jest-util": "24.9.0", + "micromatch": "3.1.10", + "pirates": "4.0.1", + "realpath-native": "1.1.0", + "slash": "2.0.0", + "source-map": "0.6.1", "write-file-atomic": "2.4.1" }, "dependencies": { "@cnakazawa/watch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", - "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" + "exec-sh": "0.3.4", + "minimist": "1.2.5" } }, "arr-diff": { @@ -3308,16 +2110,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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" + "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.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -3326,7 +2128,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -3337,7 +2139,7 @@ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "rsvp": "^4.8.4" + "rsvp": "4.8.5" } }, "exec-sh": { @@ -3352,13 +2154,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "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" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -3367,7 +2169,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -3376,7 +2178,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -3385,7 +2187,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -3394,7 +2196,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3405,7 +2207,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -3414,7 +2216,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3425,9 +2227,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -3444,14 +2246,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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" + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -3460,7 +2262,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -3469,7 +2271,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -3480,10 +2282,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -3492,7 +2294,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -3503,7 +2305,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -3512,7 +2314,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -3521,9 +2323,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } }, "is-number": { @@ -3532,7 +2334,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -3541,7 +2343,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -3552,18 +2354,18 @@ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" + "@jest/types": "24.9.0", + "anymatch": "2.0.0", + "fb-watchman": "2.0.1", + "fsevents": "1.2.12", + "graceful-fs": "4.2.3", + "invariant": "2.2.4", + "jest-serializer": "24.9.0", + "jest-util": "24.9.0", + "jest-worker": "24.9.0", + "micromatch": "3.1.10", + "sane": "4.1.0", + "walker": "1.0.7" } }, "jest-worker": { @@ -3572,14 +2374,14 @@ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "merge-stream": "2.0.0", + "supports-color": "6.1.0" } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "merge-stream": { @@ -3594,27 +2396,21 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "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" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -3627,15 +2423,15 @@ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" + "@cnakazawa/watch": "1.0.4", + "anymatch": "2.0.0", + "capture-exit": "2.0.0", + "exec-sh": "0.3.4", + "execa": "1.0.0", + "fb-watchman": "2.0.1", + "micromatch": "3.1.10", + "minimist": "1.2.5", + "walker": "1.0.7" } }, "source-map": { @@ -3650,7 +2446,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } }, "write-file-atomic": { @@ -3659,9 +2455,9 @@ "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "graceful-fs": "4.2.3", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" } } } @@ -3672,55 +2468,55 @@ "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^13.0.0" + "@types/istanbul-lib-coverage": "2.0.1", + "@types/istanbul-reports": "1.1.1", + "@types/yargs": "13.0.8" } }, "@ptomasroos/react-native-multi-slider": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@ptomasroos/react-native-multi-slider/-/react-native-multi-slider-1.0.0.tgz", - "integrity": "sha512-NpX22rQLArg9widwMzGf7XsInTDf6mfY/D1XaDVjglNkVphj3NSN37+nF6MofArCxC++1P+jHv0SGWbmJQwy4g==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ptomasroos/react-native-multi-slider/-/react-native-multi-slider-2.2.0.tgz", + "integrity": "sha512-JIlNo64JYTYeipIv+QcRNouBJdklWnQtwGlOCSIK7S4qQY5z6lYLTVnYJtlZoGJgXeSorPz9aRGrzfmE/eULoQ==" }, "@react-native-community/cli": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-1.11.2.tgz", - "integrity": "sha512-5NuYd30f5PCTrGUbZLnusZKv5nfTWvTDTRa/3Q4vwdMnUQrhm9sZXWGQ5CnFoQ7cE58EAqhj6/ShXeJF3DZ9uQ==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-1.12.0.tgz", + "integrity": "sha512-GAs4JgVP8QkEYeZks/T7cCrBuwFJKxd9ksBLRdQ058uvLGkOEeS4g3y4GsVM/9C1zat5h6Z6QwU0h/hj7G3tzg==", "requires": { - "chalk": "^1.1.1", - "commander": "^2.19.0", - "compression": "^1.7.1", - "connect": "^3.6.5", - "denodeify": "^1.2.1", - "envinfo": "^5.7.0", - "errorhandler": "^1.5.0", - "escape-string-regexp": "^1.0.5", - "execa": "^1.0.0", - "fs-extra": "^7.0.1", - "glob": "^7.1.1", - "graceful-fs": "^4.1.3", - "inquirer": "^3.0.6", - "lodash": "^4.17.5", - "metro": "^0.51.0", - "metro-config": "^0.51.0", - "metro-core": "^0.51.0", - "metro-memory-fs": "^0.51.0", - "metro-react-native-babel-transformer": "^0.51.0", - "mime": "^1.3.4", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "morgan": "^1.9.0", - "node-fetch": "^2.2.0", - "node-notifier": "^5.2.1", - "opn": "^3.0.2", - "plist": "^3.0.0", - "semver": "^5.0.3", - "serve-static": "^1.13.1", + "chalk": "1.1.3", + "commander": "2.20.3", + "compression": "1.7.4", + "connect": "3.7.0", + "denodeify": "1.2.1", + "envinfo": "5.12.1", + "errorhandler": "1.5.1", + "escape-string-regexp": "1.0.5", + "execa": "1.0.0", + "fs-extra": "7.0.1", + "glob": "7.1.6", + "graceful-fs": "4.2.3", + "inquirer": "3.3.0", + "lodash": "4.17.15", + "metro": "0.51.1", + "metro-config": "0.51.1", + "metro-core": "0.51.1", + "metro-memory-fs": "0.51.1", + "metro-react-native-babel-transformer": "0.51.0", + "mime": "1.6.0", + "minimist": "1.2.5", + "mkdirp": "0.5.4", + "morgan": "1.10.0", + "node-fetch": "2.6.0", + "node-notifier": "5.4.3", + "opn": "3.0.3", + "plist": "3.0.1", + "semver": "5.3.0", + "serve-static": "1.14.1", "shell-quote": "1.6.1", - "slash": "^2.0.0", - "ws": "^1.1.0", - "xcode": "^2.0.0", - "xmldoc": "^0.4.0" + "slash": "2.0.0", + "ws": "1.1.5", + "xcode": "2.1.0", + "xmldoc": "0.4.0" }, "dependencies": { "base64-js": { @@ -3728,17 +2524,12 @@ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, - "big-integer": { - "version": "1.6.48", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", - "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" - }, "bplist-creator": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz", "integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==", "requires": { - "stream-buffers": "~2.2.0" + "stream-buffers": "2.2.0" } }, "bplist-parser": { @@ -3746,7 +2537,7 @@ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", "requires": { - "big-integer": "^1.6.44" + "big-integer": "1.6.48" } }, "chalk": { @@ -3754,11 +2545,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "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" + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" } }, "fs-extra": { @@ -3766,24 +2557,19 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "graceful-fs": "4.2.3", + "jsonfile": "4.0.0", + "universalify": "0.1.2" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, "plist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", "requires": { - "base64-js": "^1.2.3", - "xmlbuilder": "^9.0.7", - "xmldom": "0.1.x" + "base64-js": "1.3.1", + "xmlbuilder": "9.0.7", + "xmldom": "0.1.31" } }, "simple-plist": { @@ -3793,16 +2579,16 @@ "requires": { "bplist-creator": "0.0.8", "bplist-parser": "0.2.0", - "plist": "^3.0.1" + "plist": "3.0.1" } }, "xcode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xcode/-/xcode-2.0.0.tgz", - "integrity": "sha512-5xF6RCjAdDEiEsbbZaS/gBRt3jZ/177otZcpoLCjGN/u1LrfgH7/Sgeeavpr/jELpyDqN2im3AKosl2G2W8hfw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-2.1.0.tgz", + "integrity": "sha512-uCrmPITrqTEzhn0TtT57fJaNaw8YJs1aCzs+P/QqxsDbvPZSv7XMPPwXrKvHtD6pLjBM/NaVwraWJm8q83Y4iQ==", "requires": { - "simple-plist": "^1.0.0", - "uuid": "^3.3.2" + "simple-plist": "1.1.0", + "uuid": "3.4.0" } }, "xmlbuilder": { @@ -3817,29 +2603,29 @@ "resolved": "https://registry.npmjs.org/@react-native-community/push-notification-ios/-/push-notification-ios-1.4.0.tgz", "integrity": "sha512-YnfxtAuHkiuvprh1d9npGZVwOrso6sys8+w8XY6RQAs8kD2LHZg0C8rA5gfX4jW/GrQV7m14Y6ngciE6Rpd91w==", "requires": { - "invariant": "^2.2.4" + "invariant": "2.2.4" } }, "@types/babel__core": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz", - "integrity": "sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.6.tgz", + "integrity": "sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg==", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "@babel/parser": "7.9.4", + "@babel/types": "7.9.0", + "@types/babel__generator": "7.6.1", + "@types/babel__template": "7.0.2", + "@types/babel__traverse": "7.0.9" } }, "@types/babel__generator": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.0.tgz", - "integrity": "sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", + "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "7.9.0" } }, "@types/babel__template": { @@ -3848,17 +2634,17 @@ "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/parser": "7.9.4", + "@babel/types": "7.9.0" } }, "@types/babel__traverse": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.7.tgz", - "integrity": "sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.9.tgz", + "integrity": "sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw==", "dev": true, "requires": { - "@babel/types": "^7.3.0" + "@babel/types": "7.9.0" } }, "@types/istanbul-lib-coverage": { @@ -3868,12 +2654,12 @@ "dev": true }, "@types/istanbul-lib-report": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", - "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "*" + "@types/istanbul-lib-coverage": "2.0.1" } }, "@types/istanbul-reports": { @@ -3882,8 +2668,8 @@ "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" + "@types/istanbul-lib-coverage": "2.0.1", + "@types/istanbul-lib-report": "3.0.0" } }, "@types/node": { @@ -3910,9 +2696,9 @@ "integrity": "sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==", "dev": true, "requires": { - "@types/node": "*", - "@types/unist": "*", - "@types/vfile-message": "*" + "@types/node": "12.12.31", + "@types/unist": "2.0.3", + "@types/vfile-message": "2.0.0" } }, "@types/vfile-message": { @@ -3925,24 +2711,24 @@ } }, "@types/yargs": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz", - "integrity": "sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ==", + "version": "13.0.8", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", + "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", "dev": true, "requires": { - "@types/yargs-parser": "*" + "@types/yargs-parser": "15.0.0" } }, "@types/yargs-parser": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-13.1.0.tgz", - "integrity": "sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", "dev": true }, "abab": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.2.tgz", - "integrity": "sha512-2scffjvioEmNz0OyDSLGWDfKCVwaKc6l9Pm9kOIREU13ClXZvHpg/nRL5xyjSSSLhOnXqft2HpsAzNEEA8cFFg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", "dev": true }, "abbrev": { @@ -3960,14 +2746,14 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "requires": { - "mime-types": "~2.1.24", + "mime-types": "2.1.26", "negotiator": "0.6.2" } }, "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, "acorn-globals": { @@ -3976,14 +2762,14 @@ "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", "dev": true, "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" + "acorn": "6.4.1", + "acorn-walk": "6.2.0" } }, "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", "dev": true }, "acorn-walk": { @@ -3997,7 +2783,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "requires": { - "es6-promisify": "^5.0.0" + "es6-promisify": "5.0.0" } }, "ajv": { @@ -4005,10 +2791,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "co": "4.6.0", + "fast-deep-equal": "1.1.0", + "fast-json-stable-stringify": "2.1.0", + "json-schema-traverse": "0.3.1" } }, "ansi": { @@ -4021,7 +2807,7 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "requires": { - "ansi-wrap": "^0.1.0" + "ansi-wrap": "0.1.0" } }, "ansi-cyan": { @@ -4073,8 +2859,8 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "micromatch": "3.1.10", + "normalize-path": "2.1.1" }, "dependencies": { "arr-diff": { @@ -4092,16 +2878,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "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" + "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.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -4109,7 +2895,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -4119,13 +2905,13 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "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" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -4133,7 +2919,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -4141,7 +2927,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -4149,7 +2935,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -4157,7 +2943,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -4167,7 +2953,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -4175,7 +2961,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -4185,9 +2971,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -4202,14 +2988,14 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { - "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" + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -4217,7 +3003,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -4225,7 +3011,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -4235,10 +3021,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -4246,7 +3032,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -4256,7 +3042,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -4264,7 +3050,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -4272,9 +3058,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } }, "is-number": { @@ -4282,7 +3068,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -4290,34 +3076,34 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "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" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } } } @@ -4332,8 +3118,8 @@ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "delegates": "1.0.0", + "readable-stream": "2.3.7" } }, "argparse": { @@ -4341,7 +3127,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "~1.0.2" + "sprintf-js": "1.0.3" } }, "arr-diff": { @@ -4349,7 +3135,7 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "requires": { - "arr-flatten": "^1.0.1" + "arr-flatten": "1.1.0" } }, "arr-flatten": { @@ -4367,7 +3153,7 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", "requires": { - "typical": "^2.6.1" + "typical": "2.6.1" } }, "array-equal": { @@ -4382,13 +3168,14 @@ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" }, "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "define-properties": "1.1.3", + "es-abstract": "1.17.5", + "is-string": "1.0.5" } }, "array-map": { @@ -4426,14 +3213,15 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { - "safer-buffer": "~2.1.0" + "safer-buffer": "2.1.2" } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "requires": { + "object-assign": "4.1.1", "util": "0.10.3" } }, @@ -4464,20 +3252,13 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "requires": { - "lodash": "^4.17.14" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - } + "lodash": "4.17.15" } }, "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" }, "asynckit": { "version": "0.4.0", @@ -4495,22 +3276,22 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" }, "babel-eslint": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz", - "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", "dev": true, "requires": { - "@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" + "@babel/code-frame": "7.8.3", + "@babel/parser": "7.9.4", + "@babel/traverse": "7.9.0", + "@babel/types": "7.9.0", + "eslint-visitor-keys": "1.1.0", + "resolve": "1.15.1" } }, "babel-jest": { @@ -4519,13 +3300,13 @@ "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", "dev": true, "requires": { - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.9.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" + "@jest/transform": "24.9.0", + "@jest/types": "24.9.0", + "@types/babel__core": "7.1.6", + "babel-plugin-istanbul": "5.2.0", + "babel-preset-jest": "24.9.0", + "chalk": "2.4.2", + "slash": "2.0.0" } }, "babel-plugin-dynamic-import-node": { @@ -4533,7 +3314,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", "requires": { - "object.assign": "^4.1.0" + "object.assign": "4.1.0" } }, "babel-plugin-istanbul": { @@ -4542,10 +3323,10 @@ "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.3.0", - "test-exclude": "^5.2.3" + "@babel/helper-plugin-utils": "7.8.3", + "find-up": "3.0.0", + "istanbul-lib-instrument": "3.3.0", + "test-exclude": "5.2.3" }, "dependencies": { "find-up": { @@ -4554,7 +3335,7 @@ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "3.0.0" } }, "locate-path": { @@ -4563,17 +3344,17 @@ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "3.0.0", + "path-exists": "3.0.0" } }, "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-try": "2.2.0" } }, "p-locate": { @@ -4582,7 +3363,7 @@ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "2.2.2" } }, "p-try": { @@ -4599,7 +3380,7 @@ "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", "dev": true, "requires": { - "@types/babel__traverse": "^7.0.6" + "@types/babel__traverse": "7.0.9" } }, "babel-plugin-syntax-trailing-function-commas": { @@ -4612,33 +3393,33 @@ "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz", "integrity": "sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw==", "requires": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-class-properties": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-member-expression-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-property-literals": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + "@babel/plugin-proposal-class-properties": "7.8.3", + "@babel/plugin-proposal-object-rest-spread": "7.9.0", + "@babel/plugin-syntax-class-properties": "7.8.3", + "@babel/plugin-syntax-flow": "7.8.3", + "@babel/plugin-syntax-jsx": "7.8.3", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@babel/plugin-transform-arrow-functions": "7.8.3", + "@babel/plugin-transform-block-scoped-functions": "7.8.3", + "@babel/plugin-transform-block-scoping": "7.8.3", + "@babel/plugin-transform-classes": "7.9.2", + "@babel/plugin-transform-computed-properties": "7.8.3", + "@babel/plugin-transform-destructuring": "7.8.8", + "@babel/plugin-transform-flow-strip-types": "7.9.0", + "@babel/plugin-transform-for-of": "7.9.0", + "@babel/plugin-transform-function-name": "7.8.3", + "@babel/plugin-transform-literals": "7.8.3", + "@babel/plugin-transform-member-expression-literals": "7.8.3", + "@babel/plugin-transform-modules-commonjs": "7.9.0", + "@babel/plugin-transform-object-super": "7.8.3", + "@babel/plugin-transform-parameters": "7.9.3", + "@babel/plugin-transform-property-literals": "7.8.3", + "@babel/plugin-transform-react-display-name": "7.8.3", + "@babel/plugin-transform-react-jsx": "7.9.4", + "@babel/plugin-transform-shorthand-properties": "7.8.3", + "@babel/plugin-transform-spread": "7.8.3", + "@babel/plugin-transform-template-literals": "7.8.3", + "babel-plugin-syntax-trailing-function-commas": "7.0.0-beta.0" } }, "babel-preset-jest": { @@ -4647,8 +3428,8 @@ "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", "dev": true, "requires": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.9.0" + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "babel-plugin-jest-hoist": "24.9.0" } }, "bail": { @@ -4667,13 +3448,13 @@ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "requires": { - "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" + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.3.0", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.2", + "pascalcase": "0.1.1" }, "dependencies": { "define-property": { @@ -4681,7 +3462,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "is-accessor-descriptor": { @@ -4689,7 +3470,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -4697,7 +3478,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -4705,15 +3486,15 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, @@ -4737,16 +3518,15 @@ }, "basic-changelog": { "version": "gitlab:bloodyhealth/basic-changelog#e55ce63f55cdc1a8f146406af5f31aacd739cc6b", - "from": "gitlab:bloodyhealth/basic-changelog", "dev": true, "requires": { - "git-tags": "^0.2.4", - "multicb": "^1.2.2", - "remark-parse": "^6.0.3", - "remark-stringify": "^6.0.4", - "to-vfile": "^5.0.2", - "unified": "^7.1.0", - "unist-builder": "^1.0.3" + "git-tags": "0.2.4", + "multicb": "1.2.2", + "remark-parse": "6.0.3", + "remark-stringify": "6.0.4", + "to-vfile": "5.0.3", + "unified": "7.1.0", + "unist-builder": "1.0.4" } }, "bcrypt-pbkdf": { @@ -4754,7 +3534,7 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { - "tweetnacl": "^0.14.3" + "tweetnacl": "0.14.5" } }, "big-integer": { @@ -4762,26 +3542,35 @@ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bl": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" + "readable-stream": "2.3.7", + "safe-buffer": "5.1.2" } }, "bluebird": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", - "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "bplist-creator": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz", "integrity": "sha1-N98VNgkoJLh8QvlXsBNEEXNyrkU=", "requires": { - "stream-buffers": "~2.2.0" + "stream-buffers": "2.2.0" } }, "bplist-parser": { @@ -4789,7 +3578,7 @@ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=", "requires": { - "big-integer": "^1.6.7" + "big-integer": "1.6.48" } }, "brace-expansion": { @@ -4797,7 +3586,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, @@ -4806,15 +3595,15 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.3" } }, "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, "browser-resolve": { @@ -4845,7 +3634,7 @@ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "requires": { - "node-int64": "^0.4.0" + "node-int64": "0.4.0" } }, "buffer": { @@ -4853,8 +3642,8 @@ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "base64-js": "1.1.2", + "ieee754": "1.1.13" } }, "buffer-alloc": { @@ -4862,8 +3651,8 @@ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" + "buffer-alloc-unsafe": "1.1.0", + "buffer-fill": "1.0.0" } }, "buffer-alloc-unsafe": { @@ -4892,10 +3681,10 @@ "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", "dev": true, "requires": { - "dtrace-provider": "~0.8", - "moment": "^2.10.6", - "mv": "~2", - "safe-json-stringify": "~1" + "dtrace-provider": "0.8.8", + "moment": "2.24.0", + "mv": "2.1.1", + "safe-json-stringify": "1.2.0" } }, "bunyan-debug-stream": { @@ -4904,8 +3693,8 @@ "integrity": "sha512-jJbQ1gXUL6vMmZVdbaTFK1v1sGa7axLrSQQwkB6HU9HCPTzsw2HsKcPHm1vgXZlEck/4IvEuRwg/9+083YelCg==", "dev": true, "requires": { - "colors": "^1.0.3", - "exception-formatter": "^1.0.4" + "colors": "1.4.0", + "exception-formatter": "1.0.7" } }, "bytes": { @@ -4918,15 +3707,15 @@ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "requires": { - "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" + "collection-visit": "1.0.0", + "component-emitter": "1.3.0", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.1", + "to-object-path": "0.3.0", + "union-value": "1.0.1", + "unset-value": "1.0.0" } }, "caller-callsite": { @@ -4934,7 +3723,7 @@ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "requires": { - "callsites": "^2.0.0" + "callsites": "2.0.0" } }, "caller-path": { @@ -4942,7 +3731,7 @@ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "requires": { - "caller-callsite": "^2.0.0" + "caller-callsite": "2.0.0" } }, "callsites": { @@ -4960,7 +3749,7 @@ "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", "requires": { - "rsvp": "^3.3.3" + "rsvp": "3.6.2" } }, "caseless": { @@ -4980,12 +3769,12 @@ "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", "dev": true, "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" + "assertion-error": "1.1.0", + "check-error": "1.0.2", + "deep-eql": "3.0.1", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.8" } }, "chalk": { @@ -4993,9 +3782,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.5.0" }, "dependencies": { "ansi-styles": { @@ -5003,7 +3792,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "supports-color": { @@ -5011,7 +3800,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -5057,9 +3846,9 @@ "integrity": "sha1-RzChHvYQ+tRQuPIjx50x172tgHQ=", "dev": true, "requires": { - "cross-spawn": "^4.0.2", - "node-version": "^1.0.0", - "promise-polyfill": "^6.0.1" + "cross-spawn": "4.0.2", + "node-version": "1.2.0", + "promise-polyfill": "6.1.0" }, "dependencies": { "cross-spawn": { @@ -5068,16 +3857,16 @@ "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" + "lru-cache": "4.1.5", + "which": "1.3.1" } } } }, "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, "ci-info": { "version": "2.0.0", @@ -5090,10 +3879,10 @@ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" }, "dependencies": { "define-property": { @@ -5101,7 +3890,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } @@ -5111,7 +3900,7 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { - "restore-cursor": "^2.0.0" + "restore-cursor": "2.0.0" } }, "cli-width": { @@ -5124,9 +3913,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" } }, "co": { @@ -5150,8 +3939,8 @@ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "map-visit": "1.0.0", + "object-visit": "1.0.1" } }, "color-convert": { @@ -5173,17 +3962,17 @@ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" }, "colors": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "requires": { - "delayed-stream": "~1.0.0" + "delayed-stream": "1.0.0" } }, "command-line-args": { @@ -5191,15 +3980,15 @@ "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz", "integrity": "sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA==", "requires": { - "array-back": "^2.0.0", - "find-replace": "^1.0.3", - "typical": "^2.6.1" + "array-back": "2.0.0", + "find-replace": "1.0.3", + "typical": "2.6.1" } }, "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "common-tags": { "version": "1.8.0", @@ -5218,11 +4007,11 @@ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, "compressible": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", - "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "requires": { - "mime-db": ">= 1.40.0 < 2" + "mime-db": "1.43.0" } }, "compression": { @@ -5230,13 +4019,13 @@ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "requires": { - "accepts": "~1.3.5", + "accepts": "1.3.7", "bytes": "3.0.0", - "compressible": "~2.0.16", + "compressible": "2.0.18", "debug": "2.6.9", - "on-headers": "~1.0.2", + "on-headers": "1.0.2", "safe-buffer": "5.1.2", - "vary": "~1.1.2" + "vary": "1.1.2" } }, "concat-map": { @@ -5249,16 +4038,16 @@ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "buffer-from": "1.1.1", + "inherits": "2.0.4", + "readable-stream": "2.3.7", + "typedarray": "0.0.6" }, "dependencies": { "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" } } }, @@ -5268,8 +4057,8 @@ "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", "dev": true, "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" + "ini": "1.3.5", + "proto-list": "1.2.4" } }, "connect": { @@ -5279,7 +4068,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.1.2", - "parseurl": "~1.3.3", + "parseurl": "1.3.3", "utils-merge": "1.0.1" } }, @@ -5289,12 +4078,11 @@ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "dev": true, + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "requires": { - "safe-buffer": "~5.1.1" + "safe-buffer": "5.1.2" } }, "copy-descriptor": { @@ -5303,9 +4091,15 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" + }, + "core-js-pure": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.4.tgz", + "integrity": "sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw==", + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -5317,10 +4111,10 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "import-fresh": "2.0.0", + "is-directory": "0.3.1", + "js-yaml": "3.13.1", + "parse-json": "4.0.0" } }, "create-react-class": { @@ -5328,35 +4122,49 @@ "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==", "requires": { - "fbjs": "^0.8.9", - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" + "fbjs": "0.8.17", + "loose-envify": "1.4.0", + "object-assign": "4.1.1" }, "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, "fbjs": { "version": "0.8.17", "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", "requires": { - "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" + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.21" } } } }, "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "nice-try": "1.0.5", + "path-key": "2.0.1", + "semver": "5.7.1", + "shebang-command": "1.2.0", + "which": "1.3.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "cssom": { @@ -5371,17 +4179,17 @@ "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", "dev": true, "requires": { - "cssom": "0.3.x" + "cssom": "0.3.8" } }, "csvtojson": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/csvtojson/-/csvtojson-2.0.8.tgz", - "integrity": "sha512-DC6YFtsJiA7t/Yz+KjzT6GXuKtU/5gRbbl7HJqvDVVir+dxdw2/1EgwfgJdnsvUT7lOnON5DvGftKuYWX1nMOQ==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/csvtojson/-/csvtojson-2.0.10.tgz", + "integrity": "sha512-lUWFxGKyhraKCW8Qghz6Z0f2l/PqB1W3AO0HKJzGIQ5JRSlR651ekJDiGJbBT4sRNNv5ddnSGVEnsxP9XRCVpQ==", "requires": { - "bluebird": "^3.5.1", - "lodash": "^4.17.3", - "strip-bom": "^2.0.0" + "bluebird": "3.7.2", + "lodash": "4.17.15", + "strip-bom": "2.0.0" } }, "curriable": { @@ -5394,7 +4202,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "data-urls": { @@ -5403,9 +4211,9 @@ "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", "dev": true, "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" + "abab": "2.0.3", + "whatwg-mimetype": "2.3.0", + "whatwg-url": "7.1.0" }, "dependencies": { "whatwg-url": { @@ -5414,9 +4222,9 @@ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" } } } @@ -5444,14 +4252,14 @@ "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", "requires": { - "decompress-tar": "^4.0.0", - "decompress-tarbz2": "^4.0.0", - "decompress-targz": "^4.0.0", - "decompress-unzip": "^4.0.1", - "graceful-fs": "^4.1.10", - "make-dir": "^1.0.0", - "pify": "^2.3.0", - "strip-dirs": "^2.0.0" + "decompress-tar": "4.1.1", + "decompress-tarbz2": "4.1.1", + "decompress-targz": "4.1.1", + "decompress-unzip": "4.0.1", + "graceful-fs": "4.2.3", + "make-dir": "1.3.0", + "pify": "2.3.0", + "strip-dirs": "2.1.0" }, "dependencies": { "make-dir": { @@ -5459,7 +4267,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "requires": { - "pify": "^3.0.0" + "pify": "3.0.0" }, "dependencies": { "pify": { @@ -5476,9 +4284,9 @@ "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", "requires": { - "file-type": "^5.2.0", - "is-stream": "^1.1.0", - "tar-stream": "^1.5.2" + "file-type": "5.2.0", + "is-stream": "1.1.0", + "tar-stream": "1.6.2" } }, "decompress-tarbz2": { @@ -5486,11 +4294,11 @@ "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", "requires": { - "decompress-tar": "^4.1.0", - "file-type": "^6.1.0", - "is-stream": "^1.1.0", - "seek-bzip": "^1.0.5", - "unbzip2-stream": "^1.0.9" + "decompress-tar": "4.1.1", + "file-type": "6.2.0", + "is-stream": "1.1.0", + "seek-bzip": "1.0.5", + "unbzip2-stream": "1.3.3" }, "dependencies": { "file-type": { @@ -5505,9 +4313,9 @@ "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", "requires": { - "decompress-tar": "^4.1.1", - "file-type": "^5.2.0", - "is-stream": "^1.1.0" + "decompress-tar": "4.1.1", + "file-type": "5.2.0", + "is-stream": "1.1.0" } }, "decompress-unzip": { @@ -5515,10 +4323,10 @@ "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", "requires": { - "file-type": "^3.8.0", - "get-stream": "^2.2.0", - "pify": "^2.3.0", - "yauzl": "^2.4.2" + "file-type": "3.9.0", + "get-stream": "2.3.1", + "pify": "2.3.0", + "yauzl": "2.10.0" }, "dependencies": { "file-type": { @@ -5531,8 +4339,8 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" + "object-assign": "4.1.1", + "pinkie-promise": "2.0.1" } } } @@ -5543,7 +4351,7 @@ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { - "type-detect": "^4.0.0" + "type-detect": "4.0.8" } }, "deep-extend": { @@ -5567,7 +4375,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "requires": { - "object-keys": "^1.0.12" + "object-keys": "1.1.1" } }, "define-property": { @@ -5575,8 +4383,8 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "is-descriptor": "1.0.2", + "isobject": "3.0.1" }, "dependencies": { "is-accessor-descriptor": { @@ -5584,7 +4392,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -5592,7 +4400,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -5600,15 +4408,15 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, @@ -5628,9 +4436,9 @@ "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=" }, "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, "deprecated-react-native-listview": { "version": "0.0.6", @@ -5649,9 +4457,9 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", + "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", "dev": true }, "detect-libc": { @@ -5666,113 +4474,33 @@ "dev": true }, "detox": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/detox/-/detox-13.1.1.tgz", - "integrity": "sha512-dDtV64wMryeHk/+Np339Gm5uEzjxFySUHxLmz9iMsDFgkPn+XDkBdPZtb76pRQwJnpSWlbKVP1zhcN9B6vfsJg==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/detox/-/detox-13.3.3.tgz", + "integrity": "sha512-Rphzj8sMcx0ScRCVuRFA9SJcj5nn32SJkkG4PvpsrH862iiX4cSCBBvuy0MfOq49IF5kGkEwoNTuYxXZq6Jvqw==", "dev": true, "requires": { - "@babel/core": "^7.4.5", - "bunyan": "^1.8.12", - "bunyan-debug-stream": "^1.1.0", - "chalk": "^2.4.2", - "child-process-promise": "^2.2.0", - "fs-extra": "^4.0.2", - "funpermaproxy": "^1.0.1", - "get-port": "^2.1.0", - "ini": "^1.3.4", - "lodash": "^4.17.5", - "minimist": "^1.2.0", - "proper-lockfile": "^3.0.2", - "sanitize-filename": "^1.6.1", - "shell-utils": "^1.0.9", - "tail": "^2.0.0", + "@babel/core": "7.9.0", + "bunyan": "1.8.12", + "bunyan-debug-stream": "1.1.1", + "chalk": "2.4.2", + "child-process-promise": "2.2.1", + "fs-extra": "4.0.3", + "funpermaproxy": "1.0.1", + "get-port": "2.1.0", + "ini": "1.3.5", + "lodash": "4.17.15", + "minimist": "1.2.5", + "proper-lockfile": "3.2.0", + "sanitize-filename": "1.6.3", + "shell-utils": "1.0.10", + "tail": "2.0.3", "telnet-client": "0.15.3", - "tempfile": "^2.0.0", - "ws": "^3.3.1", - "yargs": "^13.0.0", - "yargs-parser": "^13.0.0" + "tempfile": "2.0.0", + "ws": "3.3.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2" }, "dependencies": { - "@babel/core": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.4.tgz", - "integrity": "sha512-+DaeBEpYq6b2+ZmHx3tHspC+ZRflrvLqwfv8E3hNr5LVQoyBnL8RPKSBCg+rK2W2My9PWlujBiqd0ZPsR9Q6zQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.5.0", - "@babel/helpers": "^7.5.4", - "@babel/parser": "^7.5.0", - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.5.0", - "@babel/types": "^7.5.0", - "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": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.0.tgz", - "integrity": "sha512-1TTVrt7J9rcG5PMjvO7VEG3FrEoEJNHxumRq66GemPmzboLWtIjjcJgk8rokuAS7IiRSpgVSu5Vb9lc99iJkOA==", - "dev": true, - "requires": { - "@babel/types": "^7.5.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - } - }, - "@babel/helpers": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.4.tgz", - "integrity": "sha512-6LJ6xwUEJP51w0sIgKyfvFMJvIb9mWAfohJp0+m6eHJigkFdcH8duZ1sfhn0ltJRzwUIT/yqqhdSfRpCpL7oow==", - "dev": true, - "requires": { - "@babel/template": "^7.4.4", - "@babel/traverse": "^7.5.0", - "@babel/types": "^7.5.0" - } - }, - "@babel/parser": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.0.tgz", - "integrity": "sha512-I5nW8AhGpOXGCCNYGc+p7ExQIBxRFnS2fd/d862bNOKvmoEPjYPcfIjsfdy0ujagYOIYPczKgD9l3FsgTkAzKA==", - "dev": true - }, - "@babel/traverse": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.0.tgz", - "integrity": "sha512-SnA9aLbyOCcnnbQEGwdfBggnc142h/rbqqsXcaATj2hZcegCl903pUD/lfpsNBlBSuWow/YDfRyJuWi2EPR5cg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.5.0", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.5.0", - "@babel/types": "^7.5.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.11" - } - }, - "@babel/types": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.0.tgz", - "integrity": "sha512-UFpDVqRABKsW01bvw7/wSUe56uy6RXM5+VJibVVAybDGxEW25jdwiFJEf7ASvSaC7sN7rbE/l3cLp2izav+CtQ==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", - "to-fast-properties": "^2.0.0" - } - }, "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", @@ -5785,7 +4513,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "camelcase": { @@ -5794,35 +4522,15 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, "cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" + "string-width": "3.1.0", + "strip-ansi": "5.2.0", + "wrap-ansi": "5.1.0" } }, "find-up": { @@ -5831,7 +4539,7 @@ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "3.0.0" } }, "fs-extra": { @@ -5840,9 +4548,9 @@ "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "graceful-fs": "4.2.3", + "jsonfile": "4.0.0", + "universalify": "0.1.2" } }, "get-caller-file": { @@ -5857,44 +4565,23 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "3.0.0", + "path-exists": "3.0.0" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-try": "2.2.0" } }, "p-locate": { @@ -5903,7 +4590,7 @@ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "2.2.2" } }, "p-try": { @@ -5918,21 +4605,15 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" } }, "strip-ansi": { @@ -5941,16 +4622,7 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "ansi-regex": "4.1.0" } }, "ultron": { @@ -5965,9 +4637,9 @@ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "3.2.1", + "string-width": "3.1.0", + "strip-ansi": "5.2.0" } }, "ws": { @@ -5976,9 +4648,9 @@ "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "dev": true, "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "async-limiter": "1.0.1", + "safe-buffer": "5.1.2", + "ultron": "1.1.1" } }, "y18n": { @@ -5988,31 +4660,31 @@ "dev": true }, "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" + "cliui": "5.0.0", + "find-up": "3.0.0", + "get-caller-file": "2.0.5", + "require-directory": "2.1.1", + "require-main-filename": "2.0.0", + "set-blocking": "2.0.0", + "string-width": "3.1.0", + "which-module": "2.0.0", + "y18n": "4.0.0", + "yargs-parser": "13.1.2" } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "5.3.1", + "decamelize": "1.2.0" } } } @@ -6041,7 +4713,7 @@ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { - "esutils": "^2.0.2" + "esutils": "2.0.3" } }, "dom-walk": { @@ -6055,23 +4727,23 @@ "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "dev": true, "requires": { - "webidl-conversions": "^4.0.2" + "webidl-conversions": "4.0.2" } }, "dottie": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.1.tgz", - "integrity": "sha512-ch5OQgvGDK2u8pSZeSYAQaV/lczImd7pMJ7BcEPXmnFVjy4yJIzP6CsODJUTH8mg1tyH1Z2abOiuJO3DjZ/GBw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz", + "integrity": "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==", "dev": true }, "dtrace-provider": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.7.tgz", - "integrity": "sha1-3JObTT4GIM/gwc2APQ0tftBP/QQ=", + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", + "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", "dev": true, "optional": true, "requires": { - "nan": "^2.10.0" + "nan": "2.14.0" } }, "ecc-jsbn": { @@ -6079,8 +4751,8 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" } }, "editorconfig": { @@ -6089,32 +4761,16 @@ "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", "dev": true, "requires": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" + "commander": "2.20.3", + "lru-cache": "4.1.5", + "semver": "5.7.1", + "sigmund": "1.0.1" }, "dependencies": { - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -6139,15 +4795,15 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "~0.4.13" + "iconv-lite": "0.4.24" } }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { - "once": "^1.4.0" + "once": "1.4.0" } }, "envinfo": { @@ -6160,7 +4816,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "requires": { - "is-arrayish": "^0.2.1" + "is-arrayish": "0.2.1" } }, "errorhandler": { @@ -6168,33 +4824,38 @@ "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", "requires": { - "accepts": "~1.3.7", - "escape-html": "~1.0.3" + "accepts": "1.3.7", + "escape-html": "1.0.3" } }, "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", "dev": true, "requires": { - "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.1", + "function-bind": "1.1.1", + "has": "1.0.3", + "has-symbols": "1.0.1", + "is-callable": "1.1.5", + "is-regex": "1.0.5", + "object-inspect": "1.7.0", + "object-keys": "1.1.1", + "object.assign": "4.1.0", + "string.prototype.trimleft": "2.1.1", + "string.prototype.trimright": "2.1.1" } }, "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "1.1.5", + "is-date-object": "1.0.2", + "is-symbol": "1.0.3" } }, "es6-promise": { @@ -6207,7 +4868,7 @@ "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "^4.0.3" + "es6-promise": "4.2.8" } }, "escape-html": { @@ -6221,24 +4882,18 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", - "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", "dev": true, "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" + "esprima": "4.0.1", + "estraverse": "4.3.0", + "esutils": "2.0.3", + "optionator": "0.8.3", + "source-map": "0.6.1" }, "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -6254,54 +4909,54 @@ "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "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.2.2", - "js-yaml": "^3.13.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", - "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.2.3", - "text-table": "^0.2.0" + "@babel/code-frame": "7.8.3", + "ajv": "6.12.0", + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "debug": "4.1.1", + "doctrine": "3.0.0", + "eslint-scope": "4.0.3", + "eslint-utils": "1.4.3", + "eslint-visitor-keys": "1.1.0", + "espree": "5.0.1", + "esquery": "1.2.0", + "esutils": "2.0.3", + "file-entry-cache": "5.0.1", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.6", + "globals": "11.12.0", + "ignore": "4.0.6", + "import-fresh": "3.2.1", + "imurmurhash": "0.1.4", + "inquirer": "6.5.2", + "js-yaml": "3.13.1", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.15", + "minimatch": "3.0.4", + "mkdirp": "0.5.4", + "natural-compare": "1.4.0", + "optionator": "0.8.3", + "path-is-inside": "1.0.2", + "progress": "2.0.3", + "regexpp": "2.0.1", + "semver": "5.7.1", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "5.4.6", + "text-table": "0.2.0" }, "dependencies": { "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-deep-equal": "3.1.1", + "fast-json-stable-stringify": "2.1.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" } }, "ansi-regex": { @@ -6310,110 +4965,67 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "^2.1.1" - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "ms": "2.1.2" } }, "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "chardet": "0.7.0", + "iconv-lite": "0.4.24", + "tmp": "0.0.33" } }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "parent-module": "1.0.1", + "resolve-from": "4.0.0" } }, "inquirer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", - "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, "requires": { - "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", + "ansi-escapes": "3.2.0", + "chalk": "2.4.2", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "3.1.0", + "figures": "2.0.0", + "lodash": "4.17.15", "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" + "run-async": "2.4.0", + "rxjs": "6.5.4", + "string-width": "2.1.1", + "strip-ansi": "5.2.0", + "through": "2.3.8" }, "dependencies": { "ansi-regex": { @@ -6428,7 +5040,7 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "4.1.0" } } } @@ -6446,9 +5058,9 @@ "dev": true }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "resolve-from": { @@ -6458,9 +5070,9 @@ "dev": true }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "string-width": { @@ -6469,8 +5081,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" } }, "strip-ansi": { @@ -6479,33 +5091,29 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "^3.0.0" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" + "ansi-regex": "3.0.0" } } } }, "eslint-plugin-react": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.13.0.tgz", - "integrity": "sha512-uA5LrHylu8lW/eAH3bEQe9YdzpPaFd9yAJTwTi/i/BKTD7j6aQMKVAdGM/ML72zD6womuSK7EiGtMKuK06lWjQ==", + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz", + "integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==", "dev": true, "requires": { - "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" + "array-includes": "3.1.1", + "doctrine": "2.1.0", + "has": "1.0.3", + "jsx-ast-utils": "2.2.3", + "object.entries": "1.1.1", + "object.fromentries": "2.0.2", + "object.values": "1.1.1", + "prop-types": "15.7.2", + "resolve": "1.15.1", + "semver": "6.3.0", + "string.prototype.matchall": "4.0.2", + "xregexp": "4.3.0" }, "dependencies": { "doctrine": { @@ -6514,31 +5122,40 @@ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "esutils": "^2.0.2" + "esutils": "2.0.3" } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "esrecurse": "4.2.1", + "estraverse": "4.3.0" } }, "eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", - "dev": true + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "1.1.0" + } }, "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", "dev": true }, "espree": { @@ -6547,9 +5164,9 @@ "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", "dev": true, "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "6.4.1", + "acorn-jsx": "5.2.0", + "eslint-visitor-keys": "1.1.0" } }, "esprima": { @@ -6558,12 +5175,20 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.2.0.tgz", + "integrity": "sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "5.0.0" + }, + "dependencies": { + "estraverse": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.0.0.tgz", + "integrity": "sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==", + "dev": true + } } }, "esrecurse": { @@ -6572,19 +5197,20 @@ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "estraverse": "4.3.0" } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true }, "etag": { "version": "1.8.1", @@ -6607,7 +5233,7 @@ "integrity": "sha512-zV45vEsjytJrwfGq6X9qd1Ll56cW4NC2mhCO6lqwMk4ZpA1fZ6C3UiaQM/X7if+7wZFmCgss3ahp9B/uVFuLRw==", "dev": true, "requires": { - "colors": "^1.0.3" + "colors": "1.4.0" } }, "exec-sh": { @@ -6615,7 +5241,7 @@ "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", "requires": { - "merge": "^1.2.0" + "merge": "1.2.1" } }, "execa": { @@ -6623,32 +5249,13 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "requires": { - "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" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - } + "cross-spawn": "6.0.5", + "get-stream": "4.1.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" } }, "exit": { @@ -6662,7 +5269,7 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "requires": { - "is-posix-bracket": "^0.1.0" + "is-posix-bracket": "0.1.1" } }, "expand-range": { @@ -6670,7 +5277,7 @@ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "requires": { - "fill-range": "^2.1.0" + "fill-range": "2.2.4" } }, "expect": { @@ -6679,12 +5286,12 @@ "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "ansi-styles": "^3.2.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-regex-util": "^24.9.0" + "@jest/types": "24.9.0", + "ansi-styles": "3.2.1", + "jest-get-type": "24.9.0", + "jest-matcher-utils": "24.9.0", + "jest-message-util": "24.9.0", + "jest-regex-util": "24.9.0" }, "dependencies": { "ansi-styles": { @@ -6693,7 +5300,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } } } @@ -6708,8 +5315,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -6717,7 +5324,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } @@ -6727,9 +5334,9 @@ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" + "chardet": "0.4.2", + "iconv-lite": "0.4.24", + "tmp": "0.0.33" } }, "extglob": { @@ -6737,7 +5344,7 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "extsprintf": { @@ -6750,10 +5357,10 @@ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" + "ansi-gray": "0.1.1", + "color-support": "1.1.3", + "parse-node-version": "1.0.1", + "time-stamp": "1.1.0" } }, "fast-deep-equal": { @@ -6767,9 +5374,9 @@ "integrity": "sha512-4WKW0AL5+WEqO0zWavAfYGY1qwLsBgE//DN4TTcVEN2UlINgkv9b3vm2iHicoenWKSX9mKWmGOsU/iI5IST7pQ==" }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", @@ -6778,11 +5385,11 @@ "dev": true }, "fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", "requires": { - "bser": "^2.0.0" + "bser": "2.1.1" } }, "fbjs": { @@ -6790,21 +5397,14 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz", "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==", "requires": { - "core-js": "^2.4.1", - "fbjs-css-vars": "^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" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "core-js": "2.6.11", + "fbjs-css-vars": "1.0.2", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.21" } }, "fbjs-css-vars": { @@ -6817,22 +5417,27 @@ "resolved": "https://registry.npmjs.org/fbjs-scripts/-/fbjs-scripts-1.2.0.tgz", "integrity": "sha512-5krZ8T0Bf8uky0abPoCLrfa7Orxd8UH4Qq8hRUF2RZYNMu+FmEOrBc7Ib3YVONmxTXTlLAvyrrdrVmksDb2OqQ==", "requires": { - "@babel/core": "^7.0.0", - "ansi-colors": "^1.0.1", - "babel-preset-fbjs": "^3.2.0", - "core-js": "^2.4.1", - "cross-spawn": "^5.1.0", - "fancy-log": "^1.3.2", - "object-assign": "^4.0.1", - "plugin-error": "^0.1.2", - "semver": "^5.1.0", - "through2": "^2.0.0" + "@babel/core": "7.9.0", + "ansi-colors": "1.1.0", + "babel-preset-fbjs": "3.3.0", + "core-js": "2.6.11", + "cross-spawn": "5.1.0", + "fancy-log": "1.3.3", + "object-assign": "4.1.1", + "plugin-error": "0.1.2", + "semver": "5.3.0", + "through2": "2.0.5" }, "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "4.1.5", + "shebang-command": "1.2.0", + "which": "1.3.1" + } } } }, @@ -6841,7 +5446,7 @@ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", "requires": { - "pend": "~1.2.0" + "pend": "1.2.0" } }, "figures": { @@ -6849,7 +5454,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "requires": { - "escape-string-regexp": "^1.0.5" + "escape-string-regexp": "1.0.5" } }, "file-entry-cache": { @@ -6858,7 +5463,7 @@ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "2.0.1" } }, "file-type": { @@ -6866,6 +5471,12 @@ "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "optional": true + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -6876,11 +5487,11 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "3.1.1", + "repeat-element": "1.1.3", + "repeat-string": "1.6.1" }, "dependencies": { "isobject": { @@ -6899,12 +5510,12 @@ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.3", + "statuses": "1.5.0", + "unpipe": "1.0.0" } }, "find-cache-dir": { @@ -6912,9 +5523,9 @@ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "commondir": "1.0.1", + "make-dir": "2.1.0", + "pkg-dir": "3.0.0" } }, "find-replace": { @@ -6922,8 +5533,8 @@ "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz", "integrity": "sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A=", "requires": { - "array-back": "^1.0.4", - "test-value": "^2.1.0" + "array-back": "1.0.4", + "test-value": "2.1.0" }, "dependencies": { "array-back": { @@ -6931,7 +5542,7 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", "requires": { - "typical": "^2.6.0" + "typical": "2.6.1" } } } @@ -6941,7 +5552,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "locate-path": "^2.0.0" + "locate-path": "2.0.0" } }, "flat-cache": { @@ -6950,15 +5561,26 @@ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "dev": true, "requires": { - "flatted": "^2.0.0", + "flatted": "2.0.1", "rimraf": "2.6.3", "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "7.1.6" + } + } } }, "flatted": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", - "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", "dev": true }, "for-in": { @@ -6971,7 +5593,7 @@ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "requires": { - "for-in": "^1.0.1" + "for-in": "1.0.2" } }, "forever-agent": { @@ -6984,9 +5606,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "asynckit": "0.4.0", + "combined-stream": "1.0.8", + "mime-types": "2.1.26" } }, "fragment-cache": { @@ -6994,7 +5616,7 @@ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "requires": { - "map-cache": "^0.2.2" + "map-cache": "0.2.2" } }, "fresh": { @@ -7012,9 +5634,9 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0" + "graceful-fs": "4.2.3", + "jsonfile": "2.4.0", + "klaw": "1.3.1" }, "dependencies": { "jsonfile": { @@ -7022,17 +5644,17 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "4.2.3" } } } }, "fs-minipass": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", "requires": { - "minipass": "^2.2.1" + "minipass": "2.9.0" } }, "fs.realpath": { @@ -7041,13 +5663,14 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", "optional": true, "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" + "bindings": "1.5.0", + "nan": "2.14.0", + "node-pre-gyp": "0.14.0" }, "dependencies": { "abbrev": { @@ -7069,8 +5692,8 @@ "bundled": true, "optional": true, "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "delegates": "1.0.0", + "readable-stream": "2.3.7" } }, "balanced-match": { @@ -7081,12 +5704,12 @@ "version": "1.1.11", "bundled": true, "requires": { - "balanced-match": "^1.0.0", + "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, "chownr": { - "version": "1.1.1", + "version": "1.1.4", "bundled": true, "optional": true }, @@ -7108,11 +5731,11 @@ "optional": true }, "debug": { - "version": "4.1.1", + "version": "3.2.6", "bundled": true, "optional": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "deep-extend": { @@ -7131,11 +5754,11 @@ "optional": true }, "fs-minipass": { - "version": "1.2.5", + "version": "1.2.7", "bundled": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.9.0" } }, "fs.realpath": { @@ -7148,27 +5771,27 @@ "bundled": true, "optional": true, "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.3" } }, "glob": { - "version": "7.1.3", + "version": "7.1.6", "bundled": true, "optional": true, "requires": { - "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" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "has-unicode": { @@ -7181,15 +5804,15 @@ "bundled": true, "optional": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "ignore-walk": { - "version": "3.0.1", + "version": "3.0.3", "bundled": true, "optional": true, "requires": { - "minimatch": "^3.0.4" + "minimatch": "3.0.4" } }, "inflight": { @@ -7197,8 +5820,8 @@ "bundled": true, "optional": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -7214,7 +5837,7 @@ "version": "1.0.0", "bundled": true, "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "isarray": { @@ -7226,7 +5849,7 @@ "version": "3.0.4", "bundled": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { @@ -7234,81 +5857,89 @@ "bundled": true }, "minipass": { - "version": "2.3.5", + "version": "2.9.0", "bundled": true, "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "safe-buffer": "5.1.2", + "yallist": "3.1.1" } }, "minizlib": { - "version": "1.2.1", + "version": "1.3.3", "bundled": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "2.9.0" } }, "mkdirp": { - "version": "0.5.1", + "version": "0.5.3", "bundled": true, "requires": { - "minimist": "0.0.8" + "minimist": "1.2.5" } }, "ms": { - "version": "2.1.1", + "version": "2.1.2", "bundled": true, "optional": true }, "needle": { - "version": "2.3.0", + "version": "2.3.3", "bundled": true, "optional": true, "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "debug": "3.2.6", + "iconv-lite": "0.4.24", + "sax": "1.2.4" } }, "node-pre-gyp": { - "version": "0.12.0", + "version": "0.14.0", "bundled": true, "optional": true, "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" + "detect-libc": "1.0.3", + "mkdirp": "0.5.3", + "needle": "2.3.3", + "nopt": "4.0.3", + "npm-packlist": "1.4.8", + "npmlog": "4.1.2", + "rc": "1.2.8", + "rimraf": "2.7.1", + "semver": "5.7.1", + "tar": "4.4.13" } }, "nopt": { - "version": "4.0.1", + "version": "4.0.3", "bundled": true, "optional": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1.1.1", + "osenv": "0.1.5" } }, "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", + "version": "1.1.1", "bundled": true, "optional": true, "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "npm-normalize-package-bin": "1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "3.0.3", + "npm-bundled": "1.1.1", + "npm-normalize-package-bin": "1.0.1" } }, "npmlog": { @@ -7316,10 +5947,10 @@ "bundled": true, "optional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "1.1.5", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, "number-is-nan": { @@ -7335,7 +5966,7 @@ "version": "1.4.0", "bundled": true, "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "os-homedir": { @@ -7353,8 +5984,8 @@ "bundled": true, "optional": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, "path-is-absolute": { @@ -7363,7 +5994,7 @@ "optional": true }, "process-nextick-args": { - "version": "2.0.0", + "version": "2.0.1", "bundled": true, "optional": true }, @@ -7372,39 +6003,32 @@ "bundled": true, "optional": true, "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } + "deep-extend": "0.6.0", + "ini": "1.3.5", + "minimist": "1.2.5", + "strip-json-comments": "2.0.1" } }, "readable-stream": { - "version": "2.3.6", + "version": "2.3.7", "bundled": true, "optional": true, "requires": { - "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" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" } }, "rimraf": { - "version": "2.6.3", + "version": "2.7.1", "bundled": true, "optional": true, "requires": { - "glob": "^7.1.3" + "glob": "7.1.6" } }, "safe-buffer": { @@ -7422,7 +6046,7 @@ "optional": true }, "semver": { - "version": "5.7.0", + "version": "5.7.1", "bundled": true, "optional": true }, @@ -7440,9 +6064,9 @@ "version": "1.0.2", "bundled": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" } }, "string_decoder": { @@ -7450,14 +6074,14 @@ "bundled": true, "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } }, "strip-ansi": { "version": "3.0.1", "bundled": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-json-comments": { @@ -7466,17 +6090,17 @@ "optional": true }, "tar": { - "version": "4.4.8", + "version": "4.4.13", "bundled": true, "optional": true, "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" + "chownr": "1.1.4", + "fs-minipass": "1.2.7", + "minipass": "2.9.0", + "minizlib": "1.3.3", + "mkdirp": "0.5.3", + "safe-buffer": "5.1.2", + "yallist": "3.1.1" } }, "util-deprecate": { @@ -7489,7 +6113,7 @@ "bundled": true, "optional": true, "requires": { - "string-width": "^1.0.2 || 2" + "string-width": "1.0.2" } }, "wrappy": { @@ -7524,16 +6148,21 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.3" } }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" + }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -7551,7 +6180,7 @@ "integrity": "sha1-h4P53OvR7qSVozThpqJR54iHqxo=", "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "pinkie-promise": "2.0.1" } }, "get-stream": { @@ -7559,7 +6188,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "requires": { - "pump": "^3.0.0" + "pump": "3.0.0" } }, "get-value": { @@ -7572,7 +6201,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "^1.0.0" + "assert-plus": "1.0.0" } }, "git-tags": { @@ -7581,8 +6210,8 @@ "integrity": "sha1-skxx1dffjdWHo2mY6VIeIN3iWcU=", "dev": true, "requires": { - "lodash": "^2.4.1", - "semver": "^3.0.1" + "lodash": "2.4.2", + "semver": "3.0.1" }, "dependencies": { "lodash": { @@ -7600,16 +6229,16 @@ } }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { - "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" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.1", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "glob-base": { @@ -7617,8 +6246,8 @@ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" + "glob-parent": "2.0.0", + "is-glob": "2.0.1" } }, "glob-parent": { @@ -7626,7 +6255,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "requires": { - "is-glob": "^2.0.0" + "is-glob": "2.0.1" } }, "global": { @@ -7634,8 +6263,8 @@ "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "requires": { - "min-document": "^2.19.0", - "process": "^0.11.10" + "min-document": "2.19.0", + "process": "0.11.10" } }, "globals": { @@ -7644,9 +6273,9 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" }, "graceful-readlink": { "version": "1.0.1", @@ -7664,44 +6293,6 @@ "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, - "handlebars": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz", - "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==", - "dev": true, - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "optional": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "uglify-js": { - "version": "3.6.8", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.8.tgz", - "integrity": "sha512-XhHJ3S3ZyMwP8kY1Gkugqx3CJh2C3O0y8NPiSxtm1tyD/pktLAkFZsFGpuNfTZddKDQ/bbDBLAd2YyA1pbi8HQ==", - "dev": true, - "optional": true, - "requires": { - "commander": "~2.20.3", - "source-map": "~0.6.1" - } - } - } - }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -7712,25 +6303,25 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" + "ajv": "6.12.0", + "har-schema": "2.0.0" }, "dependencies": { "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-deep-equal": "3.1.1", + "fast-json-stable-stringify": "2.1.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" } }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" }, "json-schema-traverse": { "version": "0.4.1", @@ -7745,7 +6336,7 @@ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "function-bind": "^1.1.1" + "function-bind": "1.1.1" } }, "has-ansi": { @@ -7753,7 +6344,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "has-flag": { @@ -7762,9 +6353,9 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" }, "has-unicode": { "version": "2.0.1", @@ -7776,9 +6367,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" } }, "has-values": { @@ -7786,8 +6377,8 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "is-number": "3.0.0", + "kind-of": "4.0.0" }, "dependencies": { "is-number": { @@ -7795,7 +6386,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -7803,7 +6394,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -7813,7 +6404,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -7825,17 +6416,17 @@ "dev": true }, "hoist-non-react-statics": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz", - "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "requires": { - "react-is": "^16.7.0" + "react-is": "16.13.1" } }, "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" }, "html-encoding-sniffer": { "version": "1.0.2", @@ -7843,17 +6434,23 @@ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "requires": { - "whatwg-encoding": "^1.0.1" + "whatwg-encoding": "1.0.5" } }, + "html-escaper": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.1.tgz", + "integrity": "sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ==", + "dev": true + }, "http-basic": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-2.5.1.tgz", "integrity": "sha1-jORHvbW2xXf4pj4/p4BW7Eu02/s=", "requires": { - "caseless": "~0.11.0", - "concat-stream": "^1.4.6", - "http-response-object": "^1.0.0" + "caseless": "0.11.0", + "concat-stream": "1.6.2", + "http-response-object": "1.1.0" }, "dependencies": { "caseless": { @@ -7868,13 +6465,18 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", "requires": { - "depd": "~1.1.2", + "depd": "1.1.2", "inherits": "2.0.4", "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", + "statuses": "1.5.0", "toidentifier": "1.0.0" }, "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -7892,9 +6494,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.16.1" } }, "https-proxy-agent": { @@ -7911,7 +6513,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { @@ -7926,7 +6528,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": "2.1.2" } }, "identitate": { @@ -7934,7 +6536,7 @@ "resolved": "https://registry.npmjs.org/identitate/-/identitate-1.0.1.tgz", "integrity": "sha512-xnDJ0JYhiZjBDuJRKbHoVzj5yP9FhATxLyUYswQyPdnJrwzGVBqS6DOmvKJi1lk7P+4dkL+hhUhuOZIcOUtG5A==", "requires": { - "pathington": "^1.0.1" + "pathington": "1.1.7" } }, "ieee754": { @@ -7953,7 +6555,7 @@ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", "requires": { - "minimatch": "^3.0.4" + "minimatch": "3.0.4" } }, "image-size": { @@ -7971,8 +6573,8 @@ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "caller-path": "2.0.0", + "resolve-from": "3.0.0" } }, "import-local": { @@ -7981,8 +6583,8 @@ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", "dev": true, "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" + "pkg-dir": "3.0.0", + "resolve-cwd": "2.0.0" } }, "imurmurhash": { @@ -7995,8 +6597,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "once": "1.4.0", + "wrappy": "1.0.2" } }, "inherits": { @@ -8014,20 +6616,20 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", + "ansi-escapes": "3.2.0", + "chalk": "2.4.2", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.2.0", + "figures": "2.0.0", + "lodash": "4.17.15", "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" + "run-async": "2.4.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" }, "dependencies": { "ansi-regex": { @@ -8045,8 +6647,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" } }, "strip-ansi": { @@ -8054,17 +6656,28 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" } } } }, + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "dev": true, + "requires": { + "es-abstract": "1.17.5", + "has": "1.0.3", + "side-channel": "1.0.2" + } + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "requires": { - "loose-envify": "^1.0.0" + "loose-envify": "1.4.0" } }, "invert-kv": { @@ -8077,7 +6690,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-alphabetical": { @@ -8098,8 +6711,8 @@ "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", "dev": true, "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" + "is-alphabetical": "1.0.4", + "is-decimal": "1.0.4" } }, "is-arrayish": { @@ -8113,9 +6726,9 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", "dev": true }, "is-ci": { @@ -8124,7 +6737,7 @@ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "requires": { - "ci-info": "^2.0.0" + "ci-info": "2.0.0" } }, "is-data-descriptor": { @@ -8132,13 +6745,13 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, "is-decimal": { @@ -8152,9 +6765,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" }, "dependencies": { "kind-of": { @@ -8179,7 +6792,7 @@ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "requires": { - "is-primitive": "^2.0.0" + "is-primitive": "2.0.0" } }, "is-extendable": { @@ -8197,7 +6810,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "^1.0.0" + "number-is-nan": "1.0.1" } }, "is-generator-fn": { @@ -8211,7 +6824,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "is-extglob": "^1.0.0" + "is-extglob": "1.0.0" } }, "is-hexadecimal": { @@ -8230,7 +6843,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "is-plain-obj": { @@ -8244,7 +6857,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" } }, "is-posix-bracket": { @@ -8263,12 +6876,12 @@ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", "dev": true, "requires": { - "has": "^1.0.1" + "has": "1.0.3" } }, "is-stream": { @@ -8276,13 +6889,19 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "1.0.1" } }, "is-typedarray": { @@ -8337,8 +6956,8 @@ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "^1.0.1", - "whatwg-fetch": ">=0.10.0" + "node-fetch": "1.7.3", + "whatwg-fetch": "3.0.0" }, "dependencies": { "node-fetch": { @@ -8346,8 +6965,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" + "encoding": "0.1.12", + "is-stream": "1.1.0" } } } @@ -8369,13 +6988,13 @@ "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" + "@babel/generator": "7.9.4", + "@babel/parser": "7.9.4", + "@babel/template": "7.8.6", + "@babel/traverse": "7.9.0", + "@babel/types": "7.9.0", + "istanbul-lib-coverage": "2.0.5", + "semver": "6.3.0" }, "dependencies": { "semver": { @@ -8392,9 +7011,9 @@ "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" + "istanbul-lib-coverage": "2.0.5", + "make-dir": "2.1.0", + "supports-color": "6.1.0" }, "dependencies": { "supports-color": { @@ -8403,7 +7022,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -8414,11 +7033,11 @@ "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" + "debug": "4.1.1", + "istanbul-lib-coverage": "2.0.5", + "make-dir": "2.1.0", + "rimraf": "2.7.1", + "source-map": "0.6.1" }, "dependencies": { "debug": { @@ -8427,7 +7046,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { @@ -8445,12 +7064,12 @@ } }, "istanbul-reports": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", - "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", "dev": true, "requires": { - "handlebars": "^4.1.2" + "html-escaper": "2.0.1" } }, "jase": { @@ -8459,16 +7078,8 @@ "integrity": "sha1-Mm24FwXcmL/3A3zQmA/buTq+wDM=", "dev": true, "requires": { - "core-util-is": "^1.0.1", - "minimist": "^1.1.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } + "core-util-is": "1.0.2", + "minimist": "1.2.5" } }, "jest": { @@ -8477,8 +7088,8 @@ "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", "dev": true, "requires": { - "import-local": "^2.0.0", - "jest-cli": "^24.9.0" + "import-local": "2.0.0", + "jest-cli": "24.9.0" }, "dependencies": { "ansi-regex": { @@ -8493,7 +7104,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "camelcase": { @@ -8508,9 +7119,9 @@ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "3.1.0", + "strip-ansi": "5.2.0", + "wrap-ansi": "5.1.0" } }, "find-up": { @@ -8519,7 +7130,7 @@ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "3.0.0" } }, "get-caller-file": { @@ -8540,19 +7151,19 @@ "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", "dev": true, "requires": { - "@jest/core": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^13.3.0" + "@jest/core": "24.9.0", + "@jest/test-result": "24.9.0", + "@jest/types": "24.9.0", + "chalk": "2.4.2", + "exit": "0.1.2", + "import-local": "2.0.0", + "is-ci": "2.0.0", + "jest-config": "24.9.0", + "jest-util": "24.9.0", + "jest-validate": "24.9.0", + "prompts": "2.3.2", + "realpath-native": "1.1.0", + "yargs": "13.3.2" } }, "locate-path": { @@ -8561,17 +7172,17 @@ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "3.0.0", + "path-exists": "3.0.0" } }, "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-try": "2.2.0" } }, "p-locate": { @@ -8580,7 +7191,7 @@ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "2.2.2" } }, "p-try": { @@ -8601,9 +7212,9 @@ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" } }, "strip-ansi": { @@ -8612,7 +7223,7 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "4.1.0" } }, "wrap-ansi": { @@ -8621,9 +7232,9 @@ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "3.2.1", + "string-width": "3.1.0", + "strip-ansi": "5.2.0" } }, "y18n": { @@ -8633,31 +7244,31 @@ "dev": true }, "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" + "cliui": "5.0.0", + "find-up": "3.0.0", + "get-caller-file": "2.0.5", + "require-directory": "2.1.1", + "require-main-filename": "2.0.0", + "set-blocking": "2.0.0", + "string-width": "3.1.0", + "which-module": "2.0.0", + "y18n": "4.0.0", + "yargs-parser": "13.1.2" } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "5.3.1", + "decamelize": "1.2.0" } } } @@ -8668,9 +7279,9 @@ "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "execa": "^1.0.0", - "throat": "^4.0.0" + "@jest/types": "24.9.0", + "execa": "1.0.0", + "throat": "4.1.0" } }, "jest-config": { @@ -8679,23 +7290,23 @@ "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.9.0", - "@jest/types": "^24.9.0", - "babel-jest": "^24.9.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.9.0", - "jest-environment-node": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.9.0", - "realpath-native": "^1.1.0" + "@babel/core": "7.9.0", + "@jest/test-sequencer": "24.9.0", + "@jest/types": "24.9.0", + "babel-jest": "24.9.0", + "chalk": "2.4.2", + "glob": "7.1.6", + "jest-environment-jsdom": "24.9.0", + "jest-environment-node": "24.9.0", + "jest-get-type": "24.9.0", + "jest-jasmine2": "24.9.0", + "jest-regex-util": "24.9.0", + "jest-resolve": "24.9.0", + "jest-util": "24.9.0", + "jest-validate": "24.9.0", + "micromatch": "3.1.10", + "pretty-format": "24.9.0", + "realpath-native": "1.1.0" }, "dependencies": { "ansi-regex": { @@ -8710,7 +7321,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "arr-diff": { @@ -8731,16 +7342,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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" + "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.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -8749,7 +7360,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -8760,13 +7371,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "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" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -8775,7 +7386,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -8784,7 +7395,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -8793,7 +7404,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -8802,7 +7413,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -8813,7 +7424,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -8822,7 +7433,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -8833,9 +7444,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -8852,14 +7463,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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" + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -8868,7 +7479,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -8877,7 +7488,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -8888,10 +7499,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -8900,7 +7511,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -8911,7 +7522,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -8920,7 +7531,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -8929,9 +7540,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } }, "is-number": { @@ -8940,7 +7551,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -8949,15 +7560,15 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "micromatch": { @@ -8966,19 +7577,19 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "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" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, "pretty-format": { @@ -8987,10 +7598,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "@jest/types": "24.9.0", + "ansi-regex": "4.1.0", + "ansi-styles": "3.2.1", + "react-is": "16.13.1" } } } @@ -9001,10 +7612,10 @@ "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", "dev": true, "requires": { - "chalk": "^2.0.1", - "diff-sequences": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "chalk": "2.4.2", + "diff-sequences": "24.9.0", + "jest-get-type": "24.9.0", + "pretty-format": "24.9.0" }, "dependencies": { "ansi-regex": { @@ -9019,7 +7630,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "pretty-format": { @@ -9028,10 +7639,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "@jest/types": "24.9.0", + "ansi-regex": "4.1.0", + "ansi-styles": "3.2.1", + "react-is": "16.13.1" } } } @@ -9042,7 +7653,7 @@ "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", "dev": true, "requires": { - "detect-newline": "^2.1.0" + "detect-newline": "2.1.0" } }, "jest-each": { @@ -9051,11 +7662,11 @@ "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0" + "@jest/types": "24.9.0", + "chalk": "2.4.2", + "jest-get-type": "24.9.0", + "jest-util": "24.9.0", + "pretty-format": "24.9.0" }, "dependencies": { "ansi-regex": { @@ -9070,7 +7681,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "pretty-format": { @@ -9079,10 +7690,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "@jest/types": "24.9.0", + "ansi-regex": "4.1.0", + "ansi-styles": "3.2.1", + "react-is": "16.13.1" } } } @@ -9093,12 +7704,12 @@ "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", "dev": true, "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0", - "jsdom": "^11.5.1" + "@jest/environment": "24.9.0", + "@jest/fake-timers": "24.9.0", + "@jest/types": "24.9.0", + "jest-mock": "24.9.0", + "jest-util": "24.9.0", + "jsdom": "11.12.0" } }, "jest-environment-node": { @@ -9107,11 +7718,11 @@ "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", "dev": true, "requires": { - "@jest/environment": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/types": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-util": "^24.9.0" + "@jest/environment": "24.9.0", + "@jest/fake-timers": "24.9.0", + "@jest/types": "24.9.0", + "jest-mock": "24.9.0", + "jest-util": "24.9.0" } }, "jest-get-type": { @@ -9125,13 +7736,13 @@ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.0.0-alpha.6.tgz", "integrity": "sha512-+NO2HMbjvrG8BC39ieLukdpFrcPhhjCJGhpbHodHNZygH1Tt06WrlNYGpZtWKx/zpf533tCtMQXO/q59JenjNw==", "requires": { - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.1.11", - "invariant": "^2.2.4", - "jest-serializer": "^24.0.0-alpha.6", - "jest-worker": "^24.0.0-alpha.6", - "micromatch": "^2.3.11", - "sane": "^3.0.0" + "fb-watchman": "2.0.1", + "graceful-fs": "4.2.3", + "invariant": "2.2.4", + "jest-serializer": "24.9.0", + "jest-worker": "24.0.0-alpha.6", + "micromatch": "2.3.11", + "sane": "3.1.0" } }, "jest-jasmine2": { @@ -9140,22 +7751,22 @@ "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^24.9.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "pretty-format": "^24.9.0", - "throat": "^4.0.0" + "@babel/traverse": "7.9.0", + "@jest/environment": "24.9.0", + "@jest/test-result": "24.9.0", + "@jest/types": "24.9.0", + "chalk": "2.4.2", + "co": "4.6.0", + "expect": "24.9.0", + "is-generator-fn": "2.1.0", + "jest-each": "24.9.0", + "jest-matcher-utils": "24.9.0", + "jest-message-util": "24.9.0", + "jest-runtime": "24.9.0", + "jest-snapshot": "24.9.0", + "jest-util": "24.9.0", + "pretty-format": "24.9.0", + "throat": "4.1.0" }, "dependencies": { "ansi-regex": { @@ -9170,7 +7781,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "pretty-format": { @@ -9179,10 +7790,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "@jest/types": "24.9.0", + "ansi-regex": "4.1.0", + "ansi-styles": "3.2.1", + "react-is": "16.13.1" } } } @@ -9193,8 +7804,8 @@ "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", "dev": true, "requires": { - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "jest-get-type": "24.9.0", + "pretty-format": "24.9.0" }, "dependencies": { "ansi-regex": { @@ -9209,7 +7820,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "pretty-format": { @@ -9218,10 +7829,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "@jest/types": "24.9.0", + "ansi-regex": "4.1.0", + "ansi-styles": "3.2.1", + "react-is": "16.13.1" } } } @@ -9232,10 +7843,10 @@ "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", "dev": true, "requires": { - "chalk": "^2.0.1", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "pretty-format": "^24.9.0" + "chalk": "2.4.2", + "jest-diff": "24.9.0", + "jest-get-type": "24.9.0", + "pretty-format": "24.9.0" }, "dependencies": { "ansi-regex": { @@ -9250,7 +7861,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "pretty-format": { @@ -9259,10 +7870,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "@jest/types": "24.9.0", + "ansi-regex": "4.1.0", + "ansi-styles": "3.2.1", + "react-is": "16.13.1" } } } @@ -9273,14 +7884,14 @@ "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" + "@babel/code-frame": "7.8.3", + "@jest/test-result": "24.9.0", + "@jest/types": "24.9.0", + "@types/stack-utils": "1.0.1", + "chalk": "2.4.2", + "micromatch": "3.1.10", + "slash": "2.0.0", + "stack-utils": "1.0.2" }, "dependencies": { "arr-diff": { @@ -9301,16 +7912,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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" + "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.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -9319,7 +7930,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9330,13 +7941,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "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" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -9345,7 +7956,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -9354,7 +7965,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -9363,7 +7974,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9372,7 +7983,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -9383,7 +7994,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9392,7 +8003,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -9403,9 +8014,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -9422,14 +8033,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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" + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -9438,7 +8049,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -9447,7 +8058,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9458,10 +8069,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -9470,7 +8081,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9481,7 +8092,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -9490,7 +8101,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -9499,9 +8110,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } }, "is-number": { @@ -9510,7 +8121,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9519,15 +8130,15 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "micromatch": { @@ -9536,19 +8147,19 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "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" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } } } @@ -9559,7 +8170,7 @@ "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", "dev": true, "requires": { - "@jest/types": "^24.9.0" + "@jest/types": "24.9.0" } }, "jest-pnp-resolver": { @@ -9580,11 +8191,11 @@ "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "browser-resolve": "^1.11.3", - "chalk": "^2.0.1", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" + "@jest/types": "24.9.0", + "browser-resolve": "1.11.3", + "chalk": "2.4.2", + "jest-pnp-resolver": "1.2.1", + "realpath-native": "1.1.0" } }, "jest-resolve-dependencies": { @@ -9593,9 +8204,9 @@ "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.9.0" + "@jest/types": "24.9.0", + "jest-regex-util": "24.9.0", + "jest-snapshot": "24.9.0" } }, "jest-runner": { @@ -9604,35 +8215,35 @@ "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "chalk": "^2.4.2", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.9.0", - "jest-jasmine2": "^24.9.0", - "jest-leak-detector": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "jest-runtime": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.6.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" + "@jest/console": "24.9.0", + "@jest/environment": "24.9.0", + "@jest/test-result": "24.9.0", + "@jest/types": "24.9.0", + "chalk": "2.4.2", + "exit": "0.1.2", + "graceful-fs": "4.2.3", + "jest-config": "24.9.0", + "jest-docblock": "24.9.0", + "jest-haste-map": "24.9.0", + "jest-jasmine2": "24.9.0", + "jest-leak-detector": "24.9.0", + "jest-message-util": "24.9.0", + "jest-resolve": "24.9.0", + "jest-runtime": "24.9.0", + "jest-util": "24.9.0", + "jest-worker": "24.9.0", + "source-map-support": "0.5.16", + "throat": "4.1.0" }, "dependencies": { "@cnakazawa/watch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", - "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" + "exec-sh": "0.3.4", + "minimist": "1.2.5" } }, "arr-diff": { @@ -9653,16 +8264,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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" + "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.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -9671,7 +8282,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9682,7 +8293,7 @@ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "rsvp": "^4.8.4" + "rsvp": "4.8.5" } }, "exec-sh": { @@ -9697,13 +8308,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "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" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -9712,7 +8323,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -9721,7 +8332,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -9730,7 +8341,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9739,7 +8350,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -9750,7 +8361,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9759,7 +8370,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -9770,9 +8381,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -9789,14 +8400,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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" + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -9805,7 +8416,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -9814,7 +8425,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9825,10 +8436,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -9837,7 +8448,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -9848,7 +8459,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -9857,7 +8468,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -9866,9 +8477,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } }, "is-number": { @@ -9877,7 +8488,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -9886,7 +8497,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -9897,18 +8508,18 @@ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" + "@jest/types": "24.9.0", + "anymatch": "2.0.0", + "fb-watchman": "2.0.1", + "fsevents": "1.2.12", + "graceful-fs": "4.2.3", + "invariant": "2.2.4", + "jest-serializer": "24.9.0", + "jest-util": "24.9.0", + "jest-worker": "24.9.0", + "micromatch": "3.1.10", + "sane": "4.1.0", + "walker": "1.0.7" } }, "jest-worker": { @@ -9917,14 +8528,14 @@ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "merge-stream": "2.0.0", + "supports-color": "6.1.0" } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "merge-stream": { @@ -9939,27 +8550,21 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "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" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -9972,15 +8577,15 @@ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" + "@cnakazawa/watch": "1.0.4", + "anymatch": "2.0.0", + "capture-exit": "2.0.0", + "exec-sh": "0.3.4", + "execa": "1.0.0", + "fb-watchman": "2.0.1", + "micromatch": "3.1.10", + "minimist": "1.2.5", + "walker": "1.0.7" } }, "supports-color": { @@ -9989,7 +8594,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -10000,39 +8605,39 @@ "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.9.0", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.9.0", - "jest-haste-map": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-mock": "^24.9.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.9.0", - "jest-snapshot": "^24.9.0", - "jest-util": "^24.9.0", - "jest-validate": "^24.9.0", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^13.3.0" + "@jest/console": "24.9.0", + "@jest/environment": "24.9.0", + "@jest/source-map": "24.9.0", + "@jest/transform": "24.9.0", + "@jest/types": "24.9.0", + "@types/yargs": "13.0.8", + "chalk": "2.4.2", + "exit": "0.1.2", + "glob": "7.1.6", + "graceful-fs": "4.2.3", + "jest-config": "24.9.0", + "jest-haste-map": "24.9.0", + "jest-message-util": "24.9.0", + "jest-mock": "24.9.0", + "jest-regex-util": "24.9.0", + "jest-resolve": "24.9.0", + "jest-snapshot": "24.9.0", + "jest-util": "24.9.0", + "jest-validate": "24.9.0", + "realpath-native": "1.1.0", + "slash": "2.0.0", + "strip-bom": "3.0.0", + "yargs": "13.3.2" }, "dependencies": { "@cnakazawa/watch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", - "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" + "exec-sh": "0.3.4", + "minimist": "1.2.5" } }, "ansi-regex": { @@ -10047,7 +8652,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "arr-diff": { @@ -10068,16 +8673,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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" + "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.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -10086,7 +8691,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -10103,7 +8708,7 @@ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "rsvp": "^4.8.4" + "rsvp": "4.8.5" } }, "cliui": { @@ -10112,9 +8717,9 @@ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "3.1.0", + "strip-ansi": "5.2.0", + "wrap-ansi": "5.1.0" } }, "exec-sh": { @@ -10129,13 +8734,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "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" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -10144,7 +8749,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -10153,7 +8758,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -10162,7 +8767,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -10171,7 +8776,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -10182,7 +8787,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -10191,7 +8796,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -10202,9 +8807,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -10221,14 +8826,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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" + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -10237,7 +8842,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -10246,7 +8851,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -10257,10 +8862,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -10269,7 +8874,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -10280,7 +8885,7 @@ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "3.0.0" } }, "get-caller-file": { @@ -10295,7 +8900,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -10304,7 +8909,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -10313,9 +8918,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } }, "is-fullwidth-code-point": { @@ -10330,7 +8935,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -10339,7 +8944,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -10350,18 +8955,18 @@ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.9.0", - "jest-util": "^24.9.0", - "jest-worker": "^24.9.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" + "@jest/types": "24.9.0", + "anymatch": "2.0.0", + "fb-watchman": "2.0.1", + "fsevents": "1.2.12", + "graceful-fs": "4.2.3", + "invariant": "2.2.4", + "jest-serializer": "24.9.0", + "jest-util": "24.9.0", + "jest-worker": "24.9.0", + "micromatch": "3.1.10", + "sane": "4.1.0", + "walker": "1.0.7" } }, "jest-worker": { @@ -10370,14 +8975,14 @@ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "merge-stream": "^2.0.0", - "supports-color": "^6.1.0" + "merge-stream": "2.0.0", + "supports-color": "6.1.0" } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "locate-path": { @@ -10386,8 +8991,8 @@ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "3.0.0", + "path-exists": "3.0.0" } }, "merge-stream": { @@ -10402,34 +9007,28 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "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" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-try": "2.2.0" } }, "p-locate": { @@ -10438,7 +9037,7 @@ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "2.2.2" } }, "p-try": { @@ -10465,15 +9064,15 @@ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" + "@cnakazawa/watch": "1.0.4", + "anymatch": "2.0.0", + "capture-exit": "2.0.0", + "exec-sh": "0.3.4", + "execa": "1.0.0", + "fb-watchman": "2.0.1", + "micromatch": "3.1.10", + "minimist": "1.2.5", + "walker": "1.0.7" } }, "string-width": { @@ -10482,9 +9081,9 @@ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" } }, "strip-ansi": { @@ -10493,7 +9092,7 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "4.1.0" } }, "strip-bom": { @@ -10508,7 +9107,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } }, "wrap-ansi": { @@ -10517,9 +9116,9 @@ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "3.2.1", + "string-width": "3.1.0", + "strip-ansi": "5.2.0" } }, "y18n": { @@ -10529,31 +9128,31 @@ "dev": true }, "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" + "cliui": "5.0.0", + "find-up": "3.0.0", + "get-caller-file": "2.0.5", + "require-directory": "2.1.1", + "require-main-filename": "2.0.0", + "set-blocking": "2.0.0", + "string-width": "3.1.0", + "which-module": "2.0.0", + "y18n": "4.0.0", + "yargs-parser": "13.1.2" } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "5.3.1", + "decamelize": "1.2.0" } } } @@ -10569,19 +9168,19 @@ "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", "dev": true, "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^24.9.0", - "chalk": "^2.0.1", - "expect": "^24.9.0", - "jest-diff": "^24.9.0", - "jest-get-type": "^24.9.0", - "jest-matcher-utils": "^24.9.0", - "jest-message-util": "^24.9.0", - "jest-resolve": "^24.9.0", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^24.9.0", - "semver": "^6.2.0" + "@babel/types": "7.9.0", + "@jest/types": "24.9.0", + "chalk": "2.4.2", + "expect": "24.9.0", + "jest-diff": "24.9.0", + "jest-get-type": "24.9.0", + "jest-matcher-utils": "24.9.0", + "jest-message-util": "24.9.0", + "jest-resolve": "24.9.0", + "mkdirp": "0.5.4", + "natural-compare": "1.4.0", + "pretty-format": "24.9.0", + "semver": "6.3.0" }, "dependencies": { "ansi-regex": { @@ -10596,7 +9195,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "pretty-format": { @@ -10605,10 +9204,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "@jest/types": "24.9.0", + "ansi-regex": "4.1.0", + "ansi-styles": "3.2.1", + "react-is": "16.13.1" } }, "semver": { @@ -10625,18 +9224,18 @@ "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", "dev": true, "requires": { - "@jest/console": "^24.9.0", - "@jest/fake-timers": "^24.9.0", - "@jest/source-map": "^24.9.0", - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "callsites": "^3.0.0", - "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" + "@jest/console": "24.9.0", + "@jest/fake-timers": "24.9.0", + "@jest/source-map": "24.9.0", + "@jest/test-result": "24.9.0", + "@jest/types": "24.9.0", + "callsites": "3.1.0", + "chalk": "2.4.2", + "graceful-fs": "4.2.3", + "is-ci": "2.0.0", + "mkdirp": "0.5.4", + "slash": "2.0.0", + "source-map": "0.6.1" }, "dependencies": { "callsites": { @@ -10659,12 +9258,12 @@ "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "camelcase": "^5.3.1", - "chalk": "^2.0.1", - "jest-get-type": "^24.9.0", - "leven": "^3.1.0", - "pretty-format": "^24.9.0" + "@jest/types": "24.9.0", + "camelcase": "5.3.1", + "chalk": "2.4.2", + "jest-get-type": "24.9.0", + "leven": "3.1.0", + "pretty-format": "24.9.0" }, "dependencies": { "ansi-regex": { @@ -10679,7 +9278,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "camelcase": { @@ -10694,10 +9293,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "^24.9.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "@jest/types": "24.9.0", + "ansi-regex": "4.1.0", + "ansi-styles": "3.2.1", + "react-is": "16.13.1" } } } @@ -10708,13 +9307,13 @@ "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", "dev": true, "requires": { - "@jest/test-result": "^24.9.0", - "@jest/types": "^24.9.0", - "@types/yargs": "^13.0.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "jest-util": "^24.9.0", - "string-length": "^2.0.0" + "@jest/test-result": "24.9.0", + "@jest/types": "24.9.0", + "@types/yargs": "13.0.8", + "ansi-escapes": "3.2.0", + "chalk": "2.4.2", + "jest-util": "24.9.0", + "string-length": "2.0.0" } }, "jest-worker": { @@ -10722,7 +9321,7 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.0.0-alpha.6.tgz", "integrity": "sha512-iXtH7MR9bjWlNnlnRBcrBRrb4cSVxML96La5vsnmBvDI+mJnkP5uEt6Fgpo5Y8f3z9y2Rd7wuPnKRxqQsiU/dA==", "requires": { - "merge-stream": "^1.0.1" + "merge-stream": "1.0.1" } }, "jetifier": { @@ -10732,53 +9331,39 @@ "dev": true }, "js-base64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", - "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", + "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==" }, "js-beautify": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.9.1.tgz", - "integrity": "sha512-oxxvVZdOdUfzk8IOLBF2XUZvl2GoBEfA+b0of4u2EBY/46NlXasi8JdFvazA5lCrf9/lQhTjyVy2QCUW7iq0MQ==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.3.tgz", + "integrity": "sha512-wfk/IAWobz1TfApSdivH5PJ0miIHgDoYb1ugSqHcODPmaYu46rYe5FVuIEkhjg8IQiv6rDNPyhsqbsohI/C2vQ==", "dev": true, "requires": { - "config-chain": "^1.1.12", - "editorconfig": "^0.15.2", - "glob": "^7.1.3", - "mkdirp": "~0.5.0", - "nopt": "~4.0.1" + "config-chain": "1.1.12", + "editorconfig": "0.15.3", + "glob": "7.1.6", + "mkdirp": "0.5.4", + "nopt": "4.0.3" }, "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "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" - } - }, "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", "dev": true, "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1.1.1", + "osenv": "0.1.5" } } } }, "js-joda": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/js-joda/-/js-joda-1.10.1.tgz", - "integrity": "sha512-lDBKliZf2oLX4h1EjzkhBulpQRv51A9x2nhX1XnP1PD0LU7a30I7CKtAWZ//5c+Z6aWG8TO996vVr+4owE9vWA==" + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/js-joda/-/js-joda-1.11.0.tgz", + "integrity": "sha512-/HJpRhwP2fPyuSsCaZuoVJuaSIt8tUXykV4wOMRXrFk7RP9h9VWaFdS9YHKdMepxb/3TdXpL6IhfC9L0sqYVBw==" }, "js-tokens": { "version": "4.0.0", @@ -10790,8 +9375,8 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "1.0.10", + "esprima": "4.0.1" } }, "jsbn": { @@ -10805,38 +9390,38 @@ "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", "dev": true, "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", - "array-equal": "^1.0.0", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", + "abab": "2.0.3", + "acorn": "5.7.4", + "acorn-globals": "4.3.4", + "array-equal": "1.0.0", + "cssom": "0.3.8", + "cssstyle": "1.4.0", + "data-urls": "1.1.0", + "domexception": "1.0.1", + "escodegen": "1.14.1", + "html-encoding-sniffer": "1.0.2", + "left-pad": "1.3.0", + "nwsapi": "2.2.0", "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" + "pn": "1.1.0", + "request": "2.88.2", + "request-promise-native": "1.0.8", + "sax": "1.2.4", + "symbol-tree": "3.2.4", + "tough-cookie": "2.5.0", + "w3c-hr-time": "1.0.2", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.5", + "whatwg-mimetype": "2.3.0", + "whatwg-url": "6.5.0", + "ws": "5.2.2", + "xml-name-validator": "3.0.0" }, "dependencies": { "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", "dev": true }, "sax": { @@ -10851,7 +9436,7 @@ "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", "dev": true, "requires": { - "async-limiter": "~1.0.0" + "async-limiter": "1.0.1" } } } @@ -10881,7 +9466,7 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "requires": { - "jsonify": "~0.0.0" + "jsonify": "0.0.0" } }, "json-stable-stringify-without-jsonify": { @@ -10896,18 +9481,11 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", + "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", "requires": { - "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } + "minimist": "1.2.5" } }, "jsonfile": { @@ -10915,7 +9493,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "4.2.3" } }, "jsonify": { @@ -10935,12 +9513,13 @@ } }, "jsx-ast-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz", - "integrity": "sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", + "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", "dev": true, "requires": { - "array-includes": "^3.0.3" + "array-includes": "3.1.1", + "object.assign": "4.1.0" } }, "kind-of": { @@ -10948,7 +9527,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } }, "klaw": { @@ -10956,7 +9535,7 @@ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", "requires": { - "graceful-fs": "^4.1.9" + "graceful-fs": "4.2.3" } }, "kleur": { @@ -10970,7 +9549,7 @@ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "1.0.0" } }, "left-pad": { @@ -10991,8 +9570,8 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "1.1.2", + "type-check": "0.3.2" } }, "linkify-it": { @@ -11000,7 +9579,7 @@ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-1.2.4.tgz", "integrity": "sha1-B3NSbDF8j9E71TTuHRgP+Iq/iBo=", "requires": { - "uc.micro": "^1.0.1" + "uc.micro": "1.0.6" } }, "load-json-file": { @@ -11008,10 +9587,10 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" + "graceful-fs": "4.2.3", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" }, "dependencies": { "parse-json": { @@ -11019,7 +9598,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "requires": { - "error-ex": "^1.2.0" + "error-ex": "1.3.2" } }, "strip-bom": { @@ -11034,14 +9613,14 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "2.0.0", + "path-exists": "3.0.0" } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash.flattendeep": { "version": "4.4.0", @@ -11049,16 +9628,6 @@ "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", "dev": true }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" - }, "lodash.pad": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", @@ -11102,7 +9671,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "js-tokens": "4.0.0" } }, "lru-cache": { @@ -11110,8 +9679,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "pseudomap": "1.0.2", + "yallist": "2.1.2" }, "dependencies": { "yallist": { @@ -11126,8 +9695,8 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "pify": "4.0.1", + "semver": "5.7.1" }, "dependencies": { "pify": { @@ -11136,9 +9705,9 @@ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, @@ -11147,15 +9716,7 @@ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", "requires": { - "tmpl": "1.0.x" - } - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "requires": { - "p-defer": "^1.0.0" + "tmpl": "1.0.4" } }, "map-cache": { @@ -11168,7 +9729,7 @@ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "requires": { - "object-visit": "^1.0.0" + "object-visit": "1.0.1" } }, "markdown-escapes": { @@ -11194,7 +9755,7 @@ "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==", "dev": true, "requires": { - "unist-util-visit": "^1.1.0" + "unist-util-visit": "1.4.1" } }, "mdurl": { @@ -11207,7 +9768,7 @@ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "1.2.0" } }, "merge": { @@ -11220,7 +9781,7 @@ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "requires": { - "readable-stream": "^2.0.1" + "readable-stream": "2.3.7" } }, "metro": { @@ -11228,33 +9789,33 @@ "resolved": "https://registry.npmjs.org/metro/-/metro-0.51.1.tgz", "integrity": "sha512-nM0dqn8LQlMjhChl2fzTUq2EWiUebZM7nkesD9vQe47W10bj/tbRLPiIIAxht6SRDbPd/hRA+t39PxLhPSKEKg==", "requires": { - "@babel/core": "^7.0.0", - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/plugin-external-helpers": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "absolute-path": "^0.0.0", - "async": "^2.4.0", - "babel-preset-fbjs": "^3.0.1", - "buffer-crc32": "^0.2.13", - "chalk": "^2.4.1", - "concat-stream": "^1.6.0", - "connect": "^3.6.5", - "debug": "^2.2.0", - "denodeify": "^1.2.1", - "eventemitter3": "^3.0.0", - "fbjs": "^1.0.0", - "fs-extra": "^1.0.0", - "graceful-fs": "^4.1.3", - "image-size": "^0.6.0", - "invariant": "^2.2.4", + "@babel/core": "7.9.0", + "@babel/generator": "7.9.4", + "@babel/parser": "7.9.4", + "@babel/plugin-external-helpers": "7.8.3", + "@babel/template": "7.8.6", + "@babel/traverse": "7.9.0", + "@babel/types": "7.9.0", + "absolute-path": "0.0.0", + "async": "2.6.3", + "babel-preset-fbjs": "3.3.0", + "buffer-crc32": "0.2.13", + "chalk": "2.4.2", + "concat-stream": "1.6.2", + "connect": "3.7.0", + "debug": "2.6.9", + "denodeify": "1.2.1", + "eventemitter3": "3.1.2", + "fbjs": "1.0.0", + "fs-extra": "1.0.0", + "graceful-fs": "4.2.3", + "image-size": "0.6.3", + "invariant": "2.2.4", "jest-haste-map": "24.0.0-alpha.6", "jest-worker": "24.0.0-alpha.6", - "json-stable-stringify": "^1.0.1", - "lodash.throttle": "^4.1.1", - "merge-stream": "^1.0.1", + "json-stable-stringify": "1.0.1", + "lodash.throttle": "4.1.1", + "merge-stream": "1.0.1", "metro-babel-transformer": "0.51.1", "metro-cache": "0.51.1", "metro-config": "0.51.1", @@ -11264,21 +9825,21 @@ "metro-resolver": "0.51.1", "metro-source-map": "0.51.1", "mime-types": "2.1.11", - "mkdirp": "^0.5.1", - "node-fetch": "^2.2.0", - "nullthrows": "^1.1.0", - "react-transform-hmr": "^1.0.4", - "resolve": "^1.5.0", - "rimraf": "^2.5.4", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", + "mkdirp": "0.5.4", + "node-fetch": "2.6.0", + "nullthrows": "1.1.1", + "react-transform-hmr": "1.0.4", + "resolve": "1.15.1", + "rimraf": "2.7.1", + "serialize-error": "2.1.0", + "source-map": "0.5.7", "temp": "0.8.3", - "throat": "^4.1.0", - "wordwrap": "^1.0.0", - "write-file-atomic": "^1.2.0", - "ws": "^1.1.5", - "xpipe": "^1.0.5", - "yargs": "^9.0.0" + "throat": "4.1.0", + "wordwrap": "1.0.0", + "write-file-atomic": "1.3.4", + "ws": "1.1.5", + "xpipe": "1.0.5", + "yargs": "9.0.1" }, "dependencies": { "metro-react-native-babel-preset": { @@ -11286,41 +9847,41 @@ "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.51.1.tgz", "integrity": "sha512-e9tsYDFhU70gar0jQWcZXRPJVCv4k7tEs6Pm74wXO2OO/T1MEumbvniDIGwGG8bG8RUnYdHhjcaiub2Vc5BRWw==", "requires": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-exponentiation-operator": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-assign": "^7.0.0", - "@babel/plugin-transform-parameters": "^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-source": "^7.0.0", - "@babel/plugin-transform-regenerator": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.0.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", + "@babel/plugin-proposal-class-properties": "7.8.3", + "@babel/plugin-proposal-export-default-from": "7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.8.3", + "@babel/plugin-proposal-object-rest-spread": "7.9.0", + "@babel/plugin-proposal-optional-catch-binding": "7.8.3", + "@babel/plugin-proposal-optional-chaining": "7.9.0", + "@babel/plugin-syntax-dynamic-import": "7.8.3", + "@babel/plugin-syntax-export-default-from": "7.8.3", + "@babel/plugin-transform-arrow-functions": "7.8.3", + "@babel/plugin-transform-block-scoping": "7.8.3", + "@babel/plugin-transform-classes": "7.9.2", + "@babel/plugin-transform-computed-properties": "7.8.3", + "@babel/plugin-transform-destructuring": "7.8.8", + "@babel/plugin-transform-exponentiation-operator": "7.8.3", + "@babel/plugin-transform-flow-strip-types": "7.9.0", + "@babel/plugin-transform-for-of": "7.9.0", + "@babel/plugin-transform-function-name": "7.8.3", + "@babel/plugin-transform-literals": "7.8.3", + "@babel/plugin-transform-modules-commonjs": "7.9.0", + "@babel/plugin-transform-object-assign": "7.8.3", + "@babel/plugin-transform-parameters": "7.9.3", + "@babel/plugin-transform-react-display-name": "7.8.3", + "@babel/plugin-transform-react-jsx": "7.9.4", + "@babel/plugin-transform-react-jsx-source": "7.9.0", + "@babel/plugin-transform-regenerator": "7.8.7", + "@babel/plugin-transform-runtime": "7.9.0", + "@babel/plugin-transform-shorthand-properties": "7.8.3", + "@babel/plugin-transform-spread": "7.8.3", + "@babel/plugin-transform-sticky-regex": "7.8.3", + "@babel/plugin-transform-template-literals": "7.8.3", + "@babel/plugin-transform-typescript": "7.9.4", + "@babel/plugin-transform-unicode-regex": "7.8.3", + "@babel/template": "7.8.6", "metro-babel7-plugin-react-transform": "0.51.1", - "react-transform-hmr": "^1.0.4" + "react-transform-hmr": "1.0.4" } }, "mime-db": { @@ -11333,7 +9894,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", "integrity": "sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw=", "requires": { - "mime-db": "~1.23.0" + "mime-db": "1.23.0" } } } @@ -11343,25 +9904,18 @@ "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.51.0.tgz", "integrity": "sha512-rhdvHFOZ7/ub019A3+aYs8YeLydb02/FAMsKr2Nz2Jlf6VUxWrMnrcT0NYX16F9TGdi2ulRlJ9dwvUmdhkk+Bw==", "requires": { - "@babel/core": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.0.0", - "@babel/plugin-transform-async-to-generator": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/register": "^7.0.0", - "core-js": "^2.2.2", - "escape-string-regexp": "^1.0.5" - }, - "dependencies": { - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" - } + "@babel/core": "7.9.0", + "@babel/plugin-proposal-class-properties": "7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.8.3", + "@babel/plugin-proposal-object-rest-spread": "7.9.0", + "@babel/plugin-proposal-optional-catch-binding": "7.8.3", + "@babel/plugin-proposal-optional-chaining": "7.9.0", + "@babel/plugin-transform-async-to-generator": "7.8.3", + "@babel/plugin-transform-flow-strip-types": "7.9.0", + "@babel/plugin-transform-modules-commonjs": "7.9.0", + "@babel/register": "7.9.0", + "core-js": "2.6.11", + "escape-string-regexp": "1.0.5" } }, "metro-babel-transformer": { @@ -11369,7 +9923,7 @@ "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.51.1.tgz", "integrity": "sha512-+tOnZZzOzufB86ASdfimUEGB1jBKsdsVpPdjNJZkueTFyvYlGqWDQKHM1w9bwKMeM/czPQ48Y6m8Bou6le0X4w==", "requires": { - "@babel/core": "^7.0.0" + "@babel/core": "7.9.0" } }, "metro-babel7-plugin-react-transform": { @@ -11377,7 +9931,7 @@ "resolved": "https://registry.npmjs.org/metro-babel7-plugin-react-transform/-/metro-babel7-plugin-react-transform-0.51.1.tgz", "integrity": "sha512-wzn4X9KgmAMZ7Bi6v9KxA7dw+AHGL0RODPxU5NDJ3A6d0yERvzfZ3qkzWhz8jbFkVBK12cu5DTho3HBazKQDOw==", "requires": { - "@babel/helper-module-imports": "^7.0.0" + "@babel/helper-module-imports": "7.8.3" } }, "metro-cache": { @@ -11387,8 +9941,8 @@ "requires": { "jest-serializer": "24.0.0-alpha.6", "metro-core": "0.51.1", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4" + "mkdirp": "0.5.4", + "rimraf": "2.7.1" }, "dependencies": { "jest-serializer": { @@ -11403,7 +9957,7 @@ "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.51.1.tgz", "integrity": "sha512-WCNd0tTI9gb/ubgTqK1+ljZL4b3hsXVinsOAtep4nHiVb6DSDdbO2yXDD2rpYx3NE6hDRMFS9HHg6G0139pAqQ==", "requires": { - "cosmiconfig": "^5.0.5", + "cosmiconfig": "5.2.1", "metro": "0.51.1", "metro-cache": "0.51.1", "metro-core": "0.51.1", @@ -11416,9 +9970,9 @@ "integrity": "sha512-sG1yACjdFqmIzZN50HqLTKUMp1oy0AehHhmIuYeIllo1DjX6Y2o3UAT3rGP8U+SAqJGXf/OWzl6VNyRPGDENfA==", "requires": { "jest-haste-map": "24.0.0-alpha.6", - "lodash.throttle": "^4.1.1", + "lodash.throttle": "4.1.1", "metro-resolver": "0.51.1", - "wordwrap": "^1.0.0" + "wordwrap": "1.0.0" } }, "metro-memory-fs": { @@ -11431,7 +9985,7 @@ "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.51.1.tgz", "integrity": "sha512-HAqd/rFrQ6mnbqVAszDXIKTg2rqHlY9Fm8DReakgbkAeyMbF2mH3kEgtesPmTrhajdFk81UZcNSm6wxj1JMgVg==", "requires": { - "uglify-es": "^3.1.9" + "uglify-es": "3.3.9" } }, "metro-react-native-babel-preset": { @@ -11440,42 +9994,42 @@ "integrity": "sha512-Hfr32+u5yYl3qhYQJU8NQ26g4kQlc3yFMg7keVR/3H8rwBIbFqXgsKt8oe0dOrv7WvrMqBHhDtVdU9ls3sSq8g==", "dev": true, "requires": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-exponentiation-operator": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-assign": "^7.0.0", - "@babel/plugin-transform-parameters": "^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-source": "^7.0.0", - "@babel/plugin-transform-regenerator": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.0.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", + "@babel/plugin-proposal-class-properties": "7.8.3", + "@babel/plugin-proposal-export-default-from": "7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.8.3", + "@babel/plugin-proposal-object-rest-spread": "7.9.0", + "@babel/plugin-proposal-optional-catch-binding": "7.8.3", + "@babel/plugin-proposal-optional-chaining": "7.9.0", + "@babel/plugin-syntax-dynamic-import": "7.8.3", + "@babel/plugin-syntax-export-default-from": "7.8.3", + "@babel/plugin-syntax-flow": "7.8.3", + "@babel/plugin-transform-arrow-functions": "7.8.3", + "@babel/plugin-transform-block-scoping": "7.8.3", + "@babel/plugin-transform-classes": "7.9.2", + "@babel/plugin-transform-computed-properties": "7.8.3", + "@babel/plugin-transform-destructuring": "7.8.8", + "@babel/plugin-transform-exponentiation-operator": "7.8.3", + "@babel/plugin-transform-flow-strip-types": "7.9.0", + "@babel/plugin-transform-for-of": "7.9.0", + "@babel/plugin-transform-function-name": "7.8.3", + "@babel/plugin-transform-literals": "7.8.3", + "@babel/plugin-transform-modules-commonjs": "7.9.0", + "@babel/plugin-transform-object-assign": "7.8.3", + "@babel/plugin-transform-parameters": "7.9.3", + "@babel/plugin-transform-react-display-name": "7.8.3", + "@babel/plugin-transform-react-jsx": "7.9.4", + "@babel/plugin-transform-react-jsx-source": "7.9.0", + "@babel/plugin-transform-regenerator": "7.8.7", + "@babel/plugin-transform-runtime": "7.9.0", + "@babel/plugin-transform-shorthand-properties": "7.8.3", + "@babel/plugin-transform-spread": "7.8.3", + "@babel/plugin-transform-sticky-regex": "7.8.3", + "@babel/plugin-transform-template-literals": "7.8.3", + "@babel/plugin-transform-typescript": "7.9.4", + "@babel/plugin-transform-unicode-regex": "7.8.3", + "@babel/template": "7.8.6", "metro-babel7-plugin-react-transform": "0.54.1", - "react-transform-hmr": "^1.0.4" + "react-transform-hmr": "1.0.4" }, "dependencies": { "metro-babel7-plugin-react-transform": { @@ -11484,7 +10038,7 @@ "integrity": "sha512-jWm5myuMoZAOhoPsa8ItfDxdTcOzKhTTzzhFlbZnRamE7i9qybeMdrZt8KHQpF7i2p/mKzE9Yhf4ouOz5K/jHg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0" + "@babel/helper-module-imports": "7.8.3" } } } @@ -11494,8 +10048,8 @@ "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.51.0.tgz", "integrity": "sha512-VFnqtE0qrVmU1HV9B04o53+NZHvDwR+CWCoEx4+7vCqJ9Tvas741biqCjah9xtifoKdElQELk6x0soOAWCDFJA==", "requires": { - "@babel/core": "^7.0.0", - "babel-preset-fbjs": "^3.0.1", + "@babel/core": "7.9.0", + "babel-preset-fbjs": "3.3.0", "metro-babel-transformer": "0.51.0", "metro-react-native-babel-preset": "0.51.0" }, @@ -11505,7 +10059,7 @@ "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.51.0.tgz", "integrity": "sha512-M7KEY/hjD3E8tJEliWgI0VOSaJtqaznC0ItM6FiMrhoGDqqa1BvGofl+EPcKqjBSOV1UgExua/T1VOIWbjwQsw==", "requires": { - "@babel/core": "^7.0.0" + "@babel/core": "7.9.0" } }, "metro-babel7-plugin-react-transform": { @@ -11513,7 +10067,7 @@ "resolved": "https://registry.npmjs.org/metro-babel7-plugin-react-transform/-/metro-babel7-plugin-react-transform-0.51.0.tgz", "integrity": "sha512-dZ95kXcE2FJMoRsYhxr7YLCbOlHWKwe0bOpihRhfImDTgFfuKIzU4ROQwMUbE0NCbzB+ATFsa2FZ3pHDJ5GI0w==", "requires": { - "@babel/helper-module-imports": "^7.0.0" + "@babel/helper-module-imports": "7.8.3" } }, "metro-react-native-babel-preset": { @@ -11521,41 +10075,41 @@ "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.51.0.tgz", "integrity": "sha512-Y/aPeLl4RzY8IEAneOyDcpdjto/8yjIuX9eUWRngjSqdHYhGQtqiSBpfTpo0BvXpwNRLwCLHyXo58gNpckTJFw==", "requires": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-exponentiation-operator": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-assign": "^7.0.0", - "@babel/plugin-transform-parameters": "^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-source": "^7.0.0", - "@babel/plugin-transform-regenerator": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.0.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", + "@babel/plugin-proposal-class-properties": "7.8.3", + "@babel/plugin-proposal-export-default-from": "7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.8.3", + "@babel/plugin-proposal-object-rest-spread": "7.9.0", + "@babel/plugin-proposal-optional-catch-binding": "7.8.3", + "@babel/plugin-proposal-optional-chaining": "7.9.0", + "@babel/plugin-syntax-dynamic-import": "7.8.3", + "@babel/plugin-syntax-export-default-from": "7.8.3", + "@babel/plugin-transform-arrow-functions": "7.8.3", + "@babel/plugin-transform-block-scoping": "7.8.3", + "@babel/plugin-transform-classes": "7.9.2", + "@babel/plugin-transform-computed-properties": "7.8.3", + "@babel/plugin-transform-destructuring": "7.8.8", + "@babel/plugin-transform-exponentiation-operator": "7.8.3", + "@babel/plugin-transform-flow-strip-types": "7.9.0", + "@babel/plugin-transform-for-of": "7.9.0", + "@babel/plugin-transform-function-name": "7.8.3", + "@babel/plugin-transform-literals": "7.8.3", + "@babel/plugin-transform-modules-commonjs": "7.9.0", + "@babel/plugin-transform-object-assign": "7.8.3", + "@babel/plugin-transform-parameters": "7.9.3", + "@babel/plugin-transform-react-display-name": "7.8.3", + "@babel/plugin-transform-react-jsx": "7.9.4", + "@babel/plugin-transform-react-jsx-source": "7.9.0", + "@babel/plugin-transform-regenerator": "7.8.7", + "@babel/plugin-transform-runtime": "7.9.0", + "@babel/plugin-transform-shorthand-properties": "7.8.3", + "@babel/plugin-transform-spread": "7.8.3", + "@babel/plugin-transform-sticky-regex": "7.8.3", + "@babel/plugin-transform-template-literals": "7.8.3", + "@babel/plugin-transform-typescript": "7.9.4", + "@babel/plugin-transform-unicode-regex": "7.8.3", + "@babel/template": "7.8.6", "metro-babel7-plugin-react-transform": "0.51.0", - "react-transform-hmr": "^1.0.4" + "react-transform-hmr": "1.0.4" } } } @@ -11565,7 +10119,7 @@ "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.51.1.tgz", "integrity": "sha512-zmWbD/287NDA/jLPuPV0hne/YMMSG0dljzu21TYMg2lXRLur/zROJHHhyepZvuBHgInXBi4Vhr2wvuSnY39SuA==", "requires": { - "absolute-path": "^0.0.0" + "absolute-path": "0.0.0" } }, "metro-source-map": { @@ -11573,7 +10127,7 @@ "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.51.1.tgz", "integrity": "sha512-JyrE+RV4YumrboHPHTGsUUGERjQ681ImRLrSYDGcmNv4tfpk9nvAK26UAas4IvBYFCC9oW90m0udt3kaQGv59Q==", "requires": { - "source-map": "^0.5.6" + "source-map": "0.5.7" } }, "micromatch": { @@ -11581,19 +10135,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "requires": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" } }, "mime": { @@ -11602,16 +10156,16 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" }, "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", "requires": { - "mime-db": "1.40.0" + "mime-db": "1.43.0" } }, "mimic-fn": { @@ -11624,7 +10178,7 @@ "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", "requires": { - "dom-walk": "^0.1.0" + "dom-walk": "0.1.1" } }, "minimatch": { @@ -11632,29 +10186,29 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "1.1.11" } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "minipass": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "safe-buffer": "5.1.2", + "yallist": "3.1.1" } }, "minizlib": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", "requires": { - "minipass": "^2.2.1" + "minipass": "2.9.0" } }, "mixin-deep": { @@ -11662,8 +10216,8 @@ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "for-in": "1.0.2", + "is-extendable": "1.0.1" }, "dependencies": { "is-extendable": { @@ -11671,17 +10225,17 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "^2.0.4" + "is-plain-object": "2.0.4" } } } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", + "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", "requires": { - "minimist": "0.0.8" + "minimist": "1.2.5" } }, "mocha": { @@ -11724,12 +10278,27 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "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" + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.1", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" } }, "supports-color": { @@ -11738,7 +10307,7 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "3.0.0" } } } @@ -11749,15 +10318,15 @@ "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" }, "morgan": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", - "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", "requires": { - "basic-auth": "~2.0.0", + "basic-auth": "2.0.1", "debug": "2.6.9", - "depd": "~1.1.2", - "on-finished": "~2.3.0", - "on-headers": "~1.0.1" + "depd": "2.0.0", + "on-finished": "2.3.0", + "on-headers": "1.0.2" } }, "ms": { @@ -11783,9 +10352,9 @@ "dev": true, "optional": true, "requires": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" + "mkdirp": "0.5.4", + "ncp": "2.0.0", + "rimraf": "2.4.5" }, "dependencies": { "glob": { @@ -11795,11 +10364,11 @@ "dev": true, "optional": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "inflight": "1.0.6", + "inherits": "2.0.1", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" } }, "rimraf": { @@ -11809,32 +10378,32 @@ "dev": true, "optional": true, "requires": { - "glob": "^6.0.1" + "glob": "6.0.4" } } } }, "nan": { - "version": "2.13.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", - "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==" + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "requires": { - "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" + "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.3", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "arr-diff": { @@ -11848,9 +10417,9 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, @@ -11880,7 +10449,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { @@ -11900,12 +10469,6 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -11936,11 +10499,11 @@ "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", "requires": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" + "growly": "1.3.0", + "is-wsl": "1.1.0", + "semver": "5.7.1", + "shellwords": "0.1.1", + "which": "1.3.1" }, "dependencies": { "semver": { @@ -11955,16 +10518,16 @@ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.13.0.tgz", "integrity": "sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ==", "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" + "detect-libc": "1.0.3", + "mkdirp": "0.5.4", + "needle": "2.3.3", + "nopt": "4.0.3", + "npm-packlist": "1.4.8", + "npmlog": "4.1.2", + "rc": "1.2.8", + "rimraf": "2.7.1", + "semver": "5.3.0", + "tar": "4.4.13" }, "dependencies": { "nopt": { @@ -11989,17 +10552,17 @@ "resolved": "https://registry.npmjs.org/nodejs-mobile-gyp/-/nodejs-mobile-gyp-0.3.1.tgz", "integrity": "sha512-AcS4xbeWjOIfLQ+xZp0m7zEhd263v33O54OeJz/ObzpqvN1LXoph7ceeTQVrmp1YL0zSoUxX3s8AinotR8OgVg==", "requires": { - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^4.4.8", - "which": "1" + "glob": "7.1.6", + "graceful-fs": "4.2.3", + "mkdirp": "0.5.4", + "nopt": "3.0.6", + "npmlog": "4.1.2", + "osenv": "0.1.5", + "request": "2.88.2", + "rimraf": "2.7.1", + "semver": "5.3.0", + "tar": "4.4.13", + "which": "1.3.1" } }, "nodejs-mobile-react-native": { @@ -12007,10 +10570,10 @@ "resolved": "https://registry.npmjs.org/nodejs-mobile-react-native/-/nodejs-mobile-react-native-0.4.3.tgz", "integrity": "sha512-UL71tlDG10OPW/Dk0QYuQq5l0HqgHpYew+4BL1TildscWrBDsbHxiKhkH5/QJbN4kwDVBLi9gU4U/lknQoo4Ew==", "requires": { - "mkdirp": "^0.5.1", - "ncp": "^2.0.0", - "nodejs-mobile-gyp": "^0.3.1", - "xcode": "^0.9.3" + "mkdirp": "0.5.4", + "ncp": "2.0.0", + "nodejs-mobile-gyp": "0.3.1", + "xcode": "0.9.3" } }, "nopt": { @@ -12018,7 +10581,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "requires": { - "abbrev": "1" + "abbrev": "1.1.1" } }, "normalize-package-data": { @@ -12026,10 +10589,10 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "2.8.8", + "resolve": "1.15.1", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.4" } }, "normalize-path": { @@ -12037,7 +10600,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "^1.0.1" + "remove-trailing-separator": "1.1.0" } }, "npm-bundled": { @@ -12068,7 +10631,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "path-key": "^2.0.0" + "path-key": "2.0.1" } }, "npmlog": { @@ -12076,10 +10639,10 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "1.1.5", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" } }, "nullthrows": { @@ -12113,9 +10676,9 @@ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" }, "dependencies": { "define-property": { @@ -12123,11 +10686,17 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -12143,7 +10712,7 @@ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "requires": { - "isobject": "^3.0.0" + "isobject": "3.0.1" } }, "object.assign": { @@ -12151,32 +10720,44 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "define-properties": "1.1.3", + "function-bind": "1.1.1", + "has-symbols": "1.0.1", + "object-keys": "1.1.1" + } + }, + "object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", + "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.17.5", + "function-bind": "1.1.1", + "has": "1.0.3" } }, "object.fromentries": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", - "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.11.0", - "function-bind": "^1.1.1", - "has": "^1.0.1" + "define-properties": "1.1.3", + "es-abstract": "1.17.5", + "function-bind": "1.1.1", + "has": "1.0.3" } }, "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "define-properties": "1.1.3", + "es-abstract": "1.17.5" } }, "object.omit": { @@ -12184,8 +10765,8 @@ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "requires": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" + "for-own": "0.1.5", + "is-extendable": "0.1.1" } }, "object.pick": { @@ -12193,7 +10774,19 @@ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "requires": { - "isobject": "^3.0.1" + "isobject": "3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.17.5", + "function-bind": "1.1.1", + "has": "1.0.3" } }, "obv": { @@ -12219,7 +10812,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1" + "wrappy": "1.0.2" } }, "onetime": { @@ -12227,7 +10820,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "1.2.0" } }, "opn": { @@ -12235,7 +10828,7 @@ "resolved": "https://registry.npmjs.org/opn/-/opn-3.0.3.tgz", "integrity": "sha1-ttmec5n3jWXDuq/+8fsojpuFJDo=", "requires": { - "object-assign": "^4.0.1" + "object-assign": "4.1.1" } }, "optimist": { @@ -12243,10 +10836,15 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" + "minimist": "0.0.10", + "wordwrap": "0.0.3" }, "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", @@ -12255,17 +10853,17 @@ } }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { - "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" + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "word-wrap": "1.2.3" } }, "options": { @@ -12283,23 +10881,33 @@ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" }, "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "4.1.5", + "shebang-command": "1.2.0", + "which": "1.3.1" + } + }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.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" + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" } }, "get-stream": { @@ -12319,22 +10927,17 @@ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" } }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" - }, "p-each-series": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", "dev": true, "requires": { - "p-reduce": "^1.0.0" + "p-reduce": "1.0.0" } }, "p-finally": { @@ -12342,17 +10945,12 @@ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" - }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "requires": { - "p-try": "^1.0.0" + "p-try": "1.0.0" } }, "p-locate": { @@ -12360,7 +10958,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "p-limit": "^1.1.0" + "p-limit": "1.3.0" } }, "p-reduce": { @@ -12381,17 +10979,17 @@ "integrity": "sha512-gkN3UDlyofG81IRhxLnonSIi8BBrwcPlKMJS6tcJRubofyekqQPMdB5LXPrmCkeu/m/YKx5PzkUVQLezda5/JQ==", "dev": true, "requires": { - "p-limit": "^2.2.0", - "p-reflect": "^2.0.0" + "p-limit": "2.2.2", + "p-reflect": "2.1.0" }, "dependencies": { "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-try": "2.2.0" } }, "p-try": { @@ -12413,7 +11011,7 @@ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { - "callsites": "^3.0.0" + "callsites": "3.1.0" }, "dependencies": { "callsites": { @@ -12430,12 +11028,12 @@ "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", "dev": true, "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "character-entities": "1.2.4", + "character-entities-legacy": "1.1.4", + "character-reference-invalid": "1.1.4", + "is-alphanumerical": "1.0.4", + "is-decimal": "1.0.4", + "is-hexadecimal": "1.0.4" } }, "parse-glob": { @@ -12443,10 +11041,10 @@ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "requires": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" } }, "parse-json": { @@ -12454,8 +11052,8 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "error-ex": "1.3.2", + "json-parse-better-errors": "1.0.2" } }, "parse-node-version": { @@ -12510,7 +11108,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "requires": { - "pify": "^2.0.0" + "pify": "2.3.0" } }, "pathington": { @@ -12560,7 +11158,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "^2.0.0" + "pinkie": "2.0.4" } }, "pirates": { @@ -12568,7 +11166,7 @@ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", "requires": { - "node-modules-regexp": "^1.0.0" + "node-modules-regexp": "1.0.0" } }, "pkg-dir": { @@ -12576,7 +11174,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "requires": { - "find-up": "^3.0.0" + "find-up": "3.0.0" }, "dependencies": { "find-up": { @@ -12584,7 +11182,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "locate-path": "^3.0.0" + "locate-path": "3.0.0" } }, "locate-path": { @@ -12592,16 +11190,16 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "3.0.0", + "path-exists": "3.0.0" } }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "requires": { - "p-try": "^2.0.0" + "p-try": "2.2.0" } }, "p-locate": { @@ -12609,7 +11207,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "requires": { - "p-limit": "^2.0.0" + "p-limit": "2.2.2" } }, "p-try": { @@ -12626,7 +11224,7 @@ "requires": { "base64-js": "1.1.2", "xmlbuilder": "8.2.2", - "xmldom": "0.1.x" + "xmldom": "0.1.31" } }, "plugin-error": { @@ -12634,11 +11232,11 @@ "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", "requires": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" + "ansi-cyan": "0.1.1", + "ansi-red": "0.1.1", + "arr-diff": "1.1.0", + "arr-union": "2.1.0", + "extend-shallow": "1.1.4" }, "dependencies": { "arr-diff": { @@ -12646,8 +11244,8 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", "requires": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" + "arr-flatten": "1.1.0", + "array-slice": "0.2.3" } }, "arr-union": { @@ -12660,7 +11258,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", "requires": { - "kind-of": "^1.1.0" + "kind-of": "1.1.0" } }, "kind-of": { @@ -12697,8 +11295,8 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.0.0-alpha.6.tgz", "integrity": "sha512-zG2m6YJeuzwBFqb5EIdmwYVf30sap+iMRuYNPytOccEXZMAJbPIFGKVJ/U0WjQegmnQbRo9CI7j6j3HtDaifiA==", "requires": { - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0" + "ansi-regex": "4.1.0", + "ansi-styles": "3.2.1" }, "dependencies": { "ansi-regex": { @@ -12711,7 +11309,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } } } @@ -12727,9 +11325,9 @@ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "progress": { "version": "2.0.3", @@ -12741,7 +11339,7 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { - "asap": "~2.0.3" + "asap": "2.0.6" } }, "promise-polyfill": { @@ -12751,13 +11349,13 @@ "dev": true }, "prompts": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.2.1.tgz", - "integrity": "sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.2.tgz", + "integrity": "sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA==", "dev": true, "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.3" + "kleur": "3.0.3", + "sisteransi": "1.0.5" } }, "prop-types": { @@ -12765,9 +11363,9 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "react-is": "16.13.1" } }, "proper-lockfile": { @@ -12776,9 +11374,9 @@ "integrity": "sha512-iMghHHXv2bsxl6NchhEaFck8tvX3F9cknEEh1SUpguUOBjN7PAAW9BLzmbc1g/mCD1gY3EE2EABBHPJfFdHFmA==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" + "graceful-fs": "4.2.3", + "retry": "0.12.0", + "signal-exit": "3.0.2" } }, "proto-list": { @@ -12793,17 +11391,17 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "end-of-stream": "1.4.4", + "once": "1.4.0" } }, "punycode": { @@ -12826,9 +11424,9 @@ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" + "is-number": "4.0.0", + "kind-of": "6.0.3", + "math-random": "1.0.4" }, "dependencies": { "is-number": { @@ -12837,9 +11435,9 @@ "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, @@ -12871,10 +11469,10 @@ "resolved": "https://registry.npmjs.org/react/-/react-16.8.3.tgz", "integrity": "sha512-3UoSIsEq8yTJuSu0luO1QQWYbgGEILm+eJl2QN/VLDi7hL+EN18M3q3oVZwmVzzBJ3DkM7RMdRwBmZZ+b4IzSA==", "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.13.3" + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "prop-types": "15.7.2", + "scheduler": "0.13.6" } }, "react-clone-referenced-element": { @@ -12892,8 +11490,8 @@ "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-3.6.3.tgz", "integrity": "sha512-+P+eFy/yo8Z/UH9J0DqHZuUM5+RI2wl249TNvMx3J2jpUomLQa4Zxl56GEotGfw3PIP1eI+hVf1s53FlUONStQ==", "requires": { - "shell-quote": "^1.6.1", - "ws": "^3.3.1" + "shell-quote": "1.6.1", + "ws": "3.3.3" }, "dependencies": { "ultron": { @@ -12906,73 +11504,73 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "async-limiter": "1.0.1", + "safe-buffer": "5.1.2", + "ultron": "1.1.1" } } } }, "react-is": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", - "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==" + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "react-native": { "version": "0.59.10", "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.59.10.tgz", "integrity": "sha512-guB9YW+pBqS1dnfZ4ntzjINopiCUAbdmshU2wMWD1W32fRczLAopi/7Q2iHKP8LTCdxuYZV3fa9Mew5PSuANAw==", "requires": { - "@babel/runtime": "^7.0.0", - "@react-native-community/cli": "^1.2.1", - "absolute-path": "^0.0.0", - "art": "^0.10.0", - "base64-js": "^1.1.2", - "chalk": "^2.4.1", - "commander": "^2.9.0", - "compression": "^1.7.1", - "connect": "^3.6.5", - "create-react-class": "^15.6.3", - "debug": "^2.2.0", - "denodeify": "^1.2.1", - "errorhandler": "^1.5.0", - "escape-string-regexp": "^1.0.5", - "event-target-shim": "^1.0.5", - "fbjs": "^1.0.0", - "fbjs-scripts": "^1.0.0", - "fs-extra": "^1.0.0", - "glob": "^7.1.1", - "graceful-fs": "^4.1.3", - "inquirer": "^3.0.6", - "invariant": "^2.2.4", - "lodash": "^4.17.5", + "@babel/runtime": "7.9.2", + "@react-native-community/cli": "1.12.0", + "absolute-path": "0.0.0", + "art": "0.10.3", + "base64-js": "1.1.2", + "chalk": "2.4.2", + "commander": "2.20.3", + "compression": "1.7.4", + "connect": "3.7.0", + "create-react-class": "15.6.3", + "debug": "2.6.9", + "denodeify": "1.2.1", + "errorhandler": "1.5.1", + "escape-string-regexp": "1.0.5", + "event-target-shim": "1.1.1", + "fbjs": "1.0.0", + "fbjs-scripts": "1.2.0", + "fs-extra": "1.0.0", + "glob": "7.1.6", + "graceful-fs": "4.2.3", + "inquirer": "3.3.0", + "invariant": "2.2.4", + "lodash": "4.17.15", "metro-babel-register": "0.51.0", "metro-react-native-babel-transformer": "0.51.0", - "mime": "^1.3.4", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "morgan": "^1.9.0", - "node-fetch": "^2.2.0", - "node-notifier": "^5.2.1", - "npmlog": "^2.0.4", - "nullthrows": "^1.1.0", - "opn": "^3.0.2", - "optimist": "^0.6.1", - "plist": "^3.0.0", + "mime": "1.6.0", + "minimist": "1.2.5", + "mkdirp": "0.5.4", + "morgan": "1.10.0", + "node-fetch": "2.6.0", + "node-notifier": "5.4.3", + "npmlog": "2.0.4", + "nullthrows": "1.1.1", + "opn": "3.0.3", + "optimist": "0.6.1", + "plist": "3.0.1", "pretty-format": "24.0.0-alpha.6", - "promise": "^7.1.1", - "prop-types": "^15.5.8", - "react-clone-referenced-element": "^1.0.1", - "react-devtools-core": "^3.6.0", - "regenerator-runtime": "^0.11.0", - "rimraf": "^2.5.4", - "semver": "^5.0.3", - "serve-static": "^1.13.1", + "promise": "7.3.1", + "prop-types": "15.7.2", + "react-clone-referenced-element": "1.1.0", + "react-devtools-core": "3.6.3", + "regenerator-runtime": "0.11.1", + "rimraf": "2.7.1", + "semver": "5.3.0", + "serve-static": "1.14.1", "shell-quote": "1.6.1", - "stacktrace-parser": "^0.1.3", - "ws": "^1.1.5", - "xmldoc": "^0.4.0", - "yargs": "^9.0.0" + "stacktrace-parser": "0.1.9", + "ws": "1.1.5", + "xmldoc": "0.4.0", + "yargs": "9.0.1" }, "dependencies": { "gauge": { @@ -12980,26 +11578,21 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", "requires": { - "ansi": "^0.3.0", - "has-unicode": "^2.0.0", - "lodash.pad": "^4.1.0", - "lodash.padend": "^4.1.0", - "lodash.padstart": "^4.1.0" + "ansi": "0.3.1", + "has-unicode": "2.0.1", + "lodash.pad": "4.5.1", + "lodash.padend": "4.6.1", + "lodash.padstart": "4.6.1" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, "npmlog": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.4.tgz", "integrity": "sha1-mLUlMPJRTKkNCexbIsiEZyI3VpI=", "requires": { - "ansi": "~0.3.1", - "are-we-there-yet": "~1.1.2", - "gauge": "~1.2.5" + "ansi": "0.3.1", + "are-we-there-yet": "1.1.5", + "gauge": "1.2.7" } }, "plist": { @@ -13007,9 +11600,9 @@ "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", "requires": { - "base64-js": "^1.2.3", - "xmlbuilder": "^9.0.7", - "xmldom": "0.1.x" + "base64-js": "1.3.1", + "xmlbuilder": "9.0.7", + "xmldom": "0.1.31" }, "dependencies": { "base64-js": { @@ -13027,22 +11620,22 @@ } }, "react-native-animatable": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/react-native-animatable/-/react-native-animatable-1.3.2.tgz", - "integrity": "sha512-rmah3KQ63ft8DxkzFUwJSuZeq+oSYwldoGF4DTOR5WM2WR5wiWLgBAtrAHlI3Di3by323uOR21s+MlqPcHz2Kw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/react-native-animatable/-/react-native-animatable-1.3.3.tgz", + "integrity": "sha512-2ckIxZQAsvWn25Ho+DK3d1mXIgj7tITkrS4pYDvx96WyOttSvzzFeQnM2od0+FUMzILbdHDsDEqZvnz1DYNQ1w==", "requires": { - "prop-types": "^15.5.10" + "prop-types": "15.7.2" } }, "react-native-calendars": { - "version": "1.102.0", - "resolved": "https://registry.npmjs.org/react-native-calendars/-/react-native-calendars-1.102.0.tgz", - "integrity": "sha512-lxV13B7CAvuey/KoXjg7BTSh6KQSD0tXu4skR5ycr+4DKZkw/FU6aLZRrQW50vsrADBGvcQi0jplMXWDOPayZA==", + "version": "1.264.0", + "resolved": "https://registry.npmjs.org/react-native-calendars/-/react-native-calendars-1.264.0.tgz", + "integrity": "sha512-NHNekv1iwHMI+evr8dDLFqCdvnCWGlBxPKO0/bw1+HDy4uukuab//akoOx9/GGl/3+XV6MVTLdda+qjT6pD2Bg==", "requires": { - "lodash.get": "^4.4.2", - "lodash.isequal": "^4.5.0", - "prop-types": "^15.5.10", - "xdate": "^0.8.0" + "hoist-non-react-statics": "3.3.2", + "lodash": "4.17.15", + "prop-types": "15.7.2", + "xdate": "0.8.2" } }, "react-native-document-picker": { @@ -13051,12 +11644,12 @@ "integrity": "sha512-bHMyAOzFl+II0ZdfzobKsZKvTErmXfmQGalpxpGbeN8+/uhfhUcdp4WuIMecZhFyX6rbj3h3XXLdA12hVlGgmw==" }, "react-native-fs": { - "version": "2.13.3", - "resolved": "https://registry.npmjs.org/react-native-fs/-/react-native-fs-2.13.3.tgz", - "integrity": "sha512-B62LSSAEYQGItg7KVTzTVVCxezOYFBYp4DMVFbdoZUd1mZVFdqR2sy1HY1mye1VI/Lf3IbxSyZEQ0GmrrdwLjg==", + "version": "2.16.6", + "resolved": "https://registry.npmjs.org/react-native-fs/-/react-native-fs-2.16.6.tgz", + "integrity": "sha512-ZWOooD1AuFoAGY3HS2GY7Qx2LZo4oIg6AK0wbC68detxwvX75R/q9lRqThXNKP6vIo2VHWa0fYUo/SrLw80E8w==", "requires": { - "base-64": "^0.1.0", - "utf8": "^2.1.1" + "base-64": "0.1.0", + "utf8": "3.0.0" } }, "react-native-hyperlink": { @@ -13064,8 +11657,8 @@ "resolved": "https://registry.npmjs.org/react-native-hyperlink/-/react-native-hyperlink-0.0.14.tgz", "integrity": "sha1-E4u/5bQQZn0eN/BKK0cTFjqw7YE=", "requires": { - "linkify-it": "^1.2.0", - "mdurl": "^1.0.0" + "linkify-it": "1.2.4", + "mdurl": "1.0.1" } }, "react-native-modal": { @@ -13074,21 +11667,26 @@ "integrity": "sha512-DsF4r8ScW0y+bn+7ThzBLP4az/hsi+e9ge79vExkjpw6uNFwNWQPY21BRE4uyip7PpsqEDSyvVb8GH3UXZIYcA==", "requires": { "prop-types": "15.5.10", - "react-native-animatable": "^1.2.3" + "react-native-animatable": "1.3.3" }, "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, "fbjs": { "version": "0.8.17", "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", "requires": { - "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" + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.21" } }, "prop-types": { @@ -13096,8 +11694,8 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", "requires": { - "fbjs": "^0.8.9", - "loose-envify": "^1.3.1" + "fbjs": "0.8.17", + "loose-envify": "1.4.0" } } } @@ -13107,23 +11705,28 @@ "resolved": "https://registry.npmjs.org/react-native-modal-datetime-picker-nevo/-/react-native-modal-datetime-picker-nevo-4.11.0.tgz", "integrity": "sha512-nDUlHyUoRHO+fzt0cc2g+a8kYx+RZQZnjVY01jDIspAbRGTJuCt9x+LjTvhuDQpoXEJYvBEw1W7dz9mn3tNsoQ==", "requires": { - "moment": "^2.19.0", + "moment": "2.24.0", "prop-types": "15.5.10", "react-native-modal": "3.1.0" }, "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" + }, "fbjs": { "version": "0.8.17", "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", "requires": { - "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" + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.4.0", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.21" } }, "prop-types": { @@ -13131,17 +11734,16 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", "requires": { - "fbjs": "^0.8.9", - "loose-envify": "^1.3.1" + "fbjs": "0.8.17", + "loose-envify": "1.4.0" } } } }, "react-native-push-notification": { "version": "github:sdvig/react-native-push-notification#1340b365c15ed3aab79ef0521cb694af8fd5eedb", - "from": "github:sdvig/react-native-push-notification", "requires": { - "@react-native-community/push-notification-ios": "^1.0.1" + "@react-native-community/push-notification-ios": "1.1.0" } }, "react-native-restart": { @@ -13150,18 +11752,18 @@ "integrity": "sha512-kE+bSLFwr0EvHGXOGLDyM+lNAPgt4Cy67v1jdHK9kjgc4osrJVs8WwmWJvQwjDuGNXl14aLD/Ud5JhB4KRlrsQ==" }, "react-native-share": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-1.1.3.tgz", - "integrity": "sha512-vKAJqgkEt7HjsF0HUwgom+E0FbmFNVZNncHwby1+O8/mXlKugh+Ym6rvv+A2ASHmD5TXKohJMYT2+jYofzPORA==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-1.2.1.tgz", + "integrity": "sha512-V9q1FM+LuYJ65qN3k6BLWs17mIbJCzGyMOhF3rb4MIQXdJfCUbtkDX9aaV86PzcsL1EudCA53HVTJBmWPDed0Q==" }, "react-native-vector-icons": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-6.4.2.tgz", - "integrity": "sha512-G7Y5HksOQkCanFWKJ+fjwP38XL8tQREOSnw7jrbq28AFrrv41YtafOF4uDSDS7HxMRXs17HeEzn24OzJb63iuA==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-6.6.0.tgz", + "integrity": "sha512-MImKVx8JEvVVBnaShMr7/yTX4Y062JZMupht1T+IEgbqBj4aQeQ1z2SH4VHWKNtWtppk4kz9gYyUiMWqx6tNSw==", "requires": { - "lodash": "^4.0.0", - "prop-types": "^15.6.2", - "yargs": "^13.2.2" + "lodash": "4.17.15", + "prop-types": "15.7.2", + "yargs": "13.3.2" }, "dependencies": { "ansi-regex": { @@ -13174,7 +11776,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "camelcase": { @@ -13187,9 +11789,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "3.1.0", + "strip-ansi": "5.2.0", + "wrap-ansi": "5.1.0" } }, "find-up": { @@ -13197,7 +11799,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "locate-path": "^3.0.0" + "locate-path": "3.0.0" } }, "get-caller-file": { @@ -13205,64 +11807,26 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "requires": { - "invert-kv": "^2.0.0" - } - }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "p-locate": "3.0.0", + "path-exists": "3.0.0" } }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "requires": { - "p-try": "^2.0.0" + "p-try": "2.2.0" } }, "p-locate": { @@ -13270,7 +11834,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "requires": { - "p-limit": "^2.0.0" + "p-limit": "2.2.2" } }, "p-try": { @@ -13288,9 +11852,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" } }, "strip-ansi": { @@ -13298,7 +11862,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "4.1.0" } }, "wrap-ansi": { @@ -13306,9 +11870,9 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "3.2.1", + "string-width": "3.1.0", + "strip-ansi": "5.2.0" } }, "y18n": { @@ -13317,80 +11881,65 @@ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" }, "yargs": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" + "cliui": "5.0.0", + "find-up": "3.0.0", + "get-caller-file": "2.0.5", + "require-directory": "2.1.1", + "require-main-filename": "2.0.0", + "set-blocking": "2.0.0", + "string-width": "3.1.0", + "which-module": "2.0.0", + "y18n": "4.0.0", + "yargs-parser": "13.1.2" } }, "yargs-parser": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.0.tgz", - "integrity": "sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "camelcase": "5.3.1", + "decamelize": "1.2.0" } } } }, "react-native-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/react-native-version/-/react-native-version-3.1.0.tgz", - "integrity": "sha512-f8uX0I1SeRf8qinpUgFVYFnhAQdS+Sh2HktOKJq2ZLmJmZm8JE5DXWOFo+0tcog6qyOmZzr8MYLDhpBOO+imoQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-native-version/-/react-native-version-3.2.0.tgz", + "integrity": "sha512-Hgglpm0XIUOkhYLSFaa+YG9v+0excDgLO4/K2zPv3NFEpNo0q6BAsHf/JspeobMf3ju65al9hf134P5Mvu1C3w==", "dev": true, "requires": { - "chalk": "^2.4.1", - "commander": "^2.9.0", - "common-tags": "^1.4.0", - "detect-indent": "^5.0.0", - "dottie": "^2.0.0", - "js-beautify": "^1.7.4", - "lodash.flattendeep": "^4.4.0", - "lodash.uniq": "^4.5.0", - "p-settle": "^3.0.0", - "pbxproj-dom": "^1.0.11", - "plist": "^3.0.1", - "resolve-from": "^5.0.0", - "semver": "^6.0.0" + "chalk": "2.4.2", + "commander": "3.0.2", + "common-tags": "1.8.0", + "detect-indent": "6.0.0", + "dottie": "2.0.2", + "js-beautify": "1.10.3", + "lodash.flattendeep": "4.4.0", + "lodash.uniq": "4.5.0", + "p-settle": "3.1.0", + "pbxproj-dom": "1.2.0", + "plist": "3.0.1", + "resolve-from": "5.0.0", + "semver": "6.3.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", "dev": true }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true }, "plist": { "version": "3.0.1", @@ -13398,9 +11947,9 @@ "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", "dev": true, "requires": { - "base64-js": "^1.2.3", - "xmlbuilder": "^9.0.7", - "xmldom": "0.1.x" + "base64-js": "1.3.1", + "xmlbuilder": "9.0.7", + "xmldom": "0.1.31" } }, "resolve-from": { @@ -13410,20 +11959,11 @@ "dev": true }, "semver": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", - "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, "xmlbuilder": { "version": "9.0.7", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", @@ -13437,8 +11977,8 @@ "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-1.1.8.tgz", "integrity": "sha1-nb/Z2SdSjDqp9ETkVYw3gwq4wmo=", "requires": { - "lodash": "^4.6.1", - "react-deep-force-update": "^1.0.0" + "lodash": "4.17.15", + "react-deep-force-update": "1.1.2" } }, "react-redux": { @@ -13446,12 +11986,12 @@ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-6.0.1.tgz", "integrity": "sha512-T52I52Kxhbqy/6TEfBv85rQSDz6+Y28V/pf52vDWs1YRXG19mcFOGfHnY2HsNFHyhP+ST34Aih98fvt6tqwVcQ==", "requires": { - "@babel/runtime": "^7.3.1", - "hoist-non-react-statics": "^3.3.0", - "invariant": "^2.2.4", - "loose-envify": "^1.4.0", - "prop-types": "^15.7.2", - "react-is": "^16.8.2" + "@babel/runtime": "7.9.2", + "hoist-non-react-statics": "3.3.2", + "invariant": "2.2.4", + "loose-envify": "1.4.0", + "prop-types": "15.7.2", + "react-is": "16.13.1" } }, "react-test-renderer": { @@ -13460,10 +12000,10 @@ "integrity": "sha512-rjJGYebduKNZH0k1bUivVrRLX04JfIQ0FKJLPK10TAb06XWhfi4gTobooF9K/DEFNW98iGac3OSxkfIJUN9Mdg==", "dev": true, "requires": { - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "react-is": "^16.8.3", - "scheduler": "^0.13.3" + "object-assign": "4.1.1", + "prop-types": "15.7.2", + "react-is": "16.13.1", + "scheduler": "0.13.6" } }, "react-transform-hmr": { @@ -13471,8 +12011,8 @@ "resolved": "https://registry.npmjs.org/react-transform-hmr/-/react-transform-hmr-1.0.4.tgz", "integrity": "sha1-4aQL0Krvxy6N/Xp82gmvhQZjl7s=", "requires": { - "global": "^4.3.0", - "react-proxy": "^1.1.7" + "global": "4.4.0", + "react-proxy": "1.1.8" } }, "read-pkg": { @@ -13480,9 +12020,9 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "load-json-file": "2.0.0", + "normalize-package-data": "2.5.0", + "path-type": "2.0.0" } }, "read-pkg-up": { @@ -13490,28 +12030,28 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "find-up": "2.1.0", + "read-pkg": "2.0.0" } }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "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" + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" }, "dependencies": { "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" } } }, @@ -13526,8 +12066,8 @@ "resolved": "https://registry.npmjs.org/realm/-/realm-3.6.5.tgz", "integrity": "sha512-rFk3P4hh0RXWU8rEcNeX5MnC+H5yUBxzUIgoRgYDR/gJ/znrB3k0jTtZYhUcCCCRIRPkE91d1omX9dIvT84R+Q==", "requires": { - "command-line-args": "^4.0.6", - "decompress": "^4.2.0", + "command-line-args": "4.0.7", + "decompress": "4.2.0", "deepmerge": "2.1.0", "deprecated-react-native-listview": "0.0.6", "fs-extra": "^4.0.3", @@ -13560,8 +12100,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" + "encoding": "0.1.12", + "is-stream": "1.1.0" } } } @@ -13572,16 +12112,16 @@ "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", "dev": true, "requires": { - "util.promisify": "^1.0.0" + "util.promisify": "1.0.1" } }, "redux": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.4.tgz", - "integrity": "sha512-vKv4WdiJxOWKxK0yRoaK3Y4pxxB0ilzVx6dszU2W8wLxlb2yikRph4iV/ymtdJ6ZxpBLFbyrxklnT5yBbQSl3Q==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz", + "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==", "requires": { - "loose-envify": "^1.4.0", - "symbol-observable": "^1.2.0" + "loose-envify": "1.4.0", + "symbol-observable": "1.2.0" } }, "redux-devtools-extension": { @@ -13594,8 +12134,8 @@ "resolved": "https://registry.npmjs.org/redux-immutable-state-invariant/-/redux-immutable-state-invariant-2.1.0.tgz", "integrity": "sha512-3czbDKs35FwiBRsx/3KabUk5zSOoTXC+cgVofGkpBNv3jQcqIe5JrHcF5AmVt7B/4hyJ8MijBIpCJ8cife6yJg==", "requires": { - "invariant": "^2.1.0", - "json-stringify-safe": "^5.0.1" + "invariant": "2.2.4", + "json-stringify-safe": "5.0.1" } }, "redux-starter-kit": { @@ -13603,12 +12143,12 @@ "resolved": "https://registry.npmjs.org/redux-starter-kit/-/redux-starter-kit-0.6.3.tgz", "integrity": "sha512-A+7UjgmFrWdKksHl8xTGxDw6Bv8QJ+wrTubBscFNs5gIezGHOdwjqTTSVX4xMgQkgPtVfSPj/Bo+5o6f71/eTA==", "requires": { - "immer": "^2.1.5", - "redux": "^4.0.0", - "redux-devtools-extension": "^2.13.8", - "redux-immutable-state-invariant": "^2.1.0", - "redux-thunk": "^2.2.0", - "selectorator": "^4.0.3" + "immer": "2.1.5", + "redux": "4.0.5", + "redux-devtools-extension": "2.13.8", + "redux-immutable-state-invariant": "2.1.0", + "redux-thunk": "2.3.0", + "selectorator": "4.0.3" } }, "redux-thunk": { @@ -13622,11 +12162,11 @@ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" }, "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "requires": { - "regenerate": "^1.4.0" + "regenerate": "1.4.0" } }, "regenerator-runtime": { @@ -13635,11 +12175,12 @@ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" }, "regenerator-transform": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", - "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", "requires": { - "private": "^0.1.6" + "@babel/runtime": "7.9.2", + "private": "0.1.8" } }, "regex-cache": { @@ -13647,7 +12188,7 @@ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "requires": { - "is-equal-shallow": "^0.1.3" + "is-equal-shallow": "0.1.3" } }, "regex-not": { @@ -13655,8 +12196,18 @@ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "extend-shallow": "3.0.2", + "safe-regex": "1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.17.5" } }, "regexpp": { @@ -13666,16 +12217,16 @@ "dev": true }, "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" + "regenerate": "1.4.0", + "regenerate-unicode-properties": "8.2.0", + "regjsgen": "0.5.1", + "regjsparser": "0.6.4", + "unicode-match-property-ecmascript": "1.0.4", + "unicode-match-property-value-ecmascript": "1.2.0" } }, "regjsgen": { @@ -13684,11 +12235,11 @@ "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==" }, "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", "requires": { - "jsesc": "~0.5.0" + "jsesc": "0.5.0" }, "dependencies": { "jsesc": { @@ -13704,21 +12255,21 @@ "integrity": "sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==", "dev": true, "requires": { - "collapse-white-space": "^1.0.2", - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "is-word-character": "^1.0.0", - "markdown-escapes": "^1.0.0", - "parse-entities": "^1.1.0", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", + "collapse-white-space": "1.0.6", + "is-alphabetical": "1.0.4", + "is-decimal": "1.0.4", + "is-whitespace-character": "1.0.4", + "is-word-character": "1.0.4", + "markdown-escapes": "1.0.4", + "parse-entities": "1.2.2", + "repeat-string": "1.6.1", + "state-toggle": "1.0.3", "trim": "0.0.1", - "trim-trailing-lines": "^1.0.0", - "unherit": "^1.0.4", - "unist-util-remove-position": "^1.0.0", - "vfile-location": "^2.0.0", - "xtend": "^4.0.1" + "trim-trailing-lines": "1.1.3", + "unherit": "1.1.3", + "unist-util-remove-position": "1.1.4", + "vfile-location": "2.0.6", + "xtend": "4.0.2" } }, "remark-stringify": { @@ -13727,20 +12278,20 @@ "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", "dev": true, "requires": { - "ccount": "^1.0.0", - "is-alphanumeric": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "longest-streak": "^2.0.1", - "markdown-escapes": "^1.0.0", - "markdown-table": "^1.1.0", - "mdast-util-compact": "^1.0.0", - "parse-entities": "^1.0.2", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "stringify-entities": "^1.0.1", - "unherit": "^1.0.4", - "xtend": "^4.0.1" + "ccount": "1.0.5", + "is-alphanumeric": "1.0.0", + "is-decimal": "1.0.4", + "is-whitespace-character": "1.0.4", + "longest-streak": "2.0.4", + "markdown-escapes": "1.0.4", + "markdown-table": "1.1.3", + "mdast-util-compact": "1.0.4", + "parse-entities": "1.2.2", + "repeat-string": "1.6.1", + "state-toggle": "1.0.3", + "stringify-entities": "1.3.2", + "unherit": "1.1.3", + "xtend": "4.0.2" } }, "remove-trailing-separator": { @@ -13765,30 +12316,30 @@ "dev": true }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "aws-sign2": "0.7.0", + "aws4": "1.9.1", + "caseless": "0.12.0", + "combined-stream": "1.0.8", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.3", + "har-validator": "5.1.3", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.26", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.1.2", + "tough-cookie": "2.5.0", + "tunnel-agent": "0.6.0", + "uuid": "3.4.0" } }, "request-promise-core": { @@ -13797,15 +12348,7 @@ "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", "dev": true, "requires": { - "lodash": "^4.17.15" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - } + "lodash": "4.17.15" } }, "request-promise-native": { @@ -13815,8 +12358,8 @@ "dev": true, "requires": { "request-promise-core": "1.1.3", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" + "stealthy-require": "1.1.1", + "tough-cookie": "2.5.0" } }, "require-directory": { @@ -13840,11 +12383,11 @@ "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" }, "resolve": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", - "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", "requires": { - "path-parse": "^1.0.6" + "path-parse": "1.0.6" } }, "resolve-cwd": { @@ -13853,7 +12396,7 @@ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, "requires": { - "resolve-from": "^3.0.0" + "resolve-from": "3.0.0" } }, "resolve-from": { @@ -13871,8 +12414,8 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "onetime": "2.0.1", + "signal-exit": "3.0.2" } }, "ret": { @@ -13887,11 +12430,11 @@ "dev": true }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { - "glob": "^7.1.3" + "glob": "7.1.6" } }, "rsvp": { @@ -13900,11 +12443,11 @@ "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==" }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", "requires": { - "is-promise": "^2.1.0" + "is-promise": "2.1.0" } }, "rx-lite": { @@ -13917,16 +12460,16 @@ "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", "requires": { - "rx-lite": "*" + "rx-lite": "4.0.8" } }, "rxjs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.1.tgz", - "integrity": "sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { - "tslib": "^1.9.0" + "tslib": "1.11.1" } }, "safe-buffer": { @@ -13946,7 +12489,7 @@ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "requires": { - "ret": "~0.1.10" + "ret": "0.1.15" } }, "safer-buffer": { @@ -13959,16 +12502,16 @@ "resolved": "https://registry.npmjs.org/sane/-/sane-3.1.0.tgz", "integrity": "sha512-G5GClRRxT1cELXfdAq7UKtUsv8q/ZC5k8lQGmjEm4HcAl3HzBy68iglyNCmw4+0tiXPCBZntslHlRhbnsSws+Q==", "requires": { - "anymatch": "^2.0.0", - "capture-exit": "^1.2.0", - "exec-sh": "^0.2.0", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.3", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5", - "watch": "~0.18.0" + "anymatch": "2.0.0", + "capture-exit": "1.2.0", + "exec-sh": "0.2.2", + "execa": "1.0.0", + "fb-watchman": "2.0.1", + "fsevents": "1.2.12", + "micromatch": "3.1.10", + "minimist": "1.2.5", + "walker": "1.0.7", + "watch": "0.18.0" }, "dependencies": { "arr-diff": { @@ -13986,16 +12529,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "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" + "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.3", + "snapdragon": "0.8.2", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.2" }, "dependencies": { "extend-shallow": { @@ -14003,7 +12546,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -14013,13 +12556,13 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "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" + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -14027,7 +12570,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -14035,7 +12578,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } }, "is-accessor-descriptor": { @@ -14043,7 +12586,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -14051,7 +12594,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -14061,7 +12604,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -14069,7 +12612,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } @@ -14079,9 +12622,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" } }, "kind-of": { @@ -14096,14 +12639,14 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { - "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" + "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.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" }, "dependencies": { "define-property": { @@ -14111,7 +12654,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "extend-shallow": { @@ -14119,7 +12662,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -14129,10 +12672,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" }, "dependencies": { "extend-shallow": { @@ -14140,7 +12683,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -14150,7 +12693,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -14158,7 +12701,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -14166,9 +12709,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } }, "is-number": { @@ -14176,7 +12719,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" }, "dependencies": { "kind-of": { @@ -14184,50 +12727,45 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "^1.1.5" + "is-buffer": "1.1.6" } } } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "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" + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.2", + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.3", + "nanomatch": "1.2.13", + "object.pick": "1.3.0", + "regex-not": "1.0.2", + "snapdragon": "0.8.2", + "to-regex": "3.0.2" } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } }, "sanitize-filename": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz", - "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", "dev": true, "requires": { - "truncate-utf8-bytes": "^1.0.0" + "truncate-utf8-bytes": "1.0.2" } }, "sax": { @@ -14240,8 +12778,8 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "1.4.0", + "object-assign": "4.1.1" } }, "seek-bzip": { @@ -14249,7 +12787,7 @@ "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", "requires": { - "commander": "~2.8.1" + "commander": "2.8.1" }, "dependencies": { "commander": { @@ -14257,7 +12795,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", "requires": { - "graceful-readlink": ">= 1.0.0" + "graceful-readlink": "1.0.1" } } } @@ -14267,10 +12805,10 @@ "resolved": "https://registry.npmjs.org/selectorator/-/selectorator-4.0.3.tgz", "integrity": "sha512-A8+paRhzTab4Qm/38RAVnCgEZFbpn5xIWLyTCDqvyU3Obhmo94RS6UK1H00bVH7+U609sOhqbFJha09POsWURA==", "requires": { - "fast-equals": "^1.2.1", - "identitate": "^1.0.0", - "reselect": "^4.0.0", - "unchanged": "^2.0.1" + "fast-equals": "1.6.3", + "identitate": "1.0.1", + "reselect": "4.0.0", + "unchanged": "2.2.1" } }, "semver": { @@ -14284,20 +12822,25 @@ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", + "depd": "1.1.2", + "destroy": "1.0.4", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "etag": "1.8.1", "fresh": "0.5.2", - "http-errors": "~1.7.2", + "http-errors": "1.7.3", "mime": "1.6.0", "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "on-finished": "2.3.0", + "range-parser": "1.2.1", + "statuses": "1.5.0" }, "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -14315,9 +12858,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", + "encodeurl": "1.0.2", + "escape-html": "1.0.3", + "parseurl": "1.3.3", "send": "0.17.1" } }, @@ -14331,10 +12874,10 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" }, "dependencies": { "extend-shallow": { @@ -14342,7 +12885,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -14362,7 +12905,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "1.0.0" } }, "shebang-regex": { @@ -14375,10 +12918,10 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" } }, "shell-utils": { @@ -14387,7 +12930,7 @@ "integrity": "sha512-p1xuqhj3jgcXiV8wGoF1eL/NOvapN9tyGDoObqKwvZTUZn7fIzK75swLTEHfGa7sObeN9vxFplHw/zgYUYRTsg==", "dev": true, "requires": { - "lodash": "4.x.x" + "lodash": "4.17.15" } }, "shellwords": { @@ -14395,6 +12938,16 @@ "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", + "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", + "dev": true, + "requires": { + "es-abstract": "1.17.5", + "object-inspect": "1.7.0" + } + }, "sigmund": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", @@ -14417,9 +12970,9 @@ } }, "sisteransi": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.3.tgz", - "integrity": "sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, "slash": { @@ -14433,9 +12986,9 @@ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "3.2.1", + "astral-regex": "1.0.0", + "is-fullwidth-code-point": "2.0.0" }, "dependencies": { "ansi-styles": { @@ -14444,7 +12997,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "1.9.3" } }, "is-fullwidth-code-point": { @@ -14465,14 +13018,14 @@ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "requires": { - "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" + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.3", + "use": "3.1.1" }, "dependencies": { "define-property": { @@ -14480,7 +13033,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } }, "extend-shallow": { @@ -14488,7 +13041,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "0.1.1" } } } @@ -14498,9 +13051,9 @@ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" }, "dependencies": { "define-property": { @@ -14508,7 +13061,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "^1.0.0" + "is-descriptor": "1.0.2" } }, "is-accessor-descriptor": { @@ -14516,7 +13069,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-data-descriptor": { @@ -14524,7 +13077,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "^6.0.0" + "kind-of": "6.0.3" } }, "is-descriptor": { @@ -14532,15 +13085,15 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.3" } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" } } }, @@ -14549,7 +13102,7 @@ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "requires": { - "kind-of": "^3.2.0" + "kind-of": "3.2.2" } }, "source-map": { @@ -14558,24 +13111,24 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "requires": { - "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" + "atob": "2.1.2", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" } }, "source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "buffer-from": "1.1.1", + "source-map": "0.6.1" }, "dependencies": { "source-map": { @@ -14595,8 +13148,8 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.5" } }, "spdx-exceptions": { @@ -14609,8 +13162,8 @@ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "spdx-exceptions": "2.2.0", + "spdx-license-ids": "3.0.5" } }, "spdx-license-ids": { @@ -14623,7 +13176,7 @@ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "requires": { - "extend-shallow": "^3.0.0" + "extend-shallow": "3.0.2" } }, "sprintf-js": { @@ -14636,15 +13189,15 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" } }, "stack-utils": { @@ -14654,11 +13207,11 @@ "dev": true }, "stacktrace-parser": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.7.tgz", - "integrity": "sha512-Evm+NuZ2ZTwGazsbsZC+EV1EGsvyxgIvtNwbyFfeXaq/8L78M5Kdh0qpmQaTkUpbOAKbbPP7c7qZa7u8XFsrUA==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.9.tgz", + "integrity": "sha512-DRy03ljj0367Ud3OAJHD6eVS/+CvMK2u/djVYuU37fHYcYHoZ8tkFyhbRf7PNG1h3bWLsw+SNTSXrPFe07A7aQ==", "requires": { - "type-fest": "^0.7.1" + "type-fest": "0.7.1" } }, "state-toggle": { @@ -14672,8 +13225,8 @@ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" + "define-property": "0.2.5", + "object-copy": "0.1.0" }, "dependencies": { "define-property": { @@ -14681,7 +13234,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "^0.1.0" + "is-descriptor": "0.1.6" } } } @@ -14713,8 +13266,8 @@ "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", "dev": true, "requires": { - "astral-regex": "^1.0.0", - "strip-ansi": "^4.0.0" + "astral-regex": "1.0.0", + "strip-ansi": "4.0.0" }, "dependencies": { "ansi-regex": { @@ -14729,7 +13282,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" } } } @@ -14739,9 +13292,43 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "es-abstract": "1.17.5", + "has-symbols": "1.0.1", + "internal-slot": "1.0.2", + "regexp.prototype.flags": "1.3.0", + "side-channel": "1.0.2" + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "function-bind": "1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "1.1.3", + "function-bind": "1.1.1" } }, "string_decoder": { @@ -14749,7 +13336,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "5.1.2" } }, "stringify-entities": { @@ -14758,10 +13345,10 @@ "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", "dev": true, "requires": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "character-entities-html4": "1.1.4", + "character-entities-legacy": "1.1.4", + "is-alphanumerical": "1.0.4", + "is-hexadecimal": "1.0.4" } }, "strip-ansi": { @@ -14769,7 +13356,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "2.1.1" } }, "strip-bom": { @@ -14777,7 +13364,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "requires": { - "is-utf8": "^0.2.0" + "is-utf8": "0.2.1" } }, "strip-dirs": { @@ -14785,7 +13372,7 @@ "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", "requires": { - "is-natural-number": "^4.0.1" + "is-natural-number": "4.0.1" } }, "strip-eof": { @@ -14819,7 +13406,7 @@ "resolved": "https://registry.npmjs.org/sympto/-/sympto-2.0.0.tgz", "integrity": "sha512-RZJfMKRfTStVUEdHZxiEE1Y7j7W7klhFjNy7JVCBiQ5PFQujD2MJ1C9OUr2aKavciGdQdaHO6/9X3fWaChzWHQ==", "requires": { - "js-joda": "^1.9.2" + "js-joda": "1.11.0" } }, "sync-request": { @@ -14827,33 +13414,33 @@ "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-3.0.1.tgz", "integrity": "sha1-yqEjWq+Im6UBB2oYNMQ2gwqC+3M=", "requires": { - "concat-stream": "^1.4.7", - "http-response-object": "^1.0.1", - "then-request": "^2.0.1" + "concat-stream": "1.6.2", + "http-response-object": "1.1.0", + "then-request": "2.2.0" } }, "table": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", - "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, "requires": { - "ajv": "^6.9.1", - "lodash": "^4.17.11", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" + "ajv": "6.12.0", + "lodash": "4.17.15", + "slice-ansi": "2.1.0", + "string-width": "3.1.0" }, "dependencies": { "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-deep-equal": "3.1.1", + "fast-json-stable-stringify": "2.1.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" } }, "ansi-regex": { @@ -14863,9 +13450,9 @@ "dev": true }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, "is-fullwidth-code-point": { @@ -14886,9 +13473,9 @@ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" } }, "strip-ansi": { @@ -14897,15 +13484,15 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "4.1.0" } } } }, "tail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tail/-/tail-2.0.2.tgz", - "integrity": "sha512-raFipiKWdGKEzxbvZwnhUGqjvsv0gpa/1A479rL//NOxnNwYZDN4MPk6xJJdUFs8P2Xrff3nbH5fcyYRLU4UHQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tail/-/tail-2.0.3.tgz", + "integrity": "sha512-s9NOGkLqqiDEtBttQZI7acLS8ycYK5sTlDwNjGnpXG9c8AWj0cfAtwEIzo/hVRMMiC5EYz+bXaJWC1u1u0GPpQ==", "dev": true }, "tar": { @@ -14913,24 +13500,13 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - }, - "dependencies": { - "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - } + "chownr": "1.1.4", + "fs-minipass": "1.2.7", + "minipass": "2.9.0", + "minizlib": "1.3.3", + "mkdirp": "0.5.4", + "safe-buffer": "5.1.2", + "yallist": "3.1.1" } }, "tar-stream": { @@ -14938,13 +13514,13 @@ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", "requires": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" + "bl": "1.2.2", + "buffer-alloc": "1.2.0", + "end-of-stream": "1.4.4", + "fs-constants": "1.0.0", + "readable-stream": "2.3.7", + "to-buffer": "1.1.1", + "xtend": "4.0.2" } }, "telnet-client": { @@ -14953,7 +13529,15 @@ "integrity": "sha512-GSfdzQV0BKIYsmeXq7bJFJ2wHeJud6icaIxCUf6QCGQUD6R0BBGbT1+yLDhq67JRdgRpwyPwUbV7JxFeRrZomQ==", "dev": true, "requires": { - "bluebird": "3.5.x" + "bluebird": "3.5.5" + }, + "dependencies": { + "bluebird": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", + "dev": true + } } }, "temp": { @@ -14961,8 +13545,8 @@ "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", "requires": { - "os-tmpdir": "^1.0.0", - "rimraf": "~2.2.6" + "os-tmpdir": "1.0.2", + "rimraf": "2.2.8" }, "dependencies": { "rimraf": { @@ -14984,8 +13568,8 @@ "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", "dev": true, "requires": { - "temp-dir": "^1.0.0", - "uuid": "^3.0.1" + "temp-dir": "1.0.0", + "uuid": "3.4.0" } }, "test-exclude": { @@ -14994,10 +13578,10 @@ "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", "dev": true, "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" + "glob": "7.1.6", + "minimatch": "3.0.4", + "read-pkg-up": "4.0.0", + "require-main-filename": "2.0.0" }, "dependencies": { "find-up": { @@ -15006,7 +13590,7 @@ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "^3.0.0" + "locate-path": "3.0.0" } }, "load-json-file": { @@ -15015,10 +13599,10 @@ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "graceful-fs": "4.2.3", + "parse-json": "4.0.0", + "pify": "3.0.0", + "strip-bom": "3.0.0" } }, "locate-path": { @@ -15027,17 +13611,17 @@ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "3.0.0", + "path-exists": "3.0.0" } }, "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "p-try": "2.2.0" } }, "p-locate": { @@ -15046,7 +13630,7 @@ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "2.2.2" } }, "p-try": { @@ -15061,7 +13645,7 @@ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "pify": "^3.0.0" + "pify": "3.0.0" } }, "pify": { @@ -15076,9 +13660,9 @@ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "load-json-file": "4.0.0", + "normalize-package-data": "2.5.0", + "path-type": "3.0.0" } }, "read-pkg-up": { @@ -15087,8 +13671,8 @@ "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", "dev": true, "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" + "find-up": "3.0.0", + "read-pkg": "3.0.0" } }, "require-main-filename": { @@ -15110,8 +13694,8 @@ "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=", "requires": { - "array-back": "^1.0.3", - "typical": "^2.6.0" + "array-back": "1.0.4", + "typical": "2.6.1" }, "dependencies": { "array-back": { @@ -15119,7 +13703,7 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", "requires": { - "typical": "^2.6.0" + "typical": "2.6.1" } } } @@ -15135,12 +13719,12 @@ "resolved": "https://registry.npmjs.org/then-request/-/then-request-2.2.0.tgz", "integrity": "sha1-ZnizL6DKIY/laZgbvYhxtZQGDYE=", "requires": { - "caseless": "~0.11.0", - "concat-stream": "^1.4.7", - "http-basic": "^2.5.1", - "http-response-object": "^1.1.0", - "promise": "^7.1.1", - "qs": "^6.1.0" + "caseless": "0.11.0", + "concat-stream": "1.6.2", + "http-basic": "2.5.1", + "http-response-object": "1.1.0", + "promise": "7.3.1", + "qs": "6.5.2" }, "dependencies": { "caseless": { @@ -15165,8 +13749,8 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "readable-stream": "2.3.7", + "xtend": "4.0.2" } }, "time-stamp": { @@ -15179,7 +13763,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "os-tmpdir": "~1.0.2" + "os-tmpdir": "1.0.2" } }, "tmpl": { @@ -15202,7 +13786,7 @@ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } }, "to-regex": { @@ -15210,10 +13794,10 @@ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "define-property": "2.0.2", + "extend-shallow": "3.0.2", + "regex-not": "1.0.2", + "safe-regex": "1.1.0" } }, "to-regex-range": { @@ -15221,8 +13805,8 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "3.0.0", + "repeat-string": "1.6.1" }, "dependencies": { "is-number": { @@ -15230,7 +13814,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "^3.0.2" + "kind-of": "3.2.2" } } } @@ -15241,8 +13825,8 @@ "integrity": "sha512-z1Lfx60yAMDMmr+f426Y4yECsHdl8GVEAE+LymjRF5oOIZ7T4N20IxWNAxXLMRzP9jSSll38Z0fKVAhVLsdLOw==", "dev": true, "requires": { - "is-buffer": "^2.0.0", - "vfile": "^3.0.0" + "is-buffer": "2.0.4", + "vfile": "3.0.1" }, "dependencies": { "is-buffer": { @@ -15259,19 +13843,12 @@ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - } + "psl": "1.8.0", + "punycode": "2.1.1" } }, "tr46": { @@ -15280,7 +13857,7 @@ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "dev": true, "requires": { - "punycode": "^2.1.0" + "punycode": "2.1.1" } }, "trim": { @@ -15289,11 +13866,6 @@ "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", "dev": true }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" - }, "trim-trailing-lines": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz", @@ -15312,13 +13884,13 @@ "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", "dev": true, "requires": { - "utf8-byte-length": "^1.0.1" + "utf8-byte-length": "1.0.4" } }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", "dev": true }, "tunnel-agent": { @@ -15326,7 +13898,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "^5.0.1" + "safe-buffer": "5.1.2" } }, "tweetnacl": { @@ -15340,7 +13912,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "prelude-ls": "1.1.2" } }, "type-detect": { @@ -15365,9 +13937,9 @@ "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=" }, "ua-parser-js": { - "version": "0.7.19", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", - "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==" + "version": "0.7.21", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", + "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==" }, "uc.micro": { "version": "1.0.6", @@ -15379,8 +13951,8 @@ "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" + "commander": "2.13.0", + "source-map": "0.6.1" }, "dependencies": { "commander": { @@ -15405,17 +13977,17 @@ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "requires": { - "buffer": "^5.2.1", - "through": "^2.3.8" + "buffer": "5.5.0", + "through": "2.3.8" } }, "unchanged": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unchanged/-/unchanged-2.2.0.tgz", - "integrity": "sha512-L+MJNfyvFZkjw9WYRbmZBnYncBoASRNxE9eCm5SZWc2whdw19tPVigjJXNwu+/O+nCwp1kYYT8LX+jNuJakF9w==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unchanged/-/unchanged-2.2.1.tgz", + "integrity": "sha512-pMlMNfqtfjOVpDAKVBH+LjnhnTwWYUrJq9fU3nGRYrw6JnprJEH1/cehJikRTf+o6dmkpX5XRRspb5mUAhxeZQ==", "requires": { - "curriable": "^1.3.0", - "pathington": "^1.1.7" + "curriable": "1.3.0", + "pathington": "1.1.7" } }, "unherit": { @@ -15438,19 +14010,19 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "1.0.4", + "unicode-property-aliases-ecmascript": "1.1.0" } }, "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==" }, "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==" }, "unified": { "version": "7.1.0", @@ -15458,14 +14030,14 @@ "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==", "dev": true, "requires": { - "@types/unist": "^2.0.0", - "@types/vfile": "^3.0.0", - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^1.1.0", - "trough": "^1.0.0", - "vfile": "^3.0.0", - "x-is-string": "^0.1.0" + "@types/unist": "2.0.3", + "@types/vfile": "3.0.2", + "bail": "1.0.5", + "extend": "3.0.2", + "is-plain-obj": "1.1.0", + "trough": "1.0.5", + "vfile": "3.0.1", + "x-is-string": "0.1.0" } }, "union-value": { @@ -15473,10 +14045,10 @@ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "2.0.1" } }, "unist-builder": { @@ -15485,7 +14057,7 @@ "integrity": "sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg==", "dev": true, "requires": { - "object-assign": "^4.1.0" + "object-assign": "4.1.1" } }, "unist-util-is": { @@ -15500,7 +14072,7 @@ "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", "dev": true, "requires": { - "unist-util-visit": "^1.1.0" + "unist-util-visit": "1.4.1" } }, "unist-util-stringify-position": { @@ -15515,7 +14087,7 @@ "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", "dev": true, "requires": { - "unist-util-visit-parents": "^2.0.0" + "unist-util-visit-parents": "2.1.2" } }, "unist-util-visit-parents": { @@ -15524,7 +14096,7 @@ "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", "dev": true, "requires": { - "unist-util-is": "^3.0.0" + "unist-util-is": "3.0.0" } }, "universalify": { @@ -15542,8 +14114,8 @@ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "has-value": "0.3.1", + "isobject": "3.0.1" }, "dependencies": { "has-value": { @@ -15551,9 +14123,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" }, "dependencies": { "isobject": { @@ -15578,7 +14150,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "requires": { - "punycode": "^2.1.0" + "punycode": "2.1.1" } }, "urix": { @@ -15591,8 +14163,8 @@ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "querystringify": "2.1.1", + "requires-port": "1.0.0" } }, "use": { @@ -15601,9 +14173,9 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, "utf8": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.2.tgz", - "integrity": "sha1-H6DZJw6b6FDZsFAn9jUZv0ZFfZY=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" }, "utf8-byte-length": { "version": "1.0.4", @@ -15625,13 +14197,15 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" + "define-properties": "1.1.3", + "es-abstract": "1.17.5", + "has-symbols": "1.0.1", + "object.getownpropertydescriptors": "2.1.0" } }, "utils-merge": { @@ -15640,17 +14214,17 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "spdx-correct": "3.1.0", + "spdx-expression-parse": "3.0.0" } }, "vary": { @@ -15663,9 +14237,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "^1.0.0", + "assert-plus": "1.0.0", "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "extsprintf": "1.3.0" } }, "vfile": { @@ -15674,10 +14248,10 @@ "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==", "dev": true, "requires": { - "is-buffer": "^2.0.0", + "is-buffer": "2.0.4", "replace-ext": "1.0.0", - "unist-util-stringify-position": "^1.0.0", - "vfile-message": "^1.0.0" + "unist-util-stringify-position": "1.1.2", + "vfile-message": "1.1.1" }, "dependencies": { "is-buffer": { @@ -15700,16 +14274,16 @@ "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", "dev": true, "requires": { - "unist-util-stringify-position": "^1.1.1" + "unist-util-stringify-position": "1.1.2" } }, "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", "dev": true, "requires": { - "browser-process-hrtime": "^0.1.2" + "browser-process-hrtime": "1.0.0" } }, "walker": { @@ -15717,7 +14291,7 @@ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", "requires": { - "makeerror": "1.0.x" + "makeerror": "1.0.11" } }, "watch": { @@ -15725,15 +14299,8 @@ "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", "requires": { - "exec-sh": "^0.2.0", - "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } + "exec-sh": "0.2.2", + "minimist": "1.2.5" } }, "webidl-conversions": { @@ -15768,9 +14335,9 @@ "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", "dev": true, "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "lodash.sortby": "4.7.0", + "tr46": "1.0.1", + "webidl-conversions": "4.0.2" } }, "which": { @@ -15778,7 +14345,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { - "isexe": "^2.0.0" + "isexe": "2.0.0" } }, "which-module": { @@ -15791,9 +14358,15 @@ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "requires": { - "string-width": "^1.0.2 || 2" + "string-width": "1.0.2" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -15804,8 +14377,8 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "string-width": "1.0.2", + "strip-ansi": "3.0.1" } }, "wrappy": { @@ -15819,7 +14392,7 @@ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "dev": true, "requires": { - "mkdirp": "^0.5.1" + "mkdirp": "0.5.4" } }, "write-file-atomic": { @@ -15827,9 +14400,9 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "slide": "^1.1.5" + "graceful-fs": "4.2.3", + "imurmurhash": "0.1.4", + "slide": "1.1.6" } }, "ws": { @@ -15837,8 +14410,8 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", "requires": { - "options": ">=0.0.5", - "ultron": "1.0.x" + "options": "0.0.6", + "ultron": "1.0.2" } }, "x-is-string": { @@ -15852,8 +14425,8 @@ "resolved": "https://registry.npmjs.org/xcode/-/xcode-0.9.3.tgz", "integrity": "sha1-kQqJwWrubMC0LKgFptC0z4chHPM=", "requires": { - "pegjs": "^0.10.0", - "simple-plist": "^0.2.1", + "pegjs": "0.10.0", + "simple-plist": "0.2.1", "uuid": "3.0.1" }, "dependencies": { @@ -15885,23 +14458,32 @@ "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-0.4.0.tgz", "integrity": "sha1-0lciS+g5PqrL+DfvIn/Y7CWzaIg=", "requires": { - "sax": "~1.1.1" + "sax": "1.1.6" } }, "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", + "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==" }, "xpipe": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/xpipe/-/xpipe-1.0.5.tgz", "integrity": "sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98=" }, + "xregexp": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", + "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", + "dev": true, + "requires": { + "@babel/runtime-corejs3": "7.9.2" + } + }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { "version": "3.2.1", @@ -15909,28 +14491,28 @@ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" }, "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "yargs": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", "requires": { - "camelcase": "^4.1.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "read-pkg-up": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^7.0.0" + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.3", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" }, "dependencies": { "ansi-regex": { @@ -15948,8 +14530,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" } }, "strip-ansi": { @@ -15957,7 +14539,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "3.0.0" } } } @@ -15967,7 +14549,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "requires": { - "camelcase": "^4.1.0" + "camelcase": "4.1.0" } }, "yauzl": { @@ -15975,9 +14557,9 @@ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "buffer-crc32": "0.2.13", + "fd-slicer": "1.1.0" } } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index d10fd7f..627b06d 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "postinstall": "npx jetify" }, "dependencies": { - "@ptomasroos/react-native-multi-slider": "^1.0.0", + "@ptomasroos/react-native-multi-slider": "^2.2.0", "ajv": "^5.5.2", "assert": "^1.4.1", "csvtojson": "^2.0.8", diff --git a/styles/typography.js b/styles/typography.js index 4dcf274..59892e8 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -7,6 +7,7 @@ export const fonts = { } export const sizes = { + tiny: 7, small: 14, base: 18, subtitle: 22, From 1575aa29cd48556b5e52ce87527b65bd2ab35961 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Mon, 30 Mar 2020 09:19:46 +0200 Subject: [PATCH 30/94] Separates TemperatureReminder component --- components/settings/index.js | 2 +- components/settings/reminders.js | 99 ------------------- components/settings/reminders/reminders.js | 42 ++++++++ .../reminders/temperature-reminder.js | 65 ++++++++++++ 4 files changed, 108 insertions(+), 100 deletions(-) delete mode 100644 components/settings/reminders.js create mode 100644 components/settings/reminders/reminders.js create mode 100644 components/settings/reminders/temperature-reminder.js diff --git a/components/settings/index.js b/components/settings/index.js index 4a8fc25..f4e5861 100644 --- a/components/settings/index.js +++ b/components/settings/index.js @@ -1,4 +1,4 @@ -import Reminders from './reminders' +import Reminders from './reminders/reminders' import NfpSettings from './nfp-settings' import DataManagement from './data-management' import Password from './password' diff --git a/components/settings/reminders.js b/components/settings/reminders.js deleted file mode 100644 index 76ed70c..0000000 --- a/components/settings/reminders.js +++ /dev/null @@ -1,99 +0,0 @@ -import React, { Component } from 'react' -import DateTimePicker from 'react-native-modal-datetime-picker-nevo' - -import AppPage from '../common/app-page' -import AppSwitch from '../common/app-switch' -import Segment from '../common/segment' - -import { - periodReminderObservable, - savePeriodReminder, - saveTempReminder, - tempReminderObservable -} from '../../local-storage' -import padWithZeros from '../helpers/pad-time-with-zeros' - -import labels from '../../i18n/en/settings' - -export default class Reminders extends Component { - constructor(props) { - super(props) - - const { time, enabled } = tempReminderObservable.value - this.state = { - periodReminder: periodReminderObservable.value.enabled, - temperatureReminder: { - time, - enabled, - isTimePickerVisible: false - } - } - } - - periodReminderToggle = (value) => { - this.setState({ periodReminder: value }) - savePeriodReminder({ enabled: value }) - } - - temperatureReminderToggle = (value) => { - const { time } = this.state.temperatureReminder - const temperatureReminder = { enabled: value } - - if (value && !time) temperatureReminder.isTimePickerVisible = true - if (!value) saveTempReminder({ enabled: false }) - - this.setState({ temperatureReminder }) - } - - onPickDate = (date) => { - const time = padWithZeros(date) - const temperatureReminder = - { time, isTimePickerVisible: false, enabled: true } - - this.setState({ temperatureReminder }) - saveTempReminder({ time, enabled: true }) - } - - onPickDateCancel = () => { - const { time } = this.state.temperatureReminder - const temperatureReminder = { isTimePickerVisible: false } - - if (!time) temperatureReminder.enabled = false - - this.setState({ temperatureReminder }) - } - - render() { - const { periodReminder, temperatureReminder } = this.state - - const tempReminderText = - temperatureReminder.time && temperatureReminder.enabled ? - labels.tempReminder.timeSet(temperatureReminder.time) - : labels.tempReminder.noTimeSet - - return ( - <AppPage> - <Segment title={labels.tempReminder.title}> - <AppSwitch - onToggle={this.temperatureReminderToggle} - text={tempReminderText} - value={temperatureReminder.enabled} - /> - <DateTimePicker - isVisible={temperatureReminder.isTimePickerVisible} - mode="time" - onConfirm={this.onPickDate} - onCancel={this.onPickDateCancel} - /> - </Segment> - <Segment title={labels.periodReminder.title} last> - <AppSwitch - onToggle={this.periodReminderToggle} - text={labels.periodReminder.reminderText} - value={periodReminder} - /> - </Segment> - </AppPage> - ) - } -} diff --git a/components/settings/reminders/reminders.js b/components/settings/reminders/reminders.js new file mode 100644 index 0000000..ddc5930 --- /dev/null +++ b/components/settings/reminders/reminders.js @@ -0,0 +1,42 @@ +import React, { Component } from 'react' + +import AppPage from '../../common/app-page' +import AppSwitch from '../../common/app-switch' +import Segment from '../../common/segment' +import TemperatureReminder from './temperature-reminder' + +import { periodReminderObservable, savePeriodReminder } from '../../../local-storage' + +import labels from '../../../i18n/en/settings' + +export default class Reminders extends Component { + constructor(props) { + super(props) + + this.state = { + isPeriodReminderEnabled: periodReminderObservable.value.enabled + } + } + + periodReminderToggle = (isEnabled) => { + this.setState({ isPeriodReminderEnabled: isEnabled }) + savePeriodReminder({ enabled: isEnabled }) + } + + render() { + return ( + <AppPage> + <Segment title={labels.tempReminder.title}> + <TemperatureReminder /> + </Segment> + <Segment title={labels.periodReminder.title} last> + <AppSwitch + onToggle={this.periodReminderToggle} + text={labels.periodReminder.reminderText} + value={this.state.isPeriodReminderEnabled} + /> + </Segment> + </AppPage> + ) + } +} diff --git a/components/settings/reminders/temperature-reminder.js b/components/settings/reminders/temperature-reminder.js new file mode 100644 index 0000000..7a7d611 --- /dev/null +++ b/components/settings/reminders/temperature-reminder.js @@ -0,0 +1,65 @@ +import React, { Component } from 'react' +import DateTimePicker from 'react-native-modal-datetime-picker-nevo' + +import AppSwitch from '../../common/app-switch' + +import { saveTempReminder, tempReminderObservable } from '../../../local-storage' +import padWithZeros from '../../helpers/pad-time-with-zeros' + +import labels from '../../../i18n/en/settings' + +export default class TemperatureReminder extends Component { + constructor(props) { + super(props) + + const { time, enabled } = tempReminderObservable.value + this.state = { + isEnabled: enabled, + isTimePickerVisible: false, + time, + } + } + + temperatureReminderToggle = (value) => { + if (value) { + this.setState({ isTimePickerVisible: true }) + } else { + saveTempReminder({ enabled: false }) + this.setState({ isEnabled: false }) + } + } + + onPickDate = (date) => { + const time = padWithZeros(date) + + this.setState({ isEnabled: true, isTimePickerVisible: false, time }) + saveTempReminder({ time, enabled: true }) + } + + onPickDateCancel = () => { + this.setState({ isTimePickerVisible: false }) + } + + render() { + const { isEnabled, isTimePickerVisible, time } = this.state + + const tempReminderText = time && isEnabled ? + labels.tempReminder.timeSet(time) : labels.tempReminder.noTimeSet + + return ( + <React.Fragment> + <AppSwitch + onToggle={this.temperatureReminderToggle} + text={tempReminderText} + value={isEnabled} + /> + <DateTimePicker + isVisible={isTimePickerVisible} + mode="time" + onConfirm={this.onPickDate} + onCancel={this.onPickDateCancel} + /> + </React.Fragment> + ) + } +} From eff15e67ee53a3e919fdfc4df30397769c54a9af Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Mon, 30 Mar 2020 09:23:33 +0200 Subject: [PATCH 31/94] Introduces style definition update of Button component --- components/common/button.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/common/button.js b/components/common/button.js index 8adf7ea..e7bc7e4 100644 --- a/components/common/button.js +++ b/components/common/button.js @@ -9,7 +9,7 @@ import { Colors, Fonts, Spacing } from '../../styles/redesign' const Button = ({ children, isCTA, isSmall, onPress, testID }) => { const buttonStyle = isCTA ? styles.cta : styles.regular const textCTA = isCTA ? styles.buttonTextBold : styles.buttonTextRegular - const textStyle = isSmall ? [ textCTA, textSmall ] : [textCTA, text] + const textStyle = [ textCTA, isSmall ? textSmall : text] return ( <TouchableOpacity onPress={onPress} style={buttonStyle} testID={testID}> From 9d7121f5d6d3cf901b8a485d5733ddff25acad90 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Mon, 30 Mar 2020 09:27:50 +0200 Subject: [PATCH 32/94] Updates button activity definition when entering new password --- components/settings/password/enter-new-password.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/settings/password/enter-new-password.js b/components/settings/password/enter-new-password.js index c457033..283755b 100644 --- a/components/settings/password/enter-new-password.js +++ b/components/settings/password/enter-new-password.js @@ -60,7 +60,7 @@ export default class EnterNewPassword extends Component { } = this.state const labels = settings.passwordSettings const isButtonActive = - Boolean(password.length && passwordConfirmation.length) + (password.length > 0) && (passwordConfirmation.length > 0) return ( <React.Fragment> From 6c89e642b45d85be6cf7b5732f5050193ab49e37 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Mon, 30 Mar 2020 09:33:03 +0200 Subject: [PATCH 33/94] Updates variable name to improve code readibility --- components/settings/password/update.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/components/settings/password/update.js b/components/settings/password/update.js index 001441b..da3c5d4 100644 --- a/components/settings/password/update.js +++ b/components/settings/password/update.js @@ -61,7 +61,7 @@ export default class ChangePassword extends Component { currentPassword } = this.state const labels = settings.passwordSettings - const isDisabled = currentPassword !== null + const isPasswordSet = currentPassword !== null if (enteringCurrentPassword) { return ( @@ -77,7 +77,11 @@ export default class ChangePassword extends Component { } return ( - <Button disabled={isDisabled} isCTA onPress={this.startChangingPassword}> + <Button + disabled={isPasswordSet} + isCTA + onPress={this.startChangingPassword} + > {labels.changePassword} </Button> ) From 42bc91d9c2d8fbe2636648d0ef1b41adc083c81d Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Mon, 30 Mar 2020 09:36:15 +0200 Subject: [PATCH 34/94] Removes extra space --- components/settings/data-management/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/settings/data-management/index.js b/components/settings/data-management/index.js index ff9417a..56d3c8a 100644 --- a/components/settings/data-management/index.js +++ b/components/settings/data-management/index.js @@ -71,7 +71,7 @@ export default class DataManagement extends Component { </Segment> <Segment title={labels.import.button}> <AppText>{labels.import.segmentExplainer}</AppText> - <Button isCTA onPress= {this.startImport}> + <Button isCTA onPress={this.startImport}> {labels.import.button} </Button> </Segment> From 45cff710c82b1a92c8a1c87f0c39eb6b5e90dc10 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Mon, 30 Mar 2020 17:13:47 +0200 Subject: [PATCH 35/94] Separates TemperatureSlider component, adds minor post-review changes --- components/common/app-icon.js | 9 +- components/common/segment.js | 19 +--- components/settings/nfp-settings/index.js | 96 ++++++------------- components/settings/nfp-settings/label.js | 52 ---------- .../settings/nfp-settings/slider-label.js | 54 +++++++++++ .../nfp-settings/temperature-slider.js | 80 ++++++++++++++++ 6 files changed, 171 insertions(+), 139 deletions(-) delete mode 100644 components/settings/nfp-settings/label.js create mode 100644 components/settings/nfp-settings/slider-label.js create mode 100644 components/settings/nfp-settings/temperature-slider.js diff --git a/components/common/app-icon.js b/components/common/app-icon.js index b719d74..f0e4e04 100644 --- a/components/common/app-icon.js +++ b/components/common/app-icon.js @@ -5,15 +5,16 @@ import Icon from 'react-native-vector-icons/Entypo' import { Sizes } from '../../styles/redesign' -const AppIcon = ({ color, name }) => { - const style = [styles.icon, { color }] +const AppIcon = ({ color, name, style, ...props }) => { + const iconStyle = [styles.icon, style, { color }] - return <Icon name={name} style={style}/> + return <Icon name={name} style={iconStyle} {...props} /> } AppIcon.propTypes = { color: PropTypes.string, - name: PropTypes.string.isRequired + name: PropTypes.string.isRequired, + style: PropTypes.object } AppIcon.defaultProps = { diff --git a/components/common/segment.js b/components/common/segment.js index f3d8e53..935394b 100644 --- a/components/common/segment.js +++ b/components/common/segment.js @@ -3,21 +3,15 @@ import PropTypes from 'prop-types' import { StyleSheet, View } from 'react-native' import AppText from './app-text' -import AppIcon from './app-icon' -import { Colors, Containers, Spacing, Typography } from '../../styles/redesign' +import { Colors, Spacing, Typography } from '../../styles/redesign' -const Segment = ({ children, icon, last, title }) => { +const Segment = ({ children, last, title }) => { const containerStyle = last ? styles.containerLast : styles.container return ( <View style={containerStyle}> - {title && - <View style={styles.line}> - {icon && <AppIcon name={icon} color={Colors.purple} />} - <AppText style={styles.title}>{title}</AppText> - </View> - } + {title && <AppText style={styles.title}>{title}</AppText>} {children} </View> ) @@ -25,7 +19,6 @@ const Segment = ({ children, icon, last, title }) => { Segment.propTypes = { children: PropTypes.node, - icon: PropTypes.string, last: PropTypes.bool, title: PropTypes.string } @@ -46,13 +39,9 @@ const styles = StyleSheet.create({ containerLast: { ...segmentContainer }, - line: { - alignItems: 'center', - flexDirection: 'row' - }, title: { ...Typography.subtitle } }) -export default Segment +export default Segment \ No newline at end of file diff --git a/components/settings/nfp-settings/index.js b/components/settings/nfp-settings/index.js index e8bcff3..8e19573 100644 --- a/components/settings/nfp-settings/index.js +++ b/components/settings/nfp-settings/index.js @@ -1,87 +1,58 @@ import React, { Component } from 'react' import { StyleSheet, View } from 'react-native' -import Slider from '@ptomasroos/react-native-multi-slider' -import alertError from '../shared/alert-error' +import AppIcon from '../../common/app-icon' import AppPage from '../../common/app-page' import AppSwitch from '../../common/app-switch' import AppText from '../../common/app-text' -import Label from './label' +import TemperatureSlider from './temperature-slider' import Segment from '../../common/segment' -import { useCervixObservable, - saveUseCervix, - scaleObservable, - saveTempScale -} from '../../../local-storage' -import { Colors, Sizes } from '../../../styles/redesign' +import { useCervixObservable, saveUseCervix } from '../../../local-storage' +import { Colors, Spacing, Typography } from '../../../styles/redesign' import labels from '../../../i18n/en/settings' -import config from '../../../config' export default class Settings extends Component { constructor(props) { super(props) this.state = { - useCervix: useCervixObservable.value, - temperatureScale: { ...scaleObservable.value } + shouldUseCervix: useCervixObservable.value } } onCervixToggle = (value) => { - this.setState({ useCervix: value }) + this.setState({ shouldUseCervix: value }) saveUseCervix(value) } - onSliderChange = (values) => { - this.setState({ min: values[0], max: values[1] }) - } - - onSliderChangeFinish = (values) => { - this.setState({ min: values[0], max: values[1] }) - - try { - saveTempScale({ min: values[0], max: values[1] }) - } catch(err) { - alertError(labels.tempScale.saveError) - } - } - render() { - const { useCervix } = this.state - const cervixText = useCervix ? + const { shouldUseCervix } = this.state + const cervixText = shouldUseCervix ? labels.useCervix.cervixModeOn : labels.useCervix.cervixModeOff - const { min, max } = this.state.temperatureScale + return ( <AppPage> <Segment title={labels.useCervix.title}> <AppSwitch onToggle={this.onCervixToggle} text={cervixText} - value={useCervix} + value={shouldUseCervix} /> </Segment> <Segment title={labels.tempScale.segmentTitle}> <AppText>{labels.tempScale.segmentExplainer}</AppText> - <View style={styles.container}> - <Slider - customLabel={Label} - enableLabel={true} - markerStyle={styles.marker} - markerOffsetY={Sizes.tiny} - max={config.temperatureScale.max} - min={config.temperatureScale.min} - onValuesChange={this.onSliderChange} - onValuesChangeFinish={this.onSliderChangeFinish} - selectedStyle={styles.sliderAccentBackground} - step={config.temperatureScale.step} - trackStyle={styles.slider} - unselectedStyle={styles.sliderBackground} - values={[min, max]} - /> - </View> + <TemperatureSlider /> </Segment> - <Segment icon="info-with-circle" last title={labels.preOvu.title}> + <Segment last> + <View style={styles.line}> + <AppIcon + color={Colors.purple} + name="info-with-circle" + style={styles.icon} + /> + <AppText style={styles.title}>{labels.preOvu.title}</AppText> + </View> <AppText>{labels.preOvu.note}</AppText> </Segment> </AppPage> @@ -90,25 +61,14 @@ export default class Settings extends Component { } const styles = StyleSheet.create({ - container: { - alignItems: 'center', - paddingTop: Sizes.base + icon: { + marginRight: Spacing.base }, - marker: { - backgroundColor: Colors.tourquiseDark, - borderRadius: 50, - elevation: 4, - height: Sizes.subtitle, - width: Sizes.subtitle - }, - slider: { - borderRadius: 25, - height: Sizes.small - }, - sliderAccentBackground: { - backgroundColor: Colors.tourquiseDark - }, - sliderBackground: { - backgroundColor: Colors.tourquise + line: { + flexDirection: 'row', + alignItems: 'center' }, + title: { + ...Typography.subtitle + } }) diff --git a/components/settings/nfp-settings/label.js b/components/settings/nfp-settings/label.js deleted file mode 100644 index af63de3..0000000 --- a/components/settings/nfp-settings/label.js +++ /dev/null @@ -1,52 +0,0 @@ -import React from 'react' -import PropTypes from 'prop-types' -import { StyleSheet } from 'react-native' - -import AppText from '../../common/app-text' - -import { Sizes } from '../../../styles/redesign' - -const sliderRadius = 5 -const width = 50 - -export default class Label extends React.Component { - static propTypes = { - oneMarkerValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), - twoMarkerValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), - oneMarkerLeftPosition: PropTypes.number, - twoMarkerLeftPosition: PropTypes.number, - } - - - render() { - const { - oneMarkerValue, - twoMarkerValue, - oneMarkerLeftPosition, - twoMarkerLeftPosition, - } = this.props - - const minCoordinate = oneMarkerLeftPosition - width / 2 + sliderRadius - const maxCoordinate = twoMarkerLeftPosition - width / 2 + sliderRadius - const isMinNumber = Number.isFinite(oneMarkerLeftPosition) && - Number.isFinite(oneMarkerValue) - const isMaxNumber = Number.isFinite(twoMarkerLeftPosition) && - Number.isFinite(twoMarkerValue) - const minStyle = [styles.label, { left: minCoordinate }] - const maxStyle = [styles.label, { left: maxCoordinate }] - - return ( - <React.Fragment> - {isMinNumber && <AppText style={minStyle}>{oneMarkerValue}</AppText>} - {isMaxNumber && <AppText style={maxStyle}>{twoMarkerValue}</AppText>} - </React.Fragment> - ) - } -} - -const styles = StyleSheet.create({ - label: { - position: 'absolute', - marginTop: (-1) * Sizes.base - } -}) \ No newline at end of file diff --git a/components/settings/nfp-settings/slider-label.js b/components/settings/nfp-settings/slider-label.js new file mode 100644 index 0000000..d251003 --- /dev/null +++ b/components/settings/nfp-settings/slider-label.js @@ -0,0 +1,54 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { StyleSheet } from 'react-native' + +import AppText from '../../common/app-text' + +import { Fonts, Sizes } from '../../../styles/redesign' + +const sliderRadius = 5 +const width = 50 + +const getMarkerCoordinate = (position) => { + return position - width / 2 + sliderRadius +} + +const SliderLabel = ({ + oneMarkerValue, + twoMarkerValue, + oneMarkerLeftPosition, + twoMarkerLeftPosition +}) => { + const minCoordinate = getMarkerCoordinate(oneMarkerLeftPosition) + const maxCoordinate = getMarkerCoordinate(twoMarkerLeftPosition) + const isMinNumber = Number.isFinite(oneMarkerLeftPosition) && + Number.isFinite(oneMarkerValue) + const isMaxNumber = Number.isFinite(twoMarkerLeftPosition) && + Number.isFinite(twoMarkerValue) + const minStyle = [styles.label, { left: minCoordinate }] + const maxStyle = [styles.label, { left: maxCoordinate }] + + return ( + <React.Fragment> + {isMinNumber && <AppText style={minStyle}>{oneMarkerValue}</AppText>} + {isMaxNumber && <AppText style={maxStyle}>{twoMarkerValue}</AppText>} + </React.Fragment> + ) +} + +SliderLabel.propTypes = { + oneMarkerValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + twoMarkerValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + oneMarkerLeftPosition: PropTypes.number, + twoMarkerLeftPosition: PropTypes.number +} + +const styles = StyleSheet.create({ + label: { + fontFamily: Fonts.bold, + position: 'absolute', + marginTop: (-1) * Sizes.base + } +}) + +export default SliderLabel \ No newline at end of file diff --git a/components/settings/nfp-settings/temperature-slider.js b/components/settings/nfp-settings/temperature-slider.js new file mode 100644 index 0000000..94db021 --- /dev/null +++ b/components/settings/nfp-settings/temperature-slider.js @@ -0,0 +1,80 @@ +import React, { Component } from 'react' +import { StyleSheet, View } from 'react-native' +import Slider from '@ptomasroos/react-native-multi-slider' + +import alertError from '../shared/alert-error' +import SliderLabel from './slider-label' + +import { scaleObservable, saveTempScale } from '../../../local-storage' +import { Colors, Sizes } from '../../../styles/redesign' +import labels from '../../../i18n/en/settings' +import config from '../../../config' + +export default class TemperatureSlider extends Component { + constructor(props) { + super(props) + + const { min, max } = scaleObservable.value + this.state = { minTemperature: min, maxTemperature: max } + } + + onTemperatureSliderChange = (values) => { + this.setState({ + minTemperature: values[0], + maxTemperature: values[1] + }) + + try { + saveTempScale({ min: values[0], max: values[1] }) + } catch(err) { + alertError(labels.tempScale.saveError) + } + } + + render() { + const { minTemperature, maxTemperature } = this.state + + return ( + <View style={styles.container}> + <Slider + customLabel={SliderLabel} + enableLabel={true} + markerStyle={styles.marker} + markerOffsetY={Sizes.tiny} + max={config.temperatureScale.max} + min={config.temperatureScale.min} + onValuesChange={this.onTemperatureSliderChange} + selectedStyle={styles.sliderAccentBackground} + step={config.temperatureScale.step} + trackStyle={styles.slider} + unselectedStyle={styles.sliderBackground} + values={[minTemperature, maxTemperature]} + /> + </View> + ) + } +} + +const styles = StyleSheet.create({ + container: { + alignItems: 'center', + paddingTop: Sizes.base + }, + marker: { + backgroundColor: Colors.tourquiseDark, + borderRadius: 50, + elevation: 4, + height: Sizes.subtitle, + width: Sizes.subtitle + }, + slider: { + borderRadius: 25, + height: Sizes.small + }, + sliderAccentBackground: { + backgroundColor: Colors.tourquiseDark + }, + sliderBackground: { + backgroundColor: Colors.tourquise + }, +}) From bba25aeaac35ef9affb09f7f30a08ed2b039558e Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Mon, 20 Apr 2020 17:02:11 +0200 Subject: [PATCH 36/94] Sets default button type to small and moves action names to config file --- components/common/button.js | 4 ++++ components/home.js | 2 +- components/settings/data-management/index.js | 13 +++++++------ components/settings/password/enter-new-password.js | 2 +- components/settings/shared/confirm-with-password.js | 6 +++--- config.js | 4 ++++ 6 files changed, 20 insertions(+), 11 deletions(-) diff --git a/components/common/button.js b/components/common/button.js index e7bc7e4..46c5838 100644 --- a/components/common/button.js +++ b/components/common/button.js @@ -26,6 +26,10 @@ Button.propTypes = { testID: PropTypes.string } +Button.defaultProps = { + isSmall: true +} + const text = { padding: Spacing.base, textTransform: 'uppercase' diff --git a/components/home.js b/components/home.js index 7cc52a0..bff1c4c 100644 --- a/components/home.js +++ b/components/home.js @@ -93,7 +93,7 @@ class Home extends Component { <View style={styles.line}> <AppText>{prediction}</AppText> </View> - <Button onPress={this.navigateToCycleDayView} isCTA> + <Button isCTA isSmall={false} onPress={this.navigateToCycleDayView}> {labels.addData} </Button> {phase && ( diff --git a/components/settings/data-management/index.js b/components/settings/data-management/index.js index 56d3c8a..2848fe7 100644 --- a/components/settings/data-management/index.js +++ b/components/settings/data-management/index.js @@ -11,6 +11,7 @@ import openShareDialogAndExport from './export-dialog' import DeleteData from './delete-data' import labels from '../../../i18n/en/settings' +import { ACTION_DELETE, ACTION_EXPORT, ACTION_IMPORT } from '../../../config' export default class DataManagement extends Component { @@ -41,12 +42,12 @@ export default class DataManagement extends Component { } startExport = () => { - this.setCurrentAction('export') + this.setCurrentAction(ACTION_EXPORT) openShareDialogAndExport() } startImport = () => { - this.setCurrentAction('import') + this.setCurrentAction(ACTION_IMPORT) openImportDialog(this.startImportFlow) } @@ -56,7 +57,7 @@ export default class DataManagement extends Component { render() { const { currentAction, isLoading } = this.state - const isDeletingData = currentAction === 'delete' + const isDeletingData = currentAction === ACTION_DELETE return ( <AppPage> @@ -65,13 +66,13 @@ export default class DataManagement extends Component { <React.Fragment> <Segment title={labels.export.button}> <AppText>{labels.export.segmentExplainer}</AppText> - <Button isCTA onPress={this.startExport}> + <Button isCTA isSmall={false} onPress={this.startExport}> {labels.export.button} </Button> </Segment> <Segment title={labels.import.button}> <AppText>{labels.import.segmentExplainer}</AppText> - <Button isCTA onPress={this.startImport}> + <Button isCTA isSmall={false} onPress={this.startImport}> {labels.import.button} </Button> </Segment> @@ -79,7 +80,7 @@ export default class DataManagement extends Component { <AppText>{labels.deleteSegment.explainer}</AppText> <DeleteData isDeletingData = {isDeletingData} - onStartDeletion = {() => this.setCurrentAction('delete')} + onStartDeletion = {() => this.setCurrentAction(ACTION_DELETE)} /> </Segment> </React.Fragment> diff --git a/components/settings/password/enter-new-password.js b/components/settings/password/enter-new-password.js index 283755b..0c8617f 100644 --- a/components/settings/password/enter-new-password.js +++ b/components/settings/password/enter-new-password.js @@ -79,7 +79,7 @@ export default class EnterNewPassword extends Component { {shouldShowErrorMessage && <AppText style={styles.error}>{labels.passwordsDontMatch}</AppText> } - <Button isCTA={isButtonActive} isSmall onPress={this.savePassword}> + <Button isCTA={isButtonActive} onPress={this.savePassword}> {labels.savePassword} </Button> </React.Fragment> diff --git a/components/settings/shared/confirm-with-password.js b/components/settings/shared/confirm-with-password.js index a3c845a..23bd5a4 100644 --- a/components/settings/shared/confirm-with-password.js +++ b/components/settings/shared/confirm-with-password.js @@ -62,7 +62,7 @@ export default class ConfirmWithPassword extends Component { render() { const { password } = this.state const labels = settings.passwordSettings - const isCTA = password !== null + const isPassword = password !== null return ( <React.Fragment> @@ -72,10 +72,10 @@ export default class ConfirmWithPassword extends Component { value={password} /> <View style={styles.container}> - <Button isSmall onPress={this.props.onCancel}> + <Button onPress={this.props.onCancel}> {shared.cancel} </Button> - <Button isCTA={isCTA} isSmall onPress={this.initPasswordCheck}> + <Button isCTA={isPassword} onPress={this.initPasswordCheck}> {shared.confirmToProceed} </Button> </View> diff --git a/config.js b/config.js index 7cd3960..1fd1589 100644 --- a/config.js +++ b/config.js @@ -27,4 +27,8 @@ const config = { config.columnMiddle = config.columnWidth / 2 +export const ACTION_DELETE = 'delete' +export const ACTION_EXPORT = 'export' +export const ACTION_IMPORT = 'import' + export default config \ No newline at end of file From 61ca71fd1fcc87db580ad56bb553c62caf5f0c60 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Mon, 20 Apr 2020 17:09:19 +0200 Subject: [PATCH 37/94] Fixes AppLoadingView component centering --- components/settings/data-management/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/settings/data-management/index.js b/components/settings/data-management/index.js index 2848fe7..239d3f0 100644 --- a/components/settings/data-management/index.js +++ b/components/settings/data-management/index.js @@ -60,10 +60,10 @@ export default class DataManagement extends Component { const isDeletingData = currentAction === ACTION_DELETE return ( - <AppPage> + <React.Fragment> {isLoading && <AppLoadingView />} {!isLoading && - <React.Fragment> + <AppPage> <Segment title={labels.export.button}> <AppText>{labels.export.segmentExplainer}</AppText> <Button isCTA isSmall={false} onPress={this.startExport}> @@ -83,9 +83,9 @@ export default class DataManagement extends Component { onStartDeletion = {() => this.setCurrentAction(ACTION_DELETE)} /> </Segment> - </React.Fragment> + </AppPage> } - </AppPage> + </React.Fragment> ) } } \ No newline at end of file From 7afaa1e1564b387042902905615821ed96568423 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Mon, 20 Apr 2020 17:17:31 +0200 Subject: [PATCH 38/94] Adds disabled prop to Button, style change name in AppSwitch component --- components/common/app-switch.js | 4 ++-- components/common/button.js | 9 +++++++-- components/settings/shared/confirm-with-password.js | 6 +++++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/components/common/app-switch.js b/components/common/app-switch.js index 71d5262..3cb30e6 100644 --- a/components/common/app-switch.js +++ b/components/common/app-switch.js @@ -8,7 +8,7 @@ import { Containers } from '../../styles/redesign' const AppSwitch = ({ onToggle, text, value }) => { return ( - <View style={styles.line}> + <View style={styles.container}> <View style={styles.textContainer}> <AppText>{text}</AppText> </View> @@ -24,7 +24,7 @@ AppSwitch.propTypes = { } const styles = StyleSheet.create({ - line: { + container: { ...Containers.rowContainer }, switch: { diff --git a/components/common/button.js b/components/common/button.js index 46c5838..2e98588 100644 --- a/components/common/button.js +++ b/components/common/button.js @@ -6,13 +6,18 @@ import AppText from './app-text' import { Colors, Fonts, Spacing } from '../../styles/redesign' -const Button = ({ children, isCTA, isSmall, onPress, testID }) => { +const Button = ({ children, isCTA, isSmall, onPress, testID, ...props }) => { const buttonStyle = isCTA ? styles.cta : styles.regular const textCTA = isCTA ? styles.buttonTextBold : styles.buttonTextRegular const textStyle = [ textCTA, isSmall ? textSmall : text] return ( - <TouchableOpacity onPress={onPress} style={buttonStyle} testID={testID}> + <TouchableOpacity + onPress={onPress} + style={buttonStyle} + testID={testID} + {...props} + > <AppText style={textStyle}>{children}</AppText> </TouchableOpacity> ) diff --git a/components/settings/shared/confirm-with-password.js b/components/settings/shared/confirm-with-password.js index 23bd5a4..ad58313 100644 --- a/components/settings/shared/confirm-with-password.js +++ b/components/settings/shared/confirm-with-password.js @@ -75,7 +75,11 @@ export default class ConfirmWithPassword extends Component { <Button onPress={this.props.onCancel}> {shared.cancel} </Button> - <Button isCTA={isPassword} onPress={this.initPasswordCheck}> + <Button + disabled={!isPassword} + isCTA={isPassword} + onPress={this.initPasswordCheck} + > {shared.confirmToProceed} </Button> </View> From 579c4af8699a16a51a263710ebef8e64575e3b8e Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Mon, 20 Apr 2020 17:19:28 +0200 Subject: [PATCH 39/94] Styling fix of DataManagement component --- components/settings/data-management/delete-data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/settings/data-management/delete-data.js b/components/settings/data-management/delete-data.js index 9ad24bd..87f094d 100644 --- a/components/settings/data-management/delete-data.js +++ b/components/settings/data-management/delete-data.js @@ -94,7 +94,7 @@ export default class DeleteData extends Component { } return ( - <Button isCTA onPress={this.alertBeforeDeletion}> + <Button isCTA isSmall={false} onPress={this.alertBeforeDeletion}> {settings.deleteSegment.title} </Button> ) From c2e7bf87619f72dd82280d0daa6784e74c540cbb Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Fri, 24 Apr 2020 18:05:20 +0200 Subject: [PATCH 40/94] Updates SymptomSection component to fix lint rule --- components/cycle-day/symptoms/symptom-section.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/components/cycle-day/symptoms/symptom-section.js b/components/cycle-day/symptoms/symptom-section.js index e2fe60b..8965190 100644 --- a/components/cycle-day/symptoms/symptom-section.js +++ b/components/cycle-day/symptoms/symptom-section.js @@ -1,5 +1,7 @@ import React, { Component } from 'react' import { View } from 'react-native' +import PropTypes from 'prop-types' + import AppText from '../../common/app-text' import styles from '../../../styles' @@ -33,4 +35,11 @@ export default class SymptomSection extends Component { </View> ) } +} + +SymptomSection.propTypes = { + children: PropTypes.node, + explainer: PropTypes.string, + header: PropTypes.string, + inline: PropTypes.bool } \ No newline at end of file From 111475b2e3190b10e98ac1cc8c1b229baab83771 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Mon, 20 Apr 2020 17:40:52 +0200 Subject: [PATCH 41/94] Introduces License page redesign --- components/license.js | 65 +++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/components/license.js b/components/license.js index fbe7928..6406824 100644 --- a/components/license.js +++ b/components/license.js @@ -1,44 +1,49 @@ import React from 'react' import PropTypes from 'prop-types' -import { ScrollView, View, BackHandler } from 'react-native' +import { BackHandler, StyleSheet, View } from 'react-native' + +import AppPage from './common/app-page' import AppText from './common/app-text' -import { shared } from '../i18n/en/labels' -import settingsLabels from '../i18n/en/settings' -import styles,{secondaryColor} from '../styles' import Button from './common/button' +import Segment from './common/segment' + import { saveLicenseFlag } from '../local-storage' +import { shared } from '../i18n/en/labels' +import settingsLabels from '../i18n/en/settings' +import { Containers } from '../styles/redesign' + const labels = settingsLabels.license -export default function License({setLicense}) { + +export default function License({ setLicense }) { + const onAcceptLicense = async () => { + await saveLicenseFlag() + setLicense() + } + return ( - <ScrollView testID='licensePage' style={styles.licensePage}> - <AppText style={styles.framedSegmentTitle}>{labels.title}</AppText> - <AppText testID='test'>{labels.text}</AppText> - <View style={styles.licenseButtons}> - <Button - style={styles.licenseButton} - backgroundColor={'grey'} - onPress={() => BackHandler.exitApp()} - testID='licenseCancelButton' - > - {shared.cancel} - </Button> - <Button - style={styles.licenseButton} - backgroundColor={secondaryColor} - onPress={async () => { - await saveLicenseFlag() - setLicense() - }} - testID='licenseOkButton' - > - {shared.ok} - </Button> - </View> - </ScrollView> + <AppPage testID='licensePage'> + <Segment last testID='test' title={labels.title}> + <AppText testID='test'>{labels.text}</AppText> + <View style={styles.container}> + <Button onPress={BackHandler.exitApp} testID='licenseCancelButton'> + {shared.cancel} + </Button> + <Button isCTA onPress={onAcceptLicense} testID='licenseOkButton'> + {shared.ok} + </Button> + </View> + </Segment> + </AppPage> ) } License.propTypes = { setLicense: PropTypes.func.isRequired } + +const styles = StyleSheet.create({ + container: { + ...Containers.rowContainer + } +}) From fe5f734cff2981160195f6fbff820badeecdfb29 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Wed, 22 Apr 2020 21:40:58 +0200 Subject: [PATCH 42/94] Refactors AppText and Segment components --- components/common/app-text.js | 19 +++++-------------- components/common/segment.js | 1 + 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/components/common/app-text.js b/components/common/app-text.js index d431466..329cf28 100644 --- a/components/common/app-text.js +++ b/components/common/app-text.js @@ -6,20 +6,11 @@ import Link from './link' import { Colors, Typography } from '../../styles/redesign' -export default function AppText({ - children, - linkStyle, - onPress, - numberOfLines, - style -}) { +const AppText = ({ children, linkStyle, style, ...props }) => { // we parse for links in case the text contains any return ( <Link style={linkStyle}> - <Text style={[styles.text, style]} - onPress={onPress} - numberOfLines={numberOfLines} - > + <Text style={[styles.text, style]} {...props}> {children} </Text> </Link> @@ -29,8 +20,6 @@ export default function AppText({ AppText.propTypes = { children: PropTypes.node, linkStyle: PropTypes.object, - onPress: PropTypes.func, - numberOfLines: PropTypes.number, style: PropTypes.oneOfType([PropTypes.array, PropTypes.object]), } @@ -39,4 +28,6 @@ const styles = StyleSheet.create({ color: Colors.greyDark, ...Typography.mainText } -}) \ No newline at end of file +}) + +export default AppText \ No newline at end of file diff --git a/components/common/segment.js b/components/common/segment.js index 935394b..97cea4f 100644 --- a/components/common/segment.js +++ b/components/common/segment.js @@ -20,6 +20,7 @@ const Segment = ({ children, last, title }) => { Segment.propTypes = { children: PropTypes.node, last: PropTypes.bool, + style: PropTypes.object, title: PropTypes.string } From 9d6c0aa65c3fcc18fdb43efa6d35f01a66454cf2 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Wed, 22 Apr 2020 21:41:25 +0200 Subject: [PATCH 43/94] Introduces Stats page redesign --- assets/cycle-icon.png | Bin 0 -> 11866 bytes components/common/table.js | 79 +++++++++++++++++ components/stats.js | 175 ++++++++++++++++++++++--------------- i18n/en/labels.js | 15 ++-- styles/typography.js | 46 +++++++++- 5 files changed, 235 insertions(+), 80 deletions(-) create mode 100644 assets/cycle-icon.png create mode 100644 components/common/table.js diff --git a/assets/cycle-icon.png b/assets/cycle-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..aa225b33c335eb00adf59f5e181743f1439a9ead GIT binary patch literal 11866 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 ZLvof87yEv`K6nlska{BrFA~%D{U5E>fP?@5 literal 0 HcmV?d00001 diff --git a/components/common/table.js b/components/common/table.js new file mode 100644 index 0000000..f1e024f --- /dev/null +++ b/components/common/table.js @@ -0,0 +1,79 @@ +import React from 'react' +import { StyleSheet, View } from 'react-native' +import PropTypes from 'prop-types' + +import AppText from './app-text' + +import { Spacing, Typography } from '../../styles/redesign' + +const Table = ({ tableContent }) => { + return ( + tableContent.map((rowContent, i) => <Row key={i} rowContent={rowContent} />) + ) +} + +Table.propTypes = { + tableContent: PropTypes.array.isRequired +} + +const Row = ({ rowContent }) => { + return( + <View style={styles.row}> + <Cell content={rowContent[0]} isLeft /> + <Cell content={rowContent[1]} /> + </View> + ) +} + +Row.propTypes = { + rowContent: PropTypes.array.isRequired +} + +const Cell = ({ content, isLeft }) => { + const styleContainer = isLeft ? styles.cellLeft : styles.cellRight + const styleText = isLeft ? styles.accentPurpleBig : styles.accentOrange + const numberOfLines = isLeft ? 1 : 2 + const ellipsizeMode = isLeft ? 'clip' : 'tail' + + return( + <View style={styleContainer}> + <AppText + numberOfLines={numberOfLines} + ellipsizeMode={ellipsizeMode} + style={styleText} + > + {content} + </AppText> + </View> + ) +} + +Cell.propTypes = { + content: PropTypes.node.isRequired, + isLeft: PropTypes.bool +} + +const styles = StyleSheet.create({ + accentOrange: { + ...Typography.accentOrange + }, + accentPurpleBig: { + ...Typography.accentPurpleBig, + marginRight: Spacing.base + }, + cellLeft: { + alignItems: 'flex-end', + flex: 5, + justifyContent: 'center' + }, + cellRight: { + flex: 6, + justifyContent: 'center' + }, + row: { + flexDirection: 'row', + marginBottom: Spacing.tiny + } +}) + +export default Table \ No newline at end of file diff --git a/components/stats.js b/components/stats.js index a89ddcc..213ae7d 100644 --- a/components/stats.js +++ b/components/stats.js @@ -1,77 +1,114 @@ -import React, { Component } from 'react' -import { - View, - ScrollView -} from 'react-native' +import React from 'react' +import { ImageBackground, StyleSheet, View } from 'react-native' + +import AppPage from './common/app-page' +import AppText from './common/app-text' +import Segment from './common/segment' +import Table from './common/table' -import styles from '../styles/index' import cycleModule from '../lib/cycle' import {getCycleLengthStats as getCycleInfo} from '../lib/cycle-length' import {stats as labels} from '../i18n/en/labels' -import AppText from './common/app-text' -import Segment from './common/segment' -export default class Stats extends Component { - render() { - const cycleLengths = cycleModule().getAllCycleLengths() - const atLeastOneCycle = cycleLengths.length >= 1 - let numberOfCycles - let cycleInfo - if (atLeastOneCycle) { - numberOfCycles = cycleLengths.length - if (numberOfCycles > 1) { - cycleInfo = getCycleInfo(cycleLengths) - } - } - return ( - <ScrollView> - <Segment - style={styles.framedSegmentLast} - title={labels.cycleLengthTitle} - > - <AppText style={styles.paragraph}> - {labels.cycleLengthExplainer} - </AppText> +import { Sizes, Spacing, Typography } from '../styles/redesign' - {!atLeastOneCycle && - <AppText>{labels.emptyStats}</AppText> - } - {atLeastOneCycle && numberOfCycles === 1 && - <View style={[styles.statsRow, styles.paragraph]}> - <AppText>{labels.oneCycleStats}</AppText> - <AppText style={styles.emphasis}> {cycleLengths[0]} </AppText> - <AppText>{labels.daysLabel}.</AppText> - </View> - } - {atLeastOneCycle && numberOfCycles > 1 && <View> - <View style={styles.paragraph}> - <AppText style={styles.emphasis}> - {labels.averageLabel}: {cycleInfo.mean} {labels.daysLabel} - </AppText> - </View> - <View> - <AppText> - {labels.minLabel}: {cycleInfo.minimum} {labels.daysLabel} - </AppText> - </View> - <View> - <AppText> - {labels.maxLabel}: {cycleInfo.maximum} {labels.daysLabel} - </AppText> - </View> - <View style={styles.paragraph}> - <AppText> - {labels.stdLabel}: {cycleInfo.stdDeviation} {labels.daysLabel} - </AppText> - </View> - <View style={styles.statsRow}> - <AppText>{labels.basisOfStatsBeginning}</AppText> - <AppText style={styles.emphasis}> {numberOfCycles} </AppText> - <AppText>{labels.basisOfStatsEnd}</AppText> - </View> - </View>} - </Segment> - </ScrollView> - ) +const image = require('../assets/cycle-icon.png') + +const Stats = () => { + const cycleLengths = cycleModule().getAllCycleLengths() + const atLeastOneCycle = cycleLengths.length >= 1 + const numberOfCycles = cycleLengths.length + let cycleData + if (atLeastOneCycle) { + cycleData = getCycleInfo(cycleLengths) } + + const statsData = [ + [atLeastOneCycle ? cycleData.minimum : 0, labels.minLabel], + [atLeastOneCycle ? cycleData.maximum : 0, labels.maxLabel], + [atLeastOneCycle && cycleData.stdDeviation ? cycleData.stdDeviation : '—', labels.stdLabel], + [numberOfCycles, labels.basisOfStatsEnd] + ] + return ( + <AppPage> + <Segment last style={styles.pageContainer}> + <AppText>{labels.cycleLengthExplainer}</AppText> + {!atLeastOneCycle && <AppText>{labels.emptyStats}</AppText>} + {atLeastOneCycle && + <View style={styles.container}> + <View style={styles.columnLeft}> + <ImageBackground + source={image} + imageStyle={styles.image} + style={styles.imageContainter} + > + <AppText + numberOfLines={1} + ellipsizeMode="clip" + style={styles.accentPurpleGiant} + > + {cycleData.mean} + </AppText> + <AppText style={styles.accentPurpleHuge}> + {labels.daysLabel} + </AppText> + </ImageBackground> + <AppText style={styles.accentOrange}> + {labels.averageLabel} + </AppText> + </View> + <View style={styles.columnRight}> + <Table tableContent={statsData} /> + </View> + </View> + } + </Segment> + </AppPage> + ) } + +const column = { + flexDirection: 'column' +} + +const styles = StyleSheet.create({ + accentOrange: { + ...Typography.accentOrange + }, + accentPurpleGiant: { + ...Typography.accentPurpleGiant, + marginVertical: Sizes.giant * (-0.5) + }, + accentPurpleHuge: { + ...Typography.accentPurpleHuge, + marginRight: Spacing.base + }, + container: { + alignItems: 'center', + flexDirection: 'row', + justifyContent: 'space-between', + }, + columnLeft: { + ...column, + flex: 4 + }, + columnRight: { + ...column, + flex: 5 + }, + image: { + height: Sizes.huge * 3, + marginLeft: Sizes.huge / 2, + resizeMode: 'contain', + width: Sizes.huge * 3 + }, + imageContainter: { + paddingTop: Sizes.huge, + marginBottom: Sizes.huge / 4 + }, + pageContainer: { + marginVertical: Spacing.large + } +}) + +export default Stats \ No newline at end of file diff --git a/i18n/en/labels.js b/i18n/en/labels.js index 4dd59fe..3b5e8df 100644 --- a/i18n/en/labels.js +++ b/i18n/en/labels.js @@ -61,19 +61,14 @@ export const menuTitles = { } export const stats = { - cycleLengthTitle: 'Cycle length', cycleLengthExplainer: 'Basic statistics about the length of your cycles.', emptyStats: 'At least one completed cycle is needed to display stats.', - //oneCycleStats: (number) => `You have documented one cycle of ${number} days.`, - oneCycleStats: 'You have documented one cycle of', daysLabel: 'days', - //getBasisOfStats: (numberOfCycles) => `Stats are based on ${numberOfCycles} completed cycles.`, - basisOfStatsBeginning: 'Stats are based on', - basisOfStatsEnd: 'completed cycles.', - averageLabel: 'Average cycle length', - minLabel: 'Shortest cycle', - maxLabel: 'Longest cycle', - stdLabel: 'Standard deviation' + basisOfStatsEnd: 'completed\ncycles', + averageLabel: 'Average cycle', + minLabel: `Shortest`, + maxLabel: `Longest`, + stdLabel: `Standard\ndeviation` } export const bleedingPrediction = { diff --git a/styles/typography.js b/styles/typography.js index 59892e8..bfc5173 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -12,7 +12,9 @@ export const sizes = { base: 18, subtitle: 22, title: 24, - huge: 40 + big: 30, + huge: 40, + giant: 50 } const title = { @@ -20,7 +22,49 @@ const title = { marginVertical: Spacing.large } +const accentText = { + fontFamily: fonts.bold, + textAlignVertical: 'center', + textTransform: 'uppercase' +} + +const accentTextBig = { + ...accentText, + fontSize: sizes.big, +} + +const accentTextGiant = { + ...accentText, + fontSize: sizes.giant, +} + +const accentTextHuge = { + ...accentText, + fontSize: sizes.huge, +} + +const accentTextSmall = { + ...accentText, + fontSize: sizes.small +} + export default { + accentOrange: { + ...accentTextSmall, + color: Colors.orange + }, + accentPurpleBig: { + ...accentTextBig, + color: Colors.purple + }, + accentPurpleGiant: { + ...accentTextGiant, + color: Colors.purple + }, + accentPurpleHuge: { + ...accentTextHuge, + color: Colors.purple + }, mainText: { fontFamily: fonts.main, fontSize: sizes.base From 1f5d869b1707012f98893f2bcb36a87dd8290c7f Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Fri, 24 Apr 2020 14:27:42 +0200 Subject: [PATCH 44/94] Adds contentContainerStyle prop to AppPage component --- components/common/app-page.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/components/common/app-page.js b/components/common/app-page.js index a7b5a49..a9559dc 100644 --- a/components/common/app-page.js +++ b/components/common/app-page.js @@ -6,9 +6,12 @@ import AppText from '../common/app-text' import { Colors, Typography } from '../../styles/redesign' -const AppPage = ({ children, title }) => { +const AppPage = ({ children, contentContainerStyle, title }) => { return( - <ScrollView style={styles.container}> + <ScrollView + style={styles.container} + contentContainerStyle={contentContainerStyle} + > {title && <AppText style={styles.title}>{title}</AppText>} {children} </ScrollView> @@ -17,6 +20,7 @@ const AppPage = ({ children, title }) => { AppPage.propTypes = { children: PropTypes.node, + contentContainerStyle: PropTypes.object, title: PropTypes.string } From cbe9f3947d31cf32318ad5d9605d0104ff33c159 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Fri, 24 Apr 2020 14:28:01 +0200 Subject: [PATCH 45/94] Adds isSideMenuEnabled prop to Header component --- components/header/index.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/components/header/index.js b/components/header/index.js index d810ed6..5c6d321 100644 --- a/components/header/index.js +++ b/components/header/index.js @@ -1,5 +1,6 @@ import React, { Component } from 'react' import { StyleSheet, View } from 'react-native' +import PropTypes from 'prop-types' import Logo from './logo' import SideMenu from './side-menu' @@ -7,6 +8,10 @@ import SideMenu from './side-menu' import { Colors, Containers, Sizes } from '../../styles/redesign' export default class Header extends Component { + static propTypes = { + isSideMenuEnabled: PropTypes.bool + } + constructor(props) { super(props) @@ -18,17 +23,27 @@ export default class Header extends Component { } render() { + const { isSideMenuEnabled } = this.props const { shouldShowMenu } = this.state return ( <View style={styles.header}> <Logo /> - <SideMenu shouldShowMenu={shouldShowMenu} toggleMenu={this.toggleMenu}/> + {isSideMenuEnabled && + <SideMenu + shouldShowMenu={shouldShowMenu} + toggleMenu={this.toggleMenu} + /> + } </View > ) } } +Header.defaultProps = { + isSideMenuEnabled: true +} + const styles = StyleSheet.create({ header: { backgroundColor: Colors.purple, From 3d2d659b545f09669b2804e09316942a97fef23b Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Fri, 24 Apr 2020 14:28:27 +0200 Subject: [PATCH 46/94] Introduces PasswordPrompt component redesign --- components/password-prompt.js | 147 ++++++++++++++++++---------------- 1 file changed, 79 insertions(+), 68 deletions(-) diff --git a/components/password-prompt.js b/components/password-prompt.js index 152b93b..591a50a 100644 --- a/components/password-prompt.js +++ b/components/password-prompt.js @@ -1,13 +1,19 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { View, TextInput, TouchableOpacity, Alert } from 'react-native' +import { Alert, StyleSheet, View } from 'react-native' import nodejs from 'nodejs-mobile-react-native' -import { saveEncryptionFlag } from '../local-storage' -import AppText from './common/app-text' + +import AppPage from './common/app-page' +import AppTextInput from './common/app-text-input' +import Button from './common/button' import Header from './header' -import styles from '../styles' -import { passwordPrompt as labels, shared, menuTitles } from '../i18n/en/labels' + +import { saveEncryptionFlag } from '../local-storage' import { requestHash, deleteDbAndOpenNew, openDb } from '../db' +import { passwordPrompt as labels, shared } from '../i18n/en/labels' +import { Containers, Spacing } from '../styles/redesign' + +const cancelButton = { text: shared.cancel, style: 'cancel' } export default class PasswordPrompt extends Component { static propTypes = { @@ -16,17 +22,40 @@ export default class PasswordPrompt extends Component { constructor(props) { super(props) - this.state = { - password: null - } + this.state = { password: null } - nodejs.channel.addListener( - 'check-pw', - this.passHashToDb, - this + nodejs.channel.addListener('check-pw', this.passHashToDb, this) + } + + componentWillUnmount() { + nodejs.channel.removeListener('check-pw', this.passHashToDb) + } + + onConfirmDeletion = async () => { + Alert.alert( + labels.deleteDatabaseTitle, + labels.deleteDatabaseExplainer, + [cancelButton, { text: labels.deleteData, onPress: this.onDeleteData}] ) } + onDeleteData = () => { + Alert.alert( + labels.areYouSureTitle, + labels.areYouSure, + [cancelButton, { + text: labels.reallyDeleteData, + onPress: this.onDeleteDataConfirmation + }] + ) + } + + onDeleteDataConfirmation = async () => { + await deleteDbAndOpenNew() + await saveEncryptionFlag(false) + this.props.enableShowApp() + } + passHashToDb = async hash => { const connected = await openDb(hash) if (!connected) { @@ -35,7 +64,7 @@ export default class PasswordPrompt extends Component { shared.incorrectPasswordMessage, [{ text: shared.tryAgain, - onPress: () => this.setState({ password: null }) + onPress: this.setPassword(null) }] ) return @@ -43,71 +72,53 @@ export default class PasswordPrompt extends Component { this.props.enableShowApp() } - confirmDeletion = async () => { - Alert.alert( - labels.deleteDatabaseTitle, - labels.deleteDatabaseExplainer, - [{ - text: shared.cancel, - style: 'cancel' - }, { - text: labels.deleteData, - onPress: () => { - Alert.alert( - labels.areYouSureTitle, - labels.areYouSure, - [{ - text: shared.cancel, - style: 'cancel' - }, { - text: labels.reallyDeleteData, - onPress: async () => { - await deleteDbAndOpenNew() - await saveEncryptionFlag(false) - this.props.enableShowApp() - } - }] - ) - } - }] - ) + setPassword = (password) => { + this.setState({ password }) } - componentWillUnmount() { - nodejs.channel.removeListener('check-pw', this.passHashToDb) + unlockApp = () => { + requestHash('check-pw', this.state.password) } render() { + const { password } = this.state + const isPasswordEntered = password && password.length > 0 + return ( - <View flex={1}> - <Header title={menuTitles.PasswordPrompt.toLowerCase()} /> - <View style={styles.passwordPromptPage}> - <TextInput - onChangeText={val => this.setState({ password: val })} - style={styles.passwordPromptField} + <React.Fragment> + <Header isSideMenuEnabled={false} /> + <AppPage contentContainerStyle={styles.contentContainer}> + <AppTextInput + onChangeText={this.setPassword} secureTextEntry={true} placeholder={labels.enterPassword} /> - <TouchableOpacity - style={styles.passwordPromptButton} - onPress={() => { - requestHash('check-pw', this.state.password) - }} - disabled={!this.state.password} - > - <AppText style={styles.passwordPromptButtonText}> + <View style={styles.containerButtons}> + <Button + disabled={!isPasswordEntered} + isCTA={isPasswordEntered} + onPress={this.unlockApp} + > {labels.title} - </AppText> - </TouchableOpacity> - <TouchableOpacity - onPress={this.confirmDeletion} - > - <AppText style={styles.passwordPromptForgotPasswordText}> + </Button> + <Button onPress={this.onConfirmDeletion}> {labels.forgotPassword} - </AppText> - </TouchableOpacity> - </View> - </View> + </Button> + </View> + </AppPage> + </React.Fragment> ) } -} \ No newline at end of file +} + +const styles = StyleSheet.create({ + contentContainer: { + flex: 1, + justifyContent: 'center', + marginHorizontal: Spacing.base + }, + containerButtons: { + ...Containers.rowContainer, + justifyContent: 'space-around' + } +}) \ No newline at end of file From c367a1e233ef73acf79935f52f5c2edd813fce89 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Fri, 24 Apr 2020 18:01:12 +0200 Subject: [PATCH 47/94] Introduces RN Alert component styling update --- android/app/src/main/res/font/jost400.otf | Bin 0 -> 35776 bytes android/app/src/main/res/font/jost_normal.xml | 7 ++++ android/app/src/main/res/values/colors.xml | 5 +++ android/app/src/main/res/values/styles.xml | 30 ++++++++++++++++++ 4 files changed, 42 insertions(+) create mode 100644 android/app/src/main/res/font/jost400.otf create mode 100644 android/app/src/main/res/font/jost_normal.xml diff --git a/android/app/src/main/res/font/jost400.otf b/android/app/src/main/res/font/jost400.otf new file mode 100644 index 0000000000000000000000000000000000000000..7abf6cf32f1ddaccfe24bb94406995096b62539a GIT binary patch literal 35776 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%0DceGEmHl2g6fzG6Bq4U*E)*aRn&cOL|y}1$G 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/font/jost_normal.xml b/android/app/src/main/res/font/jost_normal.xml new file mode 100644 index 0000000..c5222c3 --- /dev/null +++ b/android/app/src/main/res/font/jost_normal.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<font-family xmlns:android="http://schemas.android.com/apk/res/android"> + <font + android:font="@font/jost400" + android:fontStyle="normal" + android:fontWeight="400" /> +</font-family> \ No newline at end of file diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml index 6f1943f..caab5fc 100644 --- a/android/app/src/main/res/values/colors.xml +++ b/android/app/src/main/res/values/colors.xml @@ -9,4 +9,9 @@ <!-- a secondary color for controls like checkboxes and text fields --> <color name="colorAccent">#4FAFA7</color> + + <!-- custom colors --> + <color name="grey">#A5A5A5</color> + <color name="orange">#F38337</color> + <color name="purple">#3A2671</color> </resources> \ No newline at end of file diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index 5536275..d27d7ee 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -3,7 +3,37 @@ <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> + <item name="colorPrimary">@color/colorPrimary</item> + <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> + + <item name="android:alertDialogTheme">@style/AlertDialogTheme</item> + </style> + + <style name="AlertDialogTheme" parent="Theme.AppCompat.Dialog.Alert"> + <item name="android:buttonBarNegativeButtonStyle">@style/NegativeButtonStyle</item> + <item name="android:buttonBarPositiveButtonStyle">@style/PositiveButtonStyle</item> + <item name="android:fontFamily">@font/jost_normal</item> + <item name="android:textColorPrimary">@color/grey</item> + <item name="android:windowTitleStyle">@style/TitleStyle</item> + </style> + + <style name="NegativeButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog"> + <item name="android:textColor">@color/grey</item> + <item name="android:textSize">18sp</item> + </style> + + <style name="PositiveButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog"> + <item name="android:textColor">@color/orange</item> + <item name="android:textSize">18sp</item> + <item name="android:textStyle">bold</item> + </style> + + <style name="TitleStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog"> + <item name="android:gravity">left</item> + <item name="android:textColor">@color/purple</item> + <item name="android:textSize">22sp</item> + <item name="android:textStyle">bold</item> </style> </resources> From 0c3bfdfced2df2287dace532831dc866d39e7f72 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Tue, 28 Apr 2020 19:50:22 +0200 Subject: [PATCH 48/94] Fix after rebase --- components/chart/chart.js | 4 ++-- components/chart/no-data.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/chart/chart.js b/components/chart/chart.js index 9b6b7c3..c182c92 100644 --- a/components/chart/chart.js +++ b/components/chart/chart.js @@ -3,12 +3,12 @@ import PropTypes from 'prop-types' import { View, FlatList, ActivityIndicator } from 'react-native' import NoData from './no-data' -import AppLoadingView from '../app-loading' +import AppLoadingView from '../common/app-loading' import YAxis from './y-axis' import nfpLines from './nfp-lines' import DayColumn from './day-column' import HorizontalGrid from './horizontal-grid' -import AppText from '../app-text' +import AppText from '../common/app-text' import { connect } from 'react-redux' import { navigate } from '../../slices/navigation' diff --git a/components/chart/no-data.js b/components/chart/no-data.js index efb1ce3..0115114 100644 --- a/components/chart/no-data.js +++ b/components/chart/no-data.js @@ -2,7 +2,7 @@ import React from 'react' import PropTypes from 'prop-types' import { View } from 'react-native' -import AppText from '../app-text' +import AppText from '../common/app-text' import SettingsButton from '../settings/shared/settings-button' import { shared } from '../../i18n/en/labels' From 550b1e63143173e4f3a3bca1f6663a91c7b4b5dc Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Wed, 29 Apr 2020 09:36:00 +0200 Subject: [PATCH 49/94] Post-review updates --- components/header/hamburger-menu.js | 93 +++++++++++++++++++++++++++++ components/header/index.js | 47 +++++---------- components/header/side-menu.js | 82 ------------------------- components/license.js | 10 ++-- components/password-prompt.js | 6 +- components/stats.js | 20 +++---- styles/typography.js | 8 +-- 7 files changed, 126 insertions(+), 140 deletions(-) create mode 100644 components/header/hamburger-menu.js delete mode 100644 components/header/side-menu.js diff --git a/components/header/hamburger-menu.js b/components/header/hamburger-menu.js new file mode 100644 index 0000000..f93dc68 --- /dev/null +++ b/components/header/hamburger-menu.js @@ -0,0 +1,93 @@ +import React, { Component } from 'react' +import { Modal, StyleSheet, TouchableOpacity, View } from 'react-native' + +import AppIcon from '../common/app-icon' +import MenuItem from './menu-item' + +import { Colors, Sizes } from '../../styles/redesign' +import settingsLabels from '../../i18n/en/settings' + +const { menuItems } = settingsLabels + +const settingsMenuItems = [ + { name: menuItems.settings, component: 'SettingsMenu' }, + { name: menuItems.about, component: 'About' }, + { name: menuItems.license, component: 'License' }, +] + +export default class HamburgerMenu extends Component { + + constructor(props) { + super(props) + + this.state = { shouldShowMenu: false } + } + + toggleMenu = () => { + this.setState({ shouldShowMenu: !this.state.shouldShowMenu}) + } + + render() { + const { shouldShowMenu } = this.state + + return( + <React.Fragment> + {!shouldShowMenu && + <TouchableOpacity onPress={this.toggleMenu}> + <AppIcon name='dots-three-vertical' color={Colors.orange}/> + </TouchableOpacity> + } + {shouldShowMenu && + <Modal + animationType='fade' + onRequestClose={this.toggleMenu} + transparent={true} + visible={shouldShowMenu} + > + <TouchableOpacity + onPress={this.toggleMenu} + style={styles.blackBackground} + > + </TouchableOpacity> + <View style={styles.menu}> + <TouchableOpacity + onPress={this.toggleMenu} + style={styles.iconContainer} + > + <AppIcon name='cross' color='black'/> + </TouchableOpacity> + {settingsMenuItems.map(item => + <MenuItem + item={item} + key={item.name} + closeMenu={this.toggleMenu} + /> + )} + </View> + </Modal> + } + </React.Fragment> + ) + } + +} + +const styles = StyleSheet.create({ + blackBackground: { + backgroundColor: 'black', + flex: 1, + opacity: 0.65, + }, + iconContainer: { + alignSelf: 'flex-end', + marginBottom: Sizes.base + }, + menu: { + alignSelf: 'flex-end', + backgroundColor: 'white', + height: '100%', + padding: Sizes.base, + position: 'absolute', + width: '60%' + } +}) diff --git a/components/header/index.js b/components/header/index.js index 5c6d321..9280d90 100644 --- a/components/header/index.js +++ b/components/header/index.js @@ -1,43 +1,24 @@ -import React, { Component } from 'react' +import React from 'react' import { StyleSheet, View } from 'react-native' import PropTypes from 'prop-types' import Logo from './logo' -import SideMenu from './side-menu' +import HamburgerMenu from './hamburger-menu' import { Colors, Containers, Sizes } from '../../styles/redesign' -export default class Header extends Component { - static propTypes = { - isSideMenuEnabled: PropTypes.bool - } +const Header = ({ isSideMenuEnabled }) => { - constructor(props) { - super(props) + return ( + <View style={styles.header}> + <Logo /> + {isSideMenuEnabled && <HamburgerMenu />} + </View > + ) +} - this.state = { shouldShowMenu: false } - } - - toggleMenu = () => { - this.setState({ shouldShowMenu: !this.state.shouldShowMenu}) - } - - render() { - const { isSideMenuEnabled } = this.props - const { shouldShowMenu } = this.state - - return ( - <View style={styles.header}> - <Logo /> - {isSideMenuEnabled && - <SideMenu - shouldShowMenu={shouldShowMenu} - toggleMenu={this.toggleMenu} - /> - } - </View > - ) - } +Header.propTypes = { + isSideMenuEnabled: PropTypes.bool } Header.defaultProps = { @@ -50,4 +31,6 @@ const styles = StyleSheet.create({ padding: Sizes.base, ...Containers.rowContainer } -}) \ No newline at end of file +}) + +export default Header \ No newline at end of file diff --git a/components/header/side-menu.js b/components/header/side-menu.js deleted file mode 100644 index 5c960fc..0000000 --- a/components/header/side-menu.js +++ /dev/null @@ -1,82 +0,0 @@ -import React from 'react' -import { Modal, StyleSheet, TouchableOpacity, View } from 'react-native' -import PropTypes from 'prop-types' - -import AppIcon from '../common/app-icon' -import MenuItem from './menu-item' - -import { Colors, Sizes } from '../../styles/redesign' -import settingsLabels from '../../i18n/en/settings' - -const { menuItems } = settingsLabels - -const settingsMenuItems = [ - { name: menuItems.settings, component: 'SettingsMenu' }, - { name: menuItems.about, component: 'About' }, - { name: menuItems.license, component: 'License' }, -] - -const SideMenu = ({ shouldShowMenu, toggleMenu }) => { - return( - <React.Fragment> - {!shouldShowMenu && - <TouchableOpacity onPress={toggleMenu}> - <AppIcon name='dots-three-vertical' color={Colors.orange}/> - </TouchableOpacity> - } - {shouldShowMenu && - <Modal - animationType='fade' - onRequestClose={toggleMenu} - transparent={true} - visible={shouldShowMenu} - > - <TouchableOpacity - onPress={toggleMenu} - style={styles.blackBackground} - > - </TouchableOpacity> - <View style={styles.menu}> - <TouchableOpacity onPress={toggleMenu} style={styles.iconContainer}> - <AppIcon name='cross' color='black'/> - </TouchableOpacity> - {settingsMenuItems.map(item => - <MenuItem - item={item} - key={item.name} - closeMenu={toggleMenu} - /> - )} - </View> - </Modal> - } - </React.Fragment> - ) -} - -SideMenu.propTypes = { - shouldShowMenu: PropTypes.bool.isRequired, - toggleMenu: PropTypes.func -} - -const styles = StyleSheet.create({ - blackBackground: { - backgroundColor: 'black', - flex: 1, - opacity: 0.65, - }, - iconContainer: { - alignSelf: 'flex-end', - marginBottom: Sizes.base - }, - menu: { - alignSelf: 'flex-end', - backgroundColor: 'white', - height: '100%', - padding: Sizes.base, - position: 'absolute', - width: '60%' - } -}) - -export default SideMenu diff --git a/components/license.js b/components/license.js index 6406824..08384e9 100644 --- a/components/license.js +++ b/components/license.js @@ -22,14 +22,14 @@ export default function License({ setLicense }) { } return ( - <AppPage testID='licensePage'> - <Segment last testID='test' title={labels.title}> - <AppText testID='test'>{labels.text}</AppText> + <AppPage testID="licensePage"> + <Segment last testID="test" title={labels.title}> + <AppText testID="test">{labels.text}</AppText> <View style={styles.container}> - <Button onPress={BackHandler.exitApp} testID='licenseCancelButton'> + <Button onPress={BackHandler.exitApp} testID="licenseCancelButton"> {shared.cancel} </Button> - <Button isCTA onPress={onAcceptLicense} testID='licenseOkButton'> + <Button isCTA onPress={onAcceptLicense} testID="licenseOkButton"> {shared.ok} </Button> </View> diff --git a/components/password-prompt.js b/components/password-prompt.js index 591a50a..0b9b908 100644 --- a/components/password-prompt.js +++ b/components/password-prompt.js @@ -64,7 +64,7 @@ export default class PasswordPrompt extends Component { shared.incorrectPasswordMessage, [{ text: shared.tryAgain, - onPress: this.setPassword(null) + onPress: () => this.setState({ password: null }) }] ) return @@ -72,10 +72,6 @@ export default class PasswordPrompt extends Component { this.props.enableShowApp() } - setPassword = (password) => { - this.setState({ password }) - } - unlockApp = () => { requestHash('check-pw', this.state.password) } diff --git a/components/stats.js b/components/stats.js index 213ae7d..daf1e05 100644 --- a/components/stats.js +++ b/components/stats.js @@ -16,25 +16,23 @@ const image = require('../assets/cycle-icon.png') const Stats = () => { const cycleLengths = cycleModule().getAllCycleLengths() - const atLeastOneCycle = cycleLengths.length >= 1 const numberOfCycles = cycleLengths.length - let cycleData - if (atLeastOneCycle) { - cycleData = getCycleInfo(cycleLengths) - } + const hasAtLeastOneCycle = numberOfCycles >= 1 + const cycleData = hasAtLeastOneCycle ? getCycleInfo(cycleLengths) + : { minimum: '—', maximum: '—', stdDeviation: '—' } const statsData = [ - [atLeastOneCycle ? cycleData.minimum : 0, labels.minLabel], - [atLeastOneCycle ? cycleData.maximum : 0, labels.maxLabel], - [atLeastOneCycle && cycleData.stdDeviation ? cycleData.stdDeviation : '—', labels.stdLabel], + [cycleData.minimum, labels.minLabel], + [cycleData.maximum, labels.maxLabel], + [cycleData.stdDeviation ? cycleData.stdDeviation : '—', labels.stdLabel], [numberOfCycles, labels.basisOfStatsEnd] ] return ( <AppPage> <Segment last style={styles.pageContainer}> <AppText>{labels.cycleLengthExplainer}</AppText> - {!atLeastOneCycle && <AppText>{labels.emptyStats}</AppText>} - {atLeastOneCycle && + {!hasAtLeastOneCycle && <AppText>{labels.emptyStats}</AppText>} + {hasAtLeastOneCycle && <View style={styles.container}> <View style={styles.columnLeft}> <ImageBackground @@ -77,7 +75,7 @@ const styles = StyleSheet.create({ }, accentPurpleGiant: { ...Typography.accentPurpleGiant, - marginVertical: Sizes.giant * (-0.5) + marginVertical: -25 }, accentPurpleHuge: { ...Typography.accentPurpleHuge, diff --git a/styles/typography.js b/styles/typography.js index bfc5173..4034f12 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -12,9 +12,7 @@ export const sizes = { base: 18, subtitle: 22, title: 24, - big: 30, - huge: 40, - giant: 50 + huge: 40 } const title = { @@ -30,12 +28,12 @@ const accentText = { const accentTextBig = { ...accentText, - fontSize: sizes.big, + fontSize: 30, } const accentTextGiant = { ...accentText, - fontSize: sizes.giant, + fontSize: 50, } const accentTextHuge = { From ef16cfd0417284208c23528d61fc575f7d909c01 Mon Sep 17 00:00:00 2001 From: Maria Zadnepryanets <mariya.z@gmail.com> Date: Sat, 1 Aug 2020 11:37:20 +0000 Subject: [PATCH 50/94] Redesign chart --- assets/swipe.png | Bin 0 -> 1115 bytes components/chart/chart-legend.js | 38 ++-- components/chart/chart-line.js | 22 +-- components/chart/chart.js | 172 +++++++++++------ components/chart/cycle-day-label.js | 51 +++-- components/chart/day-column.js | 24 +-- components/chart/dot-and-line.js | 94 ++++++---- components/chart/horizontal-grid.js | 27 ++- components/chart/nfp-lines.js | 85 --------- components/chart/no-data.js | 43 +++-- components/chart/styles.js | 174 ------------------ components/chart/symptom-cell.js | 41 +++-- components/chart/symptom-icon.js | 17 +- components/chart/temperature-column.js | 25 ++- components/chart/tick-list.js | 42 +++-- components/chart/tick.js | 48 +++-- components/chart/tutorial.js | 48 +++++ components/chart/y-axis.js | 14 +- components/common/app-page.js | 32 +++- .../cycle-day/symptoms/temperature-input.js | 5 +- components/helpers/chart.js | 125 +++++++++++-- .../nfp-settings/temperature-slider.js | 8 +- config.js | 57 +++--- i18n/en/labels.js | 4 + local-storage.js | 21 ++- styles/colors.js | 48 +++++ styles/typography.js | 28 ++- 27 files changed, 718 insertions(+), 575 deletions(-) create mode 100644 assets/swipe.png delete mode 100644 components/chart/nfp-lines.js delete mode 100644 components/chart/styles.js create mode 100644 components/chart/tutorial.js diff --git a/assets/swipe.png b/assets/swipe.png new file mode 100644 index 0000000000000000000000000000000000000000..5ddf77a60613ded3ba79eaa9e0cf5274df919d1f GIT binary patch literal 1115 zcmV-h1f=_kP)<h;3K|Lk000e1NJLTq001BW001rs1^@s6NpKs400006VoOIv0RI60 z0RN!9r;`8x1Q1C?K~z|U#n{_#6;%`l@L$WJr2<6+tQaLKqVa-g;)OIS`k;~+qY*D5 zYS0(;!Ng}1jemlPz8Vu_Fa`}VUgHDNMB@dokO);Q3RvV)L`vxus}E~WJ4{dEOnaJs z$z;y#*|XQT*Z%feYahnrHau0Oy&kw2&*I#yp|Q~6W~{;fX(Dh06+DJ>U{>zsjkps( z;r)^WSFivr>6(S%^sWW-@h|$Z8&_c!b~L0;7hyx{)KkU4c6^3~Se*vkgKsf{M{sGb z|9^Nzc=(yrmLI#4#yC((4JQ)gMjT3=^EiyNg*IlT{#Rfb-o{rrnCst<W2tW!np4~H z^nPI?a5Qh^5<HJ5(+5SY#dGOnLN71M393e1i5KuVDtQs^#ye=kgH=9k!(TbpJJWqh z3FGJE{xr^;I9c2U9oVeknuHeN#tb9rUL500_yrp=M2Mk?pVL*u91N5+R>XdxnNgHs zUk?J~P%D83G|eP|=0sv}CJ8Wu9+)#-1gh<VvIK4y39K7m;LkDy$}T}Q4K#}^cOjk- ziDrdJy=R<YJv^`lKO`a>@IdZeAKt~T=_HV)-9dbbb@(6|zXcD8(AzJ<_coC&QGXF0 zO835G><tmJm*70yE4(y1@iH11l4EXc=EJ$Rf6_h6nElu*H1ZNQ;R4)MB+x3{b)QJH z^9ls2h2dVjieGbWL&;bke`9g_y%V2{YG^i5Ff0@5U6F`fj%)FUu>xY12*uwO20!jp zuMmRVQ)p`yRTZ&3tJC;LD?&7VcuiD3OYyKM95><j2|O?nP8ObjOIL;?LKlm%yHS*1 z!@^aBVqZ_QdldJGg0o&xa3tAUL@Yr!+J%cdQ>OvpvU$S&b46{}Q7011MNPQ9F&X^^ zHwist7{q&cS%|Bid7xYJK(-6Eh${AO<F{sy@KilhagXrosIg&uA}ZYWDj)1HwmkK~ zNM<`f+YYf$*BD=FZ#I5wO_e}HkpO%o)_T3<qG>{_2xQ|3^x`d{{`JOkK)ta@ikQ`M zL6>m(QV}8NPXmEA5%f+u9p}-FeYhUirRQRdpDbE%2e#tiL<ES;)``o+(S43MzD*U& zu~O{1!P5~SH1VU*#0?@K?VBQjm7+fQl-lZnVG$Ac;+iQMmy93F9?Bfe4&kgi5SS|$ z)@!W^Gc<`Ze6lfOKxEb|^VUqDS(M$)xYgtnQ+C9wh_dZy!|D5vVy)N-ABw8BSaj5i zMsZ$PC*sY<S~YOB_|M?`DHtbmKqtNy+p)P80!?Dg52WXL!hL1+lgDAP6bot@B<nLM zLg>@!d6)Q~r(Hz0$)Kt1ERNt~QBr3CX^&W%GH4Z5cuj5`N>{H~|E-1hUFj-=HlcwN hwSF+Wq=A~p{2v!E?$a$*+L-_V002ovPDHLkV1fiR0yF>s literal 0 HcmV?d00001 diff --git a/components/chart/chart-legend.js b/components/chart/chart-legend.js index f94609a..1339a57 100644 --- a/components/chart/chart-legend.js +++ b/components/chart/chart-legend.js @@ -1,32 +1,38 @@ import React from 'react' import PropTypes from 'prop-types' -import { View } from 'react-native' +import { StyleSheet, View } from 'react-native' import AppText from '../common/app-text' -import DripHomeIcon from '../../assets/drip-home-icons' - -import styles from './styles' -import { cycleDayColor } from '../../styles' +import { Typography } from '../../styles/redesign' +import { CHART_YAXIS_WIDTH } from '../../config' import { shared as labels } from '../../i18n/en/labels' -const ChartLegend = ({ xAxisHeight }) => { +const ChartLegend = ({ height }) => { return ( - <View style={[styles.yAxis, styles.chartLegend, {height: xAxisHeight}]}> - <DripHomeIcon - name="circle" - size={styles.yAxis.width - 7} - color={cycleDayColor} - /> - <AppText style={styles.yAxisLabels.dateLabel}> - {labels.date.toLowerCase()} - </AppText> + <View style={[styles.container, { height }]}> + <AppText style={styles.textBold}>#</AppText> + <AppText style={styles.text}>{labels.date}</AppText> </View> ) } ChartLegend.propTypes = { - xAxisHeight: PropTypes.number.isRequired + height: PropTypes.number.isRequired } +const styles = StyleSheet.create({ + container: { + alignItems: 'center', + justifyContent: 'flex-end', + width: CHART_YAXIS_WIDTH + }, + text: { + ...Typography.label + }, + textBold: { + ...Typography.labelBold + } +}) + export default ChartLegend diff --git a/components/chart/chart-line.js b/components/chart/chart-line.js index 95300ad..c74d0a1 100644 --- a/components/chart/chart-line.js +++ b/components/chart/chart-line.js @@ -3,20 +3,16 @@ import PropTypes from 'prop-types' import { Shape } from 'react-native/Libraries/ART/ReactNativeART' -import styles from './styles' +import { Colors } from '../../styles/redesign' +import { CHART_STROKE_WIDTH, CHART_GRID_LINE_HORIZONTAL_WIDTH } from '../../config' -const ChartLine = ({ path, isNfpLine = false }) => { - const strokeStyle = - isNfpLine ? styles.nfpLine.stroke : styles.column.stroke.color - const strokeWidth = - isNfpLine ? styles.nfpLine.strokeWidth : styles.column.stroke.width +const ChartLine = ({ path, isNfpLine }) => { + const color = isNfpLine ? Colors.orange : Colors.grey + const width = isNfpLine + ? CHART_STROKE_WIDTH : CHART_GRID_LINE_HORIZONTAL_WIDTH return ( - <Shape - stroke={strokeStyle} - strokeWidth={strokeWidth} - d={path} - /> + <Shape d={path} stroke={color} strokeWidth={width} /> ) } @@ -25,4 +21,8 @@ ChartLine.propTypes = { isNfpLine: PropTypes.bool, } +ChartLine.defaultProps = { + isNfpLine: false +} + export default ChartLine diff --git a/components/chart/chart.js b/components/chart/chart.js index c182c92..5f6039b 100644 --- a/components/chart/chart.js +++ b/components/chart/chart.js @@ -1,26 +1,33 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { View, FlatList, ActivityIndicator } from 'react-native' +import { ActivityIndicator, FlatList, StyleSheet, View } from 'react-native' -import NoData from './no-data' import AppLoadingView from '../common/app-loading' -import YAxis from './y-axis' -import nfpLines from './nfp-lines' +import AppPage from '../common/app-page' +import AppText from '../common/app-text' + import DayColumn from './day-column' import HorizontalGrid from './horizontal-grid' -import AppText from '../common/app-text' +import NoData from './no-data' +import Tutorial from './tutorial' +import YAxis from './y-axis' import { connect } from 'react-redux' import { navigate } from '../../slices/navigation' import { getCycleDaysSortedByDate } from '../../db' import nothingChanged from '../../db/db-unchanged' -import { scaleObservable } from '../../local-storage' -import { makeColumnInfo } from '../helpers/chart' +import { getChartFlag, scaleObservable, setChartFlag } from '../../local-storage' +import { makeColumnInfo, nfpLines } from '../helpers/chart' -import config from '../../config' +import { + CHART_COLUMN_WIDTH, + SYMPTOMS, + CHART_SYMPTOM_HEIGHT_RATIO, + CHART_XAXIS_HEIGHT_RATIO +} from '../../config' import { shared } from '../../i18n/en/labels' -import styles from './styles' +import { Colors, Spacing } from '../../styles/redesign' class CycleChart extends Component { static propTypes = { @@ -36,11 +43,35 @@ class CycleChart extends Component { this.getFhmAndLtlInfo = nfpLines() this.shouldShowTemperatureColumn = false + this.checkShouldShowHint() this.prepareSymptomData() } + componentWillUnmount() { + this.cycleDaysSortedByDate.removeListener(this.handleDbChange) + this.removeObvListener() + } + + checkShouldShowHint = async () => { + const flag = await getChartFlag() + const shouldShowHint = flag === 'true' ? true : false + this.setState({ shouldShowHint }) + } + + setShouldShowHint = async () => { + await setChartFlag() + this.setState({ shouldShowHint: false }) + } + + onLayout = ({ nativeEvent }) => { + if (this.state.chartHeight) return false + + this.reCalculateChartInfo(nativeEvent) + this.updateListeners(this.reCalculateChartInfo) + } + prepareSymptomData = () => { - this.symptomRowSymptoms = config.symptoms.filter((symptomName) => { + this.symptomRowSymptoms = SYMPTOMS.filter((symptomName) => { return this.cycleDaysSortedByDate.some(cycleDay => { return cycleDay[symptomName] }) @@ -71,33 +102,21 @@ class CycleChart extends Component { reCalculateChartInfo = (nativeEvent) => { const { height, width } = nativeEvent.layout - const xAxisCoefficient = this.shouldShowTemperatureColumn ? - config.xAxisHeightPercentage : config.xAxisHeightPercentageLarge - const symptomCoefficient = this.shouldShowTemperatureColumn ? - config.symptomHeightPercentage : config.symptomHeightPercentageLarge - this.xAxisHeight = height * xAxisCoefficient + this.xAxisHeight = height * CHART_XAXIS_HEIGHT_RATIO const remainingHeight = height - this.xAxisHeight - this.symptomHeight = remainingHeight * symptomCoefficient + this.symptomHeight = remainingHeight * CHART_SYMPTOM_HEIGHT_RATIO this.symptomRowHeight = this.symptomRowSymptoms.length * this.symptomHeight this.columnHeight = remainingHeight - this.symptomRowHeight const chartHeight = this.shouldShowTemperatureColumn ? height : (this.symptomRowHeight + this.xAxisHeight) - - const numberOfColumnsToRender = Math.round(width / config.columnWidth) + const numberOfColumnsToRender = Math.round(width / CHART_COLUMN_WIDTH) const columns = makeColumnInfo() this.setState({ columns, chartHeight, numberOfColumnsToRender }) } - onLayout = ({ nativeEvent }) => { - if (this.state.chartHeight) return - - this.reCalculateChartInfo(nativeEvent) - this.updateListeners(this.reCalculateChartInfo) - } - updateListeners(dataUpdateHandler) { // remove existing listeners if(this.handleDbChange) { @@ -114,38 +133,47 @@ class CycleChart extends Component { this.removeObvListener = scaleObservable(dataUpdateHandler, false) } - componentWillUnmount() { - this.cycleDaysSortedByDate.removeListener(this.handleDbChange) - this.removeObvListener() - } - render() { - const { chartHeight, chartLoaded, numberOfColumnsToRender } = this.state - const shouldShowChart = this.chartSymptoms.length > 0 ? true : false + const { + chartHeight, + chartLoaded, + shouldShowHint, + numberOfColumnsToRender + } = this.state + const hasDataToDisplay = this.chartSymptoms.length > 0 return ( - <View onLayout={this.onLayout} style={styles.container}> - {!shouldShowChart && <NoData navigate={this.props.navigate}/>} - {shouldShowChart && !chartHeight && !chartLoaded && <AppLoadingView />} + <AppPage + contentContainerStyle={styles.pageContainer} + onLayout={this.onLayout} + scrollViewStyle={styles.page} + > + {!hasDataToDisplay && <NoData />} + {hasDataToDisplay && !chartHeight && !chartLoaded && <AppLoadingView />} <View style={styles.chartContainer}> - {shouldShowChart && ( + {shouldShowHint && chartLoaded && + <Tutorial onClose={this.setShouldShowHint} /> + } + {hasDataToDisplay && chartLoaded && + !this.shouldShowTemperatureColumn && + <View style={styles.centerItem}> + <AppText style={styles.warning}> + {shared.noTemperatureWarning} + </AppText> + </View> + } + {hasDataToDisplay && ( <View style={styles.chartArea}> {chartHeight && chartLoaded && ( - <React.Fragment> - <YAxis - height={this.columnHeight} - symptomsToDisplay={this.symptomRowSymptoms} - symptomsSectionHeight={this.symptomRowHeight} - shouldShowTemperatureColumn= - {this.shouldShowTemperatureColumn} - xAxisHeight={this.xAxisHeight} - /> - {this.shouldShowTemperatureColumn && (<HorizontalGrid - height={this.columnHeight} - startPosition={this.symptomRowHeight} - />)} - </React.Fragment> + <YAxis + height={this.columnHeight} + symptomsToDisplay={this.symptomRowSymptoms} + symptomsSectionHeight={this.symptomRowHeight} + shouldShowTemperatureColumn= + {this.shouldShowTemperatureColumn} + xAxisHeight={this.xAxisHeight} + /> )} {chartHeight && @@ -162,27 +190,28 @@ class CycleChart extends Component { onEndReached={() => this.setState({end: true})} ListFooterComponent={<LoadingMoreView end={this.state.end}/>} updateCellsBatchingPeriod={800} - contentContainerStyle={{height: chartHeight}} + contentContainerStyle={{ height: chartHeight }} /> } + {chartHeight && chartLoaded && ( + <React.Fragment> + {this.shouldShowTemperatureColumn && + <HorizontalGrid height={this.columnHeight} /> + } + </React.Fragment> + )} </View> )} </View> - {shouldShowChart && chartLoaded && !this.shouldShowTemperatureColumn - && ( - <View style={styles.centerItem}> - <AppText style={{textAlign: 'center'}}>{shared.noTemperatureWarning}</AppText> - </View> - )} - </View> + </AppPage> ) } } function LoadingMoreView({ end }) { return ( - <View style={styles.loadingMore}> - {!end && <ActivityIndicator size={'large'} color={'white'}/>} + <View style={styles.loadingContainer}> + {!end && <ActivityIndicator size={'large'} color={Colors.orange}/>} </View> ) } @@ -191,6 +220,29 @@ LoadingMoreView.propTypes = { end: PropTypes.bool } +const styles = StyleSheet.create({ + chartArea: { + flexDirection: 'row' + }, + chartContainer: { + flexDirection: 'column' + }, + loadingContainer: { + height: '100%', + backgroundColor: Colors.tourquiseLight, + justifyContent: 'center' + }, + page: { + marginVertical: Spacing.small + }, + pageContainer: { + paddingHorizontal: Spacing.base + }, + warning: { + padding: Spacing.large + } +}) + const mapDispatchToProps = (dispatch) => { return({ navigate: (page) => dispatch(navigate(page)), diff --git a/components/chart/cycle-day-label.js b/components/chart/cycle-day-label.js index bb794f4..7378f92 100644 --- a/components/chart/cycle-day-label.js +++ b/components/chart/cycle-day-label.js @@ -1,32 +1,33 @@ import React from 'react' import PropTypes from 'prop-types' - -import { Text, View } from 'react-native' - -import moment from 'moment' +import { StyleSheet, View } from 'react-native' import { LocalDate } from 'js-joda' +import moment from 'moment' + +import AppText from '../common/app-text' -import styles from './styles' import cycleModule from '../../lib/cycle' +import { dateEnding } from '../helpers/home' +import { Containers, Typography } from '../../styles/redesign' const CycleDayLabel = ({ height, date }) => { - const { label } = styles.column const dayDate = LocalDate.parse(date) const cycleDayNumber = cycleModule().getCycleDayNumber(date) const isFirstDayOfMonth = dayDate.dayOfMonth() === 1 - const dateFormatting = isFirstDayOfMonth ? 'MMM' : 'Do' + const dateFormatting = isFirstDayOfMonth ? 'MMM' : 'D' const shortDate = moment(date, "YYYY-MM-DD").format(dateFormatting) - const boldDateLabel = isFirstDayOfMonth ? {fontWeight: 'bold'} : {} + const ending = isFirstDayOfMonth ? + '' : dateEnding[this.cycleDayNumber] || dateEnding['default'] + const cycleDayLabel = cycleDayNumber ? cycleDayNumber : ' ' return ( - <View style={[styles.chartLegend, { height }]}> - <Text style={label.number}> - {cycleDayNumber ? cycleDayNumber : ' '} - </Text> - <Text style={[label.date, boldDateLabel]}> - {shortDate} - </Text> + <View style={[styles.container, { height }]}> + <AppText style={styles.textBold}>{cycleDayLabel}</AppText> + <View style={{flexDirection: 'row', justifyContent: 'space-around', alignItems: 'center'}}> + <AppText style={styles.text}>{shortDate}</AppText> + <AppText style={styles.textLight}>{ending}</AppText> + </View> </View> ) } @@ -36,4 +37,24 @@ CycleDayLabel.propTypes = { date: PropTypes.string, } +const styles = StyleSheet.create({ + container: { + alignItems: 'flex-start', + justifyContent: 'flex-end', + left: 4, + }, + containerRow: { + ...Containers.rowContainer + }, + text: { + ...Typography.label + }, + textBold: { + ...Typography.labelBold + }, + textLight: { + ...Typography.labelLight + } +}) + export default CycleDayLabel diff --git a/components/chart/day-column.js b/components/chart/day-column.js index efefe2e..c5429a0 100644 --- a/components/chart/day-column.js +++ b/components/chart/day-column.js @@ -92,6 +92,18 @@ class DayColumn extends Component { activeOpacity={1} > + {shouldShowTemperatureColumn && <TemperatureColumn + horizontalLinePosition={this.fhmAndLtl.drawLtlAt} + isVerticalLine={this.fhmAndLtl.drawFhmLine} + data={this.data && this.data.temperature} + columnHeight={columnHeight} + />} + + <CycleDayLabel + height={xAxisHeight} + date={dateString} + /> + { symptomRowSymptoms.map(symptom => { const hasSymptomData = this.data.hasOwnProperty(symptom) return ( @@ -107,18 +119,6 @@ class DayColumn extends Component { } )} - {shouldShowTemperatureColumn && <TemperatureColumn - horizontalLinePosition={this.fhmAndLtl.drawLtlAt} - isVerticalLine={this.fhmAndLtl.drawFhmLine} - data={this.data && this.data.temperature} - columnHeight={columnHeight} - />} - - <CycleDayLabel - height={xAxisHeight} - date={dateString} - /> - </TouchableOpacity> ) } diff --git a/components/chart/dot-and-line.js b/components/chart/dot-and-line.js index be5be85..f7da601 100644 --- a/components/chart/dot-and-line.js +++ b/components/chart/dot-and-line.js @@ -2,8 +2,14 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import { Path, Shape } from 'react-native/Libraries/ART/ReactNativeART' -import styles from './styles' -import config from '../../config' +import { Colors } from '../../styles/redesign' + +import { + CHART_COLUMN_WIDTH, + CHART_COLUMN_MIDDLE, + CHART_DOT_RADIUS, + CHART_STROKE_WIDTH +} from '../../config' export default class DotAndLine extends Component { static propTypes = { @@ -20,48 +26,56 @@ export default class DotAndLine extends Component { } render() { - const y = this.props.y - const exclude = this.props.exclude - let lineToRight - let lineToLeft + const { + exclude, + leftTemperatureExclude, + leftY, + rightTemperatureExclude, + rightY, + y + } = this.props + let excludeLeftLine, excludeRightLine, lineLeft, lineRight - if (this.props.leftY) { - const middleY = ((this.props.leftY - y) / 2) + y - const excludedLine = this.props.leftTemperatureExclude || exclude - lineToLeft = makeLine(y, middleY, 0, excludedLine) + if (leftY) { + const middleY = ((leftY - y) / 2) + y + excludeLeftLine = leftTemperatureExclude || exclude + lineLeft = new Path() + .moveTo(CHART_COLUMN_MIDDLE - CHART_DOT_RADIUS, y) + .lineTo(0, middleY) } - if (this.props.rightY) { - const middleY = ((y - this.props.rightY) / 2) + this.props.rightY - const excludedLine = this.props.rightTemperatureExclude || exclude - lineToRight = makeLine(y, middleY, config.columnWidth, excludedLine) + if (rightY) { + const middleY = ((y - rightY) / 2) + rightY + excludeRightLine = rightTemperatureExclude || exclude + lineRight = new Path() + .moveTo(CHART_COLUMN_MIDDLE + CHART_DOT_RADIUS, y) + .lineTo(CHART_COLUMN_WIDTH, middleY) } - const dotStyle = exclude ? styles.curveDotsExcluded : styles.curveDots - const radius = dotStyle.r - const dot = ( - <Shape - d={new Path() - .moveTo(config.columnMiddle, y - radius) - .arc(0, radius * 2, radius) - .arc(0, radius * -2, radius) - } - fill={dotStyle.fill} - key='dot' - /> + const dot = new Path().moveTo(CHART_COLUMN_MIDDLE , y - CHART_DOT_RADIUS) + .arc(0, CHART_DOT_RADIUS * 2, CHART_DOT_RADIUS) + .arc(0, CHART_DOT_RADIUS * -2, CHART_DOT_RADIUS) + const dotColor = exclude ? Colors.tourquise : Colors.tourquiseDark + const lineColorLeft = excludeLeftLine ? + Colors.tourquise : Colors.tourquiseDark + const lineColorRight = excludeRightLine ? + Colors.tourquise : Colors.tourquiseDark + + return( + <React.Fragment> + <Shape + d={lineLeft} + stroke={lineColorLeft} + strokeWidth={CHART_STROKE_WIDTH} + key={y} + /> + <Shape + d={lineRight} + stroke={lineColorRight} + strokeWidth={CHART_STROKE_WIDTH} + key={y + CHART_DOT_RADIUS} + /> + <Shape d={dot} stroke={dotColor} strokeWidth={CHART_STROKE_WIDTH} key='dot' /> + </React.Fragment> ) - return [lineToLeft, lineToRight, dot] } } - -function makeLine(currY, middleY, x, excludeLine) { - const lineStyle = excludeLine ? styles.curveExcluded : styles.curve - - return <Shape - stroke={lineStyle.stroke} - d={new Path() - .moveTo(config.columnMiddle, currY) - .lineTo(x, middleY) - } - key={x.toString()} - /> -} \ No newline at end of file diff --git a/components/chart/horizontal-grid.js b/components/chart/horizontal-grid.js index e7cf7cc..ddbbe53 100644 --- a/components/chart/horizontal-grid.js +++ b/components/chart/horizontal-grid.js @@ -1,26 +1,33 @@ import React from 'react' import PropTypes from 'prop-types' -import { View } from 'react-native' +import { StyleSheet, View } from 'react-native' import { getTickPositions } from '../helpers/chart' -import styles from './styles' +import { Colors } from '../../styles/redesign' +import { CHART_GRID_LINE_HORIZONTAL_WIDTH, CHART_YAXIS_WIDTH } from '../../config' -const HorizontalGrid = ({ height, startPosition }) => { +const HorizontalGrid = ({ height }) => { return getTickPositions(height).map(tick => { return ( - <View - top={startPosition + tick} - {...styles.horizontalGrid} - key={tick} - /> + <View key={tick} top={tick} {...styles.line}/> ) }) } HorizontalGrid.propTypes = { - height: PropTypes.number, - startPosition: PropTypes.number, + height: PropTypes.number } +const styles = StyleSheet.create({ + line: { + borderStyle: 'solid', + borderBottomColor: Colors.grey, + borderBottomWidth: CHART_GRID_LINE_HORIZONTAL_WIDTH, + left: CHART_YAXIS_WIDTH, + position:'absolute', + right: 0 + } +}) + export default HorizontalGrid diff --git a/components/chart/nfp-lines.js b/components/chart/nfp-lines.js deleted file mode 100644 index 853dde5..0000000 --- a/components/chart/nfp-lines.js +++ /dev/null @@ -1,85 +0,0 @@ -import { getCycleStatusForDay } from '../../lib/sympto-adapter' -import { normalizeToScale } from '../helpers/chart' - -export default function () { - const cycle = { - status: null - } - - function updateCurrentCycle(dateString) { - // for the NFP lines, we don't care about potentially extending the - // preOvu phase, so we don't include all earlier cycles, as that is - // an expensive db operation at the moment - cycle.status = getCycleStatusForDay( - dateString, { excludeEarlierCycles: true } - ) - if(!cycle.status) { - cycle.noMoreCycles = true - return - } - if (cycle.status.phases.preOvulatory) { - cycle.startDate = cycle.status.phases.preOvulatory.start.date - } else { - cycle.startDate = cycle.status.phases.periOvulatory.start.date - } - } - - function dateIsInPeriOrPostPhase(dateString) { - return ( - dateString >= cycle.status.phases.periOvulatory.start.date - ) - } - - function precededByAnotherTempValue(dateString) { - return ( - // we are only interested in days that have a preceding - // temp - Object.keys(cycle.status.phases).some(phaseName => { - return cycle.status.phases[phaseName].cycleDays.some(day => { - return day.temperature && day.date < dateString - }) - }) - // and also a following temp, so we don't draw the line - // longer than necessary - && - cycle.status.phases.postOvulatory.cycleDays.some(day => { - return day.temperature && day.date > dateString - }) - ) - } - - function isInTempMeasuringPhase(temperature, dateString) { - return ( - temperature || precededByAnotherTempValue(dateString) - ) - } - - return function(dateString, temperature, columnHeight) { - const ret = { - drawLtlAt: null, - drawFhmLine: false - } - if (!cycle.status && !cycle.noMoreCycles) updateCurrentCycle(dateString) - if (cycle.noMoreCycles) return ret - - if (dateString < cycle.startDate) updateCurrentCycle(dateString) - if (cycle.noMoreCycles) return ret - - const tempShift = cycle.status.temperatureShift - - if (tempShift) { - if (tempShift.firstHighMeasurementDay.date === dateString) { - ret.drawFhmLine = true - } - - if ( - dateIsInPeriOrPostPhase(dateString) && - isInTempMeasuringPhase(temperature, dateString) - ) { - ret.drawLtlAt = normalizeToScale(tempShift.ltl, columnHeight) - } - } - - return ret - } -} \ No newline at end of file diff --git a/components/chart/no-data.js b/components/chart/no-data.js index 0115114..5044b18 100644 --- a/components/chart/no-data.js +++ b/components/chart/no-data.js @@ -1,31 +1,44 @@ import React from 'react' +import { StyleSheet, View } from 'react-native' import PropTypes from 'prop-types' -import { View } from 'react-native' import AppText from '../common/app-text' -import SettingsButton from '../settings/shared/settings-button' +import Button from '../common/button' +import { connect } from 'react-redux' +import { navigate } from '../../slices/navigation' + +import { Containers } from '../../styles/redesign' import { shared } from '../../i18n/en/labels' -import styles from './styles' const NoData = ({ navigate }) => { return ( - <View flex={1}> - <View style={styles.centerItem}> - <AppText>{shared.noDataWarning}</AppText> - <SettingsButton - onPress={() => {navigate('CycleDay')}} - style={{marginHorizontal: 40}} - > - {shared.noDataButtonText} - </SettingsButton> - </View> + <View style={styles.container}> + <AppText>{shared.noDataWarning}</AppText> + <Button isCTA onPress={() => {navigate('CycleDay')}}> + {shared.noDataButtonText} + </Button> </View> ) } NoData.propTypes = { - navigate: PropTypes.func, + navigate: PropTypes.func.isRequired, } -export default NoData \ No newline at end of file +const styles = StyleSheet.create({ + container: { + ...Containers.centerItems + } +}) + +const mapDispatchToProps = (dispatch) => { + return({ + navigate: (page) => dispatch(navigate(page)), + }) +} + +export default connect( + null, + mapDispatchToProps, +)(NoData) \ No newline at end of file diff --git a/components/chart/styles.js b/components/chart/styles.js deleted file mode 100644 index fba4df1..0000000 --- a/components/chart/styles.js +++ /dev/null @@ -1,174 +0,0 @@ -import config from '../../config' -import { shadesOfRed, cycleDayColor } from '../../styles/index' - -const colorTemperature = '#765285' -const colorTemperatureLight = '#a67fb5' -export const dotRadius = 5 -const lineWidth = 1.5 -const colorLtl = '#feb47b' -const gridColor = '#d3d3d3' -const gridLineWidthVertical = 0.6 -const gridLineWidthHorizontal = 0.3 -const numberLabelFontSize = 13 - -const redColor = '#c3000d' -const violetColor = '#6a7b98' -const shadesOfViolet = ['#e3e7ed', '#c8cfdc', '#acb8cb', '#91a0ba', '#7689a9', violetColor] // light to dark -const yellowColor = '#dbb40c' -const shadesOfYellow = ['#f0e19d', '#e9d26d', '#e2c33c', yellowColor] // light to dark -const magentaColor = '#6f2565' -const shadesOfMagenta = ['#a87ca2', '#8b5083', magentaColor] // light to dark -const pinkColor = '#9e346c' -const shadesOfPink = ['#c485a6', '#b15c89', pinkColor] // light to dark -const lightGreenColor = '#bccd67' -const orangeColor = '#bc6642' -const mintColor = '#6ca299' - -const styles = { - container: { flex: 1 }, - chartContainer: { flexDirection: 'column' }, - chartArea: { flexDirection: 'row' }, - centerItem: { - flex:1, - alignItems: 'center', - justifyContent: 'center', - marginHorizontal: 25, - }, - curve: { - stroke: colorTemperature, - strokeWidth: lineWidth, - }, - curveExcluded: { - stroke: colorTemperatureLight, - strokeWidth: lineWidth - }, - curveDots: { - fill: colorTemperature, - r: dotRadius - }, - curveDotsExcluded: { - fill: colorTemperatureLight, - r: dotRadius - }, - column: { - label: { - date: { - color: 'grey', - fontSize: 9, - fontWeight: '100', - textAlign: 'center', - paddingTop: 2.5 - }, - number: { - color: cycleDayColor, - fontSize: numberLabelFontSize, - textAlign: 'center', - } - }, - stroke: { - color: gridColor, - width: gridLineWidthVertical, - } - }, - symptomDot: { - width: 12, - height: 12, - borderRadius: 50, - }, - iconColors: { - 'bleeding': { - color: redColor, - shades: shadesOfRed, - }, - 'mucus': { - color: violetColor, - shades: shadesOfViolet, - }, - 'cervix': { - color: yellowColor, - shades: shadesOfYellow, - }, - 'sex': { - color: magentaColor, - shades: shadesOfMagenta, - }, - 'desire': { - color: pinkColor, - shades: shadesOfPink, - }, - 'pain': { - color: lightGreenColor, - shades: [lightGreenColor], - }, - 'mood': { - color: orangeColor, - shades: [orangeColor], - }, - 'note': { - color: mintColor, - shades: [mintColor], - }, - }, - yAxis: { - width: 27, - borderRightWidth: 1, - borderColor: 'lightgrey', - borderStyle: 'solid' - }, - yAxisLabels: { - tempScale: { - position: 'absolute', - right: 2, - color: 'grey', - fontSize: 9, - textAlign: 'left' - }, - cycleDayLabel: { - textAlign: 'center', - justifyContent: 'center', - fontSize: Math.ceil(numberLabelFontSize / 2) - }, - dateLabel: { - textAlign: 'center', - justifyContent: 'center', - color: 'grey', - fontSize: 9, - fontWeight: '100', - } - }, - symptomIcon: { - alignItems: 'center', - justifyContent: 'center', - }, - chartLegend: { - alignItems: 'center', - justifyContent: 'flex-end', - }, - boldTick: { - fontWeight: 'bold', - fontSize: 11, - }, - horizontalGrid: { - position:'absolute', - borderStyle: 'solid', - borderBottomColor: gridColor, - borderBottomWidth: gridLineWidthHorizontal, - width: '100%', - left: config.columnWidth - }, - nfpLine: { - stroke: colorLtl, - strokeWidth: lineWidth, - }, - symptomRow: { - alignItems: 'center', - justifyContent: 'center', - }, - loadingMore: { - height: '100%', - backgroundColor: 'lightgrey', - justifyContent: 'center' - } -} - -export default styles \ No newline at end of file diff --git a/components/chart/symptom-cell.js b/components/chart/symptom-cell.js index 4b1124c..23d1667 100644 --- a/components/chart/symptom-cell.js +++ b/components/chart/symptom-cell.js @@ -1,9 +1,13 @@ import React from 'react' import PropTypes from 'prop-types' -import { View } from 'react-native' +import { StyleSheet, View } from 'react-native' -import styles from './styles' -import config from '../../config' +import { Colors, Containers } from '../../styles/redesign' +import { + CHART_COLUMN_WIDTH, + CHART_DOT_RADIUS, + CHART_GRID_LINE_HORIZONTAL_WIDTH +} from '../../config' const SymptomCell = ({ height, @@ -13,29 +17,23 @@ const SymptomCell = ({ }) => { const shouldDrawDot = symptomValue !== false - const styleParent = [styles.symptomRow, { height, width: config.columnWidth }] - let styleChild + const styleCell = [styles.cell, { height, width: CHART_COLUMN_WIDTH }] + let styleDot if (shouldDrawDot) { - const styleSymptom = styles.iconColors[symptom] + const styleSymptom = Colors.iconColors[symptom] const symptomColor = styleSymptom.shades[symptomValue] - const isMucusOrCervix = (symptom === 'mucus') || (symptom === 'cervix') - const backgroundColor = (isMucusOrCervix && !isSymptomDataComplete) ? 'white' : symptomColor const borderWidth = (isMucusOrCervix && !isSymptomDataComplete) ? 2 : 0 const borderColor = symptomColor - styleChild = [styles.symptomDot, { - backgroundColor, - borderColor, - borderWidth - }] + styleDot = [styles.dot, { backgroundColor, borderColor, borderWidth }] } return ( - <View style={styleParent} key={symptom}> - {shouldDrawDot && <View style={styleChild} />} + <View style={styleCell} key={symptom}> + {shouldDrawDot && <View style={styleDot} />} </View> ) } @@ -50,4 +48,17 @@ SymptomCell.propTypes = { isSymptomDataComplete: PropTypes.bool, } +const styles = StyleSheet.create({ + cell: { + backgroundColor: 'white', + borderColor: Colors.greyLight, + borderWidth: CHART_GRID_LINE_HORIZONTAL_WIDTH, + ...Containers.centerItems + }, + dot: { + width: CHART_DOT_RADIUS * 2, + height: CHART_DOT_RADIUS * 2, + borderRadius: 50 + } +}) export default SymptomCell diff --git a/components/chart/symptom-icon.js b/components/chart/symptom-icon.js index 3236c3b..849283d 100644 --- a/components/chart/symptom-icon.js +++ b/components/chart/symptom-icon.js @@ -1,18 +1,19 @@ import React from 'react' import PropTypes from 'prop-types' -import { View } from 'react-native' +import { StyleSheet , View } from 'react-native' import DripIcon from '../../assets/drip-icons' -import styles from './styles' +import { Colors, Containers } from '../../styles/redesign' +import { CHART_YAXIS_WIDTH, CHART_ICON_SIZE } from '../../config' const SymptomIcon = ({ symptom, height }) => { return ( - <View style={styles.symptomIcon} width={styles.yAxis.width} height={height}> + <View style={styles.container} width={CHART_YAXIS_WIDTH} height={height}> <DripIcon - size={16} + size={CHART_ICON_SIZE} name={`drip-icon-${symptom}`} - color={styles.iconColors[symptom].color} + color={Colors.iconColors[symptom].color} /> </View> ) @@ -23,4 +24,10 @@ SymptomIcon.propTypes = { symptom: PropTypes.string, } +const styles = StyleSheet.create({ + container: { + ...Containers.centerItems + } +}) + export default SymptomIcon diff --git a/components/chart/temperature-column.js b/components/chart/temperature-column.js index fab3d97..18f36bf 100644 --- a/components/chart/temperature-column.js +++ b/components/chart/temperature-column.js @@ -1,13 +1,13 @@ import React from 'react' import PropTypes from 'prop-types' +import { StyleSheet } from 'react-native' import { Surface , Path } from 'react-native/Libraries/ART/ReactNativeART' import ChartLine from './chart-line' import DotAndLine from './dot-and-line' -import styles from './styles' -import config from '../../config' +import { CHART_COLUMN_WIDTH, CHART_STROKE_WIDTH } from '../../config' const TemperatureColumn = ({ horizontalLinePosition, @@ -15,20 +15,21 @@ const TemperatureColumn = ({ data, columnHeight }) => { - - const x = styles.nfpLine.strokeWidth / 2 + const x = CHART_STROKE_WIDTH / 2 return ( - <Surface width={config.columnWidth} height={columnHeight}> + <Surface + width={CHART_COLUMN_WIDTH} + height={columnHeight} + style={styles.container} + > - <ChartLine - path={new Path().lineTo(0, columnHeight)} - /> + <ChartLine path={new Path().lineTo(0, columnHeight)}/> {horizontalLinePosition && <ChartLine path={new Path() .moveTo(0, horizontalLinePosition) - .lineTo(config.columnWidth, horizontalLinePosition) + .lineTo(CHART_COLUMN_WIDTH, horizontalLinePosition) } isNfpLine={true} key='ltl' @@ -61,4 +62,10 @@ TemperatureColumn.propTypes = { columnHeight: PropTypes.number, } +const styles = StyleSheet.create({ + container: { + backgroundColor: 'white' + } +}) + export default TemperatureColumn diff --git a/components/chart/tick-list.js b/components/chart/tick-list.js index 16fba0a..63af7da 100644 --- a/components/chart/tick-list.js +++ b/components/chart/tick-list.js @@ -1,29 +1,31 @@ import React from 'react' import PropTypes from 'prop-types' -import { View } from 'react-native' +import { StyleSheet, View } from 'react-native' import Tick from './tick' import { getTickList } from '../helpers/chart' -import styles from './styles' - const TickList = ({ height }) => { + return ( - <View style={[styles.yAxis, { height }]}>{ - getTickList(height) - .map(({ label, position, isBold, shouldShowLabel}) => { - return ( - <Tick - key={label} - yPosition={position} - isBold={isBold} - shouldShowLabel={shouldShowLabel} - label={label} - /> - ) - }) - }</View> + <View style={[styles.container, height]}> + { + getTickList(height) + .map(({ isBold, label, position, shouldShowLabel, tickHeight}) => { + return ( + <Tick + height={tickHeight} + isBold={isBold} + key={label} + label={label} + shouldShowLabel={shouldShowLabel} + yPosition={position} + /> + ) + }) + } + </View> ) } @@ -31,4 +33,10 @@ TickList.propTypes = { height: PropTypes.number, } +const styles = StyleSheet.create({ + container: { + flex: 1 + } +}) + export default TickList diff --git a/components/chart/tick.js b/components/chart/tick.js index 4dc6b28..01b260d 100644 --- a/components/chart/tick.js +++ b/components/chart/tick.js @@ -1,29 +1,53 @@ import React from 'react' +import { StyleSheet, View } from 'react-native' import PropTypes from 'prop-types' import AppText from '../common/app-text' -import styles from './styles' +import { Sizes } from '../../styles/redesign' -const Tick = ({ yPosition, isBold, shouldShowLabel, label }) => { - // this eyeballing is sadly necessary because RN does not - // support percentage values for transforms, which we'd need - // to reliably place the label vertically centered to the grid - const topPosition = yPosition - 8 - const style = [ - styles.yAxisLabels.tempScale, - {top: topPosition}, - isBold && styles.boldTick - ] +const Tick = ({ yPosition, height, isBold, shouldShowLabel, label }) => { + const top = yPosition - height / 2 + const containerStyle = [ styles.container, { flexBasis: height, height, top }] + const textStyle = isBold ? styles.textBold : styles.textNormal - return <AppText style={style}>{shouldShowLabel && label}</AppText> + return( + <View style={containerStyle}> + <AppText style={textStyle}>{shouldShowLabel && label}</AppText> + </View> + ) } Tick.propTypes = { yPosition: PropTypes.number, + height: PropTypes.number.isRequired, isBold: PropTypes.bool, shouldShowLabel: PropTypes.bool, label: PropTypes.string, } + +const text = { + right: 4, + lineHeight: Sizes.base, + textAlign: 'right', + textAlignVertical: 'center' +} +const styles = StyleSheet.create({ + container: { + position: 'absolute', + right: 0, + width: 40 + }, + textBold: { + fontSize: Sizes.base, + fontWeight: 'bold', + ...text + }, + textNormal: { + fontSize: Sizes.small, + ...text + } +}) + export default Tick diff --git a/components/chart/tutorial.js b/components/chart/tutorial.js new file mode 100644 index 0000000..49dec5c --- /dev/null +++ b/components/chart/tutorial.js @@ -0,0 +1,48 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { Image, StyleSheet, TouchableOpacity, View } from 'react-native' + +import AppIcon from '../common/app-icon' +import AppText from '../common/app-text' + +import { Colors, Containers, Sizes, Spacing } from '../../styles/redesign' +import { chart } from '../../i18n/en/labels' + +const image = require('../../assets/swipe.png') + +const Tutorial = ({ onClose }) => { + return ( + <View style={styles.container}> + <Image resizeMode='contain' source={image} style={styles.image} /> + <View style={styles.textContainer}> + <AppText>{chart.tutorial}</AppText> + </View> + <TouchableOpacity onPress={onClose} style={styles.iconContainer}> + <AppIcon name='cross' color={Colors.orange} /> + </TouchableOpacity> + </View> + ) +} + +Tutorial.propTypes = { + onClose: PropTypes.func.isRequired +} + +const styles = StyleSheet.create({ + container: { + ...Containers.rowContainer, + padding: Spacing.large + }, + iconContainer: { + alignSelf: 'flex-start', + marginBottom: Sizes.base + }, + image: { + height: 40 + }, + textContainer: { + width: '70%' + } +}) + +export default Tutorial \ No newline at end of file diff --git a/components/chart/y-axis.js b/components/chart/y-axis.js index db27e10..c9e13f2 100644 --- a/components/chart/y-axis.js +++ b/components/chart/y-axis.js @@ -1,12 +1,12 @@ import React from 'react' import PropTypes from 'prop-types' -import { View } from 'react-native' +import { StyleSheet, View } from 'react-native' import SymptomIcon from './symptom-icon' import TickList from './tick-list' import ChartLegend from './chart-legend' -import styles from './styles' +import { CHART_YAXIS_WIDTH } from '../../config' const YAxis = ({ height, @@ -19,6 +19,8 @@ const YAxis = ({ return ( <View> + {shouldShowTemperatureColumn && <TickList height={height} />} + <ChartLegend height={xAxisHeight} /> <View style={[styles.yAxis, {height: symptomsSectionHeight}]}> {symptomsToDisplay.map(symptom => ( <SymptomIcon @@ -29,8 +31,6 @@ const YAxis = ({ ) )} </View> - {shouldShowTemperatureColumn && <TickList height={height} />} - <ChartLegend xAxisHeight={xAxisHeight} /> </View> ) } @@ -43,4 +43,10 @@ YAxis.propTypes = { xAxisHeight: PropTypes.number.isRequired } +const styles = StyleSheet.create({ + yAxis: { + width: CHART_YAXIS_WIDTH + } +}) + export default YAxis diff --git a/components/common/app-page.js b/components/common/app-page.js index a9559dc..87910dd 100644 --- a/components/common/app-page.js +++ b/components/common/app-page.js @@ -1,26 +1,36 @@ import React from 'react' import PropTypes from 'prop-types' -import { ScrollView, StyleSheet } from 'react-native' +import { ScrollView, StyleSheet, View } from 'react-native' import AppText from '../common/app-text' import { Colors, Typography } from '../../styles/redesign' -const AppPage = ({ children, contentContainerStyle, title }) => { +const AppPage = ({ + children, + contentContainerStyle, + scrollViewStyle, + title, + ...props +}) => { return( - <ScrollView - style={styles.container} - contentContainerStyle={contentContainerStyle} - > - {title && <AppText style={styles.title}>{title}</AppText>} - {children} - </ScrollView> + <View style={styles.container}> + <ScrollView + contentContainerStyle={[styles.scrollView, contentContainerStyle]} + style={scrollViewStyle} + {...props} + > + {title && <AppText style={styles.title}>{title}</AppText>} + {children} + </ScrollView> + </View> ) } AppPage.propTypes = { children: PropTypes.node, contentContainerStyle: PropTypes.object, + scrollViewStyle: PropTypes.object, title: PropTypes.string } @@ -29,6 +39,10 @@ const styles = StyleSheet.create({ backgroundColor: Colors.tourquiseLight, flex: 1 }, + scrollView: { + backgroundColor: Colors.tourquiseLight, + flexGrow: 1 + }, title: { ...Typography.title } diff --git a/components/cycle-day/symptoms/temperature-input.js b/components/cycle-day/symptoms/temperature-input.js index c333e77..fad6da7 100644 --- a/components/cycle-day/symptoms/temperature-input.js +++ b/components/cycle-day/symptoms/temperature-input.js @@ -11,7 +11,7 @@ import styles from '../../../styles' import { getPreviousTemperature } from '../../../db' import { scaleObservable } from '../../../local-storage' -import config from '../../../config' +import { TEMP_MAX, TEMP_MIN } from '../../../config' export default class TemperatureInput extends Component { @@ -86,8 +86,7 @@ const OutOfRangeWarning = ({ temperature }) => { } const value = Number(temperature) - const { min, max } = config.temperatureScale - const range = { min, max } + const range = { min: TEMP_MIN, max: TEMP_MAX } const scale = scaleObservable.value let warningMsg diff --git a/components/helpers/chart.js b/components/helpers/chart.js index dac2faf..245df1f 100644 --- a/components/helpers/chart.js +++ b/components/helpers/chart.js @@ -1,10 +1,9 @@ import { LocalDate } from 'js-joda' import { scaleObservable, unitObservable } from '../../local-storage' +import { getCycleStatusForDay } from '../../lib/sympto-adapter' import { getCycleDay, getAmountOfCycleDays } from '../../db' -import config from '../../config' - //YAxis helpers export function normalizeToScale(temp, columnHeight) { @@ -14,17 +13,21 @@ export function normalizeToScale(temp, columnHeight) { } function getAbsoluteValue(relative, columnHeight) { - // we add some height to have some breathing room - const verticalPadding = columnHeight * config.temperatureScale.verticalPadding - const scaleHeight = columnHeight - 2 * verticalPadding - return scaleHeight * relative + verticalPadding + return columnHeight * relative +} + +function getTickConfig() { + const unit = unitObservable.value + //Add 1 tick above the max value to display on chart + const scaleMax = scaleObservable.value.max + unit + const scaleMin = scaleObservable.value.min - unit + const numberOfTicks = (scaleMax - scaleMin) / unit + 1 + + return { numberOfTicks, scaleMax, scaleMin, unit } } export function getTickPositions(columnHeight) { - const units = unitObservable.value - const scaleMin = scaleObservable.value.min - const scaleMax = scaleObservable.value.max - const numberOfTicks = (scaleMax - scaleMin) * (1 / units) + 1 + const { numberOfTicks } = getTickConfig() const tickDistance = 1 / (numberOfTicks - 1) const tickPositions = [] for (let i = 0; i < numberOfTicks; i++) { @@ -35,13 +38,12 @@ export function getTickPositions(columnHeight) { } export function getTickList(columnHeight) { - - const units = unitObservable.value - const scaleMax = scaleObservable.value.max + const { numberOfTicks, scaleMax, unit } = getTickConfig() + const tickHeight = columnHeight / numberOfTicks return getTickPositions(columnHeight).map((tickPosition, i) => { - const tick = scaleMax - i * units + const tick = scaleMax - i * unit let isBold, label, shouldShowLabel if (Number.isInteger(tick)) { @@ -52,10 +54,10 @@ export function getTickList(columnHeight) { label = tick.toString() } - // when temp range <= 3, units === 0.1 we show temp values with step 0.2 - // when temp range > 3, units === 0.5 we show temp values with step 0.5 + // when temp range <= 2, units === 0.1 we show temp values with step 0.2 + // when temp range > 2, units === 0.5 we show temp values with step 0.5 - if (units === 0.1) { + if (unit === 0.1) { // show label with step 0.2 shouldShowLabel = !(tick * 10 % 2) } else { @@ -63,11 +65,17 @@ export function getTickList(columnHeight) { shouldShowLabel = !(tick * 10 % 5) } + // don't show label, if first or last tick + if ( i === 0 || i === (numberOfTicks - 1) ) { + shouldShowLabel = false + } + return { position: tickPosition, label, isBold, shouldShowLabel, + tickHeight } }) } @@ -201,4 +209,87 @@ function getTodayAndPreviousDays(n) { } return getDaysInRange(today, []) +} + +export function nfpLines() { + const cycle = { + status: null + } + + function updateCurrentCycle(dateString) { + // for the NFP lines, we don't care about potentially extending the + // preOvu phase, so we don't include all earlier cycles, as that is + // an expensive db operation at the moment + cycle.status = getCycleStatusForDay( + dateString, { excludeEarlierCycles: true } + ) + if(!cycle.status) { + cycle.noMoreCycles = true + return + } + if (cycle.status.phases.preOvulatory) { + cycle.startDate = cycle.status.phases.preOvulatory.start.date + } else { + cycle.startDate = cycle.status.phases.periOvulatory.start.date + } + } + + function dateIsInPeriOrPostPhase(dateString) { + return ( + dateString >= cycle.status.phases.periOvulatory.start.date + ) + } + + function precededByAnotherTempValue(dateString) { + return ( + // we are only interested in days that have a preceding + // temp + Object.keys(cycle.status.phases).some(phaseName => { + return cycle.status.phases[phaseName].cycleDays.some(day => { + return day.temperature && day.date < dateString + }) + }) + // and also a following temp, so we don't draw the line + // longer than necessary + && + cycle.status.phases.postOvulatory.cycleDays.some(day => { + return day.temperature && day.date > dateString + }) + ) + } + + function isInTempMeasuringPhase(temperature, dateString) { + return ( + temperature || precededByAnotherTempValue(dateString) + ) + } + + return function(dateString, temperature, columnHeight) { + const ret = { + drawLtlAt: null, + drawFhmLine: false + } + if (!cycle.status && !cycle.noMoreCycles) updateCurrentCycle(dateString) + if (cycle.noMoreCycles) return ret + + if (dateString < cycle.startDate) updateCurrentCycle(dateString) + if (cycle.noMoreCycles) return ret + + const tempShift = cycle.status.temperatureShift + + if (tempShift) { + if (tempShift.firstHighMeasurementDay.date === dateString) { + ret.drawFhmLine = true + } + + if ( + dateIsInPeriOrPostPhase(dateString) && + isInTempMeasuringPhase(temperature, dateString) + ) { + ret.drawLtlAt = normalizeToScale(tempShift.ltl, columnHeight) + } + } + + return ret + } } \ No newline at end of file diff --git a/components/settings/nfp-settings/temperature-slider.js b/components/settings/nfp-settings/temperature-slider.js index 94db021..14adf12 100644 --- a/components/settings/nfp-settings/temperature-slider.js +++ b/components/settings/nfp-settings/temperature-slider.js @@ -8,7 +8,7 @@ import SliderLabel from './slider-label' import { scaleObservable, saveTempScale } from '../../../local-storage' import { Colors, Sizes } from '../../../styles/redesign' import labels from '../../../i18n/en/settings' -import config from '../../../config' +import { TEMP_MIN, TEMP_MAX, TEMP_SLIDER_STEP } from '../../../config' export default class TemperatureSlider extends Component { constructor(props) { @@ -41,11 +41,11 @@ export default class TemperatureSlider extends Component { enableLabel={true} markerStyle={styles.marker} markerOffsetY={Sizes.tiny} - max={config.temperatureScale.max} - min={config.temperatureScale.min} + max={TEMP_MAX} + min={TEMP_MIN} onValuesChange={this.onTemperatureSliderChange} selectedStyle={styles.sliderAccentBackground} - step={config.temperatureScale.step} + step={TEMP_SLIDER_STEP} trackStyle={styles.slider} unselectedStyle={styles.sliderBackground} values={[minTemperature, maxTemperature]} diff --git a/config.js b/config.js index 1fd1589..4f11d22 100644 --- a/config.js +++ b/config.js @@ -1,34 +1,31 @@ -const config = { - columnWidth: 25, - xAxisHeightPercentage: 0.08, - xAxisHeightPercentageLarge: 0.12, - symptomHeightPercentage: 0.05, - symptomHeightPercentageLarge: 0.1, - temperatureScale: { - defaultLow: 35, - defaultHigh: 38, - min: 34, - max: 40, - step: 0.5, - units: 0.1, - verticalPadding: 0.03 - }, - symptoms: [ - 'bleeding', - 'mucus', - 'cervix', - 'sex', - 'desire', - 'pain', - 'mood', - 'note' - ], -} - -config.columnMiddle = config.columnWidth / 2 - export const ACTION_DELETE = 'delete' export const ACTION_EXPORT = 'export' export const ACTION_IMPORT = 'import' -export default config \ No newline at end of file +export const SYMPTOMS = [ + 'bleeding', + 'mucus', + 'cervix', + 'sex', + 'desire', + 'pain', + 'mood', + 'note' +] + +export const CHART_COLUMN_WIDTH = 32 +export const CHART_COLUMN_MIDDLE = CHART_COLUMN_WIDTH / 2 +export const CHART_DOT_RADIUS = 6 +export const CHART_GRID_LINE_HORIZONTAL_WIDTH = 0.3 +export const CHART_ICON_SIZE = 20 +export const CHART_STROKE_WIDTH = 3 +export const CHART_SYMPTOM_HEIGHT_RATIO = 0.1 +export const CHART_XAXIS_HEIGHT_RATIO = 0.14 +export const CHART_YAXIS_WIDTH = 32 + +export const TEMP_SCALE_MAX = 38 +export const TEMP_SCALE_MIN = 35 +export const TEMP_SCALE_UNITS = 0.1 +export const TEMP_MAX = 40 +export const TEMP_MIN = 34 +export const TEMP_SLIDER_STEP = 0.5 diff --git a/i18n/en/labels.js b/i18n/en/labels.js index 3b5e8df..5f6adf5 100644 --- a/i18n/en/labels.js +++ b/i18n/en/labels.js @@ -7,6 +7,10 @@ export const homeRedesign = { addData: 'add data for today' } +export const chart = { + tutorial: 'You can swipe the chart to view more dates.' +} + export const shared = { cancel: 'Cancel', save: 'Save', diff --git a/local-storage.js b/local-storage.js index 4cc9c75..b23ac6f 100644 --- a/local-storage.js +++ b/local-storage.js @@ -1,18 +1,16 @@ import { AsyncStorage } from 'react-native' import Observable from 'obv' -import config from './config' +import { TEMP_SCALE_MIN, TEMP_SCALE_MAX, TEMP_SCALE_UNITS } from './config' export const scaleObservable = Observable() -setObvWithInitValue('tempScale', scaleObservable, { - min: config.temperatureScale.defaultLow, - max: config.temperatureScale.defaultHigh -}) +setObvWithInitValue('tempScale', + scaleObservable, { min: TEMP_SCALE_MIN, max: TEMP_SCALE_MAX }) export const unitObservable = Observable() -unitObservable.set(config.temperatureScale.units) +unitObservable.set(TEMP_SCALE_UNITS) scaleObservable((scale) => { const scaleRange = scale.max - scale.min - if (scaleRange <= 3) { + if (scaleRange <= 2) { unitObservable.set(0.1) } else { unitObservable.set(0.5) @@ -69,6 +67,15 @@ export async function saveLicenseFlag() { await AsyncStorage.setItem('agreedToLicense', JSON.stringify(true)) } +export async function getChartFlag() { + const isFirstChartView = await AsyncStorage.getItem('isFirstChartView') + return isFirstChartView === null ? 'true' : isFirstChartView +} + +export async function setChartFlag() { + await AsyncStorage.setItem('isFirstChartView', JSON.stringify(false)) +} + async function setObvWithInitValue(key, obv, defaultValue) { const result = await AsyncStorage.getItem(key) let value diff --git a/styles/colors.js b/styles/colors.js index 3c797d5..87ffc8a 100644 --- a/styles/colors.js +++ b/styles/colors.js @@ -1,3 +1,17 @@ +const redColor = '#c3000d' +export const shadesOfRed = ['#e7999e', '#db666d', '#cf323d', '#c3000d'] // light to dark +const violetColor = '#6a7b98' +const shadesOfViolet = ['#e3e7ed', '#c8cfdc', '#acb8cb', '#91a0ba', '#7689a9', violetColor] // light to dark +const yellowColor = '#dbb40c' +const shadesOfYellow = ['#f0e19d', '#e9d26d', '#e2c33c', yellowColor] // light to dark +const magentaColor = '#6f2565' +const shadesOfMagenta = ['#a87ca2', '#8b5083', magentaColor] // light to dark +const pinkColor = '#9e346c' +const shadesOfPink = ['#c485a6', '#b15c89', pinkColor] // light to dark +const lightGreenColor = '#bccd67' +const orangeColor = '#bc6642' +const mintColor = '#6ca299' + export default { greyDark: '#A5A5A5', grey: '#D2D2D2', @@ -8,4 +22,38 @@ export default { tourquiseDark: '#69CBC1', tourquise: '#CFECEA', tourquiseLight: '#E9F2ED', + iconColors: { + 'bleeding': { + color: redColor, + shades: shadesOfRed, + }, + 'mucus': { + color: violetColor, + shades: shadesOfViolet, + }, + 'cervix': { + color: yellowColor, + shades: shadesOfYellow, + }, + 'sex': { + color: magentaColor, + shades: shadesOfMagenta, + }, + 'desire': { + color: pinkColor, + shades: shadesOfPink, + }, + 'pain': { + color: lightGreenColor, + shades: [lightGreenColor], + }, + 'mood': { + color: orangeColor, + shades: [orangeColor], + }, + 'note': { + color: mintColor, + shades: [mintColor], + }, + }, } \ No newline at end of file diff --git a/styles/typography.js b/styles/typography.js index 4034f12..153f1fa 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -8,6 +8,7 @@ export const fonts = { export const sizes = { tiny: 7, + footnote: 10, small: 14, base: 18, subtitle: 22, @@ -15,11 +16,6 @@ export const sizes = { huge: 40 } -const title = { - color: Colors.purple, - marginVertical: Spacing.large -} - const accentText = { fontFamily: fonts.bold, textAlignVertical: 'center', @@ -46,6 +42,16 @@ const accentTextSmall = { fontSize: sizes.small } +const title = { + color: Colors.purple, + marginVertical: Spacing.large +} + +const label = { + fontSize: sizes.small, + textTransform: 'uppercase' +} + export default { accentOrange: { ...accentTextSmall, @@ -67,6 +73,18 @@ export default { fontFamily: fonts.main, fontSize: sizes.base }, + label: { + ...label + }, + labelBold: { + color: Colors.greyDark, + fontWeight: 'bold', + ...label + }, + labelLight: { + color: Colors.grey, + fontSize: sizes.footnote, + }, subtitle: { fontSize: sizes.subtitle, ...title From 885da5c2933125e5fed6c493a5e036ef8ed41216 Mon Sep 17 00:00:00 2001 From: Maria Zadnepryanets <mariya.z@gmail.com> Date: Fri, 14 Aug 2020 11:57:26 +0000 Subject: [PATCH 51/94] Symptom view redesign --- components/app.js | 24 +- components/chart/chart.js | 2 +- components/chart/tutorial.js | 14 +- components/common/app-modal.js | 32 ++ components/common/app-switch.js | 2 +- components/common/app-text-input.js | 10 +- components/common/button.js | 19 +- components/common/close-icon.js | 32 ++ components/common/segment.js | 2 +- components/cycle-day/FillerBoxes.js | 20 - components/cycle-day/SymptomBox.js | 174 ------- components/cycle-day/cycle-day-overview.js | 121 ++--- components/cycle-day/select-box-group.js | 45 +- components/cycle-day/select-tab-group.js | 57 +-- components/cycle-day/symptom-box.js | 167 +++++++ components/cycle-day/symptom-edit-view.js | 281 +++++++++++ components/cycle-day/symptom-page-title.js | 88 ++++ components/cycle-day/symptoms/bleeding.js | 85 ---- components/cycle-day/symptoms/cervix.js | 113 ----- components/cycle-day/symptoms/desire.js | 69 --- components/cycle-day/symptoms/index.js | 21 - components/cycle-day/symptoms/info-symptom.js | 28 -- components/cycle-day/symptoms/mood.js | 93 ---- components/cycle-day/symptoms/mucus.js | 104 ----- components/cycle-day/symptoms/note.js | 65 --- components/cycle-day/symptoms/pain.js | 94 ---- components/cycle-day/symptoms/sex.js | 110 ----- components/cycle-day/symptoms/symptom-info.js | 41 -- .../cycle-day/symptoms/symptom-section.js | 45 -- components/cycle-day/symptoms/symptom-view.js | 117 ----- .../cycle-day/symptoms/temperature-input.js | 107 ----- components/cycle-day/symptoms/temperature.js | 139 ------ components/cycle-day/symptoms/time-input.js | 62 --- components/cycle-day/temperature.js | 158 +++++++ components/helpers/cycle-day.js | 437 ++++++++++++++++++ components/helpers/format-date.js | 12 +- components/pages.js | 12 +- components/views.js | 4 +- config.js | 1 + i18n/en/cycle-day.js | 6 + styles/containers.js | 21 + styles/spacing.js | 4 +- styles/typography.js | 7 + 43 files changed, 1396 insertions(+), 1649 deletions(-) create mode 100644 components/common/app-modal.js create mode 100644 components/common/close-icon.js delete mode 100644 components/cycle-day/FillerBoxes.js delete mode 100644 components/cycle-day/SymptomBox.js create mode 100644 components/cycle-day/symptom-box.js create mode 100644 components/cycle-day/symptom-edit-view.js create mode 100644 components/cycle-day/symptom-page-title.js delete mode 100644 components/cycle-day/symptoms/bleeding.js delete mode 100644 components/cycle-day/symptoms/cervix.js delete mode 100644 components/cycle-day/symptoms/desire.js delete mode 100644 components/cycle-day/symptoms/index.js delete mode 100644 components/cycle-day/symptoms/info-symptom.js delete mode 100644 components/cycle-day/symptoms/mood.js delete mode 100644 components/cycle-day/symptoms/mucus.js delete mode 100644 components/cycle-day/symptoms/note.js delete mode 100644 components/cycle-day/symptoms/pain.js delete mode 100644 components/cycle-day/symptoms/sex.js delete mode 100644 components/cycle-day/symptoms/symptom-info.js delete mode 100644 components/cycle-day/symptoms/symptom-section.js delete mode 100644 components/cycle-day/symptoms/symptom-view.js delete mode 100644 components/cycle-day/symptoms/temperature-input.js delete mode 100644 components/cycle-day/symptoms/temperature.js delete mode 100644 components/cycle-day/symptoms/time-input.js create mode 100644 components/cycle-day/temperature.js create mode 100644 components/helpers/cycle-day.js diff --git a/components/app.js b/components/app.js index 37ba5c5..505f7bb 100644 --- a/components/app.js +++ b/components/app.js @@ -1,5 +1,5 @@ import React, { Component } from 'react' -import { View, BackHandler } from 'react-native' +import { BackHandler, StyleSheet, View } from 'react-native' import PropTypes from 'prop-types' import { connect } from 'react-redux' @@ -10,7 +10,7 @@ import { getNavigation, navigate, goBack } from '../slices/navigation' import Header from './header' import Menu from './menu' import { viewsList } from './views' -import { isSymptomView, isSettingsView } from './pages' +import { isSettingsView } from './pages' import { headerTitles } from '../i18n/en/labels' import setupNotifications from '../lib/notifications' @@ -64,9 +64,7 @@ class App extends Component { const Page = viewsList[currentPage] const title = headerTitles[currentPage] - const isSymptomEditView = isSymptomView(currentPage) const isSettingsSubView = isSettingsView(currentPage) - const isCycleDayView = currentPage === 'CycleDay' const headerProps = { title, @@ -79,21 +77,21 @@ class App extends Component { } return ( - <View style={{ flex: 1 }}> - { - !isSymptomEditView && - !isCycleDayView && - <Header { ...headerProps } /> - } - + <View style={styles.container}> + <Header { ...headerProps } /> <Page { ...pageProps } /> - - { !isSymptomEditView && <Menu /> } + <Menu /> </View> ) } } +const styles = StyleSheet.create({ + container: { + flex: 1 + } +}) + const mapStateToProps = (state) => { return({ date: getDate(state), diff --git a/components/chart/chart.js b/components/chart/chart.js index 5f6039b..525682f 100644 --- a/components/chart/chart.js +++ b/components/chart/chart.js @@ -73,7 +73,7 @@ class CycleChart extends Component { prepareSymptomData = () => { this.symptomRowSymptoms = SYMPTOMS.filter((symptomName) => { return this.cycleDaysSortedByDate.some(cycleDay => { - return cycleDay[symptomName] + return (symptomName !== 'temperature') && cycleDay[symptomName] }) }) this.chartSymptoms = [...this.symptomRowSymptoms] diff --git a/components/chart/tutorial.js b/components/chart/tutorial.js index 49dec5c..4a0de53 100644 --- a/components/chart/tutorial.js +++ b/components/chart/tutorial.js @@ -1,11 +1,11 @@ import React from 'react' import PropTypes from 'prop-types' -import { Image, StyleSheet, TouchableOpacity, View } from 'react-native' +import { Image, StyleSheet, View } from 'react-native' -import AppIcon from '../common/app-icon' import AppText from '../common/app-text' +import CloseIcon from '../common/close-icon' -import { Colors, Containers, Sizes, Spacing } from '../../styles/redesign' +import { Containers, Spacing } from '../../styles/redesign' import { chart } from '../../i18n/en/labels' const image = require('../../assets/swipe.png') @@ -17,9 +17,7 @@ const Tutorial = ({ onClose }) => { <View style={styles.textContainer}> <AppText>{chart.tutorial}</AppText> </View> - <TouchableOpacity onPress={onClose} style={styles.iconContainer}> - <AppIcon name='cross' color={Colors.orange} /> - </TouchableOpacity> + <CloseIcon onClose={onClose} /> </View> ) } @@ -33,10 +31,6 @@ const styles = StyleSheet.create({ ...Containers.rowContainer, padding: Spacing.large }, - iconContainer: { - alignSelf: 'flex-start', - marginBottom: Sizes.base - }, image: { height: 40 }, diff --git a/components/common/app-modal.js b/components/common/app-modal.js new file mode 100644 index 0000000..0f28882 --- /dev/null +++ b/components/common/app-modal.js @@ -0,0 +1,32 @@ +import React from 'react' +import { Modal, StyleSheet, TouchableOpacity } from 'react-native' +import PropTypes from 'prop-types' + +const AppModal = ({ children, onClose }) => { + return( + <Modal + animationType='fade' + onRequestClose={onClose} + transparent={true} + visible={true} + > + <TouchableOpacity onPress={onClose} style={styles.blackBackground} /> + {children} + </Modal> + ) +} + +AppModal.propTypes = { + children: PropTypes.node, + onClose: PropTypes.func +} + +const styles = StyleSheet.create({ + blackBackground: { + backgroundColor: 'black', + flex: 1, + opacity: 0.5, + } +}) + +export default AppModal diff --git a/components/common/app-switch.js b/components/common/app-switch.js index 3cb30e6..2717535 100644 --- a/components/common/app-switch.js +++ b/components/common/app-switch.js @@ -20,7 +20,7 @@ const AppSwitch = ({ onToggle, text, value }) => { AppSwitch.propTypes = { onToggle: PropTypes.func.isRequired, text: PropTypes.string, - value: PropTypes.bool.isRequired + value: PropTypes.bool } const styles = StyleSheet.create({ diff --git a/components/common/app-text-input.js b/components/common/app-text-input.js index a1c8f99..3b55071 100644 --- a/components/common/app-text-input.js +++ b/components/common/app-text-input.js @@ -1,10 +1,15 @@ import React from 'react' import { StyleSheet, TextInput } from 'react-native' +import PropTypes from 'prop-types' import { Colors, Spacing, Typography } from '../../styles/redesign' -const AppTextInput = ({ ...props }) => { - return <TextInput style={styles.input} {...props} /> +const AppTextInput = ({ style, ...props }) => { + return <TextInput style={[styles.input, style]} {...props} /> +} + +AppTextInput.propTypes = { + style: PropTypes.object } const styles = StyleSheet.create({ @@ -16,6 +21,7 @@ const styles = StyleSheet.create({ borderWidth: 1, color: Colors.greyDark, marginTop: Spacing.base, + minWidth: '80%', paddingHorizontal: Spacing.base, ...Typography.mainText } diff --git a/components/common/button.js b/components/common/button.js index 2e98588..28d0036 100644 --- a/components/common/button.js +++ b/components/common/button.js @@ -2,14 +2,23 @@ import React from 'react' import PropTypes from 'prop-types' import { StyleSheet, TouchableOpacity } from 'react-native' +import AppIcon from './app-icon' import AppText from './app-text' import { Colors, Fonts, Spacing } from '../../styles/redesign' -const Button = ({ children, isCTA, isSmall, onPress, testID, ...props }) => { +const Button = ({ + children, + iconName, + isCTA, + isSmall, + onPress, + testID, + ...props +}) => { const buttonStyle = isCTA ? styles.cta : styles.regular const textCTA = isCTA ? styles.buttonTextBold : styles.buttonTextRegular - const textStyle = [ textCTA, isSmall ? textSmall : text] + const textStyle = [textCTA, isSmall ? textSmall : text] return ( <TouchableOpacity @@ -19,12 +28,14 @@ const Button = ({ children, isCTA, isSmall, onPress, testID, ...props }) => { {...props} > <AppText style={textStyle}>{children}</AppText> + {iconName && <AppIcon color={Colors.orange} name={iconName} />} </TouchableOpacity> ) } Button.propTypes = { children: PropTypes.node, + iconName: PropTypes.string, isCTA: PropTypes.bool, isSmall: PropTypes.bool, onPress: PropTypes.func, @@ -48,8 +59,10 @@ const textSmall = { const button = { alignItems: 'center', + flexDirection: 'row', justifyContent: 'center', - margin: Spacing.base + margin: Spacing.base, + minWidth: '15%' } const styles = StyleSheet.create({ diff --git a/components/common/close-icon.js b/components/common/close-icon.js new file mode 100644 index 0000000..1930fb3 --- /dev/null +++ b/components/common/close-icon.js @@ -0,0 +1,32 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { StyleSheet, TouchableOpacity } from 'react-native' + +import AppIcon from './app-icon' + +import { Colors, Sizes } from '../../styles/redesign' + +const CloseIcon = ({ onClose, ...props }) => { + return ( + <TouchableOpacity + onPress={onClose} + style={styles.container} + {...props} + > + <AppIcon name='cross' color={Colors.orange} /> + </TouchableOpacity> + ) +} + +CloseIcon.propTypes = { + onClose: PropTypes.func.isRequired +} + +const styles = StyleSheet.create({ + container: { + alignSelf: 'flex-start', + marginBottom: Sizes.base + } +}) + +export default CloseIcon \ No newline at end of file diff --git a/components/common/segment.js b/components/common/segment.js index 97cea4f..004562a 100644 --- a/components/common/segment.js +++ b/components/common/segment.js @@ -33,7 +33,7 @@ const styles = StyleSheet.create({ container: { borderStyle: 'solid', borderBottomWidth: 2, - borderBottomColor: Colors.grey, + borderBottomColor: Colors.greyLight, paddingBottom: Spacing.base, ...segmentContainer }, diff --git a/components/cycle-day/FillerBoxes.js b/components/cycle-day/FillerBoxes.js deleted file mode 100644 index f0e0c02..0000000 --- a/components/cycle-day/FillerBoxes.js +++ /dev/null @@ -1,20 +0,0 @@ -import React, { Component } from 'react' -import { View, Dimensions } from 'react-native' -import styles from '../../styles' - -export default class FillerBoxes extends Component { - render() { - const n = Dimensions.get('window').width / styles.symptomBox.width - const fillerBoxes = [] - for (let i = 0; i < Math.ceil(n); i++) { - fillerBoxes.push( - <View - width={styles.symptomBox.width} - height={0} - key={i.toString()} - /> - ) - } - return fillerBoxes - } -} \ No newline at end of file diff --git a/components/cycle-day/SymptomBox.js b/components/cycle-day/SymptomBox.js deleted file mode 100644 index 71bc042..0000000 --- a/components/cycle-day/SymptomBox.js +++ /dev/null @@ -1,174 +0,0 @@ -import React from 'react' -import PropTypes from 'prop-types' -import { View, TouchableOpacity } from 'react-native' - -import AppText from '../common/app-text' -import DripIcon from '../../assets/drip-icons' - -import styles from '../../styles' - -import { headerTitles as symptomTitles } from '../../i18n/en/labels' -import * as labels from '../../i18n/en/cycle-day' -const bleedingLabels = labels.bleeding.labels -const intensityLabels = labels.intensity -const sexLabels = labels.sex.categories -const contraceptiveLabels = labels.contraceptives.categories -const painLabels = labels.pain.categories -const moodLabels = labels.mood.categories - -function isNumber(val) { - return typeof val === 'number' -} - -const l = { - bleeding: ({ value, exclude }) => { - if (isNumber(value)) { - const bleedingLabel = bleedingLabels[value] - return exclude ? `(${bleedingLabel})` : bleedingLabel - } - }, - temperature: ({ value, time, exclude }) => { - if (isNumber(value)) { - let temperatureLabel = `${value} °C` - if (time) { - temperatureLabel += ` - ${time}` - } - if (exclude) { - temperatureLabel = `(${temperatureLabel})` - } - return temperatureLabel - } - }, - mucus: mucus => { - const filledCategories = ['feeling', 'texture'].filter(c => isNumber(mucus[c])) - let label = filledCategories.map(category => { - return labels.mucus.subcategories[category] + ': ' + labels.mucus[category].categories[mucus[category]] - }).join(', ') - - if (isNumber(mucus.value)) label += `\n => ${labels.mucusNFP[mucus.value]}` - if (mucus.exclude) label = `(${label})` - - return label - }, - cervix: cervix => { - const filledCategories = ['opening', 'firmness', 'position'].filter(c => isNumber(cervix[c])) - let label = filledCategories.map(category => { - return labels.cervix.subcategories[category] + ': ' + labels.cervix[category].categories[cervix[category]] - }).join(', ') - - if (cervix.exclude) label = `(${label})` - - return label - }, - note: note => note.value, - desire: ({ value }) => { - if (isNumber(value)) { - return intensityLabels[value] - } - }, - sex: sex => { - const sexLabel = [] - if (sex && Object.values({...sex}).some(val => val)){ - Object.keys(sex).forEach(key => { - if(sex[key] && key !== 'other' && key !== 'note') { - sexLabel.push( - sexLabels[key] || - contraceptiveLabels[key] - ) - } - if(key === 'other' && sex.other) { - let label = contraceptiveLabels[key] - if(sex.note) { - label = `${label} (${sex.note})` - } - sexLabel.push(label) - } - }) - return sexLabel.join(', ') - } - }, - pain: pain => { - const painLabel = [] - if (pain && Object.values({...pain}).some(val => val)){ - Object.keys(pain).forEach(key => { - if(pain[key] && key !== 'other' && key !== 'note') { - painLabel.push(painLabels[key]) - } - if(key === 'other' && pain.other) { - let label = painLabels[key] - if(pain.note) { - label = `${label} (${pain.note})` - } - painLabel.push(label) - } - }) - return painLabel.join(', ') - } - }, - mood: mood => { - const moodLabel = [] - if (mood && Object.values({...mood}).some(val => val)){ - Object.keys(mood).forEach(key => { - if(mood[key] && key !== 'other' && key !== 'note') { - moodLabel.push(moodLabels[key]) - } - if(key === 'other' && mood.other) { - let label = moodLabels[key] - if(mood.note) { - label = `${label} (${mood.note})` - } - moodLabel.push(label) - } - }) - return moodLabel.join(', ') - } - } -} - -const getLabel = (symptom, symptomData) => { - return symptomData && l[symptom](symptomData) -} - -export default function SymptomBox( - { disabled, onPress, symptom, symptomData }) { - - const data = getLabel(symptom, symptomData) - const iconName = `drip-icon-${symptom}` - - const disabledStyle = disabled ? styles.symptomInFuture : null - const containerStyle = [ - styles.symptomBox, - data && styles.symptomBoxActive, - disabledStyle - ] - const titleStyle = [ - data && styles.symptomTextActive, - disabledStyle, - {fontSize: 15} - ] - const dataBoxStyle = [styles.symptomDataBox, disabledStyle] - const iconColor = data ? 'white' : 'black' - - return ( - <TouchableOpacity onPress={onPress} disabled={disabled} testID={iconName}> - <View style={containerStyle}> - <DripIcon name={iconName} size={50} color={iconColor} /> - <AppText style={titleStyle} numberOfLines={1}> - {symptomTitles[symptom].toLowerCase()} - </AppText> - </View> - <View style={dataBoxStyle}> - <AppText style={styles.symptomDataText} numberOfLines={3}> - {data} - </AppText> - </View> - </TouchableOpacity> - ) -} - -SymptomBox.propTypes = { - disabled: PropTypes.bool.isRequired, - onPress: PropTypes.func.isRequired, - symptom: PropTypes.string.isRequired, - symptomData: PropTypes.object -} \ No newline at end of file diff --git a/components/cycle-day/cycle-day-overview.js b/components/cycle-day/cycle-day-overview.js index ceab0f5..427b63a 100644 --- a/components/cycle-day/cycle-day-overview.js +++ b/components/cycle-day/cycle-day-overview.js @@ -1,118 +1,89 @@ import React, { Component } from 'react' -import { ScrollView, View } from 'react-native' +import { StyleSheet, View } from 'react-native' import PropTypes from 'prop-types' +import AppPage from '../common/app-page' +import SymptomBox from './symptom-box' +import SymptomPageTitle from './symptom-page-title' + import { connect } from 'react-redux' import { getDate, setDate } from '../../slices/date' import { navigate } from '../../slices/navigation' -import { LocalDate } from 'js-joda' -import Header from '../header' -import FillerBoxes from './FillerBoxes' -import SymptomBox from './SymptomBox' - import cycleModule from '../../lib/cycle' -import formatDate from '../helpers/format-date' +import { dateToTitle } from '../helpers/format-date' import { getCycleDay } from '../../db' -import styles from '../../styles' +import { getData } from '../helpers/cycle-day' + +import { general as labels} from '../../i18n/en/cycle-day' +import { Spacing } from '../../styles/redesign' +import { SYMPTOMS } from '../../config' class CycleDayOverView extends Component { static propTypes = { navigate: PropTypes.func, setDate: PropTypes.func, - // The following are not being used, - // we could see if it's possible to not pass them from the <App /> cycleDay: PropTypes.object, date: PropTypes.string, } constructor(props) { super(props) - this.state = { - cycleDay: getCycleDay(props.date) - } + + this.state = { cycleDay: getCycleDay(props.date), data: null } } updateCycleDay = (date) => { this.props.setDate(date) - this.setState({ - cycleDay: getCycleDay(date) - }) - } - - goToPrevDay = () => { - const { date } = this.props - const prevDate = LocalDate.parse(date).minusDays(1).toString() - this.updateCycleDay(prevDate) - } - - goToNextDay = () => { - const { date } = this.props - const nextDate = LocalDate.parse(date).plusDays(1).toString() - this.updateCycleDay(nextDate) + this.setState({ cycleDay: getCycleDay(date) }) } render() { const { cycleDay } = this.state const { date } = this.props - const dateInFuture = LocalDate.now().isBefore(LocalDate.parse(date)) - - const symptomBoxesList = [ - 'bleeding', - 'temperature', - 'mucus', - 'cervix', - 'desire', - 'sex', - 'pain', - 'mood', - 'note', - ] - const { getCycleDayNumber } = cycleModule() const cycleDayNumber = getCycleDayNumber(date) - const headerSubtitle = cycleDayNumber && `Cycle day ${cycleDayNumber}` + const subtitle = cycleDayNumber && `${labels.cycleDayNumber}${cycleDayNumber}` return ( - <View style={{ flex: 1 }}> - <Header - handleBack={this.goToPrevDay} - handleNext={this.goToNextDay} - title={formatDate(date)} - subtitle={headerSubtitle} + <AppPage> + <SymptomPageTitle + reloadSymptomData={this.updateCycleDay} + subtitle={subtitle} + title={dateToTitle(date)} /> - <ScrollView> - <View style={styles.symptomBoxesView}> - { - symptomBoxesList.map(symptom => { - const symptomEditView = - `${symptom[0].toUpperCase() + symptom.substring(1)}EditView` - const symptomData = - cycleDay && cycleDay[symptom] ? cycleDay[symptom] : null - return( - <SymptomBox - key={symptom} - symptom={symptom} - symptomData={symptomData} - onPress={() => this.props.navigate(symptomEditView)} - disabled={dateInFuture && symptom !== 'note'} - />) - }) - } - { - // this is just to make the last row adhere to the grid - // (and) because there are no pseudo properties in RN - } - <FillerBoxes /> - </View> - </ScrollView> - </View> + <View style={styles.container}> + {SYMPTOMS.map(symptom => { + const symptomData = cycleDay && cycleDay[symptom] + ? cycleDay[symptom] : null + + return( + <SymptomBox + key={symptom} + symptom={symptom} + symptomData={symptomData} + symptomDataToDisplay={getData(symptom, symptomData)} + updateCycleDayData={this.updateCycleDay} + /> + ) + })} + </View> + </AppPage> ) } } +const styles = StyleSheet.create({ + container: { + flexDirection: 'row', + flexWrap: 'wrap', + justifyContent: 'space-between', + padding: Spacing.base + } +}) + const mapStateToProps = (state) => { return({ date: getDate(state), diff --git a/components/cycle-day/select-box-group.js b/components/cycle-day/select-box-group.js index 94a2607..d8c5808 100644 --- a/components/cycle-day/select-box-group.js +++ b/components/cycle-day/select-box-group.js @@ -1,29 +1,26 @@ import React from 'react' import PropTypes from 'prop-types' -import { View, TouchableOpacity } from 'react-native' +import { StyleSheet, TouchableOpacity, View } from 'react-native' import AppText from '../common/app-text' -import styles from '../../styles' +import { Colors, Containers } from '../../styles/redesign' -export default function SelectBoxGroup({ labels, onSelect, optionsState }) { +const SelectBoxGroup = ({ labels, optionsState, onSelect }) => { return ( - <View style={styles.selectBoxSection}> + <View style={styles.container}> {Object.keys(labels).map(key => { - const style = [styles.selectBox] - const textStyle = [] - if (optionsState[key]) { - style.push(styles.selectBoxActive) - textStyle.push(styles.selectBoxTextActive) - } + const isActive = optionsState[key] + const boxStyle = [styles.box, isActive && styles.boxActive] + const textStyle = [styles.text, isActive && styles.textActive] + return ( <TouchableOpacity - onPress={() => onSelect(key)} key={key} + onPress={() => onSelect(key)} + style={boxStyle} > - <View style={style}> - <AppText style={textStyle}>{labels[key]}</AppText> - </View> + <AppText style={textStyle}>{labels[key]}</AppText> </TouchableOpacity> ) })} @@ -36,3 +33,23 @@ SelectBoxGroup.propTypes = { onSelect: PropTypes.func.isRequired, optionsState: PropTypes.object.isRequired } + +const styles = StyleSheet.create({ + box: { + ...Containers.box + }, + boxActive: { + ...Containers.boxActive + }, + container: { + ...Containers.selectGroupContainer + }, + text: { + color: Colors.orange + }, + textActive: { + color: 'white' + } +}) + +export default SelectBoxGroup diff --git a/components/cycle-day/select-tab-group.js b/components/cycle-day/select-tab-group.js index 77dcc25..8caea5a 100644 --- a/components/cycle-day/select-tab-group.js +++ b/components/cycle-day/select-tab-group.js @@ -1,40 +1,27 @@ import React from 'react' import PropTypes from 'prop-types' -import { View, TouchableOpacity } from 'react-native' +import { StyleSheet, TouchableOpacity, View } from 'react-native' import AppText from '../common/app-text' -import styles from '../../styles' +import { Colors, Containers } from '../../styles/redesign' -export default function SelectTabGroup({ active, buttons, onSelect }) { +export default function SelectTabGroup({ activeButton, buttons, onSelect }) { return ( - <View style={styles.selectTabGroup}> + <View style={styles.container}> { buttons.map(({ label, value }, i) => { - let firstOrLastStyle - if (i === buttons.length - 1) { - firstOrLastStyle = styles.selectTabLast - } else if (i === 0) { - firstOrLastStyle = styles.selectTabFirst - } - let activeStyle - const isActive = value === active - if (isActive) activeStyle = styles.selectTabActive + const isActive = value === activeButton + const boxStyle = [styles.box, isActive && styles.boxActive] + const textStyle = [styles.text, isActive && styles.textActive] + return ( <TouchableOpacity - onPress={() => onSelect(isActive ? null : value)} + onPress={() => onSelect(value)} key={i} - activeOpacity={1} + style={boxStyle} > - <View> - <View style={[ - styles.selectTab, - firstOrLastStyle, - activeStyle - ]}> - <AppText style={activeStyle}>{label}</AppText> - </View> - </View> + <AppText style={textStyle}>{label}</AppText> </TouchableOpacity> ) }) @@ -44,7 +31,25 @@ export default function SelectTabGroup({ active, buttons, onSelect }) { } SelectTabGroup.propTypes = { - active: PropTypes.number, + activeButton: PropTypes.number, buttons: PropTypes.array.isRequired, onSelect: PropTypes.func.isRequired -} \ No newline at end of file +} + +const styles = StyleSheet.create({ + box: { + ...Containers.box + }, + boxActive: { + ...Containers.boxActive + }, + container: { + ...Containers.selectGroupContainer + }, + text: { + color: Colors.orange + }, + textActive: { + color: 'white' + } +}) \ No newline at end of file diff --git a/components/cycle-day/symptom-box.js b/components/cycle-day/symptom-box.js new file mode 100644 index 0000000..82f9fe7 --- /dev/null +++ b/components/cycle-day/symptom-box.js @@ -0,0 +1,167 @@ +import React, { Component } from 'react' +import PropTypes from 'prop-types' +import { StyleSheet, View, TouchableOpacity } from 'react-native' + +import AppText from '../common/app-text' +import DripIcon from '../../assets/drip-icons' +import SymptomEditView from './symptom-edit-view' + +import { connect } from 'react-redux' +import { getDate } from '../../slices/date' +import { isDateInFuture } from '../helpers/cycle-day' + +import { Colors, Sizes, Spacing } from '../../styles/redesign' +import { headerTitles as symptomTitles } from '../../i18n/en/labels' + +class SymptomBox extends Component { + + static propTypes = { + date: PropTypes.string.isRequired, + symptom: PropTypes.string.isRequired, + symptomData: PropTypes.object, + symptomDataToDisplay: PropTypes.string, + updateCycleDayData: PropTypes.func.isRequired + } + + constructor(props) { + super(props) + + this.state = { isSymptomEdited: false } + } + + onFinishEditing = () => { + const { date, updateCycleDayData } = this.props + + updateCycleDayData(date) + this.setState({ isSymptomEdited: false }) + } + + onEditSymptom = () => { + this.setState({ isSymptomEdited: true }) + } + + render() { + const { date, symptom, symptomData, symptomDataToDisplay } = this.props + const { isSymptomEdited } = this.state + const isSymptomDisabled = isDateInFuture(date) && symptom !== 'note' + const isExcluded = symptomData !== null ? symptomData.exclude : false + + const iconColor = isSymptomDisabled ? Colors.greyLight : Colors.grey + const iconName = `drip-icon-${symptom}` + const symptomNameStyle = [ + styles.symptomName, + (isSymptomDisabled && styles.symptomNameDisabled), + (isExcluded && styles.symptomNameExcluded) + ] + const textStyle = [ + styles.text, + (isSymptomDisabled && styles.textDisabled), + (isExcluded && styles.textExcluded) + ] + + return ( + <React.Fragment> + {isSymptomEdited && + <SymptomEditView + symptom={symptom} + symptomData={symptomData} + onClose={this.onFinishEditing} + /> + } + + <TouchableOpacity + disabled={isSymptomDisabled} + onPress={this.onEditSymptom} + style={styles.container} + testID={iconName} + > + <DripIcon + color={iconColor} + isActive={!isSymptomDisabled} + name={iconName} + size={40} + /> + <View style={styles.textContainer}> + <AppText style={symptomNameStyle}> + {symptomTitles[symptom].toLowerCase()} + </AppText> + {symptomDataToDisplay && + <AppText style={textStyle}> + {symptomDataToDisplay} + </AppText> + } + </View> + </TouchableOpacity> + </React.Fragment> + ) + } +} + +const excluded = { + textDecorationLine: 'line-through' +} + +const hint = { + fontSize: Sizes.small, + fontStyle: 'italic' +} + +const main = { + fontSize: Sizes.base, + height: Sizes.base * 2, + lineHeight: Sizes.base, + marginBottom: (-1) * Sizes.tiny, + textAlignVertical: 'center' +} + +const styles = StyleSheet.create({ + container: { + alignItems: 'center', + backgroundColor: 'white', + borderRadius: 10, + elevation: 4, + flexDirection: 'row', + height: 110, + marginBottom: Spacing.base, + paddingHorizontal: Spacing.small, + paddingVertical: Spacing.base, + width: Spacing.symptomTileWidth + }, + symptomName: { + color: Colors.purple, + ...main + }, + symptomNameDisabled: { + color: Colors.grey + }, + symptomNameExcluded: { + color: Colors.greyDark, + ...excluded + }, + textContainer: { + flexDirection: 'column', + marginLeft: Spacing.small, + maxWidth: Spacing.textWidth + }, + text: { + ...hint + }, + textDisabled: { + color: Colors.greyLight + }, + textExcluded: { + color: Colors.grey, + ...excluded + } +}) + +const mapStateToProps = (state) => { + return({ + date: getDate(state), + }) +} + +export default connect( + mapStateToProps, + null, +)(SymptomBox) \ No newline at end of file diff --git a/components/cycle-day/symptom-edit-view.js b/components/cycle-day/symptom-edit-view.js new file mode 100644 index 0000000..eb50e29 --- /dev/null +++ b/components/cycle-day/symptom-edit-view.js @@ -0,0 +1,281 @@ +import React, { Component } from 'react' +import PropTypes from 'prop-types' +import { ScrollView, StyleSheet, View } from 'react-native' + +import AppModal from '../common/app-modal' +import AppSwitch from '../common/app-switch' +import AppText from '../common/app-text' +import AppTextInput from '../common/app-text-input' +import Button from '../common/button' +import CloseIcon from '../common/close-icon' +import Segment from '../common/segment' +import SelectBoxGroup from './select-box-group' +import SelectTabGroup from './select-tab-group' +import Temperature from './temperature' + +import { connect } from 'react-redux' +import { getDate } from '../../slices/date' +import { blank, save, shouldShow, symtomPage } from '../helpers/cycle-day' + +import { shared as sharedLabels } from '../../i18n/en/labels' +import info from '../../i18n/en/symptom-info' +import { Containers, Sizes } from '../../styles/redesign' + +class SymptomEditView extends Component { + + static propTypes = { + date: PropTypes.string.isRequired, + onClose: PropTypes.func.isRequired, + symptom: PropTypes.string.isRequired, + symptomData: PropTypes.object + } + + constructor(props) { + super(props) + + const { symptomData, symptom } = this.props + const data = symptomData ? symptomData : blank[symptom] + + const symptomConfig = symtomPage[symptom] + const shouldShowExclude = shouldShow(symptomConfig.excludeText) + const shouldShowNote = shouldShow(symptomConfig.note) + const shouldBoxGroup = shouldShow(symptomConfig.selectBoxGroups) + const shouldTabGroup = shouldShow(symptomConfig.selectTabGroups) + + this.state = { + data, + shouldShowExclude, + shouldShowInfo: false, + shouldShowNote, + shouldBoxGroup, + shouldTabGroup + } + } + + componentDidUpdate() { + this.saveData() + } + + getParsedData = () => JSON.parse(JSON.stringify(this.state.data)) + + onEditNote = (note) => { + const data = this.getParsedData() + const { symptom } = this.props + + if (symptom === 'note') { + Object.assign(data, { value: note }) + } else { + data['note'] = note + } + + this.setState({ data }) + } + + onExcludeToggle = () => { + const data = this.getParsedData() + Object.assign(data, { exclude: !data.exclude }) + + this.setState({ data }) + } + + onPressLearnMore = () => { + this.setState({ shouldShowInfo: !this.state.shouldShowInfo }) + } + + onRemove = () => { + this.saveData(true) + this.props.onClose() + } + + onSave = () => { + this.saveData() + this.props.onClose() + } + + onSaveTemperature = (value, field) => { + const data = this.getParsedData() + const dataToSave = field === 'value' + ? { [field]: Number(value) } : { [field]: value } + Object.assign(data, { ...dataToSave }) + + this.setState({ data }) + } + + onSelectBox = (key) => { + const data = this.getParsedData() + if (key === "other") { + Object.assign(data, { + note: null, + [key]: !this.state.data[key] + }) + } else { + Object.assign(data, { [key]: !this.state.data[key] }) + } + + this.setState({ data }) + } + + onSelectBoxNote= (value) => { + const data = this.getParsedData() + Object.assign(data, { note: value !== '' ? value : null }) + + this.setState({ data }) + } + + onSelectTab = (group, value) => { + const data = this.getParsedData() + Object.assign(data, { [group.key]: value }) + + this.setState({ data }) + } + + saveData = (shouldDeleteData) => { + const { date, symptom } = this.props + const { data } = this.state + save[symptom](data, date, shouldDeleteData) + } + + render() { + const { onClose, symptom } = this.props + const { data, + shouldShowExclude, + shouldShowInfo, + shouldShowNote, + shouldBoxGroup, + shouldTabGroup + } = this.state + const iconName = shouldShowInfo ? "chevron-down" : "chevron-up" + const noteText = symptom === 'note' ? data.value : data.note + + return ( + <AppModal onClose={onClose}> + <ScrollView + contentContainerStyle={styles.modalContainer} + pagingEnabled={true} + style={styles.modalWindow} + > + <View style={styles.headerContainer}> + <CloseIcon onClose={onClose} /> + </View> + {symptom === 'temperature' && + <Temperature + data={data} + save={(value, field) => this.onSaveTemperature(value, field)} + /> + } + {shouldTabGroup && symtomPage[symptom].selectTabGroups.map(group => { + return ( + <Segment key={group.key}> + <AppText style={styles.title}>{group.title}</AppText> + <SelectTabGroup + activeButton={data[group.key]} + buttons={group.options} + onSelect={value => this.onSelectTab(group, value)} + /> + </Segment> + ) + }) + } + {shouldBoxGroup && symtomPage[symptom].selectBoxGroups.map(group => { + const isOtherSelected = + data['other'] !== null + && data['other'] !== false + && Object.keys(group.options).includes('other') + + return ( + <Segment key={group.key}> + <AppText style={styles.title}>{group.title}</AppText> + <SelectBoxGroup + labels={group.options} + onSelect={value => this.onSelectBox(value)} + optionsState={data} + /> + {isOtherSelected && + <AppTextInput + multiline={true} + placeholder={sharedLabels.enter} + value={data.note} + onChangeText={value => this.onSelectBoxNote(value)} + /> + } + </Segment> + ) + }) + } + {shouldShowExclude && + <Segment> + <AppSwitch + onToggle={this.onExcludeToggle} + text={symtomPage[symptom].excludeText} + value={data.exclude} + /> + </Segment> + } + {shouldShowNote && + <Segment> + <AppText>{symtomPage[symptom].note}</AppText> + <AppTextInput + multiline={true} + placeholder={sharedLabels.enter} + onChangeText={this.onEditNote} + value={noteText !== null ? noteText : ''} + testID='noteInput' + /> + </Segment> + } + <View style={styles.buttonsContainer}> + <Button iconName={iconName} isSmall onPress={this.onPressLearnMore}> + learn more + </Button> + <Button isSmall onPress={this.onRemove}> + remove + </Button> + <Button isCTA isSmall onPress={this.onSave}>save</Button> + </View> + {shouldShowInfo && + <Segment last> + <AppText>{info[symptom].text}</AppText> + </Segment> + } + </ScrollView> + </AppModal> + ) + } +} + +const styles = StyleSheet.create({ + buttonsContainer: { + ...Containers.rowContainer + }, + headerContainer: { + flexDirection: 'row', + justifyContent: 'flex-end', + paddingVertical: Sizes.tiny, + }, + modalContainer: { + flexGrow: 1, + padding: Sizes.small + }, + modalWindow: { + backgroundColor: 'white', + borderRadius: 10, + marginVertical: Sizes.huge * 2, + minHeight: '40%', + height: '70%', + position: 'absolute' + }, + title: { + fontSize: Sizes.subtitle + } +}) + +const mapStateToProps = (state) => { + return({ + date: getDate(state), + }) +} + +export default connect( + mapStateToProps, + null, +)(SymptomEditView) \ No newline at end of file diff --git a/components/cycle-day/symptom-page-title.js b/components/cycle-day/symptom-page-title.js new file mode 100644 index 0000000..3b84869 --- /dev/null +++ b/components/cycle-day/symptom-page-title.js @@ -0,0 +1,88 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { StyleSheet, TouchableOpacity, View } from 'react-native' + +import AppIcon from '../common/app-icon' +import AppText from '../common/app-text' + +import { connect } from 'react-redux' +import { getDate, setDate } from '../../slices/date' + +import { + nextDate, + prevDate, + isTomorrowInFuture, + isYesterdayInFuture +} from '../helpers/cycle-day' +import { Colors, Containers, Spacing, Typography } from '../../styles/redesign' + +const SymptomPageTitle = ({ + date, + reloadSymptomData, + setDate, + subtitle, + title +}) => { + const rightArrowColor = isTomorrowInFuture(date) ? Colors.grey : Colors.orange + const leftArrowColor = isYesterdayInFuture(date) ? Colors.grey : Colors.orange + const navigate = (isForward) => { + const nextDay = isForward ? nextDate(date) : prevDate(date) + reloadSymptomData(nextDay) + setDate(nextDay) + } + + return ( + <View style={styles.container}> + <TouchableOpacity onPress={() => navigate(false)}> + <AppIcon name='chevron-left' color={leftArrowColor}/> + </TouchableOpacity> + <View style={styles.textContainer}> + <AppText style={styles.title}>{title}</AppText> + {subtitle && <AppText style={styles.subtitle}>{subtitle}</AppText>} + </View> + <TouchableOpacity onPress={() => navigate(true)}> + <AppIcon name='chevron-right' color={rightArrowColor}/> + </TouchableOpacity> + </View> + ) +} + +SymptomPageTitle.propTypes = { + date: PropTypes.string.isRequired, + reloadSymptomData: PropTypes.func.isRequired, + setDate: PropTypes.func.isRequired, + subtitle: PropTypes.string, + title: PropTypes.string +} + +const styles = StyleSheet.create({ + container: { + height: (Spacing.base * 4), + marginHorizontal: Spacing.base, + marginTop: Spacing.base, + ...Containers.rowContainer + }, + textContainer: { + alignItems: 'center' + }, + title: { + ...Typography.titleWithoutMargin + } +}) + +const mapStateToProps = (state) => { + return({ + date: getDate(state), + }) +} + +const mapDispatchToProps = (dispatch) => { + return({ + setDate: (date) => dispatch(setDate(date)), + }) +} + +export default connect( + mapStateToProps, + mapDispatchToProps, +)(SymptomPageTitle) \ No newline at end of file diff --git a/components/cycle-day/symptoms/bleeding.js b/components/cycle-day/symptoms/bleeding.js deleted file mode 100644 index f0579c1..0000000 --- a/components/cycle-day/symptoms/bleeding.js +++ /dev/null @@ -1,85 +0,0 @@ -import React, { Component } from 'react' -import { Switch } from 'react-native' -import PropTypes from 'prop-types' - -import { bleeding } from '../../../i18n/en/cycle-day' -import SelectTabGroup from '../select-tab-group' -import SymptomSection from './symptom-section' -import SymptomView from './symptom-view' - -import { getLabelsList } from '../../helpers/labels' -import { saveSymptom } from '../../../db' - -class Bleeding extends Component { - - static propTypes = { - cycleDay: PropTypes.object, - date: PropTypes.string.isRequired, - } - - constructor(props) { - super(props) - const symptom = 'bleeding' - const { cycleDay } = props - - const defaultSymptomData = { - value: null, - exclude: false - } - - const symptomData = - cycleDay && cycleDay[symptom] ? cycleDay[symptom] : defaultSymptomData - - this.state = { ...symptomData } - - this.bleedingRadioProps = getLabelsList(bleeding.labels) - - this.symptom = symptom - } - - autoSave = () => { - const { date } = this.props - const valuesToSave = { ...this.state } - const hasValueToSave = typeof this.state.value === 'number' - saveSymptom(this.symptom, date, hasValueToSave ? valuesToSave : null) - } - - componentDidUpdate() { - this.autoSave() - } - - render() { - return ( - <SymptomView - symptom={this.symptom} - values={this.state} - date={this.props.date} - > - <SymptomSection - header={bleeding.heaviness.header} - explainer={bleeding.heaviness.explainer} - > - <SelectTabGroup - buttons={this.bleedingRadioProps} - active={this.state.value} - onSelect={val => this.setState({ value: val })} - /> - </SymptomSection> - <SymptomSection - header={bleeding.exclude.header} - explainer={bleeding.exclude.explainer} - inline={true} - > - <Switch - onValueChange={(val) => { - this.setState({ exclude: val }) - }} - value={this.state.exclude} - /> - </SymptomSection> - </SymptomView> - ) - } -} - -export default Bleeding diff --git a/components/cycle-day/symptoms/cervix.js b/components/cycle-day/symptoms/cervix.js deleted file mode 100644 index 9966d71..0000000 --- a/components/cycle-day/symptoms/cervix.js +++ /dev/null @@ -1,113 +0,0 @@ -import React, { Component } from 'react' -import { Switch } from 'react-native' -import PropTypes from 'prop-types' - -import { cervix as labels } from '../../../i18n/en/cycle-day' -import SelectTabGroup from '../select-tab-group' -import SymptomSection from './symptom-section' -import SymptomView from './symptom-view' - -import { getLabelsList } from '../../helpers/labels' -import { saveSymptom } from '../../../db' - -class Cervix extends Component { - - static propTypes = { - cycleDay: PropTypes.object, - date: PropTypes.string.isRequired, - } - - constructor(props) { - super(props) - const symptom = 'cervix' - const { cycleDay } = props - - const defaultSymptomData = {} - - const symptomData = - cycleDay && cycleDay[symptom] ? cycleDay[symptom] : defaultSymptomData - - this.state = { ...symptomData } - - this.cervixOpeningRadioProps = getLabelsList(labels.opening.categories) - this.cervixFirmnessRadioProps = getLabelsList(labels.firmness.categories) - this.cervixPositionRadioProps = getLabelsList(labels.position.categories) - - this.symptom = symptom - } - - autoSave = () => { - const { date } = this.props - const { opening, firmness, position, exclude } = this.state - const valuesToSave = { - opening, - firmness, - position, - exclude: Boolean(exclude) - } - const nothingEntered = ['opening', 'firmness', 'position'].every( - val => typeof this.state[val] !== 'number') - saveSymptom(this.symptom, date, nothingEntered ? null : valuesToSave) - } - - componentDidUpdate() { - this.autoSave() - } - - render() { - // TODO saving this info for notice when leaving incomplete data - // const mandatoryNotCompleted = typeof this.state.opening != 'number' || typeof this.state.firmness != 'number' - return ( - <SymptomView - symptom={this.symptom} - values={this.state} - date={this.props.date} - > - <SymptomSection - header="Opening" - explainer={labels.opening.explainer} - > - <SelectTabGroup - buttons={this.cervixOpeningRadioProps} - active={this.state.opening} - onSelect={val => this.setState({ opening: val })} - /> - </SymptomSection> - <SymptomSection - header="Firmness" - explainer={labels.firmness.explainer} - > - <SelectTabGroup - buttons={this.cervixFirmnessRadioProps} - active={this.state.firmness} - onSelect={val => this.setState({ firmness: val })} - /> - </SymptomSection> - <SymptomSection - header="Position" - explainer={labels.position.explainer} - > - <SelectTabGroup - buttons={this.cervixPositionRadioProps} - active={this.state.position} - onSelect={val => this.setState({ position: val })} - /> - </SymptomSection> - <SymptomSection - header="Exclude" - explainer="You can exclude this value if you don't want to use it for fertility detection" - inline={true} - > - <Switch - onValueChange={(val) => { - this.setState({ exclude: val }) - }} - value={this.state.exclude} - /> - </SymptomSection> - </SymptomView> - ) - } -} - -export default Cervix diff --git a/components/cycle-day/symptoms/desire.js b/components/cycle-day/symptoms/desire.js deleted file mode 100644 index de05f52..0000000 --- a/components/cycle-day/symptoms/desire.js +++ /dev/null @@ -1,69 +0,0 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' - -import { intensity, desire } from '../../../i18n/en/cycle-day' -import SelectTabGroup from '../select-tab-group' -import SymptomSection from './symptom-section' -import SymptomView from './symptom-view' - -import { getLabelsList } from '../../helpers/labels' -import { saveSymptom } from '../../../db' - -class Desire extends Component { - - static propTypes = { - cycleDay: PropTypes.object, - date: PropTypes.string.isRequired, - } - - constructor(props) { - super(props) - const symptom = 'desire' - const { cycleDay } = props - - const defaultSymptomData = { value: null } - - const symptomData = - cycleDay && cycleDay[symptom] ? cycleDay[symptom] : defaultSymptomData - - this.state = { ...symptomData } - - this.symptom = symptom - - this.desireRadioProps = getLabelsList(intensity) - } - - autoSave = () => { - const { date } = this.props - const valuesToSave = { ...this.state } - const hasValueToSave = typeof this.state.value === 'number' - saveSymptom(this.symptom, date, hasValueToSave ? valuesToSave : null) - } - - componentDidUpdate() { - this.autoSave() - } - - render() { - return ( - <SymptomView - symptom={this.symptom} - values={this.state} - date={this.props.date} - > - <SymptomSection - header={desire.header} - explainer={desire.explainer} - > - <SelectTabGroup - buttons={this.desireRadioProps} - active={this.state.value} - onSelect={val => this.setState({ value: val })} - /> - </SymptomSection> - </SymptomView> - ) - } -} - -export default Desire diff --git a/components/cycle-day/symptoms/index.js b/components/cycle-day/symptoms/index.js deleted file mode 100644 index aa84321..0000000 --- a/components/cycle-day/symptoms/index.js +++ /dev/null @@ -1,21 +0,0 @@ -import BleedingEditView from './bleeding' -import TemperatureEditView from './temperature' -import MucusEditView from './mucus' -import CervixEditView from './cervix' -import NoteEditView from './note' -import DesireEditView from './desire' -import SexEditView from './sex' -import PainEditView from './pain' -import MoodEditView from './mood' - -export default { - BleedingEditView, - TemperatureEditView, - MucusEditView, - CervixEditView, - NoteEditView, - DesireEditView, - SexEditView, - PainEditView, - MoodEditView -} diff --git a/components/cycle-day/symptoms/info-symptom.js b/components/cycle-day/symptoms/info-symptom.js deleted file mode 100644 index d45984a..0000000 --- a/components/cycle-day/symptoms/info-symptom.js +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react' -import PropTypes from 'prop-types' -import { ScrollView, View, TouchableOpacity } from 'react-native' -import Icon from 'react-native-vector-icons/SimpleLineIcons' -import AppText from '../../common/app-text' -import labels from '../../../i18n/en/symptom-info.js' -import styles, {iconStyles} from '../../../styles/index' - -export default function InfoSymptom({ close, symptom }) { - return ( - <View style={styles.infoPopUpWrapper}> - <View style={styles.dimmed}></View> - <View style={styles.infoPopUp} testID="symptomInfoPopup"> - <TouchableOpacity onPress={close} style={styles.infoSymptomClose}> - <Icon name='close' {...iconStyles.infoPopUpClose}/> - </TouchableOpacity> - <ScrollView style={styles.infoSymptomText}> - <AppText>{labels[symptom].text}</AppText> - </ScrollView> - </View> - </View> - ) -} - -InfoSymptom.propTypes = { - close: PropTypes.func.isRequired, - symptom: PropTypes.string.isRequired -} diff --git a/components/cycle-day/symptoms/mood.js b/components/cycle-day/symptoms/mood.js deleted file mode 100644 index 228d2ce..0000000 --- a/components/cycle-day/symptoms/mood.js +++ /dev/null @@ -1,93 +0,0 @@ -import React, { Component } from 'react' -import { TextInput } from 'react-native' -import PropTypes from 'prop-types' - -import { mood as labels } from '../../../i18n/en/cycle-day' -import SelectBoxGroup from '../select-box-group' -import SymptomSection from './symptom-section' -import SymptomView from './symptom-view' - -import { saveSymptom } from '../../../db' - -class Mood extends Component { - - static propTypes = { - cycleDay: PropTypes.object, - date: PropTypes.string.isRequired, - } - - constructor(props) { - super(props) - const symptom = 'mood' - const { cycleDay } = props - - const defaultSymptomData = {} - - const symptomData = - cycleDay && cycleDay[symptom] ? cycleDay[symptom] : defaultSymptomData - - this.state = { ...symptomData } - - // We make sure other is always true when there is a note, - // e.g. when import is messed up. - if (this.state.note) this.state.other = true - - this.symptom = symptom - } - - autoSave = () => { - const { date } = this.props - const valuesToSave = Object.assign({}, this.state) - if (!valuesToSave.other) { - valuesToSave.note = null - } - const nothingEntered = Object.values(this.state).every(val => !val) - - saveSymptom(this.symptom, date, nothingEntered ? null : valuesToSave) - } - - componentDidUpdate() { - this.autoSave() - } - - toggleState = (key) => { - const curr = this.state[key] - this.setState({[key]: !curr}) - if (key === 'other' && !curr) { - this.setState({focusTextArea: true}) - } - } - - render() { - return ( - <SymptomView - symptom={this.symptom} - values={this.state} - date={this.props.date} - > - <SymptomSection - explainer={labels.explainer} - > - <SelectBoxGroup - labels={labels.categories} - onSelect={this.toggleState} - optionsState={this.state} - /> - { this.state.other && - <TextInput - autoFocus={this.state.focusTextArea} - multiline={true} - placeholder="Enter" - value={this.state.note} - onChangeText={(val) => { - this.setState({note: val}) - }} - /> - } - </SymptomSection> - </SymptomView> - ) - } -} - -export default Mood diff --git a/components/cycle-day/symptoms/mucus.js b/components/cycle-day/symptoms/mucus.js deleted file mode 100644 index 2a57362..0000000 --- a/components/cycle-day/symptoms/mucus.js +++ /dev/null @@ -1,104 +0,0 @@ -import React, { Component } from 'react' -import { Switch } from 'react-native' -import PropTypes from 'prop-types' - -import { mucus as labels } from '../../../i18n/en/cycle-day' -import computeNfpValue from '../../../lib/nfp-mucus' -import SelectTabGroup from '../select-tab-group' -import SymptomSection from './symptom-section' -import SymptomView from './symptom-view' - -import { getLabelsList } from '../../helpers/labels' -import { saveSymptom } from '../../../db' - -class Mucus extends Component { - - static propTypes = { - cycleDay: PropTypes.object, - date: PropTypes.string.isRequired, - } - - constructor(props) { - super(props) - const symptom = 'mucus' - const { cycleDay } = props - - const defaultSymptomData = {} - - const symptomData = - cycleDay && cycleDay[symptom] ? cycleDay[symptom] : defaultSymptomData - - this.state = { ...symptomData } - - this.mucusFeeling = getLabelsList(labels.feeling.categories) - this.mucusTexture = getLabelsList(labels.texture.categories) - - this.symptom = symptom - } - - shouldAutoSave = () => { - const { date } = this.props - const nothingEntered = ['feeling', 'texture'].every( - val => typeof this.state[val] !== 'number' - ) - const { feeling, texture, exclude} = this.state - const valuesToSave = { - feeling, - texture, - value: computeNfpValue(feeling, texture), - exclude: Boolean(exclude) - } - saveSymptom(this.symptom, date, nothingEntered ? null : valuesToSave) - } - - componentDidUpdate() { - this.shouldAutoSave() - } - - render() { - // TODO leaving this info for notice when leaving incomplete data - // const mandatoryNotCompletedYet = typeof this.state.feeling != 'number' || typeof this.state.texture != 'number' - return ( - <SymptomView - symptom={this.symptom} - values={this.state} - date={this.props.date} - > - <SymptomSection - header='Feeling' - explainer={labels.feeling.explainer} - > - <SelectTabGroup - buttons={this.mucusFeeling} - onSelect={val => this.setState({ feeling: val })} - active={this.state.feeling} - /> - </SymptomSection> - <SymptomSection - header='Texture' - explainer={labels.texture.explainer} - > - <SelectTabGroup - buttons={this.mucusTexture} - onSelect={val => this.setState({ texture: val })} - active={this.state.texture} - /> - </SymptomSection> - <SymptomSection - header="Exclude" - explainer={labels.excludeExplainer} - inline={true} - > - <Switch - onValueChange={(val) => { - this.setState({ exclude: val }) - }} - value={this.state.exclude} - /> - </SymptomSection> - </SymptomView> - ) - } -} - -export default Mucus diff --git a/components/cycle-day/symptoms/note.js b/components/cycle-day/symptoms/note.js deleted file mode 100644 index dc70254..0000000 --- a/components/cycle-day/symptoms/note.js +++ /dev/null @@ -1,65 +0,0 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' -import { TextInput } from 'react-native' - -import SymptomSection from './symptom-section' -import { noteExplainer } from '../../../i18n/en/cycle-day' -import { shared as sharedLabels } from '../../../i18n/en/labels' -import SymptomView from './symptom-view' - -import { saveSymptom } from '../../../db' - -class Note extends Component { - static propTypes = { - cycleDay: PropTypes.object, - date: PropTypes.string.isRequired - } - - constructor(props) { - super(props) - const symptom = 'note' - const { cycleDay } = props - - const defaultSymptomData = { value: '' } - - const symptomData = - cycleDay && cycleDay[symptom] ? cycleDay[symptom] : defaultSymptomData - - this.state = { ...symptomData } - - this.symptom = symptom - } - - autoSave = () => { - const { date } = this.props - const valuesToSave = { ...this.state } - saveSymptom(this.symptom, date, this.state.value ? valuesToSave : null) - } - - componentDidUpdate() { - this.autoSave() - } - - render() { - return ( - <SymptomView - symptom={this.symptom} - values={this.state} - date={this.props.date} - > - <SymptomSection explainer={noteExplainer} > - <TextInput - autoFocus={true} - multiline={true} - placeholder={sharedLabels.enter} - onChangeText={(val) => { this.setState({ value: val })}} - value={this.state.value} - testID='noteInput' - /> - </SymptomSection> - </SymptomView> - ) - } -} - -export default Note diff --git a/components/cycle-day/symptoms/pain.js b/components/cycle-day/symptoms/pain.js deleted file mode 100644 index 218eb38..0000000 --- a/components/cycle-day/symptoms/pain.js +++ /dev/null @@ -1,94 +0,0 @@ -import React, { Component } from 'react' -import { TextInput } from 'react-native' -import PropTypes from 'prop-types' - -import { pain as labels } from '../../../i18n/en/cycle-day' -import { shared as sharedLabels } from '../../../i18n/en/labels' -import SelectBoxGroup from '../select-box-group' -import SymptomSection from './symptom-section' -import SymptomView from './symptom-view' - -import { saveSymptom } from '../../../db' - -class Pain extends Component { - - static propTypes = { - cycleDay: PropTypes.object, - date: PropTypes.string.isRequired, - } - - constructor(props) { - super(props) - const symptom = 'pain' - const { cycleDay } = props - - const defaultSymptomData = {} - - const symptomData = - cycleDay && cycleDay[symptom] ? cycleDay[symptom] : defaultSymptomData - - this.state = { ...symptomData } - - // We make sure other is always true when there is a note, - // e.g. when import is messed up. - if (this.state.note) this.state.other = true - - this.symptom = symptom - } - - autoSave = () => { - const { date } = this.props - const valuesToSave = Object.assign({}, this.state) - if (!valuesToSave.other) { - valuesToSave.note = null - } - const nothingEntered = Object.values(this.state).every(val => !val) - - saveSymptom(this.symptom, date, nothingEntered ? null : valuesToSave) - } - - componentDidUpdate() { - this.autoSave() - } - - toggleState = (key) => { - const curr = this.state[key] - this.setState({[key]: !curr}) - if (key === 'other' && !curr) { - this.setState({focusTextArea: true}) - } - } - - render() { - return ( - <SymptomView - symptom={this.symptom} - values={this.state} - date={this.props.date} - > - <SymptomSection - explainer={labels.explainer} - > - <SelectBoxGroup - labels={labels.categories} - onSelect={this.toggleState} - optionsState={this.state} - /> - { this.state.other && - <TextInput - autoFocus={this.state.focusTextArea} - multiline={true} - placeholder={sharedLabels.enter} - value={this.state.note} - onChangeText={(val) => { - this.setState({note: val}) - }} - /> - } - </SymptomSection> - </SymptomView> - ) - } -} - -export default Pain diff --git a/components/cycle-day/symptoms/sex.js b/components/cycle-day/symptoms/sex.js deleted file mode 100644 index 6b4bd96..0000000 --- a/components/cycle-day/symptoms/sex.js +++ /dev/null @@ -1,110 +0,0 @@ -import React, { Component } from 'react' -import { TextInput } from 'react-native' -import PropTypes from 'prop-types' - -import { sex as sexLabels, contraceptives as contraceptivesLabels } from '../../../i18n/en/cycle-day' -import { shared as sharedLabels } from '../../../i18n/en/labels' -import SelectBoxGroup from '../select-box-group' -import SymptomSection from './symptom-section' -import SymptomView from './symptom-view' - -import { saveSymptom } from '../../../db' - -class Sex extends Component { - - static propTypes = { - cycleDay: PropTypes.object, - date: PropTypes.string.isRequired, - } - - constructor(props) { - super(props) - const symptom = 'sex' - const { cycleDay } = props - - const defaultSymptomData = {} - - const symptomData = - cycleDay && cycleDay[symptom] ? cycleDay[symptom] : defaultSymptomData - - this.state = { ...symptomData } - - // We make sure other is always true when there is a note, - // e.g. when import is messed up. - if (this.state.note) this.state.other = true - - this.symptom = symptom - } - - autoSave = () => { - const { date } = this.props - const valuesToSave = Object.assign({}, this.state) - if (!valuesToSave.other) { - valuesToSave.note = null - } - const nothingEntered = Object.values(this.state).every(val => !val) - - saveSymptom(this.symptom, date, nothingEntered ? null : valuesToSave) - } - - componentDidUpdate() { - this.autoSave() - } - - toggleState = (key) => { - const curr = this.state[key] - this.setState({[key]: !curr}) - if (key === 'other'){ - if (curr){ - this.setState({note: ""}) - } else { - this.setState({focusTextArea: true}) - } - } - } - - render() { - return ( - <SymptomView - symptom={this.symptom} - values={this.state} - date={this.props.date} - > - <SymptomSection - header={sexLabels.header} - explainer={sexLabels.explainer} - > - <SelectBoxGroup - labels={sexLabels.categories} - onSelect={this.toggleState} - optionsState={this.state} - /> - </SymptomSection> - <SymptomSection - header={contraceptivesLabels.header} - explainer={contraceptivesLabels.explainer} - > - <SelectBoxGroup - labels={contraceptivesLabels.categories} - onSelect={this.toggleState} - optionsState={this.state} - /> - </SymptomSection> - - {this.state.other && - <TextInput - autoFocus={this.state.focusTextArea} - multiline={true} - placeholder={sharedLabels.enter} - value={this.state.note} - onChangeText={(val) => { - this.setState({ note: val }) - }} - /> - } - </SymptomView> - ) - } -} - -export default Sex diff --git a/components/cycle-day/symptoms/symptom-info.js b/components/cycle-day/symptoms/symptom-info.js deleted file mode 100644 index 6ccfab3..0000000 --- a/components/cycle-day/symptoms/symptom-info.js +++ /dev/null @@ -1,41 +0,0 @@ -import React, { Component } from 'react' -import { TouchableOpacity } from 'react-native' -import PropTypes from 'prop-types' -import Icon from 'react-native-vector-icons/Entypo' - -import InfoPopUp from './info-symptom' - -import styles, { iconStyles } from '../../../styles' - -export default class SymptomInfo extends Component { - - static propTypes = { - symptom: PropTypes.string - } - - constructor() { - super() - this.state = { showInfo: false } - } - - showInfo = () => this.setState({ showInfo: true }) - - hideInfo = () => this.setState({ showInfo: false }) - - render() { - return ( - <React.Fragment> - <TouchableOpacity - onPress={this.showInfo} - style={styles.infoButtonSymptomView} - testID="symptomInfoButton" - > - <Icon name="info-with-circle" style={iconStyles.info} /> - </TouchableOpacity> - { this.state.showInfo && - <InfoPopUp symptom={this.props.symptom} close={this.hideInfo} /> - } - </React.Fragment> - ) - } -} \ No newline at end of file diff --git a/components/cycle-day/symptoms/symptom-section.js b/components/cycle-day/symptoms/symptom-section.js deleted file mode 100644 index 8965190..0000000 --- a/components/cycle-day/symptoms/symptom-section.js +++ /dev/null @@ -1,45 +0,0 @@ -import React, { Component } from 'react' -import { View } from 'react-native' -import PropTypes from 'prop-types' - -import AppText from '../../common/app-text' -import styles from '../../../styles' - -export default class SymptomSection extends Component { - render() { - const p = this.props - let placeHeadingInline - if (!p.explainer && p.inline) { - placeHeadingInline = { - flexDirection: 'row', - alignItems: "center" - } - } - return ( - <View style={[placeHeadingInline, styles.symptomSection]}> - { p.header && - <AppText style={styles.symptomViewHeading}>{p.header}</AppText> - } - <View - flexDirection={p.inline ? 'row' : null} - flex={1} - alignItems={p.inline ? 'center' : null} - > - { p.explainer && ( - <View flex={1}> - <AppText>{p.explainer}</AppText> - </View> - )} - {p.children} - </View> - </View> - ) - } -} - -SymptomSection.propTypes = { - children: PropTypes.node, - explainer: PropTypes.string, - header: PropTypes.string, - inline: PropTypes.bool -} \ No newline at end of file diff --git a/components/cycle-day/symptoms/symptom-view.js b/components/cycle-day/symptoms/symptom-view.js deleted file mode 100644 index a02ca83..0000000 --- a/components/cycle-day/symptoms/symptom-view.js +++ /dev/null @@ -1,117 +0,0 @@ -import React, { Component } from 'react' -import { ScrollView, View, Alert } from 'react-native' -import PropTypes from 'prop-types' - -import { connect } from 'react-redux' -import { getDate } from '../../../slices/date' -import { goBack } from '../../../slices/navigation' - -import { saveSymptom } from '../../../db' -import formatDate from '../../helpers/format-date' - -import Header from '../../header' -import SymptomInfo from './symptom-info' - -import { headerTitles } from '../../../i18n/en/labels' -import { sharedDialogs } from '../../../i18n/en/cycle-day' - -import styles from '../../../styles' - -const checkIfHasValues = data => { - const isMeaningfulValue = value => value || value === 0 - return Object.values(data).some(isMeaningfulValue) -} - -class SymptomView extends Component { - - static propTypes = { - symptom: PropTypes.string.isRequired, - values: PropTypes.object, - date: PropTypes.string, - children: PropTypes.node, - goBack: PropTypes.func, - } - - constructor(props) { - super() - this.state = { - shouldShowDelete: checkIfHasValues(props.values) - } - } - - componentDidUpdate() { - const shouldShowDelete = checkIfHasValues(this.props.values) - if (shouldShowDelete !== this.state.shouldShowDelete) { - this.setState({ shouldShowDelete }) - } - } - - deleteSymptomEntry() { - const { symptom, date } = this.props - saveSymptom(symptom, date, null) - } - - onDeleteConfirmation = () => { - this.deleteSymptomEntry() - this.props.goBack() - } - - showConfirmationAlert = () => { - - const cancelButton = { - text: sharedDialogs.cancel, - style: 'cancel' - } - - const confirmationButton = { - text: sharedDialogs.reallyDeleteData, - onPress: this.onDeleteConfirmation - } - - return Alert.alert( - sharedDialogs.areYouSureTitle, - sharedDialogs.areYouSureToDelete, - [cancelButton, confirmationButton] - ) - } - - render() { - const { symptom, date, goBack } = this.props - const { shouldShowDelete } = this.state - const handleDelete = shouldShowDelete ? this.showConfirmationAlert : null - - return ( - <View style={{flex: 1}}> - <Header - title={headerTitles[symptom]} - subtitle={formatDate(date)} - handleBack={goBack} - handleDelete={handleDelete} - /> - <View flex={1}> - <ScrollView style={styles.page}> - {this.props.children} - </ScrollView> - <SymptomInfo symptom={symptom} /> - </View> - </View> - ) - } -} - -const mapStateToProps = (state) => { - return({ - date: getDate(state), - }) -} - -const mapDispatchToProps = (dispatch) => { - return({ - goBack: () => dispatch(goBack()), - }) -} - -export default connect( - mapStateToProps, - mapDispatchToProps, -)(SymptomView) diff --git a/components/cycle-day/symptoms/temperature-input.js b/components/cycle-day/symptoms/temperature-input.js deleted file mode 100644 index fad6da7..0000000 --- a/components/cycle-day/symptoms/temperature-input.js +++ /dev/null @@ -1,107 +0,0 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' - -import { View } from 'react-native' -import AppText from '../../common/app-text' -import AppTextInput from '../../common/app-text-input' - -import { temperature as labels } from '../../../i18n/en/cycle-day' - -import styles from '../../../styles' - -import { getPreviousTemperature } from '../../../db' -import { scaleObservable } from '../../../local-storage' -import { TEMP_MAX, TEMP_MIN } from '../../../config' - -export default class TemperatureInput extends Component { - - static propTypes = { - temperature: PropTypes.string, - handleTemperatureChange: PropTypes.func, - date: PropTypes.string, - } - - constructor(props) { - super(props) - - let shouldShowSuggestion = false - let suggestedTemperature = null - - if (!props.temperature) { - const prevTemp = getPreviousTemperature(props.date) - if (prevTemp) { - shouldShowSuggestion = true - suggestedTemperature = prevTemp.toString() - } - } - - this.state = { - temperature: props.temperature, - shouldShowSuggestion, - suggestedTemperature - } - } - - setTemperature = (temperature) => { - this.setState({ - shouldShowSuggestion: false, - temperature - }) - this.props.handleTemperatureChange(Number(temperature)) - } - - render () { - const { - shouldShowSuggestion, - suggestedTemperature, - temperature - } = this.state - const inputStyle = [ - styles.temperatureTextInput, - shouldShowSuggestion ? styles.temperatureTextInputSuggestion : null - ] - return ( - <React.Fragment> - <View style={styles.framedSegmentInlineChildren}> - <AppTextInput - style={inputStyle} - autoFocus={true} - value={shouldShowSuggestion ? suggestedTemperature : temperature} - onChangeText={this.setTemperature} - keyboardType='numeric' - maxLength={5} - testID='temperatureInput' - /> - <AppText style={{ marginLeft: 5 }}>°C</AppText> - </View> - <OutOfRangeWarning temperature={this.props.temperature} /> - </React.Fragment> - ) - } -} - -const OutOfRangeWarning = ({ temperature }) => { - if (temperature === '') { - return false - } - - const value = Number(temperature) - const range = { min: TEMP_MIN, max: TEMP_MAX } - const scale = scaleObservable.value - - let warningMsg - - if (value < range.min || value > range.max) { - warningMsg = labels.outOfAbsoluteRangeWarning - } else if (value < scale.min || value > scale.max) { - warningMsg = labels.outOfRangeWarning - } else { - warningMsg = null - } - - return <AppText style={styles.hint}>{warningMsg}</AppText> -} - -OutOfRangeWarning.propTypes = { - temperature: PropTypes.string.isRequired -} diff --git a/components/cycle-day/symptoms/temperature.js b/components/cycle-day/symptoms/temperature.js deleted file mode 100644 index 1acd975..0000000 --- a/components/cycle-day/symptoms/temperature.js +++ /dev/null @@ -1,139 +0,0 @@ -import React, { Component } from 'react' -import { Switch } from 'react-native' -import PropTypes from 'prop-types' - -import { LocalTime, ChronoUnit } from 'js-joda' -import { temperature as labels } from '../../../i18n/en/cycle-day' -import { shared as sharedLabels } from '../../../i18n/en/labels' - -import AppTextInput from '../../common/app-text-input' -import SymptomSection from './symptom-section' -import SymptomView from './symptom-view' -import TimeInput from './time-input' -import TemperatureInput from './temperature-input' - -import { saveSymptom } from '../../../db' - -const minutes = ChronoUnit.MINUTES - -class Temperature extends Component { - - static propTypes = { - cycleDay: PropTypes.object, - date: PropTypes.string.isRequired, - } - - constructor(props) { - super(props) - const symptom = 'temperature' - const { cycleDay } = props - - const defaultSymptomData = { - time: LocalTime.now().truncatedTo(minutes).toString(), - temperature: null, - note: '', - exclude: false - } - - const symptomData = - cycleDay && cycleDay[symptom] ? cycleDay[symptom] : defaultSymptomData - - const { value, ...restSymptomData } = symptomData - this.state = { temperature: value, ...restSymptomData } - - this.symptom = symptom - } - - isDeleteIconActive() { - return ['temperature', 'note', 'exclude'].some(key => { - // the time is always and the suggested temp sometimes prefilled, so they're not relevant for setting - // the delete button active. - return this.state[key] || this.state[key] === 0 - }) - } - - autoSave = () => { - const { date } = this.props - const { temperature, exclude, time, note } = this.state - - const valuesToSave = { - value: temperature, - exclude, - time, - note - } - - saveSymptom(this.symptom, date, temperature ? valuesToSave : null) - } - - setTime = (time) => { - this.setState({ time }) - } - - setTemperature = (temperature) => { - this.setState({ temperature }) - } - - setNote = (note) => { - this.setState({ note }) - } - - componentDidUpdate() { - this.autoSave() - } - - render() { - const { temperature } = this.state - - return ( - <SymptomView - symptom={'temperature'} - values={this.state} - date={this.props.date} - > - <SymptomSection - header={labels.temperature.header} - explainer={labels.temperature.explainer} - > - <TemperatureInput - temperature={temperature ? temperature.toFixed(2) : ''} - date={this.props.date} - handleTemperatureChange={this.setTemperature} - /> - </SymptomSection> - <SymptomSection header={labels.time}> - <TimeInput - time={this.state.time} - handleTimeChange={this.setTime} - /> - </SymptomSection> - <SymptomSection - header={labels.note.header} - explainer={labels.note.explainer} - > - <AppTextInput - multiline={true} - placeholder={sharedLabels.enter} - value={this.state.note} - onChangeText={this.setNote} - testID='noteInput' - /> - </SymptomSection> - <SymptomSection - header={labels.exclude.header} - explainer={labels.exclude.explainer} - inline={true} - > - <Switch - onValueChange={(val) => { - this.setState({ exclude: val }) - }} - value={this.state.exclude} - /> - </SymptomSection> - </SymptomView> - ) - } -} - -export default Temperature diff --git a/components/cycle-day/symptoms/time-input.js b/components/cycle-day/symptoms/time-input.js deleted file mode 100644 index 2c48923..0000000 --- a/components/cycle-day/symptoms/time-input.js +++ /dev/null @@ -1,62 +0,0 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' -import { Keyboard } from 'react-native' - -import AppTextInput from '../../common/app-text-input' -import styles from '../../../styles' - -import DateTimePicker from 'react-native-modal-datetime-picker-nevo' -import moment from 'moment' - -export default class TimeInput extends Component { - - static propTypes = { - time: PropTypes.string, - handleTimeChange: PropTypes.func, - } - - constructor(props) { - super(props) - - this.state = { - isTimePickerVisible: false, - } - } - - showTimePicker = () => { - Keyboard.dismiss() - this.setState({ isTimePickerVisible: true }) - } - - hideTimePicker = () => { - this.setState({ isTimePickerVisible: false }) - } - - handleConfirm = (jsDate) => { - // DateTimePicker also when in mode="time" returns full date (with time) - const time = moment(jsDate).format('HH:mm') - this.props.handleTimeChange(time) - this.setState({ - isTimePickerVisible: false - }) - } - - render () { - return ( - <React.Fragment> - <AppTextInput - style={styles.temperatureTextInput} - onFocus={this.showTimePicker} - value={this.props.time} - testID='timeInput' - /> - <DateTimePicker - mode="time" - isVisible={this.state.isTimePickerVisible} - onConfirm={this.handleConfirm} - onCancel={this.hideTimePicker} - /> - </React.Fragment> - ) - } -} diff --git a/components/cycle-day/temperature.js b/components/cycle-day/temperature.js new file mode 100644 index 0000000..7a8b7d1 --- /dev/null +++ b/components/cycle-day/temperature.js @@ -0,0 +1,158 @@ +import React, { Component } from 'react' +import { StyleSheet, View } from 'react-native' +import PropTypes from 'prop-types' +import { Keyboard } from 'react-native' +import DateTimePicker from 'react-native-modal-datetime-picker-nevo' +import moment from 'moment' + +import AppText from '../common/app-text' +import AppTextInput from '../common/app-text-input' +import Segment from '../common/segment' + +import { connect } from 'react-redux' +import { getDate } from '../../slices/date' +import { isTemperatureOutOfRange, isPreviousTemperature } from '../helpers/cycle-day' + +import { temperature as labels } from '../../i18n/en/cycle-day' + +import { Colors, Containers, Sizes, Spacing } from '../../styles/redesign' + +const formatTemperature = value => value === null + ? value + : Number.parseFloat(value).toFixed(2) + +class Temperature extends Component { + + static propTypes = { + data: PropTypes.object, + date: PropTypes.string.isRequired, + save: PropTypes.func + } + + constructor(props) { + super(props) + + const { data, date } = this.props + const { value } = data + const { shouldShowSuggestion, suggestedTemperature } = + isPreviousTemperature(date) + + this.state = { + isTimePickerVisible: false, + shouldShowSuggestion, + suggestedTemperature: formatTemperature(suggestedTemperature), + value: formatTemperature(value) + } + } + + onCancelTimePicker = () => { + this.setState({ isTimePickerVisible: false }) + } + + onChangeTemperature = (value) => { + this.setState({ value, shouldShowSuggestion: false }) + } + + onShowTimePicker = () => { + Keyboard.dismiss() + this.setState({ isTimePickerVisible: true }) + } + + setTemperature = () => { + const { value } = this.state + this.props.save(value, 'value') + } + + setTime = (jsDate) => { + const time = moment(jsDate).format('HH:mm') + const isTimePickerVisible = false + + this.props.save(time, 'time') + this.setState({ isTimePickerVisible }) + } + + render() { + const { shouldShowSuggestion, suggestedTemperature, value } = this.state + const { time } = this.props.data + + const inputStyle = (shouldShowSuggestion && value === null) + ? { color: Colors.grey } + : {color: Colors.greyDark} + const outOfRangeWarning = isTemperatureOutOfRange(value) + let temperatureToShow = null + + if (value) { + temperatureToShow = value + } else if (shouldShowSuggestion) { + temperatureToShow = suggestedTemperature + } + + return ( + <React.Fragment> + <Segment> + <AppText style={styles.title}>{labels.temperature.explainer}</AppText> + <View style={styles.container}> + <AppTextInput + value={temperatureToShow === null ? '' : temperatureToShow} + onChangeText={this.onChangeTemperature} + onEndEditing={this.setTemperature} + keyboardType="numeric" + maxLength={5} + style={inputStyle} + testID="temperatureInput" + underlineColorAndroid="transparent" + /> + <AppText>°C</AppText> + </View> + { outOfRangeWarning !== null && + <View style={styles.hintContainer}> + <AppText style={styles.hint}>{outOfRangeWarning}</AppText> + </View> + } + </Segment> + <Segment> + <AppText style={styles.title}>{labels.time}</AppText> + <AppTextInput + onFocus={this.onShowTimePicker} + testID='timeInput' + value={time} + /> + <DateTimePicker + isVisible={this.state.isTimePickerVisible} + mode="time" + onConfirm={this.setTime} + onCancel={this.onCancelTimePicker} + /> + </Segment> + </React.Fragment> + ) + } +} + +const styles = StyleSheet.create({ + container: { + ...Containers.rowContainer + }, + hint: { + fontStyle: 'italic', + fontSize: Sizes.small + }, + hintContainer: { + marginVertical: Spacing.tiny + }, + title: { + fontSize: Sizes.subtitle + } +}) + + +const mapStateToProps = (state) => { + return({ + date: getDate(state), + }) +} + +export default connect( + mapStateToProps, + null, +)(Temperature) diff --git a/components/helpers/cycle-day.js b/components/helpers/cycle-day.js new file mode 100644 index 0000000..653765a --- /dev/null +++ b/components/helpers/cycle-day.js @@ -0,0 +1,437 @@ +import { ChronoUnit, LocalDate, LocalTime } from 'js-joda' + +import { getPreviousTemperature, saveSymptom } from '../../db' +import { scaleObservable } from '../../local-storage' + +import * as labels from '../../i18n/en/cycle-day' +import { getLabelsList } from './labels' +import { TEMP_MAX, TEMP_MIN } from '../../config' + +const bleedingLabels = labels.bleeding.labels +const cervixLabels = labels.cervix +const contraceptiveLabels = labels.contraceptives.categories +const intensityLabels = labels.intensity +const moodLabels = labels.mood.categories +const mucusLabels = labels.mucus +const noteDescription = labels.noteExplainer +const painLabels = labels.pain.categories +const sexLabels = labels.sex.categories +const temperatureLabels = labels.temperature + +const minutes = ChronoUnit.MINUTES + +const isNumber = (value) => typeof value === 'number' +export const shouldShow = (value) => value !== null ? true : false + +export const isPreviousTemperature = (temperature) => { + const previousTemperature = getPreviousTemperature(temperature) + const shouldShowSuggestion = previousTemperature ? true : false + const suggestedTemperature = previousTemperature ? + previousTemperature.toString() : null + + return { shouldShowSuggestion, suggestedTemperature } +} + +export const isTemperatureOutOfRange = (temperature) => { + if (temperature === '') return null + + const value = Number(temperature) + const range = { min: TEMP_MIN, max: TEMP_MAX } + const scale = scaleObservable.value + + let warningMsg = null + + if (value < range.min || value > range.max) { + warningMsg = labels.temperature.outOfAbsoluteRangeWarning + } else if (value < scale.min || value > scale.max) { + warningMsg = labels.temperature.outOfRangeWarning + } + + return warningMsg +} + +export const blank = { + bleeding: { + exclude: false, + value: null + }, + cervix: { + exclude: false, + firmness: null, + opening: null, + position: null, + }, + desire: { + value: null + }, + mood:{ + happy: null, + sad: null, + stressed: null, + balanced: null, + fine: null, + anxious: null, + energetic: null, + fatigue: null, + angry: null, + other: null, + note: null + }, + mucus: { + exclude: false, + feeling: null, + texture: null, + value: null + }, + note: { + value: null + }, + pain: { + cramps: null, + ovulationPain: null, + headache: null, + backache: null, + nausea: null, + tenderBreasts: null, + migraine: null, + other: null, + note: null + }, + sex: { + solo: null, + partner: null, + condom: null, + pill: null, + iud: null, + patch: null, + ring: null, + implant: null, + diaphragm: null, + none: null, + other: null, + note: null + }, + temperature: { + exclude: false, + note: null, + time: LocalTime.now().truncatedTo(minutes).toString(), + value: null + } +} + +export const symtomPage = { + bleeding: { + excludeText: labels.bleeding.exclude.explainer, + note: null, + selectBoxGroups: null, + selectTabGroups: [{ + key: 'value', + options: getLabelsList(bleedingLabels), + title: labels.bleeding.heaviness.explainer, + }] + }, + cervix: { + excludeText: cervixLabels.excludeExplainer, + note: null, + selectBoxGroups: null, + selectTabGroups: [ + { + key: 'opening', + options: getLabelsList(cervixLabels.opening.categories), + title: cervixLabels.opening.explainer, + }, + { + key: 'firmness', + options: getLabelsList(cervixLabels.firmness.categories), + title: cervixLabels.firmness.explainer, + }, + { + key: 'position', + options: getLabelsList(cervixLabels.position.categories), + title: cervixLabels.position.explainer, + } + ] + }, + desire: { + excludeText: null, + note: null, + selectBoxGroups: null, + selectTabGroups: [{ + key: 'value', + options: getLabelsList(intensityLabels), + title: labels.desire.explainer + }] + }, + mucus: { + excludeText: mucusLabels.excludeExplainer, + note: null, + selectBoxGroups: null, + selectTabGroups: [ + { + key: 'feeling', + options: getLabelsList(mucusLabels.feeling.categories), + title: mucusLabels.feeling.explainer, + }, + { + key: 'texture', + options: getLabelsList(mucusLabels.texture.categories), + title: mucusLabels.texture.explainer, + } + ] + }, + mood: { + excludeText: null, + note: null, + selectBoxGroups: [{ + key: 'mood', + options: moodLabels, + title: labels.mood.explainer + }], + selectTabGroups: null + }, + note: { + excludeText: null, + note: noteDescription, + selectBoxGroups: null, + selectTabGroups: null + }, + pain: { + excludeText: null, + note: null, + selectBoxGroups: [{ + key: 'pain', + options: painLabels, + title: labels.pain.explainer + }], + selectTabGroups: null + }, + sex: { + excludeText: null, + note: null, + selectBoxGroups: [ + { + key: 'sex', + options: sexLabels, + title: labels.sex.explainer, + }, + { + key: 'contraceptives', + options: contraceptiveLabels, + title: labels.contraceptives.explainer, + } + ], + selectTabGroups: null + }, + temperature: { + excludeText: temperatureLabels.exclude.explainer, + note: temperatureLabels.note.explainer, + selectBoxGroups: null, + selectTabGroups: null + } +} + +export const save = { + bleeding: (data, date, shouldDeleteData) => { + const { exclude, value } = data + const isDataEntered = isNumber(value) + const valuesToSave = shouldDeleteData || !isDataEntered + ? null : { value, exclude } + + saveSymptom('bleeding', date, valuesToSave) + }, + cervix: (data, date, shouldDeleteData) => { + const { opening, firmness, position, exclude } = data + const isDataEntered = ['opening', 'firmness', 'position'].some( + value => isNumber(data[value])) + const valuesToSave = shouldDeleteData || !isDataEntered + ? null : { opening, firmness, position, exclude } + + saveSymptom('cervix', date, valuesToSave) + }, + desire: (data, date, shouldDeleteData) => { + const { value } = data + const valuesToSave = shouldDeleteData || !isNumber(value) + ? null : { value } + + saveSymptom('desire', date, valuesToSave) + }, + mood: (data, date, shouldDeleteData) => { + saveBoxSymptom(data, date, shouldDeleteData, 'mood') + }, + mucus: (data, date, shouldDeleteData) => { + const { feeling, texture, exclude } = data + const isDataEntered = ['feeling', 'texture'].some( + value => isNumber(data[value])) + const valuesToSave = shouldDeleteData || !isDataEntered + ? null : { feeling, texture, exclude } + + saveSymptom('mucus', date, valuesToSave) + }, + note: (data, date, shouldDeleteData) => { + const { value } = data + const isValidData = value !== null && value !== '' + const valuesToSave = shouldDeleteData || !isValidData ? null : { value } + + saveSymptom('note', date, valuesToSave) + }, + pain: (data, date, shouldDeleteData) => { + saveBoxSymptom(data, date, shouldDeleteData, 'pain') + }, + sex: (data, date, shouldDeleteData) => { + saveBoxSymptom(data, date, shouldDeleteData, 'sex') + }, + temperature: (data, date, shouldDeleteData) => { + const { exclude, note, time, value } = data + const valuesToSave = { + exclude, + note, + time, + value: Number(value) + } + + saveSymptom( + 'temperature', + date, + (shouldDeleteData || value === null) ? null : valuesToSave + ) + } +} + +const saveBoxSymptom = (data, date, shouldDeleteData, symptom) => { + const isDataEntered = Object.keys(data).some(key => data[key] !== null) + const valuesToSave = shouldDeleteData || !isDataEntered + ? null : data + + saveSymptom(symptom, date, valuesToSave) +} + +const label = { + bleeding: ({ value, exclude }) => { + if (isNumber(value)) { + const bleedingLabel = bleedingLabels[value] + return exclude ? `(${bleedingLabel})` : bleedingLabel + } + }, + temperature: ({ value, time, exclude }) => { + if (isNumber(value)) { + let temperatureLabel = `${value} °C` + if (time) { + temperatureLabel += ` - ${time}` + } + if (exclude) { + temperatureLabel = `(${temperatureLabel})` + } + return temperatureLabel + } + }, + mucus: mucus => { + const filledCategories = ['feeling', 'texture'].filter(c => isNumber(mucus[c])) + let label = filledCategories.map(category => { + return labels.mucus.subcategories[category] + ': ' + labels.mucus[category].categories[mucus[category]] + }).join(', ') + + if (isNumber(mucus.value)) label += `\n => ${labels.mucusNFP[mucus.value]}` + if (mucus.exclude) label = `(${label})` + + return label + }, + cervix: cervix => { + const filledCategories = ['opening', 'firmness', 'position'].filter(c => isNumber(cervix[c])) + let label = filledCategories.map(category => { + return labels.cervix.subcategories[category] + ': ' + labels.cervix[category].categories[cervix[category]] + }).join(', ') + + if (cervix.exclude) label = `(${label})` + + return label + }, + note: note => note.value, + desire: ({ value }) => { + if (isNumber(value)) { + return intensityLabels[value] + } + }, + sex: sex => { + const sexLabel = [] + if (sex && Object.values({...sex}).some(val => val)){ + Object.keys(sex).forEach(key => { + if(sex[key] && key !== 'other' && key !== 'note') { + sexLabel.push( + sexLabels[key] || + contraceptiveLabels[key] + ) + } + if(key === 'other' && sex.other) { + let label = contraceptiveLabels[key] + if(sex.note) { + label = `${label} (${sex.note})` + } + sexLabel.push(label) + } + }) + return sexLabel.join(', ') + } + }, + pain: pain => { + const painLabel = [] + if (pain && Object.values({...pain}).some(val => val)){ + Object.keys(pain).forEach(key => { + if(pain[key] && key !== 'other' && key !== 'note') { + painLabel.push(painLabels[key]) + } + if(key === 'other' && pain.other) { + let label = painLabels[key] + if(pain.note) { + label = `${label} (${pain.note})` + } + painLabel.push(label) + } + }) + return painLabel.join(', ') + } + }, + mood: mood => { + const moodLabel = [] + if (mood && Object.values({...mood}).some(val => val)){ + Object.keys(mood).forEach(key => { + if(mood[key] && key !== 'other' && key !== 'note') { + moodLabel.push(moodLabels[key]) + } + if(key === 'other' && mood.other) { + let label = moodLabels[key] + if(mood.note) { + label = `${label} (${mood.note})` + } + moodLabel.push(label) + } + }) + return moodLabel.join(', ') + } + } +} + +export const getData = (symptom, symptomData) => { + return symptomData && label[symptom](symptomData) +} + +export const prevDate = (dateString) => { + return LocalDate.parse(dateString).minusDays(1).toString() +} + +export const nextDate = (dateString) => { + return LocalDate.parse(dateString).plusDays(1).toString() +} + +export const isDateInFuture = (dateString) => { + return LocalDate.now().isBefore(LocalDate.parse(dateString)) +} + +export const isTomorrowInFuture = (dateString) => { + const tomorrow = nextDate(dateString) + return LocalDate.now().isBefore(LocalDate.parse(tomorrow)) +} + +export const isYesterdayInFuture = (dateString) => { + const yesterday = prevDate(dateString) + return LocalDate.now().isBefore(LocalDate.parse(yesterday)) +} \ No newline at end of file diff --git a/components/helpers/format-date.js b/components/helpers/format-date.js index d353dc6..88e4ec4 100644 --- a/components/helpers/format-date.js +++ b/components/helpers/format-date.js @@ -1,14 +1,24 @@ import { LocalDate } from 'js-joda' import moment from 'moment' +import { general as labels } from '../../i18n/en/cycle-day' + export default function (date) { const today = LocalDate.now() const dateToDisplay = LocalDate.parse(date) return today.equals(dateToDisplay) ? - 'today' : + labels.today : moment(date).format('MMMM Do YYYY') } export function formatDateForShortText (date) { return moment(date.toString()).format('dddd, MMMM Do') +} + +export function dateToTitle(dateString) { + const today = LocalDate.now() + const dateToDisplay = LocalDate.parse(dateString) + return today.equals(dateToDisplay) ? + labels.today : + moment(dateString).format('MMMM Do') } \ No newline at end of file diff --git a/components/pages.js b/components/pages.js index a4e6bc6..e7e6d98 100644 --- a/components/pages.js +++ b/components/pages.js @@ -1,17 +1,8 @@ -import symptomViews from './cycle-day/symptoms' import settingsViews from './settings' import settingsLabels from '../i18n/en/settings' const labels = settingsLabels.menuItems -const symptomsPages = Object.keys(symptomViews).map(symptomView => ({ - component: symptomView, - parent: 'CycleDay', -})) - -export const isSymptomView = - (page) => Object.keys(symptomViews).includes(page) - export const isSettingsView = (page) => Object.keys(settingsViews).includes(page) @@ -82,6 +73,5 @@ export const pages = [ { component: 'CycleDay', parent: 'Home', - }, - ...symptomsPages + } ] \ No newline at end of file diff --git a/components/views.js b/components/views.js index 1cb8545..e32d29a 100644 --- a/components/views.js +++ b/components/views.js @@ -1,7 +1,6 @@ import Home from './home' import Calendar from './calendar' import CycleDay from './cycle-day/cycle-day-overview' -import symptomViews from './cycle-day/symptoms' import Chart from './chart/chart' import SettingsMenu from './settings/settings-menu' import settingsViews from './settings' @@ -14,6 +13,5 @@ export const viewsList = { Chart, SettingsMenu, ...settingsViews, - Stats, - ...symptomViews + Stats } diff --git a/config.js b/config.js index 4f11d22..343d760 100644 --- a/config.js +++ b/config.js @@ -4,6 +4,7 @@ export const ACTION_IMPORT = 'import' export const SYMPTOMS = [ 'bleeding', + 'temperature', 'mucus', 'cervix', 'sex', diff --git a/i18n/en/cycle-day.js b/i18n/en/cycle-day.js index 4399ca5..981b648 100644 --- a/i18n/en/cycle-day.js +++ b/i18n/en/cycle-day.js @@ -31,6 +31,7 @@ export const cervix = { categories: ['low', 'medium', 'high'], explainer: 'How high up in the vagina is the cervix?' }, + excludeExplainer: "You can exclude this value if you don't want to use it for fertility detection.", actionHint: 'Choose values for at least "Opening" and "Firmness" to save.' } @@ -132,6 +133,11 @@ export const temperature = { export const noteExplainer = "Anything you want to add for the day?" +export const general = { + cycleDayNumber: "Cycle day ", + today: "Today" +} + export const sharedDialogs = { cancel: 'Cancel', areYouSureTitle: 'Are you sure?', diff --git a/styles/containers.js b/styles/containers.js index 257c7b4..6526d3a 100644 --- a/styles/containers.js +++ b/styles/containers.js @@ -1,4 +1,19 @@ +import Colors from './colors' +import Spacing from './spacing' + export default { + box: { + borderColor: Colors.orange, + borderRadius: 5, + borderWidth: 1, + marginTop: Spacing.small, + marginRight: Spacing.small, + paddingHorizontal: Spacing.small, + paddingVertical: Spacing.tiny + }, + boxActive: { + backgroundColor: Colors.orange, + }, centerItems: { alignItems: 'center', flex: 1, @@ -8,5 +23,11 @@ export default { alignItems: 'center', flexDirection: 'row', justifyContent: 'space-between' + }, + selectGroupContainer: { + alignItems: 'center', + flexDirection: 'row', + flexWrap: 'wrap', + marginVertical: Spacing.small } } \ No newline at end of file diff --git a/styles/spacing.js b/styles/spacing.js index 32c5797..b665347 100644 --- a/styles/spacing.js +++ b/styles/spacing.js @@ -2,5 +2,7 @@ export default { tiny: 4, small: 10, base: 16, - large: 20 + large: 20, + symptomTileWidth: '48%', + textWidth: '70%' } \ No newline at end of file diff --git a/styles/typography.js b/styles/typography.js index 153f1fa..f0f6bb5 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -96,5 +96,12 @@ export default { fontSize: sizes.title, marginHorizontal: Spacing.base, ...title + }, + titleWithoutMargin: { + alignSelf: 'center', + color: Colors.purple, + fontFamily: fonts.bold, + fontWeight: '700', + fontSize: sizes.title, } } From 5a555f59657cbd485fb150478f6142a75ab65107 Mon Sep 17 00:00:00 2001 From: Maria Zadnepryanets <mariya.z@gmail.com> Date: Sat, 22 Aug 2020 10:57:44 +0000 Subject: [PATCH 52/94] Calendar redesign --- android/app/src/main/res/values/styles.xml | 10 +- components/calendar.js | 126 ++--- components/chart/chart-legend.js | 2 +- components/chart/chart-line.js | 2 +- components/chart/chart.js | 2 +- components/chart/cycle-day-label.js | 2 +- components/chart/dot-and-line.js | 2 +- components/chart/horizontal-grid.js | 2 +- components/chart/no-data.js | 2 +- components/chart/symptom-cell.js | 2 +- components/chart/symptom-icon.js | 2 +- components/chart/tick.js | 2 +- components/chart/tutorial.js | 2 +- components/common/app-icon.js | 2 +- components/common/app-loading.js | 2 +- components/common/app-page.js | 2 +- components/common/app-switch.js | 2 +- components/common/app-text-input.js | 2 +- components/common/app-text.js | 2 +- components/common/button.js | 2 +- components/common/close-icon.js | 2 +- components/common/link.js | 2 +- components/common/menu-icon.js | 2 +- components/common/segment.js | 7 +- components/common/table.js | 2 +- components/cycle-day/cycle-day-overview.js | 2 +- components/cycle-day/select-box-group.js | 2 +- components/cycle-day/select-tab-group.js | 2 +- components/cycle-day/symptom-box.js | 2 +- components/cycle-day/symptom-edit-view.js | 37 +- components/cycle-day/symptom-page-title.js | 2 +- components/cycle-day/temperature.js | 2 +- components/header/hamburger-menu.js | 2 +- components/header/index.js | 2 +- components/header/logo.js | 2 +- components/header/menu-item.js | 2 +- components/helpers/calendar.js | 67 +++ components/home.js | 6 +- components/license.js | 2 +- components/menu/index.js | 2 +- components/menu/menu-item.js | 2 +- components/password-prompt.js | 2 +- .../{shared => common}/alert-error.js | 0 .../confirm-with-password.js | 2 +- .../{shared => common}/password-field.js | 0 .../{shared => common}/settings-button.js | 0 .../settings/data-management/delete-data.js | 6 +- .../settings/data-management/export-dialog.js | 2 +- .../settings/data-management/import-dialog.js | 2 +- components/settings/data-management/index.js | 4 +- components/settings/menu-item.js | 2 +- components/settings/nfp-settings/index.js | 2 +- .../settings/nfp-settings/slider-label.js | 2 +- .../nfp-settings/temperature-slider.js | 4 +- components/settings/password/delete.js | 2 +- .../settings/password/enter-new-password.js | 2 +- components/settings/password/update.js | 2 +- components/stats.js | 2 +- i18n/en/labels.js | 36 +- styles/index.js | 494 +----------------- styles/redesign.js | 6 - 61 files changed, 213 insertions(+), 682 deletions(-) create mode 100644 components/helpers/calendar.js rename components/settings/{shared => common}/alert-error.js (100%) rename components/settings/{shared => common}/confirm-with-password.js (97%) rename components/settings/{shared => common}/password-field.js (100%) rename components/settings/{shared => common}/settings-button.js (100%) delete mode 100644 styles/redesign.js diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index d27d7ee..76199a4 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -11,22 +11,22 @@ </style> <style name="AlertDialogTheme" parent="Theme.AppCompat.Dialog.Alert"> - <item name="android:buttonBarNegativeButtonStyle">@style/NegativeButtonStyle</item> + <item name="android:buttonBarButtonStyle">@style/ButtonBarStyle</item> <item name="android:buttonBarPositiveButtonStyle">@style/PositiveButtonStyle</item> <item name="android:fontFamily">@font/jost_normal</item> <item name="android:textColorPrimary">@color/grey</item> <item name="android:windowTitleStyle">@style/TitleStyle</item> </style> - <style name="NegativeButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog"> + <style name="ButtonBarStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog"> + <item name="android:textSize">16sp</item> <item name="android:textColor">@color/grey</item> - <item name="android:textSize">18sp</item> </style> <style name="PositiveButtonStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog"> - <item name="android:textColor">@color/orange</item> - <item name="android:textSize">18sp</item> + <item name="android:textSize">16sp</item> <item name="android:textStyle">bold</item> + <item name="android:textColor">@color/orange</item> </style> <style name="TitleStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog"> diff --git a/components/calendar.js b/components/calendar.js index 2340168..c5f7c21 100644 --- a/components/calendar.js +++ b/components/calendar.js @@ -1,17 +1,22 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' +import { StyleSheet, View } from 'react-native' import { CalendarList } from 'react-native-calendars' -import { connect } from 'react-redux' +import { connect } from 'react-redux' import { setDate } from '../slices/date' import { navigate } from '../slices/navigation' -import { LocalDate } from 'js-joda' import { getBleedingDaysSortedByDate } from '../db' import cycleModule from '../lib/cycle' -import { shadesOfRed, calendarTheme } from '../styles/index' -import styles from '../styles/index' import nothingChanged from '../db/db-unchanged' +import { + predictionToCalFormat, + toCalFormat, + todayToCalFormat +} from './helpers/calendar' + +import { Colors, Fonts, Sizes } from '../../styles' class CalendarView extends Component { static propTypes = { @@ -52,26 +57,50 @@ class CalendarView extends Component { } render() { + const { + todayInCalFormat, + bleedingDaysInCalFormat, + predictedBleedingDaysInCalFormat + } = this.state + const markedDates = Object.assign( + {}, + todayInCalFormat, + bleedingDaysInCalFormat, + predictedBleedingDaysInCalFormat + ) + return ( - <CalendarList - onDayPress={this.passDateToDayView.bind(this)} - markedDates={ - Object.assign( - {}, - this.state.todayInCalFormat, - this.state.bleedingDaysInCalFormat, - this.state.predictedBleedingDaysInCalFormat - ) - } - markingType={'custom'} - // If firstDay=1 week starts from Monday. Note that dayNames and dayNamesShort should still start from Sunday. - firstDay={1} - theme={calendarTheme} - /> + <View style={styles.container}> + <CalendarList + // If firstDay=1 week starts from Monday. Note that dayNames and dayNamesShort should still start from Sunday. + firstDay={1} + onDayPress={this.passDateToDayView.bind(this)} + markedDates={markedDates} + markingType={'custom'} + theme={calendarTheme} + /> + </View> ) } } +const styles = StyleSheet.create({ + container: { flex: 1 } +}) + +const calendarTheme = StyleSheet.create({ + calendarBackground: Colors.tourquiseLight, + dayTextColor: Colors.greyDark, + monthTextColor: Colors.purple, + textDayFontFamily: Fonts.main, + textMonthFontFamily: Fonts.bold, + textDayHeaderFontFamily: Fonts.bold, + textDayFontSize: Sizes.small, + textMonthFontSize: Sizes.subtitle, + textDayHeaderFontSize: Sizes.small, + textSectionTitleColor: Colors.orange, +}) + const mapDispatchToProps = (dispatch) => { return({ setDate: (date) => dispatch(setDate(date)), @@ -83,62 +112,3 @@ export default connect( null, mapDispatchToProps, )(CalendarView) - - -function toCalFormat(bleedingDaysSortedByDate) { - const todayDateString = LocalDate.now().toString() - return bleedingDaysSortedByDate.reduce((acc, day) => { - acc[day.date] = { - customStyles: { - container: { - backgroundColor: shadesOfRed[day.bleeding.value], - } - } - } - if (day.date === todayDateString) { - acc[day.date].customStyles.text = styles.calendarToday - } - return acc - }, {}) -} - -function predictionToCalFormat(predictedDays) { - if (!predictedDays.length) return {} - const todayDateString = LocalDate.now().toString() - const middleIndex = (predictedDays[0].length - 1) / 2 - return predictedDays.reduce((acc, setOfDays) => { - setOfDays.reduce((accSet, day, i) => { - accSet[day] = { - customStyles: { - container: { - borderColor: (i === middleIndex) ? shadesOfRed[3] : shadesOfRed[2], - borderWidth: 3, - }, - text: { - marginTop: 1, - } - } - } - if (day === todayDateString) { - accSet[day].customStyles.text = Object.assign( - {}, - styles.calendarToday, - {marginTop: -2} - ) - } - return accSet - }, acc) - return acc - }, {}) -} - -function todayToCalFormat() { - const todayDateString = LocalDate.now().toString() - const todayFormated = {} - todayFormated[todayDateString] = { - customStyles: { - text: styles.calendarToday - } - } - return todayFormated -} \ No newline at end of file diff --git a/components/chart/chart-legend.js b/components/chart/chart-legend.js index 1339a57..6739161 100644 --- a/components/chart/chart-legend.js +++ b/components/chart/chart-legend.js @@ -4,7 +4,7 @@ import { StyleSheet, View } from 'react-native' import AppText from '../common/app-text' -import { Typography } from '../../styles/redesign' +import { Typography } from '../../styles' import { CHART_YAXIS_WIDTH } from '../../config' import { shared as labels } from '../../i18n/en/labels' diff --git a/components/chart/chart-line.js b/components/chart/chart-line.js index c74d0a1..53af2cc 100644 --- a/components/chart/chart-line.js +++ b/components/chart/chart-line.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import { Shape } from 'react-native/Libraries/ART/ReactNativeART' -import { Colors } from '../../styles/redesign' +import { Colors } from '../../styles' import { CHART_STROKE_WIDTH, CHART_GRID_LINE_HORIZONTAL_WIDTH } from '../../config' const ChartLine = ({ path, isNfpLine }) => { diff --git a/components/chart/chart.js b/components/chart/chart.js index 525682f..bdfa6f7 100644 --- a/components/chart/chart.js +++ b/components/chart/chart.js @@ -27,7 +27,7 @@ import { CHART_XAXIS_HEIGHT_RATIO } from '../../config' import { shared } from '../../i18n/en/labels' -import { Colors, Spacing } from '../../styles/redesign' +import { Colors, Spacing } from '../../styles' class CycleChart extends Component { static propTypes = { diff --git a/components/chart/cycle-day-label.js b/components/chart/cycle-day-label.js index 7378f92..aec35d5 100644 --- a/components/chart/cycle-day-label.js +++ b/components/chart/cycle-day-label.js @@ -8,7 +8,7 @@ import AppText from '../common/app-text' import cycleModule from '../../lib/cycle' import { dateEnding } from '../helpers/home' -import { Containers, Typography } from '../../styles/redesign' +import { Containers, Typography } from '../../styles' const CycleDayLabel = ({ height, date }) => { const dayDate = LocalDate.parse(date) diff --git a/components/chart/dot-and-line.js b/components/chart/dot-and-line.js index f7da601..e3be7aa 100644 --- a/components/chart/dot-and-line.js +++ b/components/chart/dot-and-line.js @@ -2,7 +2,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import { Path, Shape } from 'react-native/Libraries/ART/ReactNativeART' -import { Colors } from '../../styles/redesign' +import { Colors } from '../../styles' import { CHART_COLUMN_WIDTH, diff --git a/components/chart/horizontal-grid.js b/components/chart/horizontal-grid.js index ddbbe53..9550248 100644 --- a/components/chart/horizontal-grid.js +++ b/components/chart/horizontal-grid.js @@ -4,7 +4,7 @@ import { StyleSheet, View } from 'react-native' import { getTickPositions } from '../helpers/chart' -import { Colors } from '../../styles/redesign' +import { Colors } from '../../styles' import { CHART_GRID_LINE_HORIZONTAL_WIDTH, CHART_YAXIS_WIDTH } from '../../config' const HorizontalGrid = ({ height }) => { diff --git a/components/chart/no-data.js b/components/chart/no-data.js index 5044b18..154ca51 100644 --- a/components/chart/no-data.js +++ b/components/chart/no-data.js @@ -8,7 +8,7 @@ import Button from '../common/button' import { connect } from 'react-redux' import { navigate } from '../../slices/navigation' -import { Containers } from '../../styles/redesign' +import { Containers } from '../../styles' import { shared } from '../../i18n/en/labels' const NoData = ({ navigate }) => { diff --git a/components/chart/symptom-cell.js b/components/chart/symptom-cell.js index 23d1667..445df49 100644 --- a/components/chart/symptom-cell.js +++ b/components/chart/symptom-cell.js @@ -2,7 +2,7 @@ import React from 'react' import PropTypes from 'prop-types' import { StyleSheet, View } from 'react-native' -import { Colors, Containers } from '../../styles/redesign' +import { Colors, Containers } from '../../styles' import { CHART_COLUMN_WIDTH, CHART_DOT_RADIUS, diff --git a/components/chart/symptom-icon.js b/components/chart/symptom-icon.js index 849283d..1bd5c6c 100644 --- a/components/chart/symptom-icon.js +++ b/components/chart/symptom-icon.js @@ -4,7 +4,7 @@ import { StyleSheet , View } from 'react-native' import DripIcon from '../../assets/drip-icons' -import { Colors, Containers } from '../../styles/redesign' +import { Colors, Containers } from '../../styles' import { CHART_YAXIS_WIDTH, CHART_ICON_SIZE } from '../../config' const SymptomIcon = ({ symptom, height }) => { diff --git a/components/chart/tick.js b/components/chart/tick.js index 01b260d..e626644 100644 --- a/components/chart/tick.js +++ b/components/chart/tick.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types' import AppText from '../common/app-text' -import { Sizes } from '../../styles/redesign' +import { Sizes } from '../../styles' const Tick = ({ yPosition, height, isBold, shouldShowLabel, label }) => { const top = yPosition - height / 2 diff --git a/components/chart/tutorial.js b/components/chart/tutorial.js index 4a0de53..fefe287 100644 --- a/components/chart/tutorial.js +++ b/components/chart/tutorial.js @@ -5,7 +5,7 @@ import { Image, StyleSheet, View } from 'react-native' import AppText from '../common/app-text' import CloseIcon from '../common/close-icon' -import { Containers, Spacing } from '../../styles/redesign' +import { Containers, Spacing } from '../../styles' import { chart } from '../../i18n/en/labels' const image = require('../../assets/swipe.png') diff --git a/components/common/app-icon.js b/components/common/app-icon.js index f0e4e04..717c1e0 100644 --- a/components/common/app-icon.js +++ b/components/common/app-icon.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import { StyleSheet } from 'react-native' import Icon from 'react-native-vector-icons/Entypo' -import { Sizes } from '../../styles/redesign' +import { Sizes } from '../../styles' const AppIcon = ({ color, name, style, ...props }) => { const iconStyle = [styles.icon, style, { color }] diff --git a/components/common/app-loading.js b/components/common/app-loading.js index 87612bb..115d2dc 100644 --- a/components/common/app-loading.js +++ b/components/common/app-loading.js @@ -3,7 +3,7 @@ import { StyleSheet, View } from 'react-native' import AppText from './app-text' -import { Containers } from '../../styles/redesign' +import { Containers } from '../../styles' import { shared } from '../../i18n/en/labels' diff --git a/components/common/app-page.js b/components/common/app-page.js index 87910dd..6181700 100644 --- a/components/common/app-page.js +++ b/components/common/app-page.js @@ -4,7 +4,7 @@ import { ScrollView, StyleSheet, View } from 'react-native' import AppText from '../common/app-text' -import { Colors, Typography } from '../../styles/redesign' +import { Colors, Typography } from '../../styles' const AppPage = ({ children, diff --git a/components/common/app-switch.js b/components/common/app-switch.js index 2717535..c059253 100644 --- a/components/common/app-switch.js +++ b/components/common/app-switch.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types' import AppText from './app-text' -import { Containers } from '../../styles/redesign' +import { Containers } from '../../styles' const AppSwitch = ({ onToggle, text, value }) => { return ( diff --git a/components/common/app-text-input.js b/components/common/app-text-input.js index 3b55071..8439266 100644 --- a/components/common/app-text-input.js +++ b/components/common/app-text-input.js @@ -2,7 +2,7 @@ import React from 'react' import { StyleSheet, TextInput } from 'react-native' import PropTypes from 'prop-types' -import { Colors, Spacing, Typography } from '../../styles/redesign' +import { Colors, Spacing, Typography } from '../../styles' const AppTextInput = ({ style, ...props }) => { return <TextInput style={[styles.input, style]} {...props} /> diff --git a/components/common/app-text.js b/components/common/app-text.js index 329cf28..5d696f3 100644 --- a/components/common/app-text.js +++ b/components/common/app-text.js @@ -4,7 +4,7 @@ import { StyleSheet, Text } from 'react-native' import Link from './link' -import { Colors, Typography } from '../../styles/redesign' +import { Colors, Typography } from '../../styles' const AppText = ({ children, linkStyle, style, ...props }) => { // we parse for links in case the text contains any diff --git a/components/common/button.js b/components/common/button.js index 28d0036..79e17d8 100644 --- a/components/common/button.js +++ b/components/common/button.js @@ -5,7 +5,7 @@ import { StyleSheet, TouchableOpacity } from 'react-native' import AppIcon from './app-icon' import AppText from './app-text' -import { Colors, Fonts, Spacing } from '../../styles/redesign' +import { Colors, Fonts, Spacing } from '../../styles' const Button = ({ children, diff --git a/components/common/close-icon.js b/components/common/close-icon.js index 1930fb3..862fc73 100644 --- a/components/common/close-icon.js +++ b/components/common/close-icon.js @@ -4,7 +4,7 @@ import { StyleSheet, TouchableOpacity } from 'react-native' import AppIcon from './app-icon' -import { Colors, Sizes } from '../../styles/redesign' +import { Colors, Sizes } from '../../styles' const CloseIcon = ({ onClose, ...props }) => { return ( diff --git a/components/common/link.js b/components/common/link.js index c221361..aec7bfc 100644 --- a/components/common/link.js +++ b/components/common/link.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import Hyperlink from 'react-native-hyperlink' import { StyleSheet } from 'react-native' -import { Colors, Typography } from '../../styles/redesign' +import { Colors, Typography } from '../../styles' import links from '../../i18n/en/links' diff --git a/components/common/menu-icon.js b/components/common/menu-icon.js index abe7f83..cd1fa0f 100644 --- a/components/common/menu-icon.js +++ b/components/common/menu-icon.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import { createIconSetFromIcoMoon } from 'react-native-vector-icons' import iconConfig from '../../selection.json' -import { Colors, Sizes } from '../../styles/redesign' +import { Colors, Sizes } from '../../styles' const Icon = createIconSetFromIcoMoon(iconConfig, '', 'Menu') diff --git a/components/common/segment.js b/components/common/segment.js index 004562a..b0baca1 100644 --- a/components/common/segment.js +++ b/components/common/segment.js @@ -4,13 +4,14 @@ import { StyleSheet, View } from 'react-native' import AppText from './app-text' -import { Colors, Spacing, Typography } from '../../styles/redesign' +import { Colors, Spacing, Typography } from '../../styles' const Segment = ({ children, last, title }) => { const containerStyle = last ? styles.containerLast : styles.container + const commonStyle = Object.assign({}, containerStyle) return ( - <View style={containerStyle}> + <View style={commonStyle}> {title && <AppText style={styles.title}>{title}</AppText>} {children} </View> @@ -33,7 +34,7 @@ const styles = StyleSheet.create({ container: { borderStyle: 'solid', borderBottomWidth: 2, - borderBottomColor: Colors.greyLight, + borderBottomColor: Colors.grey, paddingBottom: Spacing.base, ...segmentContainer }, diff --git a/components/common/table.js b/components/common/table.js index f1e024f..c319c05 100644 --- a/components/common/table.js +++ b/components/common/table.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types' import AppText from './app-text' -import { Spacing, Typography } from '../../styles/redesign' +import { Spacing, Typography } from '../../styles' const Table = ({ tableContent }) => { return ( diff --git a/components/cycle-day/cycle-day-overview.js b/components/cycle-day/cycle-day-overview.js index 427b63a..d26ad97 100644 --- a/components/cycle-day/cycle-day-overview.js +++ b/components/cycle-day/cycle-day-overview.js @@ -16,7 +16,7 @@ import { getCycleDay } from '../../db' import { getData } from '../helpers/cycle-day' import { general as labels} from '../../i18n/en/cycle-day' -import { Spacing } from '../../styles/redesign' +import { Spacing } from '../../styles' import { SYMPTOMS } from '../../config' class CycleDayOverView extends Component { diff --git a/components/cycle-day/select-box-group.js b/components/cycle-day/select-box-group.js index d8c5808..773ef5e 100644 --- a/components/cycle-day/select-box-group.js +++ b/components/cycle-day/select-box-group.js @@ -4,7 +4,7 @@ import { StyleSheet, TouchableOpacity, View } from 'react-native' import AppText from '../common/app-text' -import { Colors, Containers } from '../../styles/redesign' +import { Colors, Containers } from '../../styles' const SelectBoxGroup = ({ labels, optionsState, onSelect }) => { return ( diff --git a/components/cycle-day/select-tab-group.js b/components/cycle-day/select-tab-group.js index 8caea5a..29c2e2f 100644 --- a/components/cycle-day/select-tab-group.js +++ b/components/cycle-day/select-tab-group.js @@ -4,7 +4,7 @@ import { StyleSheet, TouchableOpacity, View } from 'react-native' import AppText from '../common/app-text' -import { Colors, Containers } from '../../styles/redesign' +import { Colors, Containers } from '../../styles' export default function SelectTabGroup({ activeButton, buttons, onSelect }) { return ( diff --git a/components/cycle-day/symptom-box.js b/components/cycle-day/symptom-box.js index 82f9fe7..b9aeac1 100644 --- a/components/cycle-day/symptom-box.js +++ b/components/cycle-day/symptom-box.js @@ -10,7 +10,7 @@ import { connect } from 'react-redux' import { getDate } from '../../slices/date' import { isDateInFuture } from '../helpers/cycle-day' -import { Colors, Sizes, Spacing } from '../../styles/redesign' +import { Colors, Sizes, Spacing } from '../../styles' import { headerTitles as symptomTitles } from '../../i18n/en/labels' class SymptomBox extends Component { diff --git a/components/cycle-day/symptom-edit-view.js b/components/cycle-day/symptom-edit-view.js index eb50e29..500c07e 100644 --- a/components/cycle-day/symptom-edit-view.js +++ b/components/cycle-day/symptom-edit-view.js @@ -1,6 +1,6 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { ScrollView, StyleSheet, View } from 'react-native' +import { Dimensions, ScrollView, StyleSheet, View } from 'react-native' import AppModal from '../common/app-modal' import AppSwitch from '../common/app-switch' @@ -19,7 +19,7 @@ import { blank, save, shouldShow, symtomPage } from '../helpers/cycle-day' import { shared as sharedLabels } from '../../i18n/en/labels' import info from '../../i18n/en/symptom-info' -import { Containers, Sizes } from '../../styles/redesign' +import { Colors, Containers, Sizes, Spacing } from '../../styles' class SymptomEditView extends Component { @@ -151,7 +151,6 @@ class SymptomEditView extends Component { <AppModal onClose={onClose}> <ScrollView contentContainerStyle={styles.modalContainer} - pagingEnabled={true} style={styles.modalWindow} > <View style={styles.headerContainer}> @@ -165,7 +164,7 @@ class SymptomEditView extends Component { } {shouldTabGroup && symtomPage[symptom].selectTabGroups.map(group => { return ( - <Segment key={group.key}> + <Segment key={group.key} style={styles.segmentBorder}> <AppText style={styles.title}>{group.title}</AppText> <SelectTabGroup activeButton={data[group.key]} @@ -183,7 +182,7 @@ class SymptomEditView extends Component { && Object.keys(group.options).includes('other') return ( - <Segment key={group.key}> + <Segment key={group.key} style={styles.segmentBorder} > <AppText style={styles.title}>{group.title}</AppText> <SelectBoxGroup labels={group.options} @@ -203,7 +202,7 @@ class SymptomEditView extends Component { }) } {shouldShowExclude && - <Segment> + <Segment style={styles.segmentBorder} > <AppSwitch onToggle={this.onExcludeToggle} text={symtomPage[symptom].excludeText} @@ -212,7 +211,7 @@ class SymptomEditView extends Component { </Segment> } {shouldShowNote && - <Segment> + <Segment style={styles.segmentBorder} > <AppText>{symtomPage[symptom].note}</AppText> <AppTextInput multiline={true} @@ -225,15 +224,17 @@ class SymptomEditView extends Component { } <View style={styles.buttonsContainer}> <Button iconName={iconName} isSmall onPress={this.onPressLearnMore}> - learn more + {sharedLabels.learnMore} </Button> <Button isSmall onPress={this.onRemove}> - remove + {sharedLabels.remove} + </Button> + <Button isCTA isSmall onPress={this.onSave}> + {sharedLabels.save} </Button> - <Button isCTA isSmall onPress={this.onSave}>save</Button> </View> {shouldShowInfo && - <Segment last> + <Segment last style={styles.segmentBorder} > <AppText>{info[symptom].text}</AppText> </Segment> } @@ -250,19 +251,23 @@ const styles = StyleSheet.create({ headerContainer: { flexDirection: 'row', justifyContent: 'flex-end', - paddingVertical: Sizes.tiny, + paddingVertical: Spacing.tiny, }, modalContainer: { - flexGrow: 1, - padding: Sizes.small + flex: 1, + padding: Spacing.small, + paddingBottom: Spacing.base }, modalWindow: { backgroundColor: 'white', borderRadius: 10, marginVertical: Sizes.huge * 2, + position: 'absolute', minHeight: '40%', - height: '70%', - position: 'absolute' + maxHeight: Dimensions.get('window').height * 0.7 + }, + segmentBorder: { + borderBottomColor: Colors.greyLight }, title: { fontSize: Sizes.subtitle diff --git a/components/cycle-day/symptom-page-title.js b/components/cycle-day/symptom-page-title.js index 3b84869..3ef0967 100644 --- a/components/cycle-day/symptom-page-title.js +++ b/components/cycle-day/symptom-page-title.js @@ -14,7 +14,7 @@ import { isTomorrowInFuture, isYesterdayInFuture } from '../helpers/cycle-day' -import { Colors, Containers, Spacing, Typography } from '../../styles/redesign' +import { Colors, Containers, Spacing, Typography } from '../../styles' const SymptomPageTitle = ({ date, diff --git a/components/cycle-day/temperature.js b/components/cycle-day/temperature.js index 7a8b7d1..653133a 100644 --- a/components/cycle-day/temperature.js +++ b/components/cycle-day/temperature.js @@ -15,7 +15,7 @@ import { isTemperatureOutOfRange, isPreviousTemperature } from '../helpers/cycle import { temperature as labels } from '../../i18n/en/cycle-day' -import { Colors, Containers, Sizes, Spacing } from '../../styles/redesign' +import { Colors, Containers, Sizes, Spacing } from '../../styles' const formatTemperature = value => value === null ? value diff --git a/components/header/hamburger-menu.js b/components/header/hamburger-menu.js index f93dc68..8b59b27 100644 --- a/components/header/hamburger-menu.js +++ b/components/header/hamburger-menu.js @@ -4,7 +4,7 @@ import { Modal, StyleSheet, TouchableOpacity, View } from 'react-native' import AppIcon from '../common/app-icon' import MenuItem from './menu-item' -import { Colors, Sizes } from '../../styles/redesign' +import { Colors, Sizes } from '../../styles' import settingsLabels from '../../i18n/en/settings' const { menuItems } = settingsLabels diff --git a/components/header/index.js b/components/header/index.js index 9280d90..1184506 100644 --- a/components/header/index.js +++ b/components/header/index.js @@ -5,7 +5,7 @@ import PropTypes from 'prop-types' import Logo from './logo' import HamburgerMenu from './hamburger-menu' -import { Colors, Containers, Sizes } from '../../styles/redesign' +import { Colors, Containers, Sizes } from '../../styles' const Header = ({ isSideMenuEnabled }) => { diff --git a/components/header/logo.js b/components/header/logo.js index b05080a..4bd63fe 100644 --- a/components/header/logo.js +++ b/components/header/logo.js @@ -7,7 +7,7 @@ import AppText from '../common/app-text' import { connect } from 'react-redux' import { navigate } from '../../slices/navigation' -import { Colors, Fonts, Sizes } from '../../styles/redesign' +import { Colors, Fonts, Sizes } from '../../styles' const Logo = ({ navigate }) => { return( diff --git a/components/header/menu-item.js b/components/header/menu-item.js index d848059..d7b1a46 100644 --- a/components/header/menu-item.js +++ b/components/header/menu-item.js @@ -7,7 +7,7 @@ import AppText from '../common/app-text' import { connect } from 'react-redux' import { navigate } from '../../slices/navigation' -import { Typography } from '../../styles/redesign' +import { Typography } from '../../styles' const MenuItem = ({ item, navigate, closeMenu }) => { const { component, name } = item diff --git a/components/helpers/calendar.js b/components/helpers/calendar.js new file mode 100644 index 0000000..c29318b --- /dev/null +++ b/components/helpers/calendar.js @@ -0,0 +1,67 @@ +import { LocalDate } from 'js-joda' + +import { Colors, Fonts } from '../../styles' + +const { shades } = Colors.iconColors.bleeding + +export const toCalFormat = (bleedingDaysSortedByDate) => { + const todayDateString = LocalDate.now().toString() + + return bleedingDaysSortedByDate.reduce((acc, day) => { + acc[day.date] = { + customStyles: { + container: { + backgroundColor: shades[day.bleeding.value], + } + } + } + if (day.date === todayDateString) { + acc[day.date].customStyles.text = styles.calendarToday + } + return acc + }, {}) +} + +export const predictionToCalFormat = (predictedDays) => { + if (!predictedDays.length) return {} + const todayDateString = LocalDate.now().toString() + const middleIndex = (predictedDays[0].length - 1) / 2 + return predictedDays.reduce((acc, setOfDays) => { + setOfDays.reduce((accSet, day, i) => { + accSet[day] = { + customStyles: { + container: { + borderColor: (i === middleIndex) ? shades[3] : shades[0], + borderStyle: (i === middleIndex) ? 'solid' : 'dashed', + borderWidth: 1, + }, + + } + } + if (day === todayDateString) { + accSet[day].customStyles.text = styles.calendarToday + } + + return accSet + }, acc) + return acc + }, {}) +} + +export const todayToCalFormat = () => { + const todayDateString = LocalDate.now().toString() + const todayFormated = {} + todayFormated[todayDateString] = { + customStyles: { + text: styles.calendarToday + } + } + return todayFormated +} + +const styles = { + calendarToday: { + fontFamily: Fonts.bold, + color: Colors.purple + }, +} \ No newline at end of file diff --git a/components/home.js b/components/home.js index bff1c4c..888f289 100644 --- a/components/home.js +++ b/components/home.js @@ -15,8 +15,8 @@ import cycleModule from '../lib/cycle' import { getFertilityStatusForDay } from '../lib/sympto-adapter' import { determinePredictionText, dateEnding } from './helpers/home' -import { Colors, Fonts, Sizes, Spacing } from '../styles/redesign' -import { homeRedesign as labels, home as cycle } from '../i18n/en/labels' +import { Colors, Fonts, Sizes, Spacing } from '../styles' +import { home as labels } from '../i18n/en/labels' class Home extends Component { @@ -36,7 +36,7 @@ class Home extends Component { getFertilityStatusForDay(this.todayDateString) const prediction = getPredictedMenses() - this.cycleDayText = !this.cycleDayNumber ? cycle.cycleDayNotEnoughInfo + this.cycleDayText = !this.cycleDayNumber ? labels.cycleDayNotEnoughInfo : `${this.cycleDayNumber}${dateEnding[this.cycleDayNumber] || dateEnding['default']}` this.phase = phase this.phaseText = !phase ? statusText diff --git a/components/license.js b/components/license.js index 08384e9..8c1bab7 100644 --- a/components/license.js +++ b/components/license.js @@ -11,7 +11,7 @@ import { saveLicenseFlag } from '../local-storage' import { shared } from '../i18n/en/labels' import settingsLabels from '../i18n/en/settings' -import { Containers } from '../styles/redesign' +import { Containers } from '../styles' const labels = settingsLabels.license diff --git a/components/menu/index.js b/components/menu/index.js index ab7c3c9..2d329d0 100644 --- a/components/menu/index.js +++ b/components/menu/index.js @@ -3,7 +3,7 @@ import { StyleSheet, View } from 'react-native' import MenuItem from './menu-item' -import { Containers } from '../../styles/redesign' +import { Containers } from '../../styles' import { pages } from '../pages' const Menu = () => { diff --git a/components/menu/menu-item.js b/components/menu/menu-item.js index fc26212..fc1c1f8 100644 --- a/components/menu/menu-item.js +++ b/components/menu/menu-item.js @@ -7,7 +7,7 @@ import Icon from '../common/menu-icon' import { connect } from 'react-redux' import { getNavigation, navigate } from '../../slices/navigation' -import { Colors, Containers, Fonts, Sizes, Spacing } from '../../styles/redesign' +import { Colors, Containers, Fonts, Sizes, Spacing } from '../../styles' const MenuItem = ({ component, icon, label, navigate, navigation }) => { const isActive = (component === navigation.currentPage) diff --git a/components/password-prompt.js b/components/password-prompt.js index 0b9b908..14203df 100644 --- a/components/password-prompt.js +++ b/components/password-prompt.js @@ -11,7 +11,7 @@ import Header from './header' import { saveEncryptionFlag } from '../local-storage' import { requestHash, deleteDbAndOpenNew, openDb } from '../db' import { passwordPrompt as labels, shared } from '../i18n/en/labels' -import { Containers, Spacing } from '../styles/redesign' +import { Containers, Spacing } from '../styles' const cancelButton = { text: shared.cancel, style: 'cancel' } diff --git a/components/settings/shared/alert-error.js b/components/settings/common/alert-error.js similarity index 100% rename from components/settings/shared/alert-error.js rename to components/settings/common/alert-error.js diff --git a/components/settings/shared/confirm-with-password.js b/components/settings/common/confirm-with-password.js similarity index 97% rename from components/settings/shared/confirm-with-password.js rename to components/settings/common/confirm-with-password.js index ad58313..f96978a 100644 --- a/components/settings/shared/confirm-with-password.js +++ b/components/settings/common/confirm-with-password.js @@ -7,7 +7,7 @@ import AppTextInput from '../../common/app-text-input' import Button from '../../common/button' import { requestHash, openDb } from '../../../db' -import { Containers } from '../../../styles/redesign' +import { Containers } from '../../../styles' import settings from '../../../i18n/en/settings' import { shared } from '../../../i18n/en/labels' diff --git a/components/settings/shared/password-field.js b/components/settings/common/password-field.js similarity index 100% rename from components/settings/shared/password-field.js rename to components/settings/common/password-field.js diff --git a/components/settings/shared/settings-button.js b/components/settings/common/settings-button.js similarity index 100% rename from components/settings/shared/settings-button.js rename to components/settings/common/settings-button.js diff --git a/components/settings/data-management/delete-data.js b/components/settings/data-management/delete-data.js index 87f094d..83c70d3 100644 --- a/components/settings/data-management/delete-data.js +++ b/components/settings/data-management/delete-data.js @@ -5,8 +5,8 @@ import PropTypes from 'prop-types' import Button from '../../common/button' -import ConfirmWithPassword from '../shared/confirm-with-password' -import alertError from '../shared/alert-error' +import ConfirmWithPassword from '../common/confirm-with-password' +import alertError from '../common/alert-error' import { clearDb, isDbEmpty } from '../../../db' import { hasEncryptionObservable } from '../../../local-storage' @@ -94,7 +94,7 @@ export default class DeleteData extends Component { } return ( - <Button isCTA isSmall={false} onPress={this.alertBeforeDeletion}> + <Button isCTA onPress={this.alertBeforeDeletion}> {settings.deleteSegment.title} </Button> ) diff --git a/components/settings/data-management/export-dialog.js b/components/settings/data-management/export-dialog.js index 4b47c2c..8200b68 100644 --- a/components/settings/data-management/export-dialog.js +++ b/components/settings/data-management/export-dialog.js @@ -2,7 +2,7 @@ import Share from 'react-native-share' import { getCycleDaysSortedByDate } from '../../../db' import getDataAsCsvDataUri from '../../../lib/import-export/export-to-csv' -import alertError from '../shared/alert-error' +import alertError from '../common/alert-error' import settings from '../../../i18n/en/settings' import { EXPORT_FILE_NAME } from './constants' import RNFS from 'react-native-fs' diff --git a/components/settings/data-management/import-dialog.js b/components/settings/data-management/import-dialog.js index 23899a1..9197524 100644 --- a/components/settings/data-management/import-dialog.js +++ b/components/settings/data-management/import-dialog.js @@ -4,7 +4,7 @@ import rnfs from 'react-native-fs' import importCsv from '../../../lib/import-export/import-from-csv' import { shared as sharedLabels } from '../../../i18n/en/labels' import labels from '../../../i18n/en/settings' -import alertError from '../shared/alert-error' +import alertError from '../common/alert-error' export function openImportDialog(onImportData) { Alert.alert( diff --git a/components/settings/data-management/index.js b/components/settings/data-management/index.js index 239d3f0..40b81d0 100644 --- a/components/settings/data-management/index.js +++ b/components/settings/data-management/index.js @@ -66,13 +66,13 @@ export default class DataManagement extends Component { <AppPage> <Segment title={labels.export.button}> <AppText>{labels.export.segmentExplainer}</AppText> - <Button isCTA isSmall={false} onPress={this.startExport}> + <Button isCTA onPress={this.startExport}> {labels.export.button} </Button> </Segment> <Segment title={labels.import.button}> <AppText>{labels.import.segmentExplainer}</AppText> - <Button isCTA isSmall={false} onPress={this.startImport}> + <Button isCTA onPress={this.startImport}> {labels.import.button} </Button> </Segment> diff --git a/components/settings/menu-item.js b/components/settings/menu-item.js index 7739b06..8348962 100644 --- a/components/settings/menu-item.js +++ b/components/settings/menu-item.js @@ -9,7 +9,7 @@ import Segment from '../common/segment' import { connect } from 'react-redux' import { navigate } from '../../slices/navigation' -import { Colors, Containers, Sizes } from '../../styles/redesign' +import { Colors, Containers, Sizes } from '../../styles' const MenuItem = ({ item, last, navigate }) => { return ( diff --git a/components/settings/nfp-settings/index.js b/components/settings/nfp-settings/index.js index 8e19573..378e6f4 100644 --- a/components/settings/nfp-settings/index.js +++ b/components/settings/nfp-settings/index.js @@ -9,7 +9,7 @@ import TemperatureSlider from './temperature-slider' import Segment from '../../common/segment' import { useCervixObservable, saveUseCervix } from '../../../local-storage' -import { Colors, Spacing, Typography } from '../../../styles/redesign' +import { Colors, Spacing, Typography } from '../../../styles' import labels from '../../../i18n/en/settings' export default class Settings extends Component { diff --git a/components/settings/nfp-settings/slider-label.js b/components/settings/nfp-settings/slider-label.js index d251003..4fbda08 100644 --- a/components/settings/nfp-settings/slider-label.js +++ b/components/settings/nfp-settings/slider-label.js @@ -4,7 +4,7 @@ import { StyleSheet } from 'react-native' import AppText from '../../common/app-text' -import { Fonts, Sizes } from '../../../styles/redesign' +import { Fonts, Sizes } from '../../../styles' const sliderRadius = 5 const width = 50 diff --git a/components/settings/nfp-settings/temperature-slider.js b/components/settings/nfp-settings/temperature-slider.js index 14adf12..01cfdb0 100644 --- a/components/settings/nfp-settings/temperature-slider.js +++ b/components/settings/nfp-settings/temperature-slider.js @@ -2,11 +2,11 @@ import React, { Component } from 'react' import { StyleSheet, View } from 'react-native' import Slider from '@ptomasroos/react-native-multi-slider' -import alertError from '../shared/alert-error' +import alertError from '../common/alert-error' import SliderLabel from './slider-label' import { scaleObservable, saveTempScale } from '../../../local-storage' -import { Colors, Sizes } from '../../../styles/redesign' +import { Colors, Sizes } from '../../../styles' import labels from '../../../i18n/en/settings' import { TEMP_MIN, TEMP_MAX, TEMP_SLIDER_STEP } from '../../../config' diff --git a/components/settings/password/delete.js b/components/settings/password/delete.js index e08d133..8f078d7 100644 --- a/components/settings/password/delete.js +++ b/components/settings/password/delete.js @@ -2,7 +2,7 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' import Button from '../../common/button' -import ConfirmWithPassword from '../shared/confirm-with-password' +import ConfirmWithPassword from '../common/confirm-with-password' import { changeEncryptionAndRestartApp } from '../../../db' import labels from '../../../i18n/en/settings' diff --git a/components/settings/password/enter-new-password.js b/components/settings/password/enter-new-password.js index 0c8617f..5fc8d71 100644 --- a/components/settings/password/enter-new-password.js +++ b/components/settings/password/enter-new-password.js @@ -7,7 +7,7 @@ import AppTextInput from '../../common/app-text-input' import Button from '../../common/button' import { requestHash, changeEncryptionAndRestartApp } from '../../../db' -import { Colors, Spacing } from '../../../styles/redesign' +import { Colors, Spacing } from '../../../styles' import settings from '../../../i18n/en/settings' const LISTENER_TYPE = 'create-or-change-pw' diff --git a/components/settings/password/update.js b/components/settings/password/update.js index da3c5d4..a711262 100644 --- a/components/settings/password/update.js +++ b/components/settings/password/update.js @@ -5,7 +5,7 @@ import Button from '../../common/button' import EnterNewPassword from './enter-new-password' import showBackUpReminder from './show-backup-reminder' -import ConfirmWithPassword from '../shared/confirm-with-password' +import ConfirmWithPassword from '../common/confirm-with-password' import settings from '../../../i18n/en/settings' diff --git a/components/stats.js b/components/stats.js index daf1e05..fd1af89 100644 --- a/components/stats.js +++ b/components/stats.js @@ -10,7 +10,7 @@ import cycleModule from '../lib/cycle' import {getCycleLengthStats as getCycleInfo} from '../lib/cycle-length' import {stats as labels} from '../i18n/en/labels' -import { Sizes, Spacing, Typography } from '../styles/redesign' +import { Sizes, Spacing, Typography } from '../styles' const image = require('../assets/cycle-icon.png') diff --git a/i18n/en/labels.js b/i18n/en/labels.js index 5f6adf5..ce66229 100644 --- a/i18n/en/labels.js +++ b/i18n/en/labels.js @@ -1,7 +1,10 @@ import labels from './settings' const settingsTitles = labels.menuItems -export const homeRedesign = { +export const home = { + cycleDayNotEnoughInfo: "We don't have enough information to know what your current cycle day is.", + unknown: '?', + phase: n => `${['1st', '2nd', '3rd'][n - 1]} cycle phase`, cycleDay: ' day of your cycle', cyclePhase: ' cycle phase - ', addData: 'add data for today' @@ -23,12 +26,13 @@ export const shared = { ok: 'OK', confirmToProceed: 'Confirm to proceed', date: 'Date', - cycleDayWithLinebreak: 'Cycle\nday', loading: 'Loading ...', noDataWarning: 'You haven\'t entered any data yet.', noTemperatureWarning: 'You haven\'t entered any temperature data yet.', noDataButtonText: 'Start entering data now', enter: 'Enter', + remove: 'Remove', + learnMore: 'Learn more' } export const headerTitles = { @@ -51,17 +55,7 @@ export const headerTitles = { desire: 'Desire', sex: 'Sex', pain: 'Pain', - mood: 'Mood', - InfoSymptom: 'Info' -} - -export const menuTitles = { - Home: 'Home', - Calendar: 'Calendar', - Chart: 'Chart', - Stats: 'Stats', - Settings: 'Settings', - PasswordPrompt: 'Drip' + mood: 'Mood' } export const stats = { @@ -96,22 +90,6 @@ export const passwordPrompt = { reallyDeleteData: 'Yes, I am sure' } -export const home = { - editToday: 'add data for today', - cycleDayNotEnoughInfo: "We don't have enough information to know what your current cycle day is.", - unknown: '?', - cycleDayKnown: d => `Your last period started ${getDaysDescriptor(d)}.`, - trackPeriod: 'track your period', - checkFertility: 'check your fertility', - phase: n => `${['1st', '2nd', '3rd'][n - 1]} cycle phase`, -} - -const getDaysDescriptor = cycleDayNumber => { - if (cycleDayNumber === 1) return 'today' - if (cycleDayNumber === 2) return 'yesterday' - return `${cycleDayNumber - 1} days ago` -} - export const fertilityStatus = { fertile: 'fertile', infertile: 'infertile', diff --git a/styles/index.js b/styles/index.js index 787171e..080add1 100644 --- a/styles/index.js +++ b/styles/index.js @@ -1,490 +1,6 @@ -import { StyleSheet } from 'react-native' +import Colors from './colors' +import Containers from './containers' +import Spacing from './spacing' +import Typography, { fonts as Fonts, sizes as Sizes } from './typography' -export const primaryColor = '#000D19' -export const secondaryColor = '#4FAFA7' -export const secondaryColorLight = '#91749d' -export const fontOnPrimaryColor = 'white' -export const shadesOfRed = [ - '#e7999e', - '#db666d', - '#cf323d', - '#c3000d' -] // light to dark -export const cycleDayColor = '#29287f' -export const periodColor = '#802249' - -const headerFont = 'Prompt-ExtraLight' - -const textFont = 'Jost-400-Book' -const textFontBold = 'Jost-700-Bold' -const textFontItalic = 'OpenSans-LightItalic' - -const regularSize = 16 -const hintSize = 14 - -const defaultBottomMargin = 5 -const defaultIndentation = 10 -const defaultTopMargin = 10 -const colorInActive = '#666666' - -export const calendarTheme = { - textDayFontFamily: textFont, - textMonthFontFamily: textFontBold, - textDayHeaderFontFamily: textFont, - textDayFontSize: regularSize, - textMonthFontSize: regularSize, - textDayHeaderFontSize: hintSize, - textSectionTitleColor: 'grey' -} - -export default StyleSheet.create({ - appText: { - color: 'black', - fontFamily: textFont, - fontSize: regularSize, - letterSpacing: 0.5 - }, - hint: { - fontFamily: textFontItalic, - fontSize: hintSize, - }, - paragraph: { - marginBottom: defaultBottomMargin - }, - emphasis: { - fontWeight: 'bold', - fontFamily: textFontBold, - color: secondaryColor, - }, - link: { - color: cycleDayColor, - textDecorationLine: 'underline' - }, - title: { - fontSize: 18, - color: 'black', - marginBottom: defaultBottomMargin, - }, - textWrappingView: { - marginHorizontal: defaultIndentation, - marginTop: defaultTopMargin - }, - welcome: { - fontSize: 20, - fontFamily: 'serif', - margin: 30, - textAlign: 'center', - textAlignVertical: 'center' - }, - dateHeader: { - fontSize: 20, - fontFamily: headerFont, - color: fontOnPrimaryColor, - textAlign: 'center', - }, - headerText: { - fontSize: 30, - fontFamily: headerFont, - color: fontOnPrimaryColor, - textAlign: 'center', - paddingBottom: 4 - }, - accentCircle: { - borderColor: secondaryColor, - borderWidth: 1, - width: 40, - height: 40, - borderRadius: 100, - position: 'absolute', - alignSelf: 'center', - }, - errorMessage: { - color: shadesOfRed[2], - marginLeft: 10, - marginTop: 6 - }, - button: { - paddingVertical: 10, - paddingHorizontal: 20, - borderRadius: 5, - alignItems: 'center', - }, - homeButton: { - width: 200, - marginTop: 5 - }, - homeButtonText: { - color: fontOnPrimaryColor - }, - homeView: { - alignItems: 'center', - marginVertical: 40 - }, - homeDescriptionText: { - width: 200, - marginBottom: defaultBottomMargin, - }, - homeElement: { - marginBottom: 30, - flexDirection: 'row', - }, - homeIconTextWrapper: { - alignItems: 'center', - justifyContent: 'center', - width: 80, - position: 'absolute', - }, - homeIconAndText: { - justifyContent: 'center' - }, - homeCircle: { - borderRadius: 100, - borderWidth: 2.3, - width: 80, - height: 80, - alignItems: 'center', - justifyContent: 'center', - borderColor: secondaryColor, - }, - iconText: { - fontSize: 25 - }, - cycleDayNumber: { - fontSize: 15, - color: fontOnPrimaryColor, - textAlign: 'center', - fontFamily: headerFont - }, - symptomViewHeading: { - fontWeight: 'bold', - fontFamily: textFontBold, - flex: 1 - }, - symptomSection: { - marginBottom: 10 - }, - symptomBoxImage: { - width: 50, - height: 50 - }, - symptomBoxesView: { - flexDirection: 'row', - flexWrap: 'wrap', - justifyContent: 'space-evenly' - }, - symptomBox: { - borderColor: secondaryColor, - borderStyle: 'solid', - borderWidth: 1, - borderTopLeftRadius: 10, - borderTopRightRadius: 10, - alignItems: 'center', - marginTop: '10%', - paddingVertical: '6%', - marginHorizontal: 1, - width: 110, - height: 80, - }, - symptomBoxActive: { - backgroundColor: secondaryColor, - }, - symptomTextActive: { - color: fontOnPrimaryColor - }, - symptomInFuture: { - borderColor: 'lightgrey', - color: 'lightgrey' - }, - symptomDataBox: { - borderColor: secondaryColor, - borderStyle: 'solid', - borderLeftWidth: 1, - borderRightWidth: 1, - borderBottomWidth: 1, - borderBottomLeftRadius: 10, - borderBottomRightRadius: 10, - alignItems: 'center', - justifyContent: 'center', - padding: '3%', - marginHorizontal: 1, - width: 110, - height: 50, - }, - symptomDataText: { - fontSize: 12 - }, - header: { - backgroundColor: primaryColor, - alignItems: 'center', - justifyContent: 'center', - height: 80 - }, - navigationArrow: { - padding: 20, - position: 'absolute' - }, - navigationArrowLeft: { left: 0 }, - navigationArrowRight: { right: 0 }, - menu: { - backgroundColor: primaryColor, - alignItems: 'center', - justifyContent: 'space-between', - flexDirection: 'row', - height: 60 - }, - menuItem: { - alignItems: 'center', - flex: 1, - paddingVertical: 15 - }, - menuText: { - color: fontOnPrimaryColor, - fontFamily: headerFont - }, - menuTextInActive: { - color: colorInActive, - fontFamily: headerFont - }, - temperatureTextInput: { - fontSize: 20, - color: 'black', - textAlign: 'center', - width: '30%' - }, - temperatureTextInputSuggestion: { - color: '#939393' - }, - symptomEditButton: { - width: 130 - }, - framedSegment: { - borderColor: secondaryColor, - borderStyle: 'solid', - borderWidth: 1, - borderRadius: 10, - marginTop: defaultTopMargin, - marginHorizontal: defaultIndentation, - padding: 7, - fontFamily: textFont - }, - framedSegmentLast: { - marginBottom: defaultTopMargin, - }, - framedSegmentTitle: { - fontWeight: 'bold', - fontFamily: textFontBold - }, - framedSegmentInlineChildren: { - flexDirection: 'row', - alignItems: 'center' - }, - infoPopUpWrapper: { - position: 'absolute', - width: '100%', - height: '100%' - }, - infoPopUp: { - backgroundColor: 'white', - padding: 15, - marginHorizontal: 20, - marginTop: 20, - maxHeight: '92%' - }, - dimmed: { - position: 'absolute', - backgroundColor: 'black', - opacity: 0.5, - width: '100%', - height: '100%' - }, - infoSymptomClose: { - alignItems: 'flex-end' - }, - infoSymptomText: { - marginTop: 10 - }, - settingsButton: { - padding: 10, - alignItems: 'center', - margin: 10, - borderRadius: 5, - }, - settingsButtonAccent: { - backgroundColor: secondaryColor - }, - settingsButtonDisabled: { - backgroundColor: colorInActive - }, - settingsButtonText: { - color: fontOnPrimaryColor - }, - settingsButtonSecondaryText: { - color: secondaryColor - - }, - statsRow: { - flexDirection: 'row', - flexWrap: 'wrap' - }, - menuLabel: { - fontSize: 15, - color: fontOnPrimaryColor - }, - selectBox: { - backgroundColor: 'lightgrey', - marginRight: 7, - marginVertical: 5, - paddingHorizontal: 15, - paddingVertical: 10, - borderRadius: 10 - }, - selectBoxActive: { - backgroundColor: secondaryColor, - color: fontOnPrimaryColor - }, - selectBoxTextActive: { - color: fontOnPrimaryColor - }, - selectBoxSection: { - flexDirection: 'row', - flexWrap: 'wrap', - marginTop: 7, - }, - selectTabGroup: { - marginTop: 7, - flexDirection: 'row' - }, - selectTab: { - backgroundColor: 'lightgrey', - borderStyle: 'solid', - borderLeftWidth: 1, - paddingVertical: 10, - paddingHorizontal: 15, - borderColor: 'white', - marginBottom: 3, - alignItems: 'center', - justifyContent: 'center' - }, - selectTabActive: { - backgroundColor: secondaryColor, - color: fontOnPrimaryColor - }, - selectTabLast: { - borderTopRightRadius: 10, - borderBottomRightRadius: 10, - }, - selectTabFirst: { - borderTopLeftRadius: 10, - borderBottomLeftRadius: 10, - borderLeftWidth: null - }, - page: { - marginHorizontal: 10, - marginTop: 20, - }, - calendarToday: { - fontWeight: 'bold', - fontSize: 20, - color: secondaryColor, - marginTop: 1 - }, - passwordField: { - marginHorizontal: 10, - marginTop: 10 - }, - textInputField: { - padding: 10, - marginVertical: 10, - backgroundColor: 'white', - borderColor: secondaryColor, - borderStyle: 'solid', - borderWidth: 1, - }, - passwordPromptPage: { - padding: 30, - flex: 1, - justifyContent: 'center', - alignItems: 'center' - }, - passwordPromptField: { - padding: 10, - marginTop: 10, - marginHorizontal: 10, - borderBottomWidth: 3, - borderBottomColor: primaryColor, - width: '100%', - fontSize: 20, - marginVertical: 20 - }, - passwordPromptButton: { - backgroundColor: secondaryColor, - padding: 10, - alignItems: 'center', - margin: 10, - width: '100%', - borderRadius: 10 - }, - passwordPromptButtonText: { - color: fontOnPrimaryColor, - fontSize: 20 - }, - passwordPromptForgotPasswordText: { - marginTop: 20, - color: 'grey' - }, - headerDeleteButton: { - paddingHorizontal: 20, - paddingVertical: 20, - position: 'absolute', - right: 0 - }, - infoButtonSymptomView: { - position: 'absolute', - padding: 15, - right: 0 - }, - licensePage: { - paddingVertical: 20, - paddingHorizontal: 10 - }, - licenseButtons: { - flexDirection: 'row', - justifyContent: 'flex-end', - marginTop: 40 - }, - licenseButton: { - marginLeft: 30, - width: 100 - } -}) - -export const iconStyles = { - navigationArrow: { - size: 20, - color: fontOnPrimaryColor - }, - symptomHeaderIcons: { - size: 20, - color: fontOnPrimaryColor - }, - symptomBox: { - size: 40 - }, - symptomBoxActive: { - color: fontOnPrimaryColor - }, - info: { - color: secondaryColor, - fontSize: 25 - }, - menuIcon: { - size: 20, - color: fontOnPrimaryColor - }, - menuIconInactive: { - color: colorInActive, - }, - infoPopUpClose: { - size: 25 - } -} +export { Colors, Containers, Fonts, Spacing, Sizes, Typography } diff --git a/styles/redesign.js b/styles/redesign.js deleted file mode 100644 index 080add1..0000000 --- a/styles/redesign.js +++ /dev/null @@ -1,6 +0,0 @@ -import Colors from './colors' -import Containers from './containers' -import Spacing from './spacing' -import Typography, { fonts as Fonts, sizes as Sizes } from './typography' - -export { Colors, Containers, Fonts, Spacing, Sizes, Typography } From b91547032ddd4417de6f69eb9eccbc50bc017238 Mon Sep 17 00:00:00 2001 From: Sofiya Tepikin <sofiya.tepikin@gmail.com> Date: Sat, 22 Aug 2020 14:13:27 +0200 Subject: [PATCH 53/94] Fix styles issue --- components/calendar.js | 16 +--------------- components/helpers/calendar.js | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/components/calendar.js b/components/calendar.js index c5f7c21..d3a9c44 100644 --- a/components/calendar.js +++ b/components/calendar.js @@ -11,13 +11,12 @@ import { getBleedingDaysSortedByDate } from '../db' import cycleModule from '../lib/cycle' import nothingChanged from '../db/db-unchanged' import { + calendarTheme, predictionToCalFormat, toCalFormat, todayToCalFormat } from './helpers/calendar' -import { Colors, Fonts, Sizes } from '../../styles' - class CalendarView extends Component { static propTypes = { setDate: PropTypes.func.isRequired, @@ -88,19 +87,6 @@ const styles = StyleSheet.create({ container: { flex: 1 } }) -const calendarTheme = StyleSheet.create({ - calendarBackground: Colors.tourquiseLight, - dayTextColor: Colors.greyDark, - monthTextColor: Colors.purple, - textDayFontFamily: Fonts.main, - textMonthFontFamily: Fonts.bold, - textDayHeaderFontFamily: Fonts.bold, - textDayFontSize: Sizes.small, - textMonthFontSize: Sizes.subtitle, - textDayHeaderFontSize: Sizes.small, - textSectionTitleColor: Colors.orange, -}) - const mapDispatchToProps = (dispatch) => { return({ setDate: (date) => dispatch(setDate(date)), diff --git a/components/helpers/calendar.js b/components/helpers/calendar.js index c29318b..6b91f78 100644 --- a/components/helpers/calendar.js +++ b/components/helpers/calendar.js @@ -1,6 +1,6 @@ import { LocalDate } from 'js-joda' -import { Colors, Fonts } from '../../styles' +import { Colors, Fonts, Sizes } from '../../styles' const { shades } = Colors.iconColors.bleeding @@ -64,4 +64,17 @@ const styles = { fontFamily: Fonts.bold, color: Colors.purple }, -} \ No newline at end of file +} + +const calendarTheme = { + calendarBackground: Colors.tourquiseLight, + dayTextColor: Colors.greyDark, + monthTextColor: Colors.purple, + textDayFontFamily: Fonts.main, + textMonthFontFamily: Fonts.bold, + textDayHeaderFontFamily: Fonts.bold, + textDayFontSize: Sizes.small, + textMonthFontSize: Sizes.subtitle, + textDayHeaderFontSize: Sizes.small, + textSectionTitleColor: Colors.orange, +} From 14c2d17a203382b75b55acf1534b07d6954eddf4 Mon Sep 17 00:00:00 2001 From: Sofiya Tepikin <sofiya.tepikin@gmail.com> Date: Sat, 22 Aug 2020 14:13:52 +0200 Subject: [PATCH 54/94] Fix react-native-vector-icon --- package-lock.json | 7507 +++++++++++++++++++++------------------------ package.json | 4 +- 2 files changed, 3526 insertions(+), 3985 deletions(-) diff --git a/package-lock.json b/package-lock.json index a5a8294..88bd999 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,34 +5,34 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "requires": { - "@babel/highlight": "7.9.0" + "@babel/highlight": "^7.10.4" } }, "@babel/core": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", - "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.4.tgz", + "integrity": "sha512-5deljj5HlqRXN+5oJTY7Zs37iH3z3b++KjiKtIsJy1NrjOOVSEaJHEetLBhyu0aQOSNNZ/0IuEAan9GzRuDXHg==", "requires": { - "@babel/code-frame": "7.8.3", - "@babel/generator": "7.9.4", - "@babel/helper-module-transforms": "7.9.0", - "@babel/helpers": "7.9.2", - "@babel/parser": "7.9.4", - "@babel/template": "7.8.6", - "@babel/traverse": "7.9.0", - "@babel/types": "7.9.0", - "convert-source-map": "1.7.0", - "debug": "4.1.1", - "gensync": "1.0.0-beta.1", - "json5": "2.1.2", - "lodash": "4.17.15", - "resolve": "1.15.1", - "semver": "5.7.1", - "source-map": "0.5.7" + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.4", + "@babel/helper-module-transforms": "^7.11.0", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.11.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.11.0", + "@babel/types": "^7.11.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" }, "dependencies": { "debug": { @@ -40,7 +40,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "2.1.2" + "ms": "^2.1.1" } }, "ms": { @@ -56,312 +56,319 @@ } }, "@babel/generator": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz", - "integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==", + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.4.tgz", + "integrity": "sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g==", "requires": { - "@babel/types": "7.9.0", - "jsesc": "2.5.2", - "lodash": "4.17.15", - "source-map": "0.5.7" + "@babel/types": "^7.11.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", - "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", "requires": { - "@babel/types": "7.9.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", - "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", "requires": { - "@babel/helper-explode-assignable-expression": "7.8.3", - "@babel/types": "7.9.0" + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-builder-react-jsx": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz", - "integrity": "sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz", + "integrity": "sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg==", "requires": { - "@babel/helper-annotate-as-pure": "7.8.3", - "@babel/types": "7.9.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-builder-react-jsx-experimental": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.0.tgz", - "integrity": "sha512-3xJEiyuYU4Q/Ar9BsHisgdxZsRlsShMe90URZ0e6przL26CCs8NJbDoxH94kKT17PcxlMhsCAwZd90evCo26VQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.5.tgz", + "integrity": "sha512-Buewnx6M4ttG+NLkKyt7baQn7ScC/Td+e99G914fRU8fGIUivDDgVIQeDHFa5e4CRSJQt58WpNHhsAZgtzVhsg==", "requires": { - "@babel/helper-annotate-as-pure": "7.8.3", - "@babel/helper-module-imports": "7.8.3", - "@babel/types": "7.9.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/types": "^7.10.5" } }, "@babel/helper-create-class-features-plugin": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz", - "integrity": "sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", + "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", "requires": { - "@babel/helper-function-name": "7.8.3", - "@babel/helper-member-expression-to-functions": "7.8.3", - "@babel/helper-optimise-call-expression": "7.8.3", - "@babel/helper-plugin-utils": "7.8.3", - "@babel/helper-replace-supers": "7.8.6", - "@babel/helper-split-export-declaration": "7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz", - "integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", + "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", "requires": { - "@babel/helper-annotate-as-pure": "7.8.3", - "@babel/helper-regex": "7.8.3", - "regexpu-core": "4.7.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.0" } }, "@babel/helper-define-map": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", - "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", "requires": { - "@babel/helper-function-name": "7.8.3", - "@babel/types": "7.9.0", - "lodash": "4.17.15" + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", - "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", + "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", "requires": { - "@babel/traverse": "7.9.0", - "@babel/types": "7.9.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", - "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", "requires": { - "@babel/helper-get-function-arity": "7.8.3", - "@babel/template": "7.8.6", - "@babel/types": "7.9.0" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-get-function-arity": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", - "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", "requires": { - "@babel/types": "7.9.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-member-expression-to-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", - "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", + "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", "requires": { - "@babel/types": "7.9.0" + "@babel/types": "^7.11.0" } }, "@babel/helper-module-imports": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", - "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", "requires": { - "@babel/types": "7.9.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-module-transforms": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz", - "integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", + "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", "requires": { - "@babel/helper-module-imports": "7.8.3", - "@babel/helper-replace-supers": "7.8.6", - "@babel/helper-simple-access": "7.8.3", - "@babel/helper-split-export-declaration": "7.8.3", - "@babel/template": "7.8.6", - "@babel/types": "7.9.0", - "lodash": "4.17.15" + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/template": "^7.10.4", + "@babel/types": "^7.11.0", + "lodash": "^4.17.19" } }, "@babel/helper-optimise-call-expression": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", - "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", "requires": { - "@babel/types": "7.9.0" + "@babel/types": "^7.10.4" } }, "@babel/helper-plugin-utils": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", - "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==" + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" }, "@babel/helper-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", - "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", "requires": { - "lodash": "4.17.15" + "lodash": "^4.17.19" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", - "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", + "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", "requires": { - "@babel/helper-annotate-as-pure": "7.8.3", - "@babel/helper-wrap-function": "7.8.3", - "@babel/template": "7.8.6", - "@babel/traverse": "7.9.0", - "@babel/types": "7.9.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-replace-supers": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz", - "integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", + "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", "requires": { - "@babel/helper-member-expression-to-functions": "7.8.3", - "@babel/helper-optimise-call-expression": "7.8.3", - "@babel/traverse": "7.9.0", - "@babel/types": "7.9.0" + "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helper-simple-access": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", - "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", + "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", "requires": { - "@babel/template": "7.8.6", - "@babel/types": "7.9.0" + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", + "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "requires": { + "@babel/types": "^7.11.0" } }, "@babel/helper-split-export-declaration": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", - "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", "requires": { - "@babel/types": "7.9.0" + "@babel/types": "^7.11.0" } }, "@babel/helper-validator-identifier": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", - "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==" + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, "@babel/helper-wrap-function": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", - "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", + "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", "requires": { - "@babel/helper-function-name": "7.8.3", - "@babel/template": "7.8.6", - "@babel/traverse": "7.9.0", - "@babel/types": "7.9.0" + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/helpers": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz", - "integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", + "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", "requires": { - "@babel/template": "7.8.6", - "@babel/traverse": "7.9.0", - "@babel/types": "7.9.0" + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/highlight": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", - "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", "requires": { - "@babel/helper-validator-identifier": "7.9.0", - "chalk": "2.4.2", - "js-tokens": "4.0.0" + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz", - "integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==" + "version": "7.11.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.4.tgz", + "integrity": "sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA==" }, "@babel/plugin-external-helpers": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.8.3.tgz", - "integrity": "sha512-mx0WXDDiIl5DwzMtzWGRSPugXi9BxROS05GQrhLNbEamhBiicgn994ibwkyiBH+6png7bm/yA7AUsvHyCXi4Vw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-external-helpers/-/plugin-external-helpers-7.10.4.tgz", + "integrity": "sha512-5mASqSthmRNYVXOphYzlqmR3Y8yp5SZMZhtKDh2DGV3R2PWGLEmP7qOahw66//6m4hjhlpV1bVM7xIJHt1F77Q==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", - "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", + "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", "requires": { - "@babel/helper-create-class-features-plugin": "7.8.6", - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-export-default-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.8.3.tgz", - "integrity": "sha512-PYtv2S2OdCdp7GSPDg5ndGZFm9DmWFvuLoS5nBxZCgOBggluLnhTScspJxng96alHQzPyrrHxvC9/w4bFuspeA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.10.4.tgz", + "integrity": "sha512-G1l00VvDZ7Yk2yRlC5D8Ybvu3gmeHS3rCHoUYdjrqGYUtdeOBoRypnvDZ5KQqxyaiiGHWnVDeSEzA5F9ozItig==", "requires": { - "@babel/helper-plugin-utils": "7.8.3", - "@babel/plugin-syntax-export-default-from": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-default-from": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", + "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", "requires": { - "@babel/helper-plugin-utils": "7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz", - "integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", + "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", "requires": { - "@babel/helper-plugin-utils": "7.8.3", - "@babel/plugin-syntax-object-rest-spread": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.4" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", + "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", "requires": { - "@babel/helper-plugin-utils": "7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", - "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", + "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", "requires": { - "@babel/helper-plugin-utils": "7.8.3", - "@babel/plugin-syntax-optional-chaining": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, "@babel/plugin-syntax-class-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz", - "integrity": "sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", + "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-dynamic-import": { @@ -369,31 +376,31 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-export-default-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.8.3.tgz", - "integrity": "sha512-a1qnnsr73KLNIQcQlcQ4ZHxqqfBKM6iNQZW2OMTyxNbA2WC7SHWHtGVpFzWtQAuS2pspkWVzdEBXXx8Ik0Za4w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.10.4.tgz", + "integrity": "sha512-79V6r6Pgudz0RnuMGp5xidu6Z+bPFugh8/Q9eDHonmLp4wKFAZDwygJwYgCzuDu8lFA/sYyT+mc5y2wkd7bTXA==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-flow": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz", - "integrity": "sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz", + "integrity": "sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-jsx": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz", - "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", + "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-nullish-coalescing-operator": { @@ -401,7 +408,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-object-rest-spread": { @@ -409,7 +416,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-optional-catch-binding": { @@ -417,7 +424,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-optional-chaining": { @@ -425,224 +432,223 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-typescript": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz", - "integrity": "sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz", + "integrity": "sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", - "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", + "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", - "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", + "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", "requires": { - "@babel/helper-module-imports": "7.8.3", - "@babel/helper-plugin-utils": "7.8.3", - "@babel/helper-remap-async-to-generator": "7.8.3" + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.10.4" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", - "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", + "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", - "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", + "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", "requires": { - "@babel/helper-plugin-utils": "7.8.3", - "lodash": "4.17.15" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz", - "integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", + "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", "requires": { - "@babel/helper-annotate-as-pure": "7.8.3", - "@babel/helper-define-map": "7.8.3", - "@babel/helper-function-name": "7.8.3", - "@babel/helper-optimise-call-expression": "7.8.3", - "@babel/helper-plugin-utils": "7.8.3", - "@babel/helper-replace-supers": "7.8.6", - "@babel/helper-split-export-declaration": "7.8.3", - "globals": "11.12.0" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", - "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", + "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", - "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", + "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", - "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", + "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "7.8.3", - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-flow-strip-types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz", - "integrity": "sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.4.tgz", + "integrity": "sha512-XTadyuqNst88UWBTdLjM+wEY7BFnY2sYtPyAidfC7M/QaZnSuIZpMvLxqGT7phAcnGyWh/XQFLKcGf04CnvxSQ==", "requires": { - "@babel/helper-plugin-utils": "7.8.3", - "@babel/plugin-syntax-flow": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-flow": "^7.10.4" } }, "@babel/plugin-transform-for-of": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz", - "integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", + "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", - "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", + "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", "requires": { - "@babel/helper-function-name": "7.8.3", - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", - "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", + "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", - "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", + "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz", - "integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", + "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", "requires": { - "@babel/helper-module-transforms": "7.9.0", - "@babel/helper-plugin-utils": "7.8.3", - "@babel/helper-simple-access": "7.8.3", - "babel-plugin-dynamic-import-node": "2.3.0" + "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-object-assign": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.8.3.tgz", - "integrity": "sha512-i3LuN8tPDqUCRFu3dkzF2r1Nx0jp4scxtm7JxtIqI9he9Vk20YD+/zshdzR9JLsoBMlJlNR82a62vQExNEVx/Q==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.10.4.tgz", + "integrity": "sha512-6zccDhYEICfMeQqIjuY5G09/yhKzG30DKHJeYBQUHIsJH7c2jXSGvgwRalufLAXAq432OSlsEfAOLlzEsQzxVw==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", - "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", + "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", "requires": { - "@babel/helper-plugin-utils": "7.8.3", - "@babel/helper-replace-supers": "7.8.6" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.10.4" } }, "@babel/plugin-transform-parameters": { - "version": "7.9.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz", - "integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", + "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", "requires": { - "@babel/helper-get-function-arity": "7.8.3", - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", - "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", + "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz", - "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz", + "integrity": "sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz", - "integrity": "sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz", + "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==", "requires": { - "@babel/helper-builder-react-jsx": "7.9.0", - "@babel/helper-builder-react-jsx-experimental": "7.9.0", - "@babel/helper-plugin-utils": "7.8.3", - "@babel/plugin-syntax-jsx": "7.8.3" + "@babel/helper-builder-react-jsx": "^7.10.4", + "@babel/helper-builder-react-jsx-experimental": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz", - "integrity": "sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz", + "integrity": "sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA==", "requires": { - "@babel/helper-plugin-utils": "7.8.3", - "@babel/plugin-syntax-jsx": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-jsx": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.8.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz", - "integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", + "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", "requires": { - "regenerator-transform": "0.14.4" + "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-runtime": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz", - "integrity": "sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.0.tgz", + "integrity": "sha512-LFEsP+t3wkYBlis8w6/kmnd6Kb1dxTd+wGJ8MlxTGzQo//ehtqlVL4S9DNUa53+dtPSQobN2CXx4d81FqC58cw==", "requires": { - "@babel/helper-module-imports": "7.8.3", - "@babel/helper-plugin-utils": "7.8.3", - "resolve": "1.15.1", - "semver": "5.7.1" + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "resolve": "^1.8.1", + "semver": "^5.5.1" }, "dependencies": { "semver": { @@ -653,127 +659,110 @@ } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", - "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", + "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", - "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", + "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", "requires": { - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", - "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", + "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", "requires": { - "@babel/helper-plugin-utils": "7.8.3", - "@babel/helper-regex": "7.8.3" + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", - "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", + "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", "requires": { - "@babel/helper-annotate-as-pure": "7.8.3", - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typescript": { - "version": "7.9.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.4.tgz", - "integrity": "sha512-yeWeUkKx2auDbSxRe8MusAG+n4m9BFY/v+lPjmQDgOFX5qnySkUY5oXzkp6FwPdsYqnKay6lorXYdC0n3bZO7w==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz", + "integrity": "sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w==", "requires": { - "@babel/helper-create-class-features-plugin": "7.8.6", - "@babel/helper-plugin-utils": "7.8.3", - "@babel/plugin-syntax-typescript": "7.8.3" + "@babel/helper-create-class-features-plugin": "^7.10.5", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-typescript": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", - "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", + "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", "requires": { - "@babel/helper-create-regexp-features-plugin": "7.8.8", - "@babel/helper-plugin-utils": "7.8.3" + "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/register": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.9.0.tgz", - "integrity": "sha512-Tv8Zyi2J2VRR8g7pC5gTeIN8Ihultbmk0ocyNz8H2nEZbmhp1N6q0A1UGsQbDvGP/sNinQKUHf3SqXwqjtFv4Q==", + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.10.5.tgz", + "integrity": "sha512-eYHdLv43nyvmPn9bfNfrcC4+iYNwdQ8Pxk1MFJuU/U5LpSYl/PH4dFMazCYZDFVi8ueG3shvO+AQfLrxpYulQw==", "requires": { - "find-cache-dir": "2.1.0", - "lodash": "4.17.15", - "make-dir": "2.1.0", - "pirates": "4.0.1", - "source-map-support": "0.5.16" + "find-cache-dir": "^2.0.0", + "lodash": "^4.17.19", + "make-dir": "^2.1.0", + "pirates": "^4.0.0", + "source-map-support": "^0.5.16" } }, "@babel/runtime": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", - "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", + "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", "requires": { - "regenerator-runtime": "0.13.5" + "regenerator-runtime": "^0.13.4" }, "dependencies": { "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" - } - } - }, - "@babel/runtime-corejs3": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.9.2.tgz", - "integrity": "sha512-HHxmgxbIzOfFlZ+tdeRKtaxWOMUoCG5Mu3wKeUmOxjYrwb3AAHgnmtCUbPPK11/raIWLIBK250t8E2BPO0p7jA==", - "dev": true, - "requires": { - "core-js-pure": "3.6.4", - "regenerator-runtime": "0.13.5" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", - "dev": true + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" } } }, "@babel/template": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", - "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==", + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", "requires": { - "@babel/code-frame": "7.8.3", - "@babel/parser": "7.9.4", - "@babel/types": "7.9.0" + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" } }, "@babel/traverse": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz", - "integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", + "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", "requires": { - "@babel/code-frame": "7.8.3", - "@babel/generator": "7.9.4", - "@babel/helper-function-name": "7.8.3", - "@babel/helper-split-export-declaration": "7.8.3", - "@babel/parser": "7.9.4", - "@babel/types": "7.9.0", - "debug": "4.1.1", - "globals": "11.12.0", - "lodash": "4.17.15" + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.0", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.0", + "@babel/types": "^7.11.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" }, "dependencies": { "debug": { @@ -781,7 +770,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "2.1.2" + "ms": "^2.1.1" } }, "ms": { @@ -792,13 +781,13 @@ } }, "@babel/types": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz", - "integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", + "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", "requires": { - "@babel/helper-validator-identifier": "7.9.0", - "lodash": "4.17.15", - "to-fast-properties": "2.0.0" + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" } }, "@jest/console": { @@ -807,9 +796,9 @@ "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", "dev": true, "requires": { - "@jest/source-map": "24.9.0", - "chalk": "2.4.2", - "slash": "2.0.0" + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" } }, "@jest/core": { @@ -818,34 +807,34 @@ "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", "dev": true, "requires": { - "@jest/console": "24.9.0", - "@jest/reporters": "24.9.0", - "@jest/test-result": "24.9.0", - "@jest/transform": "24.9.0", - "@jest/types": "24.9.0", - "ansi-escapes": "3.2.0", - "chalk": "2.4.2", - "exit": "0.1.2", - "graceful-fs": "4.2.3", - "jest-changed-files": "24.9.0", - "jest-config": "24.9.0", - "jest-haste-map": "24.9.0", - "jest-message-util": "24.9.0", - "jest-regex-util": "24.9.0", - "jest-resolve": "24.9.0", - "jest-resolve-dependencies": "24.9.0", - "jest-runner": "24.9.0", - "jest-runtime": "24.9.0", - "jest-snapshot": "24.9.0", - "jest-util": "24.9.0", - "jest-validate": "24.9.0", - "jest-watcher": "24.9.0", - "micromatch": "3.1.10", - "p-each-series": "1.0.0", - "realpath-native": "1.1.0", - "rimraf": "2.7.1", - "slash": "2.0.0", - "strip-ansi": "5.2.0" + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" }, "dependencies": { "@cnakazawa/watch": { @@ -854,8 +843,8 @@ "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { - "exec-sh": "0.3.4", - "minimist": "1.2.5" + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" } }, "ansi-regex": { @@ -882,16 +871,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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.3", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "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" }, "dependencies": { "extend-shallow": { @@ -900,7 +889,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -911,7 +900,7 @@ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "rsvp": "4.8.5" + "rsvp": "^4.8.4" } }, "exec-sh": { @@ -926,13 +915,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -941,7 +930,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -950,7 +939,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -959,7 +948,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -968,7 +957,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -979,7 +968,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -988,7 +977,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -999,9 +988,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -1018,14 +1007,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -1034,7 +1023,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -1043,7 +1032,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1054,10 +1043,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -1066,7 +1055,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1077,7 +1066,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -1086,7 +1075,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -1095,9 +1084,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-number": { @@ -1106,7 +1095,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -1115,7 +1104,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -1126,18 +1115,18 @@ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "anymatch": "2.0.0", - "fb-watchman": "2.0.1", - "fsevents": "1.2.12", - "graceful-fs": "4.2.3", - "invariant": "2.2.4", - "jest-serializer": "24.9.0", - "jest-util": "24.9.0", - "jest-worker": "24.9.0", - "micromatch": "3.1.10", - "sane": "4.1.0", - "walker": "1.0.7" + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" } }, "jest-worker": { @@ -1146,8 +1135,8 @@ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "merge-stream": "2.0.0", - "supports-color": "6.1.0" + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" } }, "kind-of": { @@ -1168,19 +1157,19 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.3", - "nanomatch": "1.2.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" } }, "rsvp": { @@ -1195,15 +1184,15 @@ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { - "@cnakazawa/watch": "1.0.4", - "anymatch": "2.0.0", - "capture-exit": "2.0.0", - "exec-sh": "0.3.4", - "execa": "1.0.0", - "fb-watchman": "2.0.1", - "micromatch": "3.1.10", - "minimist": "1.2.5", - "walker": "1.0.7" + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" } }, "strip-ansi": { @@ -1212,7 +1201,7 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "4.1.0" + "ansi-regex": "^4.1.0" } }, "supports-color": { @@ -1221,7 +1210,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -1232,10 +1221,10 @@ "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", "dev": true, "requires": { - "@jest/fake-timers": "24.9.0", - "@jest/transform": "24.9.0", - "@jest/types": "24.9.0", - "jest-mock": "24.9.0" + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" } }, "@jest/fake-timers": { @@ -1244,9 +1233,9 @@ "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "jest-message-util": "24.9.0", - "jest-mock": "24.9.0" + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" } }, "@jest/reporters": { @@ -1255,27 +1244,27 @@ "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", "dev": true, "requires": { - "@jest/environment": "24.9.0", - "@jest/test-result": "24.9.0", - "@jest/transform": "24.9.0", - "@jest/types": "24.9.0", - "chalk": "2.4.2", - "exit": "0.1.2", - "glob": "7.1.6", - "istanbul-lib-coverage": "2.0.5", - "istanbul-lib-instrument": "3.3.0", - "istanbul-lib-report": "2.0.8", - "istanbul-lib-source-maps": "3.0.6", - "istanbul-reports": "2.2.7", - "jest-haste-map": "24.9.0", - "jest-resolve": "24.9.0", - "jest-runtime": "24.9.0", - "jest-util": "24.9.0", - "jest-worker": "24.9.0", - "node-notifier": "5.4.3", - "slash": "2.0.0", - "source-map": "0.6.1", - "string-length": "2.0.0" + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" }, "dependencies": { "@cnakazawa/watch": { @@ -1284,8 +1273,8 @@ "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { - "exec-sh": "0.3.4", - "minimist": "1.2.5" + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" } }, "arr-diff": { @@ -1306,16 +1295,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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.3", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "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" }, "dependencies": { "extend-shallow": { @@ -1324,7 +1313,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1335,7 +1324,7 @@ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "rsvp": "4.8.5" + "rsvp": "^4.8.4" } }, "exec-sh": { @@ -1350,13 +1339,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -1365,7 +1354,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -1374,7 +1363,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -1383,7 +1372,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -1392,7 +1381,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -1403,7 +1392,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -1412,7 +1401,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -1423,9 +1412,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -1442,14 +1431,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -1458,7 +1447,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -1467,7 +1456,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1478,10 +1467,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -1490,7 +1479,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1501,7 +1490,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -1510,7 +1499,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -1519,9 +1508,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-number": { @@ -1530,7 +1519,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -1539,7 +1528,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -1550,18 +1539,18 @@ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "anymatch": "2.0.0", - "fb-watchman": "2.0.1", - "fsevents": "1.2.12", - "graceful-fs": "4.2.3", - "invariant": "2.2.4", - "jest-serializer": "24.9.0", - "jest-util": "24.9.0", - "jest-worker": "24.9.0", - "micromatch": "3.1.10", - "sane": "4.1.0", - "walker": "1.0.7" + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" } }, "jest-worker": { @@ -1570,8 +1559,8 @@ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "merge-stream": "2.0.0", - "supports-color": "6.1.0" + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" } }, "kind-of": { @@ -1592,19 +1581,19 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.3", - "nanomatch": "1.2.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" } }, "rsvp": { @@ -1619,15 +1608,15 @@ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { - "@cnakazawa/watch": "1.0.4", - "anymatch": "2.0.0", - "capture-exit": "2.0.0", - "exec-sh": "0.3.4", - "execa": "1.0.0", - "fb-watchman": "2.0.1", - "micromatch": "3.1.10", - "minimist": "1.2.5", - "walker": "1.0.7" + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" } }, "source-map": { @@ -1642,7 +1631,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -1653,9 +1642,9 @@ "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", "dev": true, "requires": { - "callsites": "3.1.0", - "graceful-fs": "4.2.3", - "source-map": "0.6.1" + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" }, "dependencies": { "callsites": { @@ -1678,9 +1667,9 @@ "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", "dev": true, "requires": { - "@jest/console": "24.9.0", - "@jest/types": "24.9.0", - "@types/istanbul-lib-coverage": "2.0.1" + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" } }, "@jest/test-sequencer": { @@ -1689,10 +1678,10 @@ "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", "dev": true, "requires": { - "@jest/test-result": "24.9.0", - "jest-haste-map": "24.9.0", - "jest-runner": "24.9.0", - "jest-runtime": "24.9.0" + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" }, "dependencies": { "@cnakazawa/watch": { @@ -1701,8 +1690,8 @@ "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { - "exec-sh": "0.3.4", - "minimist": "1.2.5" + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" } }, "arr-diff": { @@ -1723,16 +1712,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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.3", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "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" }, "dependencies": { "extend-shallow": { @@ -1741,7 +1730,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1752,7 +1741,7 @@ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "rsvp": "4.8.5" + "rsvp": "^4.8.4" } }, "exec-sh": { @@ -1767,13 +1756,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -1782,7 +1771,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -1791,7 +1780,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -1800,7 +1789,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -1809,7 +1798,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -1820,7 +1809,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -1829,7 +1818,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -1840,9 +1829,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -1859,14 +1848,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -1875,7 +1864,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -1884,7 +1873,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1895,10 +1884,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -1907,7 +1896,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1918,7 +1907,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -1927,7 +1916,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -1936,9 +1925,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-number": { @@ -1947,7 +1936,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -1956,7 +1945,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -1967,18 +1956,18 @@ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "anymatch": "2.0.0", - "fb-watchman": "2.0.1", - "fsevents": "1.2.12", - "graceful-fs": "4.2.3", - "invariant": "2.2.4", - "jest-serializer": "24.9.0", - "jest-util": "24.9.0", - "jest-worker": "24.9.0", - "micromatch": "3.1.10", - "sane": "4.1.0", - "walker": "1.0.7" + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" } }, "jest-worker": { @@ -1987,8 +1976,8 @@ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "merge-stream": "2.0.0", - "supports-color": "6.1.0" + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" } }, "kind-of": { @@ -2009,19 +1998,19 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.3", - "nanomatch": "1.2.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" } }, "rsvp": { @@ -2036,15 +2025,15 @@ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { - "@cnakazawa/watch": "1.0.4", - "anymatch": "2.0.0", - "capture-exit": "2.0.0", - "exec-sh": "0.3.4", - "execa": "1.0.0", - "fb-watchman": "2.0.1", - "micromatch": "3.1.10", - "minimist": "1.2.5", - "walker": "1.0.7" + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" } }, "supports-color": { @@ -2053,7 +2042,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -2064,21 +2053,21 @@ "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", "dev": true, "requires": { - "@babel/core": "7.9.0", - "@jest/types": "24.9.0", - "babel-plugin-istanbul": "5.2.0", - "chalk": "2.4.2", - "convert-source-map": "1.7.0", - "fast-json-stable-stringify": "2.1.0", - "graceful-fs": "4.2.3", - "jest-haste-map": "24.9.0", - "jest-regex-util": "24.9.0", - "jest-util": "24.9.0", - "micromatch": "3.1.10", - "pirates": "4.0.1", - "realpath-native": "1.1.0", - "slash": "2.0.0", - "source-map": "0.6.1", + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", "write-file-atomic": "2.4.1" }, "dependencies": { @@ -2088,8 +2077,8 @@ "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { - "exec-sh": "0.3.4", - "minimist": "1.2.5" + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" } }, "arr-diff": { @@ -2110,16 +2099,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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.3", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "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" }, "dependencies": { "extend-shallow": { @@ -2128,7 +2117,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -2139,7 +2128,7 @@ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "rsvp": "4.8.5" + "rsvp": "^4.8.4" } }, "exec-sh": { @@ -2154,13 +2143,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -2169,7 +2158,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -2178,7 +2167,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -2187,7 +2176,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2196,7 +2185,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2207,7 +2196,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2216,7 +2205,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2227,9 +2216,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -2246,14 +2235,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -2262,7 +2251,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -2271,7 +2260,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -2282,10 +2271,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -2294,7 +2283,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -2305,7 +2294,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -2314,7 +2303,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -2323,9 +2312,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-number": { @@ -2334,7 +2323,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2343,7 +2332,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2354,18 +2343,18 @@ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "anymatch": "2.0.0", - "fb-watchman": "2.0.1", - "fsevents": "1.2.12", - "graceful-fs": "4.2.3", - "invariant": "2.2.4", - "jest-serializer": "24.9.0", - "jest-util": "24.9.0", - "jest-worker": "24.9.0", - "micromatch": "3.1.10", - "sane": "4.1.0", - "walker": "1.0.7" + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" } }, "jest-worker": { @@ -2374,8 +2363,8 @@ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "merge-stream": "2.0.0", - "supports-color": "6.1.0" + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" } }, "kind-of": { @@ -2396,19 +2385,19 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.3", - "nanomatch": "1.2.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" } }, "rsvp": { @@ -2423,15 +2412,15 @@ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { - "@cnakazawa/watch": "1.0.4", - "anymatch": "2.0.0", - "capture-exit": "2.0.0", - "exec-sh": "0.3.4", - "execa": "1.0.0", - "fb-watchman": "2.0.1", - "micromatch": "3.1.10", - "minimist": "1.2.5", - "walker": "1.0.7" + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" } }, "source-map": { @@ -2446,7 +2435,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "write-file-atomic": { @@ -2455,9 +2444,9 @@ "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", "dev": true, "requires": { - "graceful-fs": "4.2.3", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } } } @@ -2468,55 +2457,55 @@ "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "2.0.1", - "@types/istanbul-reports": "1.1.1", - "@types/yargs": "13.0.8" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" } }, "@ptomasroos/react-native-multi-slider": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ptomasroos/react-native-multi-slider/-/react-native-multi-slider-2.2.0.tgz", - "integrity": "sha512-JIlNo64JYTYeipIv+QcRNouBJdklWnQtwGlOCSIK7S4qQY5z6lYLTVnYJtlZoGJgXeSorPz9aRGrzfmE/eULoQ==" + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@ptomasroos/react-native-multi-slider/-/react-native-multi-slider-2.2.2.tgz", + "integrity": "sha512-HWyCnRD3Z3SbHK2FLWYmBBqd1B4iXipeKv1+AK0FoY/CElEDTEixHE8hN60TsqxalPrznn798LE2Q4tHuCiyaA==" }, "@react-native-community/cli": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-1.12.0.tgz", "integrity": "sha512-GAs4JgVP8QkEYeZks/T7cCrBuwFJKxd9ksBLRdQ058uvLGkOEeS4g3y4GsVM/9C1zat5h6Z6QwU0h/hj7G3tzg==", "requires": { - "chalk": "1.1.3", - "commander": "2.20.3", - "compression": "1.7.4", - "connect": "3.7.0", - "denodeify": "1.2.1", - "envinfo": "5.12.1", - "errorhandler": "1.5.1", - "escape-string-regexp": "1.0.5", - "execa": "1.0.0", - "fs-extra": "7.0.1", - "glob": "7.1.6", - "graceful-fs": "4.2.3", - "inquirer": "3.3.0", - "lodash": "4.17.15", - "metro": "0.51.1", - "metro-config": "0.51.1", - "metro-core": "0.51.1", - "metro-memory-fs": "0.51.1", - "metro-react-native-babel-transformer": "0.51.0", - "mime": "1.6.0", - "minimist": "1.2.5", - "mkdirp": "0.5.4", - "morgan": "1.10.0", - "node-fetch": "2.6.0", - "node-notifier": "5.4.3", - "opn": "3.0.3", - "plist": "3.0.1", - "semver": "5.3.0", - "serve-static": "1.14.1", + "chalk": "^1.1.1", + "commander": "^2.19.0", + "compression": "^1.7.1", + "connect": "^3.6.5", + "denodeify": "^1.2.1", + "envinfo": "^5.7.0", + "errorhandler": "^1.5.0", + "escape-string-regexp": "^1.0.5", + "execa": "^1.0.0", + "fs-extra": "^7.0.1", + "glob": "^7.1.1", + "graceful-fs": "^4.1.3", + "inquirer": "^3.0.6", + "lodash": "^4.17.5", + "metro": "^0.51.0", + "metro-config": "^0.51.0", + "metro-core": "^0.51.0", + "metro-memory-fs": "^0.51.0", + "metro-react-native-babel-transformer": "^0.51.0", + "mime": "^1.3.4", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "morgan": "^1.9.0", + "node-fetch": "^2.2.0", + "node-notifier": "^5.2.1", + "opn": "^3.0.2", + "plist": "^3.0.0", + "semver": "^5.0.3", + "serve-static": "^1.13.1", "shell-quote": "1.6.1", - "slash": "2.0.0", - "ws": "1.1.5", - "xcode": "2.1.0", - "xmldoc": "0.4.0" + "slash": "^2.0.0", + "ws": "^1.1.0", + "xcode": "^2.0.0", + "xmldoc": "^0.4.0" }, "dependencies": { "base64-js": { @@ -2529,7 +2518,7 @@ "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz", "integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==", "requires": { - "stream-buffers": "2.2.0" + "stream-buffers": "~2.2.0" } }, "bplist-parser": { @@ -2537,7 +2526,7 @@ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", "requires": { - "big-integer": "1.6.48" + "big-integer": "^1.6.44" } }, "chalk": { @@ -2545,11 +2534,11 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "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" } }, "fs-extra": { @@ -2557,9 +2546,9 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "requires": { - "graceful-fs": "4.2.3", - "jsonfile": "4.0.0", - "universalify": "0.1.2" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "plist": { @@ -2567,9 +2556,9 @@ "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", "requires": { - "base64-js": "1.3.1", - "xmlbuilder": "9.0.7", - "xmldom": "0.1.31" + "base64-js": "^1.2.3", + "xmlbuilder": "^9.0.7", + "xmldom": "0.1.x" } }, "simple-plist": { @@ -2579,7 +2568,7 @@ "requires": { "bplist-creator": "0.0.8", "bplist-parser": "0.2.0", - "plist": "3.0.1" + "plist": "^3.0.1" } }, "xcode": { @@ -2587,8 +2576,8 @@ "resolved": "https://registry.npmjs.org/xcode/-/xcode-2.1.0.tgz", "integrity": "sha512-uCrmPITrqTEzhn0TtT57fJaNaw8YJs1aCzs+P/QqxsDbvPZSv7XMPPwXrKvHtD6pLjBM/NaVwraWJm8q83Y4iQ==", "requires": { - "simple-plist": "1.1.0", - "uuid": "3.4.0" + "simple-plist": "^1.0.0", + "uuid": "^3.3.2" } }, "xmlbuilder": { @@ -2599,24 +2588,24 @@ } }, "@react-native-community/push-notification-ios": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@react-native-community/push-notification-ios/-/push-notification-ios-1.4.0.tgz", - "integrity": "sha512-YnfxtAuHkiuvprh1d9npGZVwOrso6sys8+w8XY6RQAs8kD2LHZg0C8rA5gfX4jW/GrQV7m14Y6ngciE6Rpd91w==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@react-native-community/push-notification-ios/-/push-notification-ios-1.4.1.tgz", + "integrity": "sha512-Y+4LS10R+yc17wu54tlDcxgW/SugEAz2dNjmil9I7KUtaZIOc0hTvAE8dUvYTEDvYQ9uYrXI+OqdElTE3FJ3FA==", "requires": { - "invariant": "2.2.4" + "invariant": "^2.2.4" } }, "@types/babel__core": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.6.tgz", - "integrity": "sha512-tTnhWszAqvXnhW7m5jQU9PomXSiKXk2sFxpahXvI20SZKu9ylPi8WtIxueZ6ehDWikPT0jeFujMj3X4ZHuf3Tg==", + "version": "7.1.9", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz", + "integrity": "sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw==", "dev": true, "requires": { - "@babel/parser": "7.9.4", - "@babel/types": "7.9.0", - "@types/babel__generator": "7.6.1", - "@types/babel__template": "7.0.2", - "@types/babel__traverse": "7.0.9" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, "@types/babel__generator": { @@ -2625,7 +2614,7 @@ "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", "dev": true, "requires": { - "@babel/types": "7.9.0" + "@babel/types": "^7.0.0" } }, "@types/babel__template": { @@ -2634,23 +2623,23 @@ "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", "dev": true, "requires": { - "@babel/parser": "7.9.4", - "@babel/types": "7.9.0" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, "@types/babel__traverse": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.9.tgz", - "integrity": "sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw==", + "version": "7.0.13", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.13.tgz", + "integrity": "sha512-i+zS7t6/s9cdQvbqKDARrcbrPvtJGlbYsMkazo03nTAK3RX9FNrLllXys22uiTGJapPOTZTQ35nHh4ISph4SLQ==", "dev": true, "requires": { - "@babel/types": "7.9.0" + "@babel/types": "^7.3.0" } }, "@types/istanbul-lib-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", - "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", "dev": true }, "@types/istanbul-lib-report": { @@ -2659,23 +2648,23 @@ "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "2.0.1" + "@types/istanbul-lib-coverage": "*" } }, "@types/istanbul-reports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", - "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "2.0.1", - "@types/istanbul-lib-report": "3.0.0" + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" } }, "@types/node": { - "version": "14.0.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", - "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==", + "version": "14.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.0.tgz", + "integrity": "sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA==", "dev": true }, "@types/stack-utils": { @@ -2696,9 +2685,9 @@ "integrity": "sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==", "dev": true, "requires": { - "@types/node": "12.12.31", - "@types/unist": "2.0.3", - "@types/vfile-message": "2.0.0" + "@types/node": "*", + "@types/unist": "*", + "@types/vfile-message": "*" } }, "@types/vfile-message": { @@ -2711,12 +2700,12 @@ } }, "@types/yargs": { - "version": "13.0.8", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.8.tgz", - "integrity": "sha512-XAvHLwG7UQ+8M4caKIH0ZozIOYay5fQkAgyIXegXT9jPtdIGdhga+sUEdAr1CiG46aB+c64xQEYyEzlwWVTNzA==", + "version": "13.0.10", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.10.tgz", + "integrity": "sha512-MU10TSgzNABgdzKvQVW1nuuT+sgBMWeXNc3XOs5YXV5SDAK+PPja2eUuBNB9iqElu03xyEDqlnGw0jgl4nbqGQ==", "dev": true, "requires": { - "@types/yargs-parser": "15.0.0" + "@types/yargs-parser": "*" } }, "@types/yargs-parser": { @@ -2726,9 +2715,9 @@ "dev": true }, "abab": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", - "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.4.tgz", + "integrity": "sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ==", "dev": true }, "abbrev": { @@ -2746,7 +2735,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "requires": { - "mime-types": "2.1.26", + "mime-types": "~2.1.24", "negotiator": "0.6.2" } }, @@ -2762,8 +2751,8 @@ "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", "dev": true, "requires": { - "acorn": "6.4.1", - "acorn-walk": "6.2.0" + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" } }, "acorn-jsx": { @@ -2783,7 +2772,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", "requires": { - "es6-promisify": "5.0.0" + "es6-promisify": "^5.0.0" } }, "ajv": { @@ -2791,10 +2780,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.1.0", - "fast-json-stable-stringify": "2.1.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "ansi": { @@ -2807,7 +2796,7 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "requires": { - "ansi-wrap": "0.1.0" + "ansi-wrap": "^0.1.0" } }, "ansi-cyan": { @@ -2859,8 +2848,8 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "requires": { - "micromatch": "3.1.10", - "normalize-path": "2.1.1" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" }, "dependencies": { "arr-diff": { @@ -2878,16 +2867,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "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.3", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "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" }, "dependencies": { "extend-shallow": { @@ -2895,7 +2884,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -2905,13 +2894,13 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -2919,7 +2908,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -2927,7 +2916,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -2935,7 +2924,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2943,7 +2932,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2953,7 +2942,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2961,7 +2950,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2971,9 +2960,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -2988,14 +2977,14 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { - "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -3003,7 +2992,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -3011,7 +3000,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -3021,10 +3010,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -3032,7 +3021,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -3042,7 +3031,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -3050,7 +3039,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -3058,9 +3047,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-number": { @@ -3068,7 +3057,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -3076,7 +3065,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3091,19 +3080,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.3", - "nanomatch": "1.2.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" } } } @@ -3118,8 +3107,8 @@ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.7" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, "argparse": { @@ -3127,7 +3116,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "sprintf-js": "1.0.3" + "sprintf-js": "~1.0.2" } }, "arr-diff": { @@ -3135,7 +3124,7 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "arr-flatten": { @@ -3153,7 +3142,7 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", "requires": { - "typical": "2.6.1" + "typical": "^2.6.1" } }, "array-equal": { @@ -3173,9 +3162,9 @@ "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", "dev": true, "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.17.5", - "is-string": "1.0.5" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" } }, "array-map": { @@ -3198,6 +3187,17 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" }, + "array.prototype.flatmap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz", + "integrity": "sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1" + } + }, "art": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/art/-/art-0.10.3.tgz", @@ -3213,7 +3213,7 @@ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "~2.1.0" } }, "assert": { @@ -3221,7 +3221,7 @@ "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "requires": { - "object-assign": "4.1.1", + "object-assign": "^4.1.1", "util": "0.10.3" } }, @@ -3252,7 +3252,7 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "requires": { - "lodash": "4.17.15" + "lodash": "^4.17.14" } }, "async-limiter": { @@ -3276,9 +3276,9 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", - "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", + "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==" }, "babel-eslint": { "version": "10.1.0", @@ -3286,12 +3286,12 @@ "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", "dev": true, "requires": { - "@babel/code-frame": "7.8.3", - "@babel/parser": "7.9.4", - "@babel/traverse": "7.9.0", - "@babel/types": "7.9.0", - "eslint-visitor-keys": "1.1.0", - "resolve": "1.15.1" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" } }, "babel-jest": { @@ -3300,21 +3300,21 @@ "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", "dev": true, "requires": { - "@jest/transform": "24.9.0", - "@jest/types": "24.9.0", - "@types/babel__core": "7.1.6", - "babel-plugin-istanbul": "5.2.0", - "babel-preset-jest": "24.9.0", - "chalk": "2.4.2", - "slash": "2.0.0" + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" } }, "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", "requires": { - "object.assign": "4.1.0" + "object.assign": "^4.1.0" } }, "babel-plugin-istanbul": { @@ -3323,10 +3323,10 @@ "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "7.8.3", - "find-up": "3.0.0", - "istanbul-lib-instrument": "3.3.0", - "test-exclude": "5.2.3" + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" }, "dependencies": { "find-up": { @@ -3335,7 +3335,7 @@ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "3.0.0" + "locate-path": "^3.0.0" } }, "locate-path": { @@ -3344,17 +3344,17 @@ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "3.0.0", - "path-exists": "3.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "p-try": "2.2.0" + "p-try": "^2.0.0" } }, "p-locate": { @@ -3363,7 +3363,7 @@ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "2.2.2" + "p-limit": "^2.0.0" } }, "p-try": { @@ -3380,7 +3380,7 @@ "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", "dev": true, "requires": { - "@types/babel__traverse": "7.0.9" + "@types/babel__traverse": "^7.0.6" } }, "babel-plugin-syntax-trailing-function-commas": { @@ -3393,33 +3393,33 @@ "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz", "integrity": "sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw==", "requires": { - "@babel/plugin-proposal-class-properties": "7.8.3", - "@babel/plugin-proposal-object-rest-spread": "7.9.0", - "@babel/plugin-syntax-class-properties": "7.8.3", - "@babel/plugin-syntax-flow": "7.8.3", - "@babel/plugin-syntax-jsx": "7.8.3", - "@babel/plugin-syntax-object-rest-spread": "7.8.3", - "@babel/plugin-transform-arrow-functions": "7.8.3", - "@babel/plugin-transform-block-scoped-functions": "7.8.3", - "@babel/plugin-transform-block-scoping": "7.8.3", - "@babel/plugin-transform-classes": "7.9.2", - "@babel/plugin-transform-computed-properties": "7.8.3", - "@babel/plugin-transform-destructuring": "7.8.8", - "@babel/plugin-transform-flow-strip-types": "7.9.0", - "@babel/plugin-transform-for-of": "7.9.0", - "@babel/plugin-transform-function-name": "7.8.3", - "@babel/plugin-transform-literals": "7.8.3", - "@babel/plugin-transform-member-expression-literals": "7.8.3", - "@babel/plugin-transform-modules-commonjs": "7.9.0", - "@babel/plugin-transform-object-super": "7.8.3", - "@babel/plugin-transform-parameters": "7.9.3", - "@babel/plugin-transform-property-literals": "7.8.3", - "@babel/plugin-transform-react-display-name": "7.8.3", - "@babel/plugin-transform-react-jsx": "7.9.4", - "@babel/plugin-transform-shorthand-properties": "7.8.3", - "@babel/plugin-transform-spread": "7.8.3", - "@babel/plugin-transform-template-literals": "7.8.3", - "babel-plugin-syntax-trailing-function-commas": "7.0.0-beta.0" + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" } }, "babel-preset-jest": { @@ -3428,8 +3428,8 @@ "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", "dev": true, "requires": { - "@babel/plugin-syntax-object-rest-spread": "7.8.3", - "babel-plugin-jest-hoist": "24.9.0" + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" } }, "bail": { @@ -3448,13 +3448,13 @@ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.3.0", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.2", - "pascalcase": "0.1.1" + "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" }, "dependencies": { "define-property": { @@ -3462,7 +3462,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -3470,7 +3470,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -3478,7 +3478,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -3486,9 +3486,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "kind-of": { @@ -3518,15 +3518,16 @@ }, "basic-changelog": { "version": "gitlab:bloodyhealth/basic-changelog#e55ce63f55cdc1a8f146406af5f31aacd739cc6b", + "from": "gitlab:bloodyhealth/basic-changelog", "dev": true, "requires": { - "git-tags": "0.2.4", - "multicb": "1.2.2", - "remark-parse": "6.0.3", - "remark-stringify": "6.0.4", - "to-vfile": "5.0.3", - "unified": "7.1.0", - "unist-builder": "1.0.4" + "git-tags": "^0.2.4", + "multicb": "^1.2.2", + "remark-parse": "^6.0.3", + "remark-stringify": "^6.0.4", + "to-vfile": "^5.0.2", + "unified": "^7.1.0", + "unist-builder": "^1.0.3" } }, "bcrypt-pbkdf": { @@ -3534,7 +3535,7 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "big-integer": { @@ -3556,8 +3557,8 @@ "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "requires": { - "readable-stream": "2.3.7", - "safe-buffer": "5.1.2" + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" } }, "bluebird": { @@ -3570,7 +3571,7 @@ "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz", "integrity": "sha1-N98VNgkoJLh8QvlXsBNEEXNyrkU=", "requires": { - "stream-buffers": "2.2.0" + "stream-buffers": "~2.2.0" } }, "bplist-parser": { @@ -3578,7 +3579,7 @@ "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=", "requires": { - "big-integer": "1.6.48" + "big-integer": "^1.6.7" } }, "brace-expansion": { @@ -3586,7 +3587,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -3595,9 +3596,9 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.3" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "browser-process-hrtime": { @@ -3634,7 +3635,7 @@ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "requires": { - "node-int64": "0.4.0" + "node-int64": "^0.4.0" } }, "buffer": { @@ -3642,8 +3643,8 @@ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", "requires": { - "base64-js": "1.1.2", - "ieee754": "1.1.13" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" } }, "buffer-alloc": { @@ -3651,8 +3652,8 @@ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "requires": { - "buffer-alloc-unsafe": "1.1.0", - "buffer-fill": "1.0.0" + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" } }, "buffer-alloc-unsafe": { @@ -3676,15 +3677,15 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "bunyan": { - "version": "1.8.12", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", - "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", + "version": "1.8.14", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.14.tgz", + "integrity": "sha512-LlahJUxXzZLuw/hetUQJmRgZ1LF6+cr5TPpRj6jf327AsiIq2jhYEH4oqUUkVKTor+9w2BT3oxVwhzE5lw9tcg==", "dev": true, "requires": { - "dtrace-provider": "0.8.8", - "moment": "2.24.0", - "mv": "2.1.1", - "safe-json-stringify": "1.2.0" + "dtrace-provider": "~0.8", + "moment": "^2.19.3", + "mv": "~2", + "safe-json-stringify": "~1" } }, "bunyan-debug-stream": { @@ -3693,8 +3694,8 @@ "integrity": "sha512-jJbQ1gXUL6vMmZVdbaTFK1v1sGa7axLrSQQwkB6HU9HCPTzsw2HsKcPHm1vgXZlEck/4IvEuRwg/9+083YelCg==", "dev": true, "requires": { - "colors": "1.4.0", - "exception-formatter": "1.0.7" + "colors": "^1.0.3", + "exception-formatter": "^1.0.4" } }, "bytes": { @@ -3707,15 +3708,15 @@ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.3.0", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.1", - "to-object-path": "0.3.0", - "union-value": "1.0.1", - "unset-value": "1.0.0" + "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": { @@ -3723,7 +3724,7 @@ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", "requires": { - "callsites": "2.0.0" + "callsites": "^2.0.0" } }, "caller-path": { @@ -3731,7 +3732,7 @@ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "requires": { - "caller-callsite": "2.0.0" + "caller-callsite": "^2.0.0" } }, "callsites": { @@ -3749,7 +3750,7 @@ "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", "requires": { - "rsvp": "3.6.2" + "rsvp": "^3.3.3" } }, "caseless": { @@ -3769,12 +3770,12 @@ "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", "dev": true, "requires": { - "assertion-error": "1.1.0", - "check-error": "1.0.2", - "deep-eql": "3.0.1", - "get-func-name": "2.0.0", - "pathval": "1.1.0", - "type-detect": "4.0.8" + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" } }, "chalk": { @@ -3782,9 +3783,9 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "3.2.1", - "escape-string-regexp": "1.0.5", - "supports-color": "5.5.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "dependencies": { "ansi-styles": { @@ -3792,7 +3793,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "supports-color": { @@ -3800,7 +3801,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -3846,9 +3847,9 @@ "integrity": "sha1-RzChHvYQ+tRQuPIjx50x172tgHQ=", "dev": true, "requires": { - "cross-spawn": "4.0.2", - "node-version": "1.2.0", - "promise-polyfill": "6.1.0" + "cross-spawn": "^4.0.2", + "node-version": "^1.0.0", + "promise-polyfill": "^6.0.1" }, "dependencies": { "cross-spawn": { @@ -3857,8 +3858,8 @@ "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", "dev": true, "requires": { - "lru-cache": "4.1.5", - "which": "1.3.1" + "lru-cache": "^4.0.1", + "which": "^1.2.9" } } } @@ -3879,10 +3880,10 @@ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { @@ -3890,7 +3891,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -3900,22 +3901,22 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { - "restore-cursor": "2.0.0" + "restore-cursor": "^2.0.0" } }, "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" } }, "co": { @@ -3939,8 +3940,8 @@ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, "color-convert": { @@ -3972,7 +3973,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "command-line-args": { @@ -3980,9 +3981,9 @@ "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz", "integrity": "sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA==", "requires": { - "array-back": "2.0.0", - "find-replace": "1.0.3", - "typical": "2.6.1" + "array-back": "^2.0.0", + "find-replace": "^1.0.3", + "typical": "^2.6.1" } }, "commander": { @@ -4011,7 +4012,7 @@ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "requires": { - "mime-db": "1.43.0" + "mime-db": ">= 1.43.0 < 2" } }, "compression": { @@ -4019,13 +4020,13 @@ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "requires": { - "accepts": "1.3.7", + "accepts": "~1.3.5", "bytes": "3.0.0", - "compressible": "2.0.18", + "compressible": "~2.0.16", "debug": "2.6.9", - "on-headers": "1.0.2", + "on-headers": "~1.0.2", "safe-buffer": "5.1.2", - "vary": "1.1.2" + "vary": "~1.1.2" } }, "concat-map": { @@ -4038,10 +4039,10 @@ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "requires": { - "buffer-from": "1.1.1", - "inherits": "2.0.4", - "readable-stream": "2.3.7", - "typedarray": "0.0.6" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" }, "dependencies": { "inherits": { @@ -4057,8 +4058,8 @@ "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", "dev": true, "requires": { - "ini": "1.3.5", - "proto-list": "1.2.4" + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, "connect": { @@ -4068,7 +4069,7 @@ "requires": { "debug": "2.6.9", "finalhandler": "1.1.2", - "parseurl": "1.3.3", + "parseurl": "~1.3.3", "utils-merge": "1.0.1" } }, @@ -4082,7 +4083,7 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.1" } }, "copy-descriptor": { @@ -4095,12 +4096,6 @@ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" }, - "core-js-pure": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.4.tgz", - "integrity": "sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw==", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -4111,10 +4106,10 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "requires": { - "import-fresh": "2.0.0", - "is-directory": "0.3.1", - "js-yaml": "3.13.1", - "parse-json": "4.0.0" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" } }, "create-react-class": { @@ -4122,9 +4117,9 @@ "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz", "integrity": "sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==", "requires": { - "fbjs": "0.8.17", - "loose-envify": "1.4.0", - "object-assign": "4.1.1" + "fbjs": "^0.8.9", + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" }, "dependencies": { "core-js": { @@ -4137,13 +4132,13 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.4.0", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.21" + "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" } } } @@ -4153,11 +4148,11 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "requires": { - "nice-try": "1.0.5", - "path-key": "2.0.1", - "semver": "5.7.1", - "shebang-command": "1.2.0", - "which": "1.3.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" }, "dependencies": { "semver": { @@ -4179,7 +4174,7 @@ "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", "dev": true, "requires": { - "cssom": "0.3.8" + "cssom": "0.3.x" } }, "csvtojson": { @@ -4187,9 +4182,9 @@ "resolved": "https://registry.npmjs.org/csvtojson/-/csvtojson-2.0.10.tgz", "integrity": "sha512-lUWFxGKyhraKCW8Qghz6Z0f2l/PqB1W3AO0HKJzGIQ5JRSlR651ekJDiGJbBT4sRNNv5ddnSGVEnsxP9XRCVpQ==", "requires": { - "bluebird": "3.7.2", - "lodash": "4.17.15", - "strip-bom": "2.0.0" + "bluebird": "^3.5.1", + "lodash": "^4.17.3", + "strip-bom": "^2.0.0" } }, "curriable": { @@ -4202,7 +4197,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "data-urls": { @@ -4211,9 +4206,9 @@ "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", "dev": true, "requires": { - "abab": "2.0.3", - "whatwg-mimetype": "2.3.0", - "whatwg-url": "7.1.0" + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" }, "dependencies": { "whatwg-url": { @@ -4222,9 +4217,9 @@ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "dev": true, "requires": { - "lodash.sortby": "4.7.0", - "tr46": "1.0.1", - "webidl-conversions": "4.0.2" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } } } @@ -4252,14 +4247,14 @@ "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", "requires": { - "decompress-tar": "4.1.1", - "decompress-tarbz2": "4.1.1", - "decompress-targz": "4.1.1", - "decompress-unzip": "4.0.1", - "graceful-fs": "4.2.3", - "make-dir": "1.3.0", - "pify": "2.3.0", - "strip-dirs": "2.1.0" + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" }, "dependencies": { "make-dir": { @@ -4267,7 +4262,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" }, "dependencies": { "pify": { @@ -4284,9 +4279,9 @@ "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", "requires": { - "file-type": "5.2.0", - "is-stream": "1.1.0", - "tar-stream": "1.6.2" + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" } }, "decompress-tarbz2": { @@ -4294,11 +4289,11 @@ "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", "requires": { - "decompress-tar": "4.1.1", - "file-type": "6.2.0", - "is-stream": "1.1.0", - "seek-bzip": "1.0.5", - "unbzip2-stream": "1.3.3" + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" }, "dependencies": { "file-type": { @@ -4313,9 +4308,9 @@ "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", "requires": { - "decompress-tar": "4.1.1", - "file-type": "5.2.0", - "is-stream": "1.1.0" + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" } }, "decompress-unzip": { @@ -4323,10 +4318,10 @@ "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", "requires": { - "file-type": "3.9.0", - "get-stream": "2.3.1", - "pify": "2.3.0", - "yauzl": "2.10.0" + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" }, "dependencies": { "file-type": { @@ -4339,8 +4334,8 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", "requires": { - "object-assign": "4.1.1", - "pinkie-promise": "2.0.1" + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" } } } @@ -4351,7 +4346,7 @@ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { - "type-detect": "4.0.8" + "type-detect": "^4.0.0" } }, "deep-extend": { @@ -4375,7 +4370,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "requires": { - "object-keys": "1.1.1" + "object-keys": "^1.0.12" } }, "define-property": { @@ -4383,8 +4378,8 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { "is-accessor-descriptor": { @@ -4392,7 +4387,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -4400,7 +4395,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -4408,9 +4403,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "kind-of": { @@ -4479,26 +4474,26 @@ "integrity": "sha512-Rphzj8sMcx0ScRCVuRFA9SJcj5nn32SJkkG4PvpsrH862iiX4cSCBBvuy0MfOq49IF5kGkEwoNTuYxXZq6Jvqw==", "dev": true, "requires": { - "@babel/core": "7.9.0", - "bunyan": "1.8.12", - "bunyan-debug-stream": "1.1.1", - "chalk": "2.4.2", - "child-process-promise": "2.2.1", - "fs-extra": "4.0.3", - "funpermaproxy": "1.0.1", - "get-port": "2.1.0", - "ini": "1.3.5", - "lodash": "4.17.15", - "minimist": "1.2.5", - "proper-lockfile": "3.2.0", - "sanitize-filename": "1.6.3", - "shell-utils": "1.0.10", - "tail": "2.0.3", + "@babel/core": "^7.4.5", + "bunyan": "^1.8.12", + "bunyan-debug-stream": "^1.1.0", + "chalk": "^2.4.2", + "child-process-promise": "^2.2.0", + "fs-extra": "^4.0.2", + "funpermaproxy": "^1.0.1", + "get-port": "^2.1.0", + "ini": "^1.3.4", + "lodash": "^4.17.5", + "minimist": "^1.2.0", + "proper-lockfile": "^3.0.2", + "sanitize-filename": "^1.6.1", + "shell-utils": "^1.0.9", + "tail": "^2.0.0", "telnet-client": "0.15.3", - "tempfile": "2.0.0", - "ws": "3.3.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2" + "tempfile": "^2.0.0", + "ws": "^3.3.1", + "yargs": "^13.0.0", + "yargs-parser": "^13.0.0" }, "dependencies": { "ansi-regex": { @@ -4513,7 +4508,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "camelcase": { @@ -4528,18 +4523,24 @@ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "3.1.0", - "strip-ansi": "5.2.0", - "wrap-ansi": "5.1.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "3.0.0" + "locate-path": "^3.0.0" } }, "fs-extra": { @@ -4548,9 +4549,9 @@ "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "dev": true, "requires": { - "graceful-fs": "4.2.3", - "jsonfile": "4.0.0", - "universalify": "0.1.2" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "get-caller-file": { @@ -4571,17 +4572,17 @@ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "3.0.0", - "path-exists": "3.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "p-try": "2.2.0" + "p-try": "^2.0.0" } }, "p-locate": { @@ -4590,7 +4591,7 @@ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "2.2.2" + "p-limit": "^2.0.0" } }, "p-try": { @@ -4611,9 +4612,9 @@ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "emoji-regex": "7.0.3", - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "5.2.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, "strip-ansi": { @@ -4622,7 +4623,7 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "4.1.0" + "ansi-regex": "^4.1.0" } }, "ultron": { @@ -4637,9 +4638,9 @@ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "string-width": "3.1.0", - "strip-ansi": "5.2.0" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" } }, "ws": { @@ -4648,9 +4649,9 @@ "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "dev": true, "requires": { - "async-limiter": "1.0.1", - "safe-buffer": "5.1.2", - "ultron": "1.1.1" + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" } }, "y18n": { @@ -4665,16 +4666,16 @@ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "cliui": "5.0.0", - "find-up": "3.0.0", - "get-caller-file": "2.0.5", - "require-directory": "2.1.1", - "require-main-filename": "2.0.0", - "set-blocking": "2.0.0", - "string-width": "3.1.0", - "which-module": "2.0.0", - "y18n": "4.0.0", - "yargs-parser": "13.1.2" + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, "yargs-parser": { @@ -4683,8 +4684,8 @@ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { - "camelcase": "5.3.1", - "decamelize": "1.2.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } @@ -4713,13 +4714,13 @@ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { - "esutils": "2.0.3" + "esutils": "^2.0.2" } }, "dom-walk": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", - "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, "domexception": { "version": "1.0.1", @@ -4727,7 +4728,7 @@ "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "dev": true, "requires": { - "webidl-conversions": "4.0.2" + "webidl-conversions": "^4.0.2" } }, "dottie": { @@ -4743,7 +4744,7 @@ "dev": true, "optional": true, "requires": { - "nan": "2.14.0" + "nan": "^2.14.0" } }, "ecc-jsbn": { @@ -4751,8 +4752,8 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "jsbn": "0.1.1", - "safer-buffer": "2.1.2" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "editorconfig": { @@ -4761,10 +4762,10 @@ "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", "dev": true, "requires": { - "commander": "2.20.3", - "lru-cache": "4.1.5", - "semver": "5.7.1", - "sigmund": "1.0.1" + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" }, "dependencies": { "semver": { @@ -4791,11 +4792,21 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "requires": { - "iconv-lite": "0.4.24" + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } } }, "end-of-stream": { @@ -4803,7 +4814,7 @@ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "envinfo": { @@ -4816,7 +4827,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "errorhandler": { @@ -4824,27 +4835,27 @@ "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", "requires": { - "accepts": "1.3.7", - "escape-html": "1.0.3" + "accepts": "~1.3.7", + "escape-html": "~1.0.3" } }, "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { - "es-to-primitive": "1.2.1", - "function-bind": "1.1.1", - "has": "1.0.3", - "has-symbols": "1.0.1", - "is-callable": "1.1.5", - "is-regex": "1.0.5", - "object-inspect": "1.7.0", - "object-keys": "1.1.1", - "object.assign": "4.1.0", - "string.prototype.trimleft": "2.1.1", - "string.prototype.trimright": "2.1.1" + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" } }, "es-to-primitive": { @@ -4853,9 +4864,9 @@ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { - "is-callable": "1.1.5", - "is-date-object": "1.0.2", - "is-symbol": "1.0.3" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, "es6-promise": { @@ -4868,7 +4879,7 @@ "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", "requires": { - "es6-promise": "4.2.8" + "es6-promise": "^4.0.3" } }, "escape-html": { @@ -4882,16 +4893,16 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", - "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "dev": true, "requires": { - "esprima": "4.0.1", - "estraverse": "4.3.0", - "esutils": "2.0.3", - "optionator": "0.8.3", - "source-map": "0.6.1" + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" }, "dependencies": { "source-map": { @@ -4909,54 +4920,54 @@ "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", "dev": true, "requires": { - "@babel/code-frame": "7.8.3", - "ajv": "6.12.0", - "chalk": "2.4.2", - "cross-spawn": "6.0.5", - "debug": "4.1.1", - "doctrine": "3.0.0", - "eslint-scope": "4.0.3", - "eslint-utils": "1.4.3", - "eslint-visitor-keys": "1.1.0", - "espree": "5.0.1", - "esquery": "1.2.0", - "esutils": "2.0.3", - "file-entry-cache": "5.0.1", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.6", - "globals": "11.12.0", - "ignore": "4.0.6", - "import-fresh": "3.2.1", - "imurmurhash": "0.1.4", - "inquirer": "6.5.2", - "js-yaml": "3.13.1", - "json-stable-stringify-without-jsonify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.15", - "minimatch": "3.0.4", - "mkdirp": "0.5.4", - "natural-compare": "1.4.0", - "optionator": "0.8.3", - "path-is-inside": "1.0.2", - "progress": "2.0.3", - "regexpp": "2.0.1", - "semver": "5.7.1", - "strip-ansi": "4.0.0", - "strip-json-comments": "2.0.1", - "table": "5.4.6", - "text-table": "0.2.0" + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "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.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "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.2.3", + "text-table": "^0.2.0" }, "dependencies": { "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", "dev": true, "requires": { - "fast-deep-equal": "3.1.1", - "fast-json-stable-stringify": "2.1.0", - "json-schema-traverse": "0.4.1", - "uri-js": "4.2.2" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-regex": { @@ -4977,7 +4988,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.1" } }, "external-editor": { @@ -4986,15 +4997,15 @@ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "requires": { - "chardet": "0.7.0", - "iconv-lite": "0.4.24", - "tmp": "0.0.33" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "import-fresh": { @@ -5003,8 +5014,8 @@ "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { - "parent-module": "1.0.1", - "resolve-from": "4.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, "inquirer": { @@ -5013,19 +5024,19 @@ "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, "requires": { - "ansi-escapes": "3.2.0", - "chalk": "2.4.2", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "3.1.0", - "figures": "2.0.0", - "lodash": "4.17.15", + "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.12", "mute-stream": "0.0.7", - "run-async": "2.4.0", - "rxjs": "6.5.4", - "string-width": "2.1.1", - "strip-ansi": "5.2.0", - "through": "2.3.8" + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" }, "dependencies": { "ansi-regex": { @@ -5040,7 +5051,7 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "4.1.0" + "ansi-regex": "^4.1.0" } } } @@ -5081,8 +5092,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -5091,29 +5102,28 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } }, "eslint-plugin-react": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz", - "integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.6.tgz", + "integrity": "sha512-kidMTE5HAEBSLu23CUDvj8dc3LdBU0ri1scwHBZjI41oDv4tjsWZKU7MQccFzH1QYPYhsnTF2ovh7JlcIcmxgg==", "dev": true, "requires": { - "array-includes": "3.1.1", - "doctrine": "2.1.0", - "has": "1.0.3", - "jsx-ast-utils": "2.2.3", - "object.entries": "1.1.1", - "object.fromentries": "2.0.2", - "object.values": "1.1.1", - "prop-types": "15.7.2", - "resolve": "1.15.1", - "semver": "6.3.0", - "string.prototype.matchall": "4.0.2", - "xregexp": "4.3.0" + "array-includes": "^3.1.1", + "array.prototype.flatmap": "^1.2.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.4.1", + "object.entries": "^1.1.2", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.17.0", + "string.prototype.matchall": "^4.0.2" }, "dependencies": { "doctrine": { @@ -5122,14 +5132,8 @@ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "requires": { - "esutils": "2.0.3" + "esutils": "^2.0.2" } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true } } }, @@ -5139,8 +5143,8 @@ "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, "requires": { - "esrecurse": "4.2.1", - "estraverse": "4.3.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, "eslint-utils": { @@ -5149,13 +5153,13 @@ "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", "dev": true, "requires": { - "eslint-visitor-keys": "1.1.0" + "eslint-visitor-keys": "^1.1.0" } }, "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true }, "espree": { @@ -5164,9 +5168,9 @@ "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", "dev": true, "requires": { - "acorn": "6.4.1", - "acorn-jsx": "5.2.0", - "eslint-visitor-keys": "1.1.0" + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" } }, "esprima": { @@ -5175,18 +5179,18 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.2.0.tgz", - "integrity": "sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", "dev": true, "requires": { - "estraverse": "5.0.0" + "estraverse": "^5.1.0" }, "dependencies": { "estraverse": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.0.0.tgz", - "integrity": "sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true } } @@ -5197,7 +5201,7 @@ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { - "estraverse": "4.3.0" + "estraverse": "^4.1.0" } }, "estraverse": { @@ -5233,7 +5237,7 @@ "integrity": "sha512-zV45vEsjytJrwfGq6X9qd1Ll56cW4NC2mhCO6lqwMk4ZpA1fZ6C3UiaQM/X7if+7wZFmCgss3ahp9B/uVFuLRw==", "dev": true, "requires": { - "colors": "1.4.0" + "colors": "^1.0.3" } }, "exec-sh": { @@ -5241,7 +5245,7 @@ "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", "requires": { - "merge": "1.2.1" + "merge": "^1.2.0" } }, "execa": { @@ -5249,13 +5253,13 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "requires": { - "cross-spawn": "6.0.5", - "get-stream": "4.1.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "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" } }, "exit": { @@ -5269,7 +5273,7 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "expand-range": { @@ -5277,7 +5281,7 @@ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "requires": { - "fill-range": "2.2.4" + "fill-range": "^2.1.0" } }, "expect": { @@ -5286,12 +5290,12 @@ "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "ansi-styles": "3.2.1", - "jest-get-type": "24.9.0", - "jest-matcher-utils": "24.9.0", - "jest-message-util": "24.9.0", - "jest-regex-util": "24.9.0" + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" }, "dependencies": { "ansi-styles": { @@ -5300,7 +5304,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } } } @@ -5315,8 +5319,8 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -5324,7 +5328,7 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -5334,9 +5338,9 @@ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "requires": { - "chardet": "0.4.2", - "iconv-lite": "0.4.24", - "tmp": "0.0.33" + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" } }, "extglob": { @@ -5344,7 +5348,7 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "extsprintf": { @@ -5357,10 +5361,10 @@ "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", "requires": { - "ansi-gray": "0.1.1", - "color-support": "1.1.3", - "parse-node-version": "1.0.1", - "time-stamp": "1.1.0" + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" } }, "fast-deep-equal": { @@ -5397,14 +5401,14 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-1.0.0.tgz", "integrity": "sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA==", "requires": { - "core-js": "2.6.11", - "fbjs-css-vars": "1.0.2", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.4.0", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.21" + "core-js": "^2.4.1", + "fbjs-css-vars": "^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" } }, "fbjs-css-vars": { @@ -5417,16 +5421,16 @@ "resolved": "https://registry.npmjs.org/fbjs-scripts/-/fbjs-scripts-1.2.0.tgz", "integrity": "sha512-5krZ8T0Bf8uky0abPoCLrfa7Orxd8UH4Qq8hRUF2RZYNMu+FmEOrBc7Ib3YVONmxTXTlLAvyrrdrVmksDb2OqQ==", "requires": { - "@babel/core": "7.9.0", - "ansi-colors": "1.1.0", - "babel-preset-fbjs": "3.3.0", - "core-js": "2.6.11", - "cross-spawn": "5.1.0", - "fancy-log": "1.3.3", - "object-assign": "4.1.1", - "plugin-error": "0.1.2", - "semver": "5.3.0", - "through2": "2.0.5" + "@babel/core": "^7.0.0", + "ansi-colors": "^1.0.1", + "babel-preset-fbjs": "^3.2.0", + "core-js": "^2.4.1", + "cross-spawn": "^5.1.0", + "fancy-log": "^1.3.2", + "object-assign": "^4.0.1", + "plugin-error": "^0.1.2", + "semver": "^5.1.0", + "through2": "^2.0.0" }, "dependencies": { "cross-spawn": { @@ -5434,9 +5438,9 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "4.1.5", - "shebang-command": "1.2.0", - "which": "1.3.1" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } } } @@ -5446,7 +5450,7 @@ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", "requires": { - "pend": "1.2.0" + "pend": "~1.2.0" } }, "figures": { @@ -5454,7 +5458,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "requires": { - "escape-string-regexp": "1.0.5" + "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { @@ -5463,7 +5467,7 @@ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", "dev": true, "requires": { - "flat-cache": "2.0.1" + "flat-cache": "^2.0.1" } }, "file-type": { @@ -5487,11 +5491,11 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "3.1.1", - "repeat-element": "1.1.3", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" }, "dependencies": { "isobject": { @@ -5510,12 +5514,12 @@ "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { "debug": "2.6.9", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.3", - "statuses": "1.5.0", - "unpipe": "1.0.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" } }, "find-cache-dir": { @@ -5523,9 +5527,9 @@ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "requires": { - "commondir": "1.0.1", - "make-dir": "2.1.0", - "pkg-dir": "3.0.0" + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" } }, "find-replace": { @@ -5533,8 +5537,8 @@ "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz", "integrity": "sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A=", "requires": { - "array-back": "1.0.4", - "test-value": "2.1.0" + "array-back": "^1.0.4", + "test-value": "^2.1.0" }, "dependencies": { "array-back": { @@ -5542,7 +5546,7 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", "requires": { - "typical": "2.6.1" + "typical": "^2.6.0" } } } @@ -5552,7 +5556,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "flat-cache": { @@ -5561,7 +5565,7 @@ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "dev": true, "requires": { - "flatted": "2.0.1", + "flatted": "^2.0.0", "rimraf": "2.6.3", "write": "1.0.3" }, @@ -5572,15 +5576,15 @@ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "requires": { - "glob": "7.1.6" + "glob": "^7.1.3" } } } }, "flatted": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, "for-in": { @@ -5593,7 +5597,7 @@ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "forever-agent": { @@ -5606,9 +5610,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.8", - "mime-types": "2.1.26" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, "fragment-cache": { @@ -5616,7 +5620,7 @@ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "requires": { - "map-cache": "0.2.2" + "map-cache": "^0.2.2" } }, "fresh": { @@ -5634,9 +5638,9 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", "integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=", "requires": { - "graceful-fs": "4.2.3", - "jsonfile": "2.4.0", - "klaw": "1.3.1" + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0" }, "dependencies": { "jsonfile": { @@ -5644,7 +5648,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "requires": { - "graceful-fs": "4.2.3" + "graceful-fs": "^4.1.6" } } } @@ -5654,7 +5658,7 @@ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", "requires": { - "minipass": "2.9.0" + "minipass": "^2.6.0" } }, "fs.realpath": { @@ -5663,467 +5667,13 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", - "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "optional": true, "requires": { - "bindings": "1.5.0", - "nan": "2.14.0", - "node-pre-gyp": "0.14.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.7" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.4", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "debug": { - "version": "3.2.6", - "bundled": true, - "optional": true, - "requires": { - "ms": "2.1.2" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "bundled": true, - "optional": true, - "requires": { - "minipass": "2.9.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.3" - } - }, - "glob": { - "version": "7.1.6", - "bundled": true, - "optional": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.4", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "optional": true, - "requires": { - "safer-buffer": "2.1.2" - } - }, - "ignore-walk": { - "version": "3.0.3", - "bundled": true, - "optional": true, - "requires": { - "minimatch": "3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "optional": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "minipass": { - "version": "2.9.0", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2", - "yallist": "3.1.1" - } - }, - "minizlib": { - "version": "1.3.3", - "bundled": true, - "optional": true, - "requires": { - "minipass": "2.9.0" - } - }, - "mkdirp": { - "version": "0.5.3", - "bundled": true, - "requires": { - "minimist": "1.2.5" - } - }, - "ms": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.3.3", - "bundled": true, - "optional": true, - "requires": { - "debug": "3.2.6", - "iconv-lite": "0.4.24", - "sax": "1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "1.0.3", - "mkdirp": "0.5.3", - "needle": "2.3.3", - "nopt": "4.0.3", - "npm-packlist": "1.4.8", - "npmlog": "4.1.2", - "rc": "1.2.8", - "rimraf": "2.7.1", - "semver": "5.7.1", - "tar": "4.4.13" - } - }, - "nopt": { - "version": "4.0.3", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" - } - }, - "npm-bundled": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "npm-normalize-package-bin": "1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true - }, - "npm-packlist": { - "version": "1.4.8", - "bundled": true, - "optional": true, - "requires": { - "ignore-walk": "3.0.3", - "npm-bundled": "1.1.1", - "npm-normalize-package-bin": "1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.5", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "0.6.0", - "ini": "1.3.5", - "minimist": "1.2.5", - "strip-json-comments": "2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "bundled": true, - "optional": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.4", - "isarray": "1.0.0", - "process-nextick-args": "2.0.1", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "rimraf": { - "version": "2.7.1", - "bundled": true, - "optional": true, - "requires": { - "glob": "7.1.6" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "4.4.13", - "bundled": true, - "optional": true, - "requires": { - "chownr": "1.1.4", - "fs-minipass": "1.2.7", - "minipass": "2.9.0", - "minizlib": "1.3.3", - "mkdirp": "0.5.3", - "safe-buffer": "5.1.2", - "yallist": "3.1.1" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true - } + "bindings": "^1.5.0", + "nan": "^2.12.1" } }, "function-bind": { @@ -6148,14 +5698,14 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.3" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "gensync": { @@ -6180,7 +5730,7 @@ "integrity": "sha1-h4P53OvR7qSVozThpqJR54iHqxo=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "get-stream": { @@ -6188,7 +5738,7 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "requires": { - "pump": "3.0.0" + "pump": "^3.0.0" } }, "get-value": { @@ -6201,7 +5751,7 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "git-tags": { @@ -6210,8 +5760,8 @@ "integrity": "sha1-skxx1dffjdWHo2mY6VIeIN3iWcU=", "dev": true, "requires": { - "lodash": "2.4.2", - "semver": "3.0.1" + "lodash": "^2.4.1", + "semver": "^3.0.1" }, "dependencies": { "lodash": { @@ -6233,12 +5783,12 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.1", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "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" } }, "glob-base": { @@ -6246,8 +5796,8 @@ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" } }, "glob-parent": { @@ -6255,7 +5805,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "global": { @@ -6263,8 +5813,8 @@ "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "requires": { - "min-document": "2.19.0", - "process": "0.11.10" + "min-document": "^2.19.0", + "process": "^0.11.10" } }, "globals": { @@ -6273,14 +5823,9 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, "growl": { "version": "1.10.5", @@ -6299,29 +5844,29 @@ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "requires": { - "ajv": "6.12.0", - "har-schema": "2.0.0" + "ajv": "^6.12.3", + "har-schema": "^2.0.0" }, "dependencies": { "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", "requires": { - "fast-deep-equal": "3.1.1", - "fast-json-stable-stringify": "2.1.0", - "json-schema-traverse": "0.4.1", - "uri-js": "4.2.2" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "json-schema-traverse": { "version": "0.4.1", @@ -6336,7 +5881,7 @@ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "function-bind": "1.1.1" + "function-bind": "^1.1.1" } }, "has-ansi": { @@ -6344,7 +5889,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -6367,9 +5912,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, "has-values": { @@ -6377,8 +5922,8 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { @@ -6386,7 +5931,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -6394,7 +5939,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -6404,7 +5949,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -6420,7 +5965,7 @@ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "requires": { - "react-is": "16.13.1" + "react-is": "^16.7.0" } }, "hosted-git-info": { @@ -6434,13 +5979,13 @@ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "requires": { - "whatwg-encoding": "1.0.5" + "whatwg-encoding": "^1.0.1" } }, "html-escaper": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.1.tgz", - "integrity": "sha512-hNX23TjWwD3q56HpWjUHOKj1+4KKlnjv9PcmBUYKVpga+2cnb9nDx/B1o0yO4n+RZXZdiNxzx6B24C9aNMTkkQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, "http-basic": { @@ -6448,9 +5993,9 @@ "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-2.5.1.tgz", "integrity": "sha1-jORHvbW2xXf4pj4/p4BW7Eu02/s=", "requires": { - "caseless": "0.11.0", - "concat-stream": "1.6.2", - "http-response-object": "1.1.0" + "caseless": "~0.11.0", + "concat-stream": "^1.4.6", + "http-response-object": "^1.0.0" }, "dependencies": { "caseless": { @@ -6465,10 +6010,10 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", "requires": { - "depd": "1.1.2", + "depd": "~1.1.2", "inherits": "2.0.4", "setprototypeof": "1.1.1", - "statuses": "1.5.0", + "statuses": ">= 1.5.0 < 2", "toidentifier": "1.0.0" }, "dependencies": { @@ -6494,9 +6039,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.16.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "https-proxy-agent": { @@ -6513,7 +6058,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "2.1.2" + "ms": "^2.1.1" } }, "ms": { @@ -6528,7 +6073,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, "identitate": { @@ -6536,7 +6081,7 @@ "resolved": "https://registry.npmjs.org/identitate/-/identitate-1.0.1.tgz", "integrity": "sha512-xnDJ0JYhiZjBDuJRKbHoVzj5yP9FhATxLyUYswQyPdnJrwzGVBqS6DOmvKJi1lk7P+4dkL+hhUhuOZIcOUtG5A==", "requires": { - "pathington": "1.1.7" + "pathington": "^1.0.1" } }, "ieee754": { @@ -6555,7 +6100,7 @@ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", "requires": { - "minimatch": "3.0.4" + "minimatch": "^3.0.4" } }, "image-size": { @@ -6568,13 +6113,18 @@ "resolved": "https://registry.npmjs.org/immer/-/immer-2.1.5.tgz", "integrity": "sha512-xyjQyTBYIeiz6jd02Hg12jV+9QISwF1crLcwTlzHpWH4e0ryNWj1kacpTwimK3bJV5NKKXw458G2vpqoB/inFA==" }, + "immutable": { + "version": "4.0.0-rc.12", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0-rc.12.tgz", + "integrity": "sha512-0M2XxkZLx/mi3t8NVwIm1g8nHoEmM9p9UBl/G9k4+hm0kBgOVdMV/B3CY5dQ8qG8qc80NN4gDV4HQv6FTJ5q7A==" + }, "import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", "requires": { - "caller-path": "2.0.0", - "resolve-from": "3.0.0" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" } }, "import-local": { @@ -6583,8 +6133,8 @@ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", "dev": true, "requires": { - "pkg-dir": "3.0.0", - "resolve-cwd": "2.0.0" + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" } }, "imurmurhash": { @@ -6597,8 +6147,8 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -6616,20 +6166,20 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "requires": { - "ansi-escapes": "3.2.0", - "chalk": "2.4.2", - "cli-cursor": "2.1.0", - "cli-width": "2.2.0", - "external-editor": "2.2.0", - "figures": "2.0.0", - "lodash": "4.17.15", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", "mute-stream": "0.0.7", - "run-async": "2.4.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" }, "dependencies": { "ansi-regex": { @@ -6647,8 +6197,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -6656,7 +6206,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -6667,9 +6217,9 @@ "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", "dev": true, "requires": { - "es-abstract": "1.17.5", - "has": "1.0.3", - "side-channel": "1.0.2" + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" } }, "invariant": { @@ -6677,7 +6227,7 @@ "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "requires": { - "loose-envify": "1.4.0" + "loose-envify": "^1.0.0" } }, "invert-kv": { @@ -6690,7 +6240,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-alphabetical": { @@ -6711,8 +6261,8 @@ "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", "dev": true, "requires": { - "is-alphabetical": "1.0.4", - "is-decimal": "1.0.4" + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" } }, "is-arrayish": { @@ -6726,9 +6276,9 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-ci": { @@ -6737,7 +6287,7 @@ "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "requires": { - "ci-info": "2.0.0" + "ci-info": "^2.0.0" } }, "is-data-descriptor": { @@ -6745,7 +6295,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-date-object": { @@ -6765,9 +6315,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { @@ -6792,7 +6342,7 @@ "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -6810,7 +6360,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-generator-fn": { @@ -6824,7 +6374,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "is-hexadecimal": { @@ -6843,7 +6393,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-plain-obj": { @@ -6857,7 +6407,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, "is-posix-bracket": { @@ -6870,18 +6420,13 @@ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "1.0.3" + "has-symbols": "^1.0.1" } }, "is-stream": { @@ -6901,7 +6446,7 @@ "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { - "has-symbols": "1.0.1" + "has-symbols": "^1.0.1" } }, "is-typedarray": { @@ -6956,8 +6501,8 @@ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "requires": { - "node-fetch": "1.7.3", - "whatwg-fetch": "3.0.0" + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" }, "dependencies": { "node-fetch": { @@ -6965,8 +6510,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } } } @@ -6988,13 +6533,13 @@ "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, "requires": { - "@babel/generator": "7.9.4", - "@babel/parser": "7.9.4", - "@babel/template": "7.8.6", - "@babel/traverse": "7.9.0", - "@babel/types": "7.9.0", - "istanbul-lib-coverage": "2.0.5", - "semver": "6.3.0" + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" }, "dependencies": { "semver": { @@ -7011,9 +6556,9 @@ "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", "dev": true, "requires": { - "istanbul-lib-coverage": "2.0.5", - "make-dir": "2.1.0", - "supports-color": "6.1.0" + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" }, "dependencies": { "supports-color": { @@ -7022,7 +6567,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -7033,11 +6578,11 @@ "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, "requires": { - "debug": "4.1.1", - "istanbul-lib-coverage": "2.0.5", - "make-dir": "2.1.0", - "rimraf": "2.7.1", - "source-map": "0.6.1" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" }, "dependencies": { "debug": { @@ -7046,7 +6591,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.1" } }, "ms": { @@ -7069,7 +6614,7 @@ "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", "dev": true, "requires": { - "html-escaper": "2.0.1" + "html-escaper": "^2.0.0" } }, "jase": { @@ -7078,8 +6623,8 @@ "integrity": "sha1-Mm24FwXcmL/3A3zQmA/buTq+wDM=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "minimist": "1.2.5" + "core-util-is": "^1.0.1", + "minimist": "^1.1.0" } }, "jest": { @@ -7088,8 +6633,8 @@ "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", "dev": true, "requires": { - "import-local": "2.0.0", - "jest-cli": "24.9.0" + "import-local": "^2.0.0", + "jest-cli": "^24.9.0" }, "dependencies": { "ansi-regex": { @@ -7104,7 +6649,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "camelcase": { @@ -7119,18 +6664,24 @@ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "3.1.0", - "strip-ansi": "5.2.0", - "wrap-ansi": "5.1.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "3.0.0" + "locate-path": "^3.0.0" } }, "get-caller-file": { @@ -7151,19 +6702,19 @@ "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", "dev": true, "requires": { - "@jest/core": "24.9.0", - "@jest/test-result": "24.9.0", - "@jest/types": "24.9.0", - "chalk": "2.4.2", - "exit": "0.1.2", - "import-local": "2.0.0", - "is-ci": "2.0.0", - "jest-config": "24.9.0", - "jest-util": "24.9.0", - "jest-validate": "24.9.0", - "prompts": "2.3.2", - "realpath-native": "1.1.0", - "yargs": "13.3.2" + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" } }, "locate-path": { @@ -7172,17 +6723,17 @@ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "3.0.0", - "path-exists": "3.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "p-try": "2.2.0" + "p-try": "^2.0.0" } }, "p-locate": { @@ -7191,7 +6742,7 @@ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "2.2.2" + "p-limit": "^2.0.0" } }, "p-try": { @@ -7212,9 +6763,9 @@ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "emoji-regex": "7.0.3", - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "5.2.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, "strip-ansi": { @@ -7223,7 +6774,7 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "4.1.0" + "ansi-regex": "^4.1.0" } }, "wrap-ansi": { @@ -7232,9 +6783,9 @@ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "string-width": "3.1.0", - "strip-ansi": "5.2.0" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" } }, "y18n": { @@ -7249,16 +6800,16 @@ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "cliui": "5.0.0", - "find-up": "3.0.0", - "get-caller-file": "2.0.5", - "require-directory": "2.1.1", - "require-main-filename": "2.0.0", - "set-blocking": "2.0.0", - "string-width": "3.1.0", - "which-module": "2.0.0", - "y18n": "4.0.0", - "yargs-parser": "13.1.2" + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, "yargs-parser": { @@ -7267,8 +6818,8 @@ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { - "camelcase": "5.3.1", - "decamelize": "1.2.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } @@ -7279,9 +6830,9 @@ "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "execa": "1.0.0", - "throat": "4.1.0" + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" } }, "jest-config": { @@ -7290,23 +6841,23 @@ "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", "dev": true, "requires": { - "@babel/core": "7.9.0", - "@jest/test-sequencer": "24.9.0", - "@jest/types": "24.9.0", - "babel-jest": "24.9.0", - "chalk": "2.4.2", - "glob": "7.1.6", - "jest-environment-jsdom": "24.9.0", - "jest-environment-node": "24.9.0", - "jest-get-type": "24.9.0", - "jest-jasmine2": "24.9.0", - "jest-regex-util": "24.9.0", - "jest-resolve": "24.9.0", - "jest-util": "24.9.0", - "jest-validate": "24.9.0", - "micromatch": "3.1.10", - "pretty-format": "24.9.0", - "realpath-native": "1.1.0" + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" }, "dependencies": { "ansi-regex": { @@ -7321,7 +6872,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "arr-diff": { @@ -7342,16 +6893,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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.3", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "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" }, "dependencies": { "extend-shallow": { @@ -7360,7 +6911,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -7371,13 +6922,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -7386,7 +6937,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -7395,7 +6946,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -7404,7 +6955,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -7413,7 +6964,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -7424,7 +6975,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -7433,7 +6984,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -7444,9 +6995,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -7463,14 +7014,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -7479,7 +7030,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -7488,7 +7039,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -7499,10 +7050,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -7511,7 +7062,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -7522,7 +7073,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -7531,7 +7082,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -7540,9 +7091,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-number": { @@ -7551,7 +7102,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -7560,7 +7111,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -7577,19 +7128,19 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.3", - "nanomatch": "1.2.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" } }, "pretty-format": { @@ -7598,10 +7149,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "ansi-regex": "4.1.0", - "ansi-styles": "3.2.1", - "react-is": "16.13.1" + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" } } } @@ -7612,10 +7163,10 @@ "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", "dev": true, "requires": { - "chalk": "2.4.2", - "diff-sequences": "24.9.0", - "jest-get-type": "24.9.0", - "pretty-format": "24.9.0" + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" }, "dependencies": { "ansi-regex": { @@ -7630,7 +7181,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "pretty-format": { @@ -7639,10 +7190,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "ansi-regex": "4.1.0", - "ansi-styles": "3.2.1", - "react-is": "16.13.1" + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" } } } @@ -7653,7 +7204,7 @@ "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", "dev": true, "requires": { - "detect-newline": "2.1.0" + "detect-newline": "^2.1.0" } }, "jest-each": { @@ -7662,11 +7213,11 @@ "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "chalk": "2.4.2", - "jest-get-type": "24.9.0", - "jest-util": "24.9.0", - "pretty-format": "24.9.0" + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" }, "dependencies": { "ansi-regex": { @@ -7681,7 +7232,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "pretty-format": { @@ -7690,10 +7241,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "ansi-regex": "4.1.0", - "ansi-styles": "3.2.1", - "react-is": "16.13.1" + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" } } } @@ -7704,12 +7255,12 @@ "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", "dev": true, "requires": { - "@jest/environment": "24.9.0", - "@jest/fake-timers": "24.9.0", - "@jest/types": "24.9.0", - "jest-mock": "24.9.0", - "jest-util": "24.9.0", - "jsdom": "11.12.0" + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" } }, "jest-environment-node": { @@ -7718,11 +7269,11 @@ "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", "dev": true, "requires": { - "@jest/environment": "24.9.0", - "@jest/fake-timers": "24.9.0", - "@jest/types": "24.9.0", - "jest-mock": "24.9.0", - "jest-util": "24.9.0" + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" } }, "jest-get-type": { @@ -7736,13 +7287,13 @@ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.0.0-alpha.6.tgz", "integrity": "sha512-+NO2HMbjvrG8BC39ieLukdpFrcPhhjCJGhpbHodHNZygH1Tt06WrlNYGpZtWKx/zpf533tCtMQXO/q59JenjNw==", "requires": { - "fb-watchman": "2.0.1", - "graceful-fs": "4.2.3", - "invariant": "2.2.4", - "jest-serializer": "24.9.0", - "jest-worker": "24.0.0-alpha.6", - "micromatch": "2.3.11", - "sane": "3.1.0" + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.11", + "invariant": "^2.2.4", + "jest-serializer": "^24.0.0-alpha.6", + "jest-worker": "^24.0.0-alpha.6", + "micromatch": "^2.3.11", + "sane": "^3.0.0" } }, "jest-jasmine2": { @@ -7751,22 +7302,22 @@ "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", "dev": true, "requires": { - "@babel/traverse": "7.9.0", - "@jest/environment": "24.9.0", - "@jest/test-result": "24.9.0", - "@jest/types": "24.9.0", - "chalk": "2.4.2", - "co": "4.6.0", - "expect": "24.9.0", - "is-generator-fn": "2.1.0", - "jest-each": "24.9.0", - "jest-matcher-utils": "24.9.0", - "jest-message-util": "24.9.0", - "jest-runtime": "24.9.0", - "jest-snapshot": "24.9.0", - "jest-util": "24.9.0", - "pretty-format": "24.9.0", - "throat": "4.1.0" + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -7781,7 +7332,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "pretty-format": { @@ -7790,10 +7341,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "ansi-regex": "4.1.0", - "ansi-styles": "3.2.1", - "react-is": "16.13.1" + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" } } } @@ -7804,8 +7355,8 @@ "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", "dev": true, "requires": { - "jest-get-type": "24.9.0", - "pretty-format": "24.9.0" + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" }, "dependencies": { "ansi-regex": { @@ -7820,7 +7371,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "pretty-format": { @@ -7829,10 +7380,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "ansi-regex": "4.1.0", - "ansi-styles": "3.2.1", - "react-is": "16.13.1" + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" } } } @@ -7843,10 +7394,10 @@ "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", "dev": true, "requires": { - "chalk": "2.4.2", - "jest-diff": "24.9.0", - "jest-get-type": "24.9.0", - "pretty-format": "24.9.0" + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" }, "dependencies": { "ansi-regex": { @@ -7861,7 +7412,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "pretty-format": { @@ -7870,10 +7421,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "ansi-regex": "4.1.0", - "ansi-styles": "3.2.1", - "react-is": "16.13.1" + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" } } } @@ -7884,14 +7435,14 @@ "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", "dev": true, "requires": { - "@babel/code-frame": "7.8.3", - "@jest/test-result": "24.9.0", - "@jest/types": "24.9.0", - "@types/stack-utils": "1.0.1", - "chalk": "2.4.2", - "micromatch": "3.1.10", - "slash": "2.0.0", - "stack-utils": "1.0.2" + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" }, "dependencies": { "arr-diff": { @@ -7912,16 +7463,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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.3", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "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" }, "dependencies": { "extend-shallow": { @@ -7930,7 +7481,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -7941,13 +7492,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -7956,7 +7507,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -7965,7 +7516,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -7974,7 +7525,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -7983,7 +7534,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -7994,7 +7545,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -8003,7 +7554,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -8014,9 +7565,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -8033,14 +7584,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -8049,7 +7600,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -8058,7 +7609,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -8069,10 +7620,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -8081,7 +7632,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -8092,7 +7643,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -8101,7 +7652,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -8110,9 +7661,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-number": { @@ -8121,7 +7672,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -8130,7 +7681,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -8147,19 +7698,19 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.3", - "nanomatch": "1.2.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" } } } @@ -8170,13 +7721,13 @@ "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", "dev": true, "requires": { - "@jest/types": "24.9.0" + "@jest/types": "^24.9.0" } }, "jest-pnp-resolver": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", - "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", "dev": true }, "jest-regex-util": { @@ -8191,11 +7742,11 @@ "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "browser-resolve": "1.11.3", - "chalk": "2.4.2", - "jest-pnp-resolver": "1.2.1", - "realpath-native": "1.1.0" + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" } }, "jest-resolve-dependencies": { @@ -8204,9 +7755,9 @@ "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "jest-regex-util": "24.9.0", - "jest-snapshot": "24.9.0" + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" } }, "jest-runner": { @@ -8215,25 +7766,25 @@ "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", "dev": true, "requires": { - "@jest/console": "24.9.0", - "@jest/environment": "24.9.0", - "@jest/test-result": "24.9.0", - "@jest/types": "24.9.0", - "chalk": "2.4.2", - "exit": "0.1.2", - "graceful-fs": "4.2.3", - "jest-config": "24.9.0", - "jest-docblock": "24.9.0", - "jest-haste-map": "24.9.0", - "jest-jasmine2": "24.9.0", - "jest-leak-detector": "24.9.0", - "jest-message-util": "24.9.0", - "jest-resolve": "24.9.0", - "jest-runtime": "24.9.0", - "jest-util": "24.9.0", - "jest-worker": "24.9.0", - "source-map-support": "0.5.16", - "throat": "4.1.0" + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" }, "dependencies": { "@cnakazawa/watch": { @@ -8242,8 +7793,8 @@ "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { - "exec-sh": "0.3.4", - "minimist": "1.2.5" + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" } }, "arr-diff": { @@ -8264,16 +7815,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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.3", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "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" }, "dependencies": { "extend-shallow": { @@ -8282,7 +7833,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -8293,7 +7844,7 @@ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "rsvp": "4.8.5" + "rsvp": "^4.8.4" } }, "exec-sh": { @@ -8308,13 +7859,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -8323,7 +7874,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -8332,7 +7883,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -8341,7 +7892,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -8350,7 +7901,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -8361,7 +7912,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -8370,7 +7921,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -8381,9 +7932,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -8400,14 +7951,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -8416,7 +7967,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -8425,7 +7976,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -8436,10 +7987,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -8448,7 +7999,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -8459,7 +8010,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -8468,7 +8019,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -8477,9 +8028,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-number": { @@ -8488,7 +8039,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -8497,7 +8048,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -8508,18 +8059,18 @@ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "anymatch": "2.0.0", - "fb-watchman": "2.0.1", - "fsevents": "1.2.12", - "graceful-fs": "4.2.3", - "invariant": "2.2.4", - "jest-serializer": "24.9.0", - "jest-util": "24.9.0", - "jest-worker": "24.9.0", - "micromatch": "3.1.10", - "sane": "4.1.0", - "walker": "1.0.7" + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" } }, "jest-worker": { @@ -8528,8 +8079,8 @@ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "merge-stream": "2.0.0", - "supports-color": "6.1.0" + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" } }, "kind-of": { @@ -8550,19 +8101,19 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.3", - "nanomatch": "1.2.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" } }, "rsvp": { @@ -8577,15 +8128,15 @@ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { - "@cnakazawa/watch": "1.0.4", - "anymatch": "2.0.0", - "capture-exit": "2.0.0", - "exec-sh": "0.3.4", - "execa": "1.0.0", - "fb-watchman": "2.0.1", - "micromatch": "3.1.10", - "minimist": "1.2.5", - "walker": "1.0.7" + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" } }, "supports-color": { @@ -8594,7 +8145,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } @@ -8605,29 +8156,29 @@ "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", "dev": true, "requires": { - "@jest/console": "24.9.0", - "@jest/environment": "24.9.0", - "@jest/source-map": "24.9.0", - "@jest/transform": "24.9.0", - "@jest/types": "24.9.0", - "@types/yargs": "13.0.8", - "chalk": "2.4.2", - "exit": "0.1.2", - "glob": "7.1.6", - "graceful-fs": "4.2.3", - "jest-config": "24.9.0", - "jest-haste-map": "24.9.0", - "jest-message-util": "24.9.0", - "jest-mock": "24.9.0", - "jest-regex-util": "24.9.0", - "jest-resolve": "24.9.0", - "jest-snapshot": "24.9.0", - "jest-util": "24.9.0", - "jest-validate": "24.9.0", - "realpath-native": "1.1.0", - "slash": "2.0.0", - "strip-bom": "3.0.0", - "yargs": "13.3.2" + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" }, "dependencies": { "@cnakazawa/watch": { @@ -8636,8 +8187,8 @@ "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "requires": { - "exec-sh": "0.3.4", - "minimist": "1.2.5" + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" } }, "ansi-regex": { @@ -8652,7 +8203,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "arr-diff": { @@ -8673,16 +8224,16 @@ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "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.3", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "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" }, "dependencies": { "extend-shallow": { @@ -8691,7 +8242,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -8708,7 +8259,7 @@ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { - "rsvp": "4.8.5" + "rsvp": "^4.8.4" } }, "cliui": { @@ -8717,11 +8268,17 @@ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "3.1.0", - "strip-ansi": "5.2.0", - "wrap-ansi": "5.1.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "exec-sh": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", @@ -8734,13 +8291,13 @@ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -8749,7 +8306,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -8758,7 +8315,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -8767,7 +8324,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -8776,7 +8333,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -8787,7 +8344,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -8796,7 +8353,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -8807,9 +8364,9 @@ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -8826,14 +8383,14 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -8842,7 +8399,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -8851,7 +8408,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -8862,10 +8419,10 @@ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -8874,7 +8431,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -8885,7 +8442,7 @@ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "3.0.0" + "locate-path": "^3.0.0" } }, "get-caller-file": { @@ -8900,7 +8457,7 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -8909,7 +8466,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -8918,9 +8475,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-fullwidth-code-point": { @@ -8935,7 +8492,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -8944,7 +8501,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -8955,18 +8512,18 @@ "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "anymatch": "2.0.0", - "fb-watchman": "2.0.1", - "fsevents": "1.2.12", - "graceful-fs": "4.2.3", - "invariant": "2.2.4", - "jest-serializer": "24.9.0", - "jest-util": "24.9.0", - "jest-worker": "24.9.0", - "micromatch": "3.1.10", - "sane": "4.1.0", - "walker": "1.0.7" + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" } }, "jest-worker": { @@ -8975,8 +8532,8 @@ "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, "requires": { - "merge-stream": "2.0.0", - "supports-color": "6.1.0" + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" } }, "kind-of": { @@ -8991,8 +8548,8 @@ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "3.0.0", - "path-exists": "3.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "merge-stream": { @@ -9007,28 +8564,28 @@ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.3", - "nanomatch": "1.2.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" } }, "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "p-try": "2.2.0" + "p-try": "^2.0.0" } }, "p-locate": { @@ -9037,7 +8594,7 @@ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "2.2.2" + "p-limit": "^2.0.0" } }, "p-try": { @@ -9064,15 +8621,15 @@ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { - "@cnakazawa/watch": "1.0.4", - "anymatch": "2.0.0", - "capture-exit": "2.0.0", - "exec-sh": "0.3.4", - "execa": "1.0.0", - "fb-watchman": "2.0.1", - "micromatch": "3.1.10", - "minimist": "1.2.5", - "walker": "1.0.7" + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" } }, "string-width": { @@ -9081,9 +8638,9 @@ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "emoji-regex": "7.0.3", - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "5.2.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, "strip-ansi": { @@ -9092,7 +8649,7 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "4.1.0" + "ansi-regex": "^4.1.0" } }, "strip-bom": { @@ -9107,7 +8664,7 @@ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } }, "wrap-ansi": { @@ -9116,9 +8673,9 @@ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "string-width": "3.1.0", - "strip-ansi": "5.2.0" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" } }, "y18n": { @@ -9133,16 +8690,16 @@ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "cliui": "5.0.0", - "find-up": "3.0.0", - "get-caller-file": "2.0.5", - "require-directory": "2.1.1", - "require-main-filename": "2.0.0", - "set-blocking": "2.0.0", - "string-width": "3.1.0", - "which-module": "2.0.0", - "y18n": "4.0.0", - "yargs-parser": "13.1.2" + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, "yargs-parser": { @@ -9151,8 +8708,8 @@ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { - "camelcase": "5.3.1", - "decamelize": "1.2.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } @@ -9168,19 +8725,19 @@ "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", "dev": true, "requires": { - "@babel/types": "7.9.0", - "@jest/types": "24.9.0", - "chalk": "2.4.2", - "expect": "24.9.0", - "jest-diff": "24.9.0", - "jest-get-type": "24.9.0", - "jest-matcher-utils": "24.9.0", - "jest-message-util": "24.9.0", - "jest-resolve": "24.9.0", - "mkdirp": "0.5.4", - "natural-compare": "1.4.0", - "pretty-format": "24.9.0", - "semver": "6.3.0" + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" }, "dependencies": { "ansi-regex": { @@ -9195,7 +8752,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "pretty-format": { @@ -9204,10 +8761,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "ansi-regex": "4.1.0", - "ansi-styles": "3.2.1", - "react-is": "16.13.1" + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" } }, "semver": { @@ -9224,18 +8781,18 @@ "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", "dev": true, "requires": { - "@jest/console": "24.9.0", - "@jest/fake-timers": "24.9.0", - "@jest/source-map": "24.9.0", - "@jest/test-result": "24.9.0", - "@jest/types": "24.9.0", - "callsites": "3.1.0", - "chalk": "2.4.2", - "graceful-fs": "4.2.3", - "is-ci": "2.0.0", - "mkdirp": "0.5.4", - "slash": "2.0.0", - "source-map": "0.6.1" + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" }, "dependencies": { "callsites": { @@ -9258,12 +8815,12 @@ "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "camelcase": "5.3.1", - "chalk": "2.4.2", - "jest-get-type": "24.9.0", - "leven": "3.1.0", - "pretty-format": "24.9.0" + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" }, "dependencies": { "ansi-regex": { @@ -9278,7 +8835,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "camelcase": { @@ -9293,10 +8850,10 @@ "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", "dev": true, "requires": { - "@jest/types": "24.9.0", - "ansi-regex": "4.1.0", - "ansi-styles": "3.2.1", - "react-is": "16.13.1" + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" } } } @@ -9307,13 +8864,13 @@ "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", "dev": true, "requires": { - "@jest/test-result": "24.9.0", - "@jest/types": "24.9.0", - "@types/yargs": "13.0.8", - "ansi-escapes": "3.2.0", - "chalk": "2.4.2", - "jest-util": "24.9.0", - "string-length": "2.0.0" + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" } }, "jest-worker": { @@ -9321,7 +8878,7 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.0.0-alpha.6.tgz", "integrity": "sha512-iXtH7MR9bjWlNnlnRBcrBRrb4cSVxML96La5vsnmBvDI+mJnkP5uEt6Fgpo5Y8f3z9y2Rd7wuPnKRxqQsiU/dA==", "requires": { - "merge-stream": "1.0.1" + "merge-stream": "^1.0.1" } }, "jetifier": { @@ -9331,31 +8888,36 @@ "dev": true }, "js-base64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", - "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==" + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" }, "js-beautify": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.3.tgz", - "integrity": "sha512-wfk/IAWobz1TfApSdivH5PJ0miIHgDoYb1ugSqHcODPmaYu46rYe5FVuIEkhjg8IQiv6rDNPyhsqbsohI/C2vQ==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.13.0.tgz", + "integrity": "sha512-/Tbp1OVzZjbwzwJQFIlYLm9eWQ+3aYbBXLSaqb1mEJzhcQAfrqMMQYtjb6io+U6KpD0ID4F+Id3/xcjH3l/sqA==", "dev": true, "requires": { - "config-chain": "1.1.12", - "editorconfig": "0.15.3", - "glob": "7.1.6", - "mkdirp": "0.5.4", - "nopt": "4.0.3" + "config-chain": "^1.1.12", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "mkdirp": "^1.0.4", + "nopt": "^5.0.0" }, "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" + "abbrev": "1" } } } @@ -9371,12 +8933,12 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "requires": { - "argparse": "1.0.10", - "esprima": "4.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsbn": { @@ -9390,32 +8952,32 @@ "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", "dev": true, "requires": { - "abab": "2.0.3", - "acorn": "5.7.4", - "acorn-globals": "4.3.4", - "array-equal": "1.0.0", - "cssom": "0.3.8", - "cssstyle": "1.4.0", - "data-urls": "1.1.0", - "domexception": "1.0.1", - "escodegen": "1.14.1", - "html-encoding-sniffer": "1.0.2", - "left-pad": "1.3.0", - "nwsapi": "2.2.0", + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", "parse5": "4.0.0", - "pn": "1.1.0", - "request": "2.88.2", - "request-promise-native": "1.0.8", - "sax": "1.2.4", - "symbol-tree": "3.2.4", - "tough-cookie": "2.5.0", - "w3c-hr-time": "1.0.2", - "webidl-conversions": "4.0.2", - "whatwg-encoding": "1.0.5", - "whatwg-mimetype": "2.3.0", - "whatwg-url": "6.5.0", - "ws": "5.2.2", - "xml-name-validator": "3.0.0" + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" }, "dependencies": { "acorn": { @@ -9436,7 +8998,7 @@ "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", "dev": true, "requires": { - "async-limiter": "1.0.1" + "async-limiter": "~1.0.0" } } } @@ -9466,7 +9028,7 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stable-stringify-without-jsonify": { @@ -9481,11 +9043,11 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json5": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.2.tgz", - "integrity": "sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", "requires": { - "minimist": "1.2.5" + "minimist": "^1.2.5" } }, "jsonfile": { @@ -9493,7 +9055,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { - "graceful-fs": "4.2.3" + "graceful-fs": "^4.1.6" } }, "jsonify": { @@ -9513,13 +9075,13 @@ } }, "jsx-ast-utils": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", - "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", "dev": true, "requires": { - "array-includes": "3.1.1", - "object.assign": "4.1.0" + "array-includes": "^3.1.1", + "object.assign": "^4.1.0" } }, "kind-of": { @@ -9527,7 +9089,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "klaw": { @@ -9535,7 +9097,7 @@ "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", "requires": { - "graceful-fs": "4.2.3" + "graceful-fs": "^4.1.9" } }, "kleur": { @@ -9549,7 +9111,7 @@ "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "left-pad": { @@ -9570,8 +9132,8 @@ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, "linkify-it": { @@ -9579,7 +9141,7 @@ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-1.2.4.tgz", "integrity": "sha1-B3NSbDF8j9E71TTuHRgP+Iq/iBo=", "requires": { - "uc.micro": "1.0.6" + "uc.micro": "^1.0.1" } }, "load-json-file": { @@ -9587,10 +9149,10 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "requires": { - "graceful-fs": "4.2.3", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" }, "dependencies": { "parse-json": { @@ -9598,7 +9160,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "requires": { - "error-ex": "1.3.2" + "error-ex": "^1.2.0" } }, "strip-bom": { @@ -9613,14 +9175,14 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "lodash.flattendeep": { "version": "4.4.0", @@ -9671,7 +9233,7 @@ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "requires": { - "js-tokens": "4.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" } }, "lru-cache": { @@ -9679,8 +9241,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" }, "dependencies": { "yallist": { @@ -9695,8 +9257,8 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "requires": { - "pify": "4.0.1", - "semver": "5.7.1" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "dependencies": { "pify": { @@ -9716,7 +9278,7 @@ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", "requires": { - "tmpl": "1.0.4" + "tmpl": "1.0.x" } }, "map-cache": { @@ -9729,7 +9291,7 @@ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "requires": { - "object-visit": "1.0.1" + "object-visit": "^1.0.0" } }, "markdown-escapes": { @@ -9755,7 +9317,7 @@ "integrity": "sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==", "dev": true, "requires": { - "unist-util-visit": "1.4.1" + "unist-util-visit": "^1.1.0" } }, "mdurl": { @@ -9768,7 +9330,7 @@ "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "merge": { @@ -9781,7 +9343,7 @@ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "requires": { - "readable-stream": "2.3.7" + "readable-stream": "^2.0.1" } }, "metro": { @@ -9789,33 +9351,33 @@ "resolved": "https://registry.npmjs.org/metro/-/metro-0.51.1.tgz", "integrity": "sha512-nM0dqn8LQlMjhChl2fzTUq2EWiUebZM7nkesD9vQe47W10bj/tbRLPiIIAxht6SRDbPd/hRA+t39PxLhPSKEKg==", "requires": { - "@babel/core": "7.9.0", - "@babel/generator": "7.9.4", - "@babel/parser": "7.9.4", - "@babel/plugin-external-helpers": "7.8.3", - "@babel/template": "7.8.6", - "@babel/traverse": "7.9.0", - "@babel/types": "7.9.0", - "absolute-path": "0.0.0", - "async": "2.6.3", - "babel-preset-fbjs": "3.3.0", - "buffer-crc32": "0.2.13", - "chalk": "2.4.2", - "concat-stream": "1.6.2", - "connect": "3.7.0", - "debug": "2.6.9", - "denodeify": "1.2.1", - "eventemitter3": "3.1.2", - "fbjs": "1.0.0", - "fs-extra": "1.0.0", - "graceful-fs": "4.2.3", - "image-size": "0.6.3", - "invariant": "2.2.4", + "@babel/core": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/plugin-external-helpers": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "absolute-path": "^0.0.0", + "async": "^2.4.0", + "babel-preset-fbjs": "^3.0.1", + "buffer-crc32": "^0.2.13", + "chalk": "^2.4.1", + "concat-stream": "^1.6.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "denodeify": "^1.2.1", + "eventemitter3": "^3.0.0", + "fbjs": "^1.0.0", + "fs-extra": "^1.0.0", + "graceful-fs": "^4.1.3", + "image-size": "^0.6.0", + "invariant": "^2.2.4", "jest-haste-map": "24.0.0-alpha.6", "jest-worker": "24.0.0-alpha.6", - "json-stable-stringify": "1.0.1", - "lodash.throttle": "4.1.1", - "merge-stream": "1.0.1", + "json-stable-stringify": "^1.0.1", + "lodash.throttle": "^4.1.1", + "merge-stream": "^1.0.1", "metro-babel-transformer": "0.51.1", "metro-cache": "0.51.1", "metro-config": "0.51.1", @@ -9825,21 +9387,21 @@ "metro-resolver": "0.51.1", "metro-source-map": "0.51.1", "mime-types": "2.1.11", - "mkdirp": "0.5.4", - "node-fetch": "2.6.0", - "nullthrows": "1.1.1", - "react-transform-hmr": "1.0.4", - "resolve": "1.15.1", - "rimraf": "2.7.1", - "serialize-error": "2.1.0", - "source-map": "0.5.7", + "mkdirp": "^0.5.1", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.0", + "react-transform-hmr": "^1.0.4", + "resolve": "^1.5.0", + "rimraf": "^2.5.4", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", "temp": "0.8.3", - "throat": "4.1.0", - "wordwrap": "1.0.0", - "write-file-atomic": "1.3.4", - "ws": "1.1.5", - "xpipe": "1.0.5", - "yargs": "9.0.1" + "throat": "^4.1.0", + "wordwrap": "^1.0.0", + "write-file-atomic": "^1.2.0", + "ws": "^1.1.5", + "xpipe": "^1.0.5", + "yargs": "^9.0.0" }, "dependencies": { "metro-react-native-babel-preset": { @@ -9847,41 +9409,41 @@ "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.51.1.tgz", "integrity": "sha512-e9tsYDFhU70gar0jQWcZXRPJVCv4k7tEs6Pm74wXO2OO/T1MEumbvniDIGwGG8bG8RUnYdHhjcaiub2Vc5BRWw==", "requires": { - "@babel/plugin-proposal-class-properties": "7.8.3", - "@babel/plugin-proposal-export-default-from": "7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "7.8.3", - "@babel/plugin-proposal-object-rest-spread": "7.9.0", - "@babel/plugin-proposal-optional-catch-binding": "7.8.3", - "@babel/plugin-proposal-optional-chaining": "7.9.0", - "@babel/plugin-syntax-dynamic-import": "7.8.3", - "@babel/plugin-syntax-export-default-from": "7.8.3", - "@babel/plugin-transform-arrow-functions": "7.8.3", - "@babel/plugin-transform-block-scoping": "7.8.3", - "@babel/plugin-transform-classes": "7.9.2", - "@babel/plugin-transform-computed-properties": "7.8.3", - "@babel/plugin-transform-destructuring": "7.8.8", - "@babel/plugin-transform-exponentiation-operator": "7.8.3", - "@babel/plugin-transform-flow-strip-types": "7.9.0", - "@babel/plugin-transform-for-of": "7.9.0", - "@babel/plugin-transform-function-name": "7.8.3", - "@babel/plugin-transform-literals": "7.8.3", - "@babel/plugin-transform-modules-commonjs": "7.9.0", - "@babel/plugin-transform-object-assign": "7.8.3", - "@babel/plugin-transform-parameters": "7.9.3", - "@babel/plugin-transform-react-display-name": "7.8.3", - "@babel/plugin-transform-react-jsx": "7.9.4", - "@babel/plugin-transform-react-jsx-source": "7.9.0", - "@babel/plugin-transform-regenerator": "7.8.7", - "@babel/plugin-transform-runtime": "7.9.0", - "@babel/plugin-transform-shorthand-properties": "7.8.3", - "@babel/plugin-transform-spread": "7.8.3", - "@babel/plugin-transform-sticky-regex": "7.8.3", - "@babel/plugin-transform-template-literals": "7.8.3", - "@babel/plugin-transform-typescript": "7.9.4", - "@babel/plugin-transform-unicode-regex": "7.8.3", - "@babel/template": "7.8.6", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-exponentiation-operator": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-assign": "^7.0.0", + "@babel/plugin-transform-parameters": "^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-source": "^7.0.0", + "@babel/plugin-transform-regenerator": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.0.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", "metro-babel7-plugin-react-transform": "0.51.1", - "react-transform-hmr": "1.0.4" + "react-transform-hmr": "^1.0.4" } }, "mime-db": { @@ -9894,7 +9456,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", "integrity": "sha1-wlnEcb2oCKhdbNGTtDCl+uRHOzw=", "requires": { - "mime-db": "1.23.0" + "mime-db": "~1.23.0" } } } @@ -9904,18 +9466,18 @@ "resolved": "https://registry.npmjs.org/metro-babel-register/-/metro-babel-register-0.51.0.tgz", "integrity": "sha512-rhdvHFOZ7/ub019A3+aYs8YeLydb02/FAMsKr2Nz2Jlf6VUxWrMnrcT0NYX16F9TGdi2ulRlJ9dwvUmdhkk+Bw==", "requires": { - "@babel/core": "7.9.0", - "@babel/plugin-proposal-class-properties": "7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "7.8.3", - "@babel/plugin-proposal-object-rest-spread": "7.9.0", - "@babel/plugin-proposal-optional-catch-binding": "7.8.3", - "@babel/plugin-proposal-optional-chaining": "7.9.0", - "@babel/plugin-transform-async-to-generator": "7.8.3", - "@babel/plugin-transform-flow-strip-types": "7.9.0", - "@babel/plugin-transform-modules-commonjs": "7.9.0", - "@babel/register": "7.9.0", - "core-js": "2.6.11", - "escape-string-regexp": "1.0.5" + "@babel/core": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/register": "^7.0.0", + "core-js": "^2.2.2", + "escape-string-regexp": "^1.0.5" } }, "metro-babel-transformer": { @@ -9923,7 +9485,7 @@ "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.51.1.tgz", "integrity": "sha512-+tOnZZzOzufB86ASdfimUEGB1jBKsdsVpPdjNJZkueTFyvYlGqWDQKHM1w9bwKMeM/czPQ48Y6m8Bou6le0X4w==", "requires": { - "@babel/core": "7.9.0" + "@babel/core": "^7.0.0" } }, "metro-babel7-plugin-react-transform": { @@ -9931,7 +9493,7 @@ "resolved": "https://registry.npmjs.org/metro-babel7-plugin-react-transform/-/metro-babel7-plugin-react-transform-0.51.1.tgz", "integrity": "sha512-wzn4X9KgmAMZ7Bi6v9KxA7dw+AHGL0RODPxU5NDJ3A6d0yERvzfZ3qkzWhz8jbFkVBK12cu5DTho3HBazKQDOw==", "requires": { - "@babel/helper-module-imports": "7.8.3" + "@babel/helper-module-imports": "^7.0.0" } }, "metro-cache": { @@ -9941,8 +9503,8 @@ "requires": { "jest-serializer": "24.0.0-alpha.6", "metro-core": "0.51.1", - "mkdirp": "0.5.4", - "rimraf": "2.7.1" + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4" }, "dependencies": { "jest-serializer": { @@ -9957,7 +9519,7 @@ "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.51.1.tgz", "integrity": "sha512-WCNd0tTI9gb/ubgTqK1+ljZL4b3hsXVinsOAtep4nHiVb6DSDdbO2yXDD2rpYx3NE6hDRMFS9HHg6G0139pAqQ==", "requires": { - "cosmiconfig": "5.2.1", + "cosmiconfig": "^5.0.5", "metro": "0.51.1", "metro-cache": "0.51.1", "metro-core": "0.51.1", @@ -9970,9 +9532,9 @@ "integrity": "sha512-sG1yACjdFqmIzZN50HqLTKUMp1oy0AehHhmIuYeIllo1DjX6Y2o3UAT3rGP8U+SAqJGXf/OWzl6VNyRPGDENfA==", "requires": { "jest-haste-map": "24.0.0-alpha.6", - "lodash.throttle": "4.1.1", + "lodash.throttle": "^4.1.1", "metro-resolver": "0.51.1", - "wordwrap": "1.0.0" + "wordwrap": "^1.0.0" } }, "metro-memory-fs": { @@ -9985,7 +9547,7 @@ "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.51.1.tgz", "integrity": "sha512-HAqd/rFrQ6mnbqVAszDXIKTg2rqHlY9Fm8DReakgbkAeyMbF2mH3kEgtesPmTrhajdFk81UZcNSm6wxj1JMgVg==", "requires": { - "uglify-es": "3.3.9" + "uglify-es": "^3.1.9" } }, "metro-react-native-babel-preset": { @@ -9994,42 +9556,42 @@ "integrity": "sha512-Hfr32+u5yYl3qhYQJU8NQ26g4kQlc3yFMg7keVR/3H8rwBIbFqXgsKt8oe0dOrv7WvrMqBHhDtVdU9ls3sSq8g==", "dev": true, "requires": { - "@babel/plugin-proposal-class-properties": "7.8.3", - "@babel/plugin-proposal-export-default-from": "7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "7.8.3", - "@babel/plugin-proposal-object-rest-spread": "7.9.0", - "@babel/plugin-proposal-optional-catch-binding": "7.8.3", - "@babel/plugin-proposal-optional-chaining": "7.9.0", - "@babel/plugin-syntax-dynamic-import": "7.8.3", - "@babel/plugin-syntax-export-default-from": "7.8.3", - "@babel/plugin-syntax-flow": "7.8.3", - "@babel/plugin-transform-arrow-functions": "7.8.3", - "@babel/plugin-transform-block-scoping": "7.8.3", - "@babel/plugin-transform-classes": "7.9.2", - "@babel/plugin-transform-computed-properties": "7.8.3", - "@babel/plugin-transform-destructuring": "7.8.8", - "@babel/plugin-transform-exponentiation-operator": "7.8.3", - "@babel/plugin-transform-flow-strip-types": "7.9.0", - "@babel/plugin-transform-for-of": "7.9.0", - "@babel/plugin-transform-function-name": "7.8.3", - "@babel/plugin-transform-literals": "7.8.3", - "@babel/plugin-transform-modules-commonjs": "7.9.0", - "@babel/plugin-transform-object-assign": "7.8.3", - "@babel/plugin-transform-parameters": "7.9.3", - "@babel/plugin-transform-react-display-name": "7.8.3", - "@babel/plugin-transform-react-jsx": "7.9.4", - "@babel/plugin-transform-react-jsx-source": "7.9.0", - "@babel/plugin-transform-regenerator": "7.8.7", - "@babel/plugin-transform-runtime": "7.9.0", - "@babel/plugin-transform-shorthand-properties": "7.8.3", - "@babel/plugin-transform-spread": "7.8.3", - "@babel/plugin-transform-sticky-regex": "7.8.3", - "@babel/plugin-transform-template-literals": "7.8.3", - "@babel/plugin-transform-typescript": "7.9.4", - "@babel/plugin-transform-unicode-regex": "7.8.3", - "@babel/template": "7.8.6", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.2.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-exponentiation-operator": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-assign": "^7.0.0", + "@babel/plugin-transform-parameters": "^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-source": "^7.0.0", + "@babel/plugin-transform-regenerator": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.0.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", "metro-babel7-plugin-react-transform": "0.54.1", - "react-transform-hmr": "1.0.4" + "react-transform-hmr": "^1.0.4" }, "dependencies": { "metro-babel7-plugin-react-transform": { @@ -10038,7 +9600,7 @@ "integrity": "sha512-jWm5myuMoZAOhoPsa8ItfDxdTcOzKhTTzzhFlbZnRamE7i9qybeMdrZt8KHQpF7i2p/mKzE9Yhf4ouOz5K/jHg==", "dev": true, "requires": { - "@babel/helper-module-imports": "7.8.3" + "@babel/helper-module-imports": "^7.0.0" } } } @@ -10048,8 +9610,8 @@ "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.51.0.tgz", "integrity": "sha512-VFnqtE0qrVmU1HV9B04o53+NZHvDwR+CWCoEx4+7vCqJ9Tvas741biqCjah9xtifoKdElQELk6x0soOAWCDFJA==", "requires": { - "@babel/core": "7.9.0", - "babel-preset-fbjs": "3.3.0", + "@babel/core": "^7.0.0", + "babel-preset-fbjs": "^3.0.1", "metro-babel-transformer": "0.51.0", "metro-react-native-babel-preset": "0.51.0" }, @@ -10059,7 +9621,7 @@ "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.51.0.tgz", "integrity": "sha512-M7KEY/hjD3E8tJEliWgI0VOSaJtqaznC0ItM6FiMrhoGDqqa1BvGofl+EPcKqjBSOV1UgExua/T1VOIWbjwQsw==", "requires": { - "@babel/core": "7.9.0" + "@babel/core": "^7.0.0" } }, "metro-babel7-plugin-react-transform": { @@ -10067,7 +9629,7 @@ "resolved": "https://registry.npmjs.org/metro-babel7-plugin-react-transform/-/metro-babel7-plugin-react-transform-0.51.0.tgz", "integrity": "sha512-dZ95kXcE2FJMoRsYhxr7YLCbOlHWKwe0bOpihRhfImDTgFfuKIzU4ROQwMUbE0NCbzB+ATFsa2FZ3pHDJ5GI0w==", "requires": { - "@babel/helper-module-imports": "7.8.3" + "@babel/helper-module-imports": "^7.0.0" } }, "metro-react-native-babel-preset": { @@ -10075,41 +9637,41 @@ "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.51.0.tgz", "integrity": "sha512-Y/aPeLl4RzY8IEAneOyDcpdjto/8yjIuX9eUWRngjSqdHYhGQtqiSBpfTpo0BvXpwNRLwCLHyXo58gNpckTJFw==", "requires": { - "@babel/plugin-proposal-class-properties": "7.8.3", - "@babel/plugin-proposal-export-default-from": "7.8.3", - "@babel/plugin-proposal-nullish-coalescing-operator": "7.8.3", - "@babel/plugin-proposal-object-rest-spread": "7.9.0", - "@babel/plugin-proposal-optional-catch-binding": "7.8.3", - "@babel/plugin-proposal-optional-chaining": "7.9.0", - "@babel/plugin-syntax-dynamic-import": "7.8.3", - "@babel/plugin-syntax-export-default-from": "7.8.3", - "@babel/plugin-transform-arrow-functions": "7.8.3", - "@babel/plugin-transform-block-scoping": "7.8.3", - "@babel/plugin-transform-classes": "7.9.2", - "@babel/plugin-transform-computed-properties": "7.8.3", - "@babel/plugin-transform-destructuring": "7.8.8", - "@babel/plugin-transform-exponentiation-operator": "7.8.3", - "@babel/plugin-transform-flow-strip-types": "7.9.0", - "@babel/plugin-transform-for-of": "7.9.0", - "@babel/plugin-transform-function-name": "7.8.3", - "@babel/plugin-transform-literals": "7.8.3", - "@babel/plugin-transform-modules-commonjs": "7.9.0", - "@babel/plugin-transform-object-assign": "7.8.3", - "@babel/plugin-transform-parameters": "7.9.3", - "@babel/plugin-transform-react-display-name": "7.8.3", - "@babel/plugin-transform-react-jsx": "7.9.4", - "@babel/plugin-transform-react-jsx-source": "7.9.0", - "@babel/plugin-transform-regenerator": "7.8.7", - "@babel/plugin-transform-runtime": "7.9.0", - "@babel/plugin-transform-shorthand-properties": "7.8.3", - "@babel/plugin-transform-spread": "7.8.3", - "@babel/plugin-transform-sticky-regex": "7.8.3", - "@babel/plugin-transform-template-literals": "7.8.3", - "@babel/plugin-transform-typescript": "7.9.4", - "@babel/plugin-transform-unicode-regex": "7.8.3", - "@babel/template": "7.8.6", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-exponentiation-operator": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-assign": "^7.0.0", + "@babel/plugin-transform-parameters": "^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-source": "^7.0.0", + "@babel/plugin-transform-regenerator": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.0.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", "metro-babel7-plugin-react-transform": "0.51.0", - "react-transform-hmr": "1.0.4" + "react-transform-hmr": "^1.0.4" } } } @@ -10119,7 +9681,7 @@ "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.51.1.tgz", "integrity": "sha512-zmWbD/287NDA/jLPuPV0hne/YMMSG0dljzu21TYMg2lXRLur/zROJHHhyepZvuBHgInXBi4Vhr2wvuSnY39SuA==", "requires": { - "absolute-path": "0.0.0" + "absolute-path": "^0.0.0" } }, "metro-source-map": { @@ -10127,7 +9689,7 @@ "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.51.1.tgz", "integrity": "sha512-JyrE+RV4YumrboHPHTGsUUGERjQ681ImRLrSYDGcmNv4tfpk9nvAK26UAas4IvBYFCC9oW90m0udt3kaQGv59Q==", "requires": { - "source-map": "0.5.7" + "source-map": "^0.5.6" } }, "micromatch": { @@ -10135,19 +9697,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } }, "mime": { @@ -10156,16 +9718,16 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", - "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" }, "mime-types": { - "version": "2.1.26", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", - "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "requires": { - "mime-db": "1.43.0" + "mime-db": "1.44.0" } }, "mimic-fn": { @@ -10178,7 +9740,7 @@ "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", "requires": { - "dom-walk": "0.1.1" + "dom-walk": "^0.1.0" } }, "minimatch": { @@ -10186,7 +9748,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -10199,8 +9761,8 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", "requires": { - "safe-buffer": "5.1.2", - "yallist": "3.1.1" + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" } }, "minizlib": { @@ -10208,7 +9770,7 @@ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", "requires": { - "minipass": "2.9.0" + "minipass": "^2.9.0" } }, "mixin-deep": { @@ -10216,8 +9778,8 @@ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -10225,17 +9787,17 @@ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } }, "mkdirp": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "minimist": "1.2.5" + "minimist": "^1.2.5" } }, "mocha": { @@ -10278,12 +9840,12 @@ "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.1", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "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" } }, "minimist": { @@ -10307,26 +9869,26 @@ "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "3.0.0" + "has-flag": "^3.0.0" } } } }, "moment": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" }, "morgan": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", "requires": { - "basic-auth": "2.0.1", + "basic-auth": "~2.0.1", "debug": "2.6.9", - "depd": "2.0.0", - "on-finished": "2.3.0", - "on-headers": "1.0.2" + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" } }, "ms": { @@ -10352,9 +9914,9 @@ "dev": true, "optional": true, "requires": { - "mkdirp": "0.5.4", - "ncp": "2.0.0", - "rimraf": "2.4.5" + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" }, "dependencies": { "glob": { @@ -10364,11 +9926,11 @@ "dev": true, "optional": true, "requires": { - "inflight": "1.0.6", - "inherits": "2.0.1", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "rimraf": { @@ -10378,32 +9940,32 @@ "dev": true, "optional": true, "requires": { - "glob": "6.0.4" + "glob": "^6.0.1" } } } }, "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "requires": { - "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.3", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "arr-diff": { @@ -10449,7 +10011,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "requires": { - "ms": "2.1.2" + "ms": "^2.1.1" } }, "ms": { @@ -10499,11 +10061,11 @@ "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", "requires": { - "growly": "1.3.0", - "is-wsl": "1.1.0", - "semver": "5.7.1", - "shellwords": "0.1.1", - "which": "1.3.1" + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" }, "dependencies": { "semver": { @@ -10518,16 +10080,16 @@ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.13.0.tgz", "integrity": "sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ==", "requires": { - "detect-libc": "1.0.3", - "mkdirp": "0.5.4", - "needle": "2.3.3", - "nopt": "4.0.3", - "npm-packlist": "1.4.8", - "npmlog": "4.1.2", - "rc": "1.2.8", - "rimraf": "2.7.1", - "semver": "5.3.0", - "tar": "4.4.13" + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" }, "dependencies": { "nopt": { @@ -10552,17 +10114,17 @@ "resolved": "https://registry.npmjs.org/nodejs-mobile-gyp/-/nodejs-mobile-gyp-0.3.1.tgz", "integrity": "sha512-AcS4xbeWjOIfLQ+xZp0m7zEhd263v33O54OeJz/ObzpqvN1LXoph7ceeTQVrmp1YL0zSoUxX3s8AinotR8OgVg==", "requires": { - "glob": "7.1.6", - "graceful-fs": "4.2.3", - "mkdirp": "0.5.4", - "nopt": "3.0.6", - "npmlog": "4.1.2", - "osenv": "0.1.5", - "request": "2.88.2", - "rimraf": "2.7.1", - "semver": "5.3.0", - "tar": "4.4.13", - "which": "1.3.1" + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^4.4.8", + "which": "1" } }, "nodejs-mobile-react-native": { @@ -10570,10 +10132,10 @@ "resolved": "https://registry.npmjs.org/nodejs-mobile-react-native/-/nodejs-mobile-react-native-0.4.3.tgz", "integrity": "sha512-UL71tlDG10OPW/Dk0QYuQq5l0HqgHpYew+4BL1TildscWrBDsbHxiKhkH5/QJbN4kwDVBLi9gU4U/lknQoo4Ew==", "requires": { - "mkdirp": "0.5.4", - "ncp": "2.0.0", - "nodejs-mobile-gyp": "0.3.1", - "xcode": "0.9.3" + "mkdirp": "^0.5.1", + "ncp": "^2.0.0", + "nodejs-mobile-gyp": "^0.3.1", + "xcode": "^0.9.3" } }, "nopt": { @@ -10581,7 +10143,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "normalize-package-data": { @@ -10589,10 +10151,10 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "requires": { - "hosted-git-info": "2.8.8", - "resolve": "1.15.1", - "semver": "5.3.0", - "validate-npm-package-license": "3.0.4" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { @@ -10600,7 +10162,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "npm-bundled": { @@ -10631,7 +10193,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "npmlog": { @@ -10639,10 +10201,10 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "requires": { - "are-we-there-yet": "1.1.5", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "nullthrows": { @@ -10676,9 +10238,9 @@ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { "define-property": { @@ -10686,15 +10248,15 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-keys": { @@ -10712,7 +10274,7 @@ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.0" } }, "object.assign": { @@ -10720,22 +10282,21 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "requires": { - "define-properties": "1.1.3", - "function-bind": "1.1.1", - "has-symbols": "1.0.1", - "object-keys": "1.1.1" + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" } }, "object.entries": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", - "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", "dev": true, "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.17.5", - "function-bind": "1.1.1", - "has": "1.0.3" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "has": "^1.0.3" } }, "object.fromentries": { @@ -10744,10 +10305,10 @@ "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", "dev": true, "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.17.5", - "function-bind": "1.1.1", - "has": "1.0.3" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" } }, "object.getownpropertydescriptors": { @@ -10756,8 +10317,8 @@ "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", "dev": true, "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.17.5" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "object.omit": { @@ -10765,8 +10326,8 @@ "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "object.pick": { @@ -10774,7 +10335,7 @@ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, "object.values": { @@ -10783,10 +10344,10 @@ "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", "dev": true, "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.17.5", - "function-bind": "1.1.1", - "has": "1.0.3" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" } }, "obv": { @@ -10812,7 +10373,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "onetime": { @@ -10820,7 +10381,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "opn": { @@ -10828,7 +10389,7 @@ "resolved": "https://registry.npmjs.org/opn/-/opn-3.0.3.tgz", "integrity": "sha1-ttmec5n3jWXDuq/+8fsojpuFJDo=", "requires": { - "object-assign": "4.1.1" + "object-assign": "^4.0.1" } }, "optimist": { @@ -10836,8 +10397,8 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" }, "dependencies": { "minimist": { @@ -10858,12 +10419,12 @@ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "word-wrap": "1.2.3" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" } }, "options": { @@ -10881,9 +10442,9 @@ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" }, "dependencies": { "cross-spawn": { @@ -10891,9 +10452,9 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "lru-cache": "4.1.5", - "shebang-command": "1.2.0", - "which": "1.3.1" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "execa": { @@ -10901,13 +10462,13 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" } }, "get-stream": { @@ -10927,8 +10488,8 @@ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, "p-each-series": { @@ -10937,7 +10498,7 @@ "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", "dev": true, "requires": { - "p-reduce": "1.0.0" + "p-reduce": "^1.0.0" } }, "p-finally": { @@ -10950,7 +10511,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -10958,7 +10519,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "p-limit": "1.3.0" + "p-limit": "^1.1.0" } }, "p-reduce": { @@ -10979,17 +10540,17 @@ "integrity": "sha512-gkN3UDlyofG81IRhxLnonSIi8BBrwcPlKMJS6tcJRubofyekqQPMdB5LXPrmCkeu/m/YKx5PzkUVQLezda5/JQ==", "dev": true, "requires": { - "p-limit": "2.2.2", - "p-reflect": "2.1.0" + "p-limit": "^2.2.0", + "p-reflect": "^2.0.0" }, "dependencies": { "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "p-try": "2.2.0" + "p-try": "^2.0.0" } }, "p-try": { @@ -11011,7 +10572,7 @@ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { - "callsites": "3.1.0" + "callsites": "^3.0.0" }, "dependencies": { "callsites": { @@ -11028,12 +10589,12 @@ "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", "dev": true, "requires": { - "character-entities": "1.2.4", - "character-entities-legacy": "1.1.4", - "character-reference-invalid": "1.1.4", - "is-alphanumerical": "1.0.4", - "is-decimal": "1.0.4", - "is-hexadecimal": "1.0.4" + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" } }, "parse-glob": { @@ -11041,10 +10602,10 @@ "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" } }, "parse-json": { @@ -11052,8 +10613,8 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "requires": { - "error-ex": "1.3.2", - "json-parse-better-errors": "1.0.2" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, "parse-node-version": { @@ -11108,7 +10669,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "requires": { - "pify": "2.3.0" + "pify": "^2.0.0" } }, "pathington": { @@ -11158,7 +10719,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pirates": { @@ -11166,7 +10727,7 @@ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", "requires": { - "node-modules-regexp": "1.0.0" + "node-modules-regexp": "^1.0.0" } }, "pkg-dir": { @@ -11174,7 +10735,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "requires": { - "find-up": "3.0.0" + "find-up": "^3.0.0" }, "dependencies": { "find-up": { @@ -11182,7 +10743,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "locate-path": "3.0.0" + "locate-path": "^3.0.0" } }, "locate-path": { @@ -11190,16 +10751,16 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "requires": { - "p-locate": "3.0.0", - "path-exists": "3.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { - "p-try": "2.2.0" + "p-try": "^2.0.0" } }, "p-locate": { @@ -11207,7 +10768,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "requires": { - "p-limit": "2.2.2" + "p-limit": "^2.0.0" } }, "p-try": { @@ -11224,7 +10785,7 @@ "requires": { "base64-js": "1.1.2", "xmlbuilder": "8.2.2", - "xmldom": "0.1.31" + "xmldom": "0.1.x" } }, "plugin-error": { @@ -11232,11 +10793,11 @@ "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", "requires": { - "ansi-cyan": "0.1.1", - "ansi-red": "0.1.1", - "arr-diff": "1.1.0", - "arr-union": "2.1.0", - "extend-shallow": "1.1.4" + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" }, "dependencies": { "arr-diff": { @@ -11244,8 +10805,8 @@ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", "requires": { - "arr-flatten": "1.1.0", - "array-slice": "0.2.3" + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" } }, "arr-union": { @@ -11258,7 +10819,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", "requires": { - "kind-of": "1.1.0" + "kind-of": "^1.1.0" } }, "kind-of": { @@ -11295,8 +10856,8 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.0.0-alpha.6.tgz", "integrity": "sha512-zG2m6YJeuzwBFqb5EIdmwYVf30sap+iMRuYNPytOccEXZMAJbPIFGKVJ/U0WjQegmnQbRo9CI7j6j3HtDaifiA==", "requires": { - "ansi-regex": "4.1.0", - "ansi-styles": "3.2.1" + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0" }, "dependencies": { "ansi-regex": { @@ -11309,16 +10870,11 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } } } }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -11339,7 +10895,7 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "requires": { - "asap": "2.0.6" + "asap": "~2.0.3" } }, "promise-polyfill": { @@ -11354,8 +10910,8 @@ "integrity": "sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA==", "dev": true, "requires": { - "kleur": "3.0.3", - "sisteransi": "1.0.5" + "kleur": "^3.0.3", + "sisteransi": "^1.0.4" } }, "prop-types": { @@ -11363,9 +10919,9 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", "requires": { - "loose-envify": "1.4.0", - "object-assign": "4.1.1", - "react-is": "16.13.1" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" } }, "proper-lockfile": { @@ -11374,9 +10930,9 @@ "integrity": "sha512-iMghHHXv2bsxl6NchhEaFck8tvX3F9cknEEh1SUpguUOBjN7PAAW9BLzmbc1g/mCD1gY3EE2EABBHPJfFdHFmA==", "dev": true, "requires": { - "graceful-fs": "4.2.3", - "retry": "0.12.0", - "signal-exit": "3.0.2" + "graceful-fs": "^4.1.11", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" } }, "proto-list": { @@ -11400,8 +10956,8 @@ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "requires": { - "end-of-stream": "1.4.4", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "punycode": { @@ -11415,18 +10971,18 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, "randomatic": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", "requires": { - "is-number": "4.0.0", - "kind-of": "6.0.3", - "math-random": "1.0.4" + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" }, "dependencies": { "is-number": { @@ -11455,13 +11011,6 @@ "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - } } }, "react": { @@ -11469,10 +11018,10 @@ "resolved": "https://registry.npmjs.org/react/-/react-16.8.3.tgz", "integrity": "sha512-3UoSIsEq8yTJuSu0luO1QQWYbgGEILm+eJl2QN/VLDi7hL+EN18M3q3oVZwmVzzBJ3DkM7RMdRwBmZZ+b4IzSA==", "requires": { - "loose-envify": "1.4.0", - "object-assign": "4.1.1", - "prop-types": "15.7.2", - "scheduler": "0.13.6" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.13.3" } }, "react-clone-referenced-element": { @@ -11490,8 +11039,8 @@ "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-3.6.3.tgz", "integrity": "sha512-+P+eFy/yo8Z/UH9J0DqHZuUM5+RI2wl249TNvMx3J2jpUomLQa4Zxl56GEotGfw3PIP1eI+hVf1s53FlUONStQ==", "requires": { - "shell-quote": "1.6.1", - "ws": "3.3.3" + "shell-quote": "^1.6.1", + "ws": "^3.3.1" }, "dependencies": { "ultron": { @@ -11504,9 +11053,9 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "requires": { - "async-limiter": "1.0.1", - "safe-buffer": "5.1.2", - "ultron": "1.1.1" + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" } } } @@ -11521,56 +11070,56 @@ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.59.10.tgz", "integrity": "sha512-guB9YW+pBqS1dnfZ4ntzjINopiCUAbdmshU2wMWD1W32fRczLAopi/7Q2iHKP8LTCdxuYZV3fa9Mew5PSuANAw==", "requires": { - "@babel/runtime": "7.9.2", - "@react-native-community/cli": "1.12.0", - "absolute-path": "0.0.0", - "art": "0.10.3", - "base64-js": "1.1.2", - "chalk": "2.4.2", - "commander": "2.20.3", - "compression": "1.7.4", - "connect": "3.7.0", - "create-react-class": "15.6.3", - "debug": "2.6.9", - "denodeify": "1.2.1", - "errorhandler": "1.5.1", - "escape-string-regexp": "1.0.5", - "event-target-shim": "1.1.1", - "fbjs": "1.0.0", - "fbjs-scripts": "1.2.0", - "fs-extra": "1.0.0", - "glob": "7.1.6", - "graceful-fs": "4.2.3", - "inquirer": "3.3.0", - "invariant": "2.2.4", - "lodash": "4.17.15", + "@babel/runtime": "^7.0.0", + "@react-native-community/cli": "^1.2.1", + "absolute-path": "^0.0.0", + "art": "^0.10.0", + "base64-js": "^1.1.2", + "chalk": "^2.4.1", + "commander": "^2.9.0", + "compression": "^1.7.1", + "connect": "^3.6.5", + "create-react-class": "^15.6.3", + "debug": "^2.2.0", + "denodeify": "^1.2.1", + "errorhandler": "^1.5.0", + "escape-string-regexp": "^1.0.5", + "event-target-shim": "^1.0.5", + "fbjs": "^1.0.0", + "fbjs-scripts": "^1.0.0", + "fs-extra": "^1.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.3", + "inquirer": "^3.0.6", + "invariant": "^2.2.4", + "lodash": "^4.17.5", "metro-babel-register": "0.51.0", "metro-react-native-babel-transformer": "0.51.0", - "mime": "1.6.0", - "minimist": "1.2.5", - "mkdirp": "0.5.4", - "morgan": "1.10.0", - "node-fetch": "2.6.0", - "node-notifier": "5.4.3", - "npmlog": "2.0.4", - "nullthrows": "1.1.1", - "opn": "3.0.3", - "optimist": "0.6.1", - "plist": "3.0.1", + "mime": "^1.3.4", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "morgan": "^1.9.0", + "node-fetch": "^2.2.0", + "node-notifier": "^5.2.1", + "npmlog": "^2.0.4", + "nullthrows": "^1.1.0", + "opn": "^3.0.2", + "optimist": "^0.6.1", + "plist": "^3.0.0", "pretty-format": "24.0.0-alpha.6", - "promise": "7.3.1", - "prop-types": "15.7.2", - "react-clone-referenced-element": "1.1.0", - "react-devtools-core": "3.6.3", - "regenerator-runtime": "0.11.1", - "rimraf": "2.7.1", - "semver": "5.3.0", - "serve-static": "1.14.1", + "promise": "^7.1.1", + "prop-types": "^15.5.8", + "react-clone-referenced-element": "^1.0.1", + "react-devtools-core": "^3.6.0", + "regenerator-runtime": "^0.11.0", + "rimraf": "^2.5.4", + "semver": "^5.0.3", + "serve-static": "^1.13.1", "shell-quote": "1.6.1", - "stacktrace-parser": "0.1.9", - "ws": "1.1.5", - "xmldoc": "0.4.0", - "yargs": "9.0.1" + "stacktrace-parser": "^0.1.3", + "ws": "^1.1.5", + "xmldoc": "^0.4.0", + "yargs": "^9.0.0" }, "dependencies": { "gauge": { @@ -11578,11 +11127,11 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", "integrity": "sha1-6c7FSD09TuDvRLYKfZnkk14TbZM=", "requires": { - "ansi": "0.3.1", - "has-unicode": "2.0.1", - "lodash.pad": "4.5.1", - "lodash.padend": "4.6.1", - "lodash.padstart": "4.6.1" + "ansi": "^0.3.0", + "has-unicode": "^2.0.0", + "lodash.pad": "^4.1.0", + "lodash.padend": "^4.1.0", + "lodash.padstart": "^4.1.0" } }, "npmlog": { @@ -11590,9 +11139,9 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.4.tgz", "integrity": "sha1-mLUlMPJRTKkNCexbIsiEZyI3VpI=", "requires": { - "ansi": "0.3.1", - "are-we-there-yet": "1.1.5", - "gauge": "1.2.7" + "ansi": "~0.3.1", + "are-we-there-yet": "~1.1.2", + "gauge": "~1.2.5" } }, "plist": { @@ -11600,9 +11149,9 @@ "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", "requires": { - "base64-js": "1.3.1", - "xmlbuilder": "9.0.7", - "xmldom": "0.1.31" + "base64-js": "^1.2.3", + "xmlbuilder": "^9.0.7", + "xmldom": "0.1.x" }, "dependencies": { "base64-js": { @@ -11624,18 +11173,21 @@ "resolved": "https://registry.npmjs.org/react-native-animatable/-/react-native-animatable-1.3.3.tgz", "integrity": "sha512-2ckIxZQAsvWn25Ho+DK3d1mXIgj7tITkrS4pYDvx96WyOttSvzzFeQnM2od0+FUMzILbdHDsDEqZvnz1DYNQ1w==", "requires": { - "prop-types": "15.7.2" + "prop-types": "^15.7.2" } }, "react-native-calendars": { - "version": "1.264.0", - "resolved": "https://registry.npmjs.org/react-native-calendars/-/react-native-calendars-1.264.0.tgz", - "integrity": "sha512-NHNekv1iwHMI+evr8dDLFqCdvnCWGlBxPKO0/bw1+HDy4uukuab//akoOx9/GGl/3+XV6MVTLdda+qjT6pD2Bg==", + "version": "1.314.0", + "resolved": "https://registry.npmjs.org/react-native-calendars/-/react-native-calendars-1.314.0.tgz", + "integrity": "sha512-LlKXikpbfGkZxZRnQ6sraSlDd7iXAF1/GewUwB8G+DyO5GRGCZVN1EcvuAuJEgJLjn6782HvVDLAbyr8ScQjxg==", "requires": { - "hoist-non-react-statics": "3.3.2", - "lodash": "4.17.15", - "prop-types": "15.7.2", - "xdate": "0.8.2" + "hoist-non-react-statics": "^3.3.1", + "immutable": "^4.0.0-rc.12", + "lodash": "^4.17.15", + "moment": "^2.24.0", + "prop-types": "^15.5.10", + "react-native-swipe-gestures": "^1.0.5", + "xdate": "^0.8.0" } }, "react-native-document-picker": { @@ -11648,8 +11200,8 @@ "resolved": "https://registry.npmjs.org/react-native-fs/-/react-native-fs-2.16.6.tgz", "integrity": "sha512-ZWOooD1AuFoAGY3HS2GY7Qx2LZo4oIg6AK0wbC68detxwvX75R/q9lRqThXNKP6vIo2VHWa0fYUo/SrLw80E8w==", "requires": { - "base-64": "0.1.0", - "utf8": "3.0.0" + "base-64": "^0.1.0", + "utf8": "^3.0.0" } }, "react-native-hyperlink": { @@ -11657,8 +11209,8 @@ "resolved": "https://registry.npmjs.org/react-native-hyperlink/-/react-native-hyperlink-0.0.14.tgz", "integrity": "sha1-E4u/5bQQZn0eN/BKK0cTFjqw7YE=", "requires": { - "linkify-it": "1.2.4", - "mdurl": "1.0.1" + "linkify-it": "^1.2.0", + "mdurl": "^1.0.0" } }, "react-native-modal": { @@ -11667,7 +11219,7 @@ "integrity": "sha512-DsF4r8ScW0y+bn+7ThzBLP4az/hsi+e9ge79vExkjpw6uNFwNWQPY21BRE4uyip7PpsqEDSyvVb8GH3UXZIYcA==", "requires": { "prop-types": "15.5.10", - "react-native-animatable": "1.3.3" + "react-native-animatable": "^1.2.3" }, "dependencies": { "core-js": { @@ -11680,13 +11232,13 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.4.0", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.21" + "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" } }, "prop-types": { @@ -11694,8 +11246,8 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", "requires": { - "fbjs": "0.8.17", - "loose-envify": "1.4.0" + "fbjs": "^0.8.9", + "loose-envify": "^1.3.1" } } } @@ -11705,7 +11257,7 @@ "resolved": "https://registry.npmjs.org/react-native-modal-datetime-picker-nevo/-/react-native-modal-datetime-picker-nevo-4.11.0.tgz", "integrity": "sha512-nDUlHyUoRHO+fzt0cc2g+a8kYx+RZQZnjVY01jDIspAbRGTJuCt9x+LjTvhuDQpoXEJYvBEw1W7dz9mn3tNsoQ==", "requires": { - "moment": "2.24.0", + "moment": "^2.19.0", "prop-types": "15.5.10", "react-native-modal": "3.1.0" }, @@ -11720,13 +11272,13 @@ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.4.0", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.21" + "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" } }, "prop-types": { @@ -11734,16 +11286,17 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", "requires": { - "fbjs": "0.8.17", - "loose-envify": "1.4.0" + "fbjs": "^0.8.9", + "loose-envify": "^1.3.1" } } } }, "react-native-push-notification": { "version": "github:sdvig/react-native-push-notification#1340b365c15ed3aab79ef0521cb694af8fd5eedb", + "from": "github:sdvig/react-native-push-notification", "requires": { - "@react-native-community/push-notification-ios": "1.1.0" + "@react-native-community/push-notification-ios": "^1.0.1" } }, "react-native-restart": { @@ -11756,14 +11309,19 @@ "resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-1.2.1.tgz", "integrity": "sha512-V9q1FM+LuYJ65qN3k6BLWs17mIbJCzGyMOhF3rb4MIQXdJfCUbtkDX9aaV86PzcsL1EudCA53HVTJBmWPDed0Q==" }, + "react-native-swipe-gestures": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/react-native-swipe-gestures/-/react-native-swipe-gestures-1.0.5.tgz", + "integrity": "sha512-Ns7Bn9H/Tyw278+5SQx9oAblDZ7JixyzeOczcBK8dipQk2pD7Djkcfnf1nB/8RErAmMLL9iXgW0QHqiII8AhKw==" + }, "react-native-vector-icons": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-6.6.0.tgz", - "integrity": "sha512-MImKVx8JEvVVBnaShMr7/yTX4Y062JZMupht1T+IEgbqBj4aQeQ1z2SH4VHWKNtWtppk4kz9gYyUiMWqx6tNSw==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-6.4.2.tgz", + "integrity": "sha512-G7Y5HksOQkCanFWKJ+fjwP38XL8tQREOSnw7jrbq28AFrrv41YtafOF4uDSDS7HxMRXs17HeEzn24OzJb63iuA==", "requires": { - "lodash": "4.17.15", - "prop-types": "15.7.2", - "yargs": "13.3.2" + "lodash": "^4.0.0", + "prop-types": "^15.6.2", + "yargs": "^13.2.2" }, "dependencies": { "ansi-regex": { @@ -11776,7 +11334,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "camelcase": { @@ -11789,9 +11347,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "requires": { - "string-width": "3.1.0", - "strip-ansi": "5.2.0", - "wrap-ansi": "5.1.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, "find-up": { @@ -11799,7 +11357,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "locate-path": "3.0.0" + "locate-path": "^3.0.0" } }, "get-caller-file": { @@ -11817,16 +11375,16 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "requires": { - "p-locate": "3.0.0", - "path-exists": "3.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "requires": { - "p-try": "2.2.0" + "p-try": "^2.0.0" } }, "p-locate": { @@ -11834,7 +11392,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "requires": { - "p-limit": "2.2.2" + "p-limit": "^2.0.0" } }, "p-try": { @@ -11852,9 +11410,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { - "emoji-regex": "7.0.3", - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "5.2.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, "strip-ansi": { @@ -11862,7 +11420,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "ansi-regex": "4.1.0" + "ansi-regex": "^4.1.0" } }, "wrap-ansi": { @@ -11870,9 +11428,9 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "requires": { - "ansi-styles": "3.2.1", - "string-width": "3.1.0", - "strip-ansi": "5.2.0" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" } }, "y18n": { @@ -11885,16 +11443,16 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "requires": { - "cliui": "5.0.0", - "find-up": "3.0.0", - "get-caller-file": "2.0.5", - "require-directory": "2.1.1", - "require-main-filename": "2.0.0", - "set-blocking": "2.0.0", - "string-width": "3.1.0", - "which-module": "2.0.0", - "y18n": "4.0.0", - "yargs-parser": "13.1.2" + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, "yargs-parser": { @@ -11902,8 +11460,8 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "requires": { - "camelcase": "5.3.1", - "decamelize": "1.2.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } @@ -11914,19 +11472,19 @@ "integrity": "sha512-Hgglpm0XIUOkhYLSFaa+YG9v+0excDgLO4/K2zPv3NFEpNo0q6BAsHf/JspeobMf3ju65al9hf134P5Mvu1C3w==", "dev": true, "requires": { - "chalk": "2.4.2", - "commander": "3.0.2", - "common-tags": "1.8.0", - "detect-indent": "6.0.0", - "dottie": "2.0.2", - "js-beautify": "1.10.3", - "lodash.flattendeep": "4.4.0", - "lodash.uniq": "4.5.0", - "p-settle": "3.1.0", - "pbxproj-dom": "1.2.0", - "plist": "3.0.1", - "resolve-from": "5.0.0", - "semver": "6.3.0" + "chalk": "^2.4.1", + "commander": "^3.0.0", + "common-tags": "^1.4.0", + "detect-indent": "^6.0.0", + "dottie": "^2.0.0", + "js-beautify": "^1.7.4", + "lodash.flattendeep": "^4.4.0", + "lodash.uniq": "^4.5.0", + "p-settle": "^3.0.0", + "pbxproj-dom": "^1.0.11", + "plist": "^3.0.1", + "resolve-from": "^5.0.0", + "semver": "^6.0.0" }, "dependencies": { "base64-js": { @@ -11947,9 +11505,9 @@ "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", "dev": true, "requires": { - "base64-js": "1.3.1", - "xmlbuilder": "9.0.7", - "xmldom": "0.1.31" + "base64-js": "^1.2.3", + "xmlbuilder": "^9.0.7", + "xmldom": "0.1.x" } }, "resolve-from": { @@ -11977,8 +11535,8 @@ "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-1.1.8.tgz", "integrity": "sha1-nb/Z2SdSjDqp9ETkVYw3gwq4wmo=", "requires": { - "lodash": "4.17.15", - "react-deep-force-update": "1.1.2" + "lodash": "^4.6.1", + "react-deep-force-update": "^1.0.0" } }, "react-redux": { @@ -11986,12 +11544,12 @@ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-6.0.1.tgz", "integrity": "sha512-T52I52Kxhbqy/6TEfBv85rQSDz6+Y28V/pf52vDWs1YRXG19mcFOGfHnY2HsNFHyhP+ST34Aih98fvt6tqwVcQ==", "requires": { - "@babel/runtime": "7.9.2", - "hoist-non-react-statics": "3.3.2", - "invariant": "2.2.4", - "loose-envify": "1.4.0", - "prop-types": "15.7.2", - "react-is": "16.13.1" + "@babel/runtime": "^7.3.1", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^16.8.2" } }, "react-test-renderer": { @@ -12000,10 +11558,10 @@ "integrity": "sha512-rjJGYebduKNZH0k1bUivVrRLX04JfIQ0FKJLPK10TAb06XWhfi4gTobooF9K/DEFNW98iGac3OSxkfIJUN9Mdg==", "dev": true, "requires": { - "object-assign": "4.1.1", - "prop-types": "15.7.2", - "react-is": "16.13.1", - "scheduler": "0.13.6" + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "react-is": "^16.8.3", + "scheduler": "^0.13.3" } }, "react-transform-hmr": { @@ -12011,8 +11569,8 @@ "resolved": "https://registry.npmjs.org/react-transform-hmr/-/react-transform-hmr-1.0.4.tgz", "integrity": "sha1-4aQL0Krvxy6N/Xp82gmvhQZjl7s=", "requires": { - "global": "4.4.0", - "react-proxy": "1.1.8" + "global": "^4.3.0", + "react-proxy": "^1.1.7" } }, "read-pkg": { @@ -12020,9 +11578,9 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.5.0", - "path-type": "2.0.0" + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" } }, "read-pkg-up": { @@ -12030,8 +11588,8 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" } }, "readable-stream": { @@ -12039,13 +11597,13 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.4", - "isarray": "1.0.0", - "process-nextick-args": "2.0.1", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "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" }, "dependencies": { "inherits": { @@ -12066,8 +11624,8 @@ "resolved": "https://registry.npmjs.org/realm/-/realm-3.6.5.tgz", "integrity": "sha512-rFk3P4hh0RXWU8rEcNeX5MnC+H5yUBxzUIgoRgYDR/gJ/znrB3k0jTtZYhUcCCCRIRPkE91d1omX9dIvT84R+Q==", "requires": { - "command-line-args": "4.0.7", - "decompress": "4.2.0", + "command-line-args": "^4.0.6", + "decompress": "^4.2.0", "deepmerge": "2.1.0", "deprecated-react-native-listview": "0.0.6", "fs-extra": "^4.0.3", @@ -12100,8 +11658,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } } } @@ -12112,7 +11670,7 @@ "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", "dev": true, "requires": { - "util.promisify": "1.0.1" + "util.promisify": "^1.0.0" } }, "redux": { @@ -12120,8 +11678,8 @@ "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz", "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==", "requires": { - "loose-envify": "1.4.0", - "symbol-observable": "1.2.0" + "loose-envify": "^1.4.0", + "symbol-observable": "^1.2.0" } }, "redux-devtools-extension": { @@ -12134,8 +11692,8 @@ "resolved": "https://registry.npmjs.org/redux-immutable-state-invariant/-/redux-immutable-state-invariant-2.1.0.tgz", "integrity": "sha512-3czbDKs35FwiBRsx/3KabUk5zSOoTXC+cgVofGkpBNv3jQcqIe5JrHcF5AmVt7B/4hyJ8MijBIpCJ8cife6yJg==", "requires": { - "invariant": "2.2.4", - "json-stringify-safe": "5.0.1" + "invariant": "^2.1.0", + "json-stringify-safe": "^5.0.1" } }, "redux-starter-kit": { @@ -12143,12 +11701,12 @@ "resolved": "https://registry.npmjs.org/redux-starter-kit/-/redux-starter-kit-0.6.3.tgz", "integrity": "sha512-A+7UjgmFrWdKksHl8xTGxDw6Bv8QJ+wrTubBscFNs5gIezGHOdwjqTTSVX4xMgQkgPtVfSPj/Bo+5o6f71/eTA==", "requires": { - "immer": "2.1.5", - "redux": "4.0.5", - "redux-devtools-extension": "2.13.8", - "redux-immutable-state-invariant": "2.1.0", - "redux-thunk": "2.3.0", - "selectorator": "4.0.3" + "immer": "^2.1.5", + "redux": "^4.0.0", + "redux-devtools-extension": "^2.13.8", + "redux-immutable-state-invariant": "^2.1.0", + "redux-thunk": "^2.2.0", + "selectorator": "^4.0.3" } }, "redux-thunk": { @@ -12157,16 +11715,16 @@ "integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==" }, "regenerate": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", - "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", + "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==" }, "regenerate-unicode-properties": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", "requires": { - "regenerate": "1.4.0" + "regenerate": "^1.4.0" } }, "regenerator-runtime": { @@ -12175,12 +11733,11 @@ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" }, "regenerator-transform": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", - "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", "requires": { - "@babel/runtime": "7.9.2", - "private": "0.1.8" + "@babel/runtime": "^7.8.4" } }, "regex-cache": { @@ -12188,7 +11745,7 @@ "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "regex-not": { @@ -12196,8 +11753,8 @@ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, "regexp.prototype.flags": { @@ -12206,8 +11763,8 @@ "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", "dev": true, "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.17.5" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" } }, "regexpp": { @@ -12221,25 +11778,25 @@ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", "requires": { - "regenerate": "1.4.0", - "regenerate-unicode-properties": "8.2.0", - "regjsgen": "0.5.1", - "regjsparser": "0.6.4", - "unicode-match-property-ecmascript": "1.0.4", - "unicode-match-property-value-ecmascript": "1.2.0" + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" } }, "regjsgen": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", - "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==" + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==" }, "regjsparser": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", "requires": { - "jsesc": "0.5.0" + "jsesc": "~0.5.0" }, "dependencies": { "jsesc": { @@ -12255,21 +11812,21 @@ "integrity": "sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==", "dev": true, "requires": { - "collapse-white-space": "1.0.6", - "is-alphabetical": "1.0.4", - "is-decimal": "1.0.4", - "is-whitespace-character": "1.0.4", - "is-word-character": "1.0.4", - "markdown-escapes": "1.0.4", - "parse-entities": "1.2.2", - "repeat-string": "1.6.1", - "state-toggle": "1.0.3", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^1.1.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", "trim": "0.0.1", - "trim-trailing-lines": "1.1.3", - "unherit": "1.1.3", - "unist-util-remove-position": "1.1.4", - "vfile-location": "2.0.6", - "xtend": "4.0.2" + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0", + "xtend": "^4.0.1" } }, "remark-stringify": { @@ -12278,20 +11835,20 @@ "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", "dev": true, "requires": { - "ccount": "1.0.5", - "is-alphanumeric": "1.0.0", - "is-decimal": "1.0.4", - "is-whitespace-character": "1.0.4", - "longest-streak": "2.0.4", - "markdown-escapes": "1.0.4", - "markdown-table": "1.1.3", - "mdast-util-compact": "1.0.4", - "parse-entities": "1.2.2", - "repeat-string": "1.6.1", - "state-toggle": "1.0.3", - "stringify-entities": "1.3.2", - "unherit": "1.1.3", - "xtend": "4.0.2" + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" } }, "remove-trailing-separator": { @@ -12320,46 +11877,46 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.9.1", - "caseless": "0.12.0", - "combined-stream": "1.0.8", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.3", - "har-validator": "5.1.3", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.26", - "oauth-sign": "0.9.0", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.1.2", - "tough-cookie": "2.5.0", - "tunnel-agent": "0.6.0", - "uuid": "3.4.0" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" } }, "request-promise-core": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", - "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", "dev": true, "requires": { - "lodash": "4.17.15" + "lodash": "^4.17.19" } }, "request-promise-native": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", - "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", "dev": true, "requires": { - "request-promise-core": "1.1.3", - "stealthy-require": "1.1.1", - "tough-cookie": "2.5.0" + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" } }, "require-directory": { @@ -12383,11 +11940,11 @@ "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" }, "resolve": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", - "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "requires": { - "path-parse": "1.0.6" + "path-parse": "^1.0.6" } }, "resolve-cwd": { @@ -12396,7 +11953,7 @@ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, "requires": { - "resolve-from": "3.0.0" + "resolve-from": "^3.0.0" } }, "resolve-from": { @@ -12414,8 +11971,8 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" } }, "ret": { @@ -12434,7 +11991,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { - "glob": "7.1.6" + "glob": "^7.1.3" } }, "rsvp": { @@ -12443,12 +12000,9 @@ "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==" }, "run-async": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", - "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", - "requires": { - "is-promise": "2.1.0" - } + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" }, "rx-lite": { "version": "4.0.8", @@ -12460,16 +12014,16 @@ "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", "requires": { - "rx-lite": "4.0.8" + "rx-lite": "*" } }, "rxjs": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", + "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", "dev": true, "requires": { - "tslib": "1.11.1" + "tslib": "^1.9.0" } }, "safe-buffer": { @@ -12489,7 +12043,7 @@ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "requires": { - "ret": "0.1.15" + "ret": "~0.1.10" } }, "safer-buffer": { @@ -12502,16 +12056,16 @@ "resolved": "https://registry.npmjs.org/sane/-/sane-3.1.0.tgz", "integrity": "sha512-G5GClRRxT1cELXfdAq7UKtUsv8q/ZC5k8lQGmjEm4HcAl3HzBy68iglyNCmw4+0tiXPCBZntslHlRhbnsSws+Q==", "requires": { - "anymatch": "2.0.0", - "capture-exit": "1.2.0", - "exec-sh": "0.2.2", - "execa": "1.0.0", - "fb-watchman": "2.0.1", - "fsevents": "1.2.12", - "micromatch": "3.1.10", - "minimist": "1.2.5", - "walker": "1.0.7", - "watch": "0.18.0" + "anymatch": "^2.0.0", + "capture-exit": "^1.2.0", + "exec-sh": "^0.2.0", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.3", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5", + "watch": "~0.18.0" }, "dependencies": { "arr-diff": { @@ -12529,16 +12083,16 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "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.3", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "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" }, "dependencies": { "extend-shallow": { @@ -12546,7 +12100,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -12556,13 +12110,13 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -12570,7 +12124,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -12578,7 +12132,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -12586,7 +12140,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -12594,7 +12148,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -12604,7 +12158,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -12612,7 +12166,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -12622,9 +12176,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -12639,14 +12193,14 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { - "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.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" }, "dependencies": { "define-property": { @@ -12654,7 +12208,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -12662,7 +12216,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -12672,10 +12226,10 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -12683,7 +12237,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -12693,7 +12247,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -12701,7 +12255,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -12709,9 +12263,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-number": { @@ -12719,7 +12273,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -12727,7 +12281,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -12742,19 +12296,19 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.3", - "nanomatch": "1.2.13", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "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" } } } @@ -12765,7 +12319,7 @@ "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", "dev": true, "requires": { - "truncate-utf8-bytes": "1.0.2" + "truncate-utf8-bytes": "^1.0.0" } }, "sax": { @@ -12778,26 +12332,16 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", "requires": { - "loose-envify": "1.4.0", - "object-assign": "4.1.1" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" } }, "seek-bzip": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", - "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", "requires": { - "commander": "2.8.1" - }, - "dependencies": { - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "requires": { - "graceful-readlink": "1.0.1" - } - } + "commander": "^2.8.1" } }, "selectorator": { @@ -12805,10 +12349,10 @@ "resolved": "https://registry.npmjs.org/selectorator/-/selectorator-4.0.3.tgz", "integrity": "sha512-A8+paRhzTab4Qm/38RAVnCgEZFbpn5xIWLyTCDqvyU3Obhmo94RS6UK1H00bVH7+U609sOhqbFJha09POsWURA==", "requires": { - "fast-equals": "1.6.3", - "identitate": "1.0.1", - "reselect": "4.0.0", - "unchanged": "2.2.1" + "fast-equals": "^1.2.1", + "identitate": "^1.0.0", + "reselect": "^4.0.0", + "unchanged": "^2.0.1" } }, "semver": { @@ -12822,18 +12366,18 @@ "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "requires": { "debug": "2.6.9", - "depd": "1.1.2", - "destroy": "1.0.4", - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "etag": "1.8.1", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.7.3", + "http-errors": "~1.7.2", "mime": "1.6.0", "ms": "2.1.1", - "on-finished": "2.3.0", - "range-parser": "1.2.1", - "statuses": "1.5.0" + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" }, "dependencies": { "depd": { @@ -12858,9 +12402,9 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "requires": { - "encodeurl": "1.0.2", - "escape-html": "1.0.3", - "parseurl": "1.3.3", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", "send": "0.17.1" } }, @@ -12874,10 +12418,10 @@ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -12885,7 +12429,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -12905,7 +12449,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -12918,10 +12462,10 @@ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", "requires": { - "array-filter": "0.0.1", - "array-map": "0.0.0", - "array-reduce": "0.0.0", - "jsonify": "0.0.0" + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" } }, "shell-utils": { @@ -12930,7 +12474,7 @@ "integrity": "sha512-p1xuqhj3jgcXiV8wGoF1eL/NOvapN9tyGDoObqKwvZTUZn7fIzK75swLTEHfGa7sObeN9vxFplHw/zgYUYRTsg==", "dev": true, "requires": { - "lodash": "4.17.15" + "lodash": "4.x.x" } }, "shellwords": { @@ -12944,8 +12488,8 @@ "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", "dev": true, "requires": { - "es-abstract": "1.17.5", - "object-inspect": "1.7.0" + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" } }, "sigmund": { @@ -12955,9 +12499,9 @@ "dev": true }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, "simple-plist": { "version": "0.2.1", @@ -12986,9 +12530,9 @@ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "dev": true, "requires": { - "ansi-styles": "3.2.1", - "astral-regex": "1.0.0", - "is-fullwidth-code-point": "2.0.0" + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" }, "dependencies": { "ansi-styles": { @@ -12997,7 +12541,7 @@ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "is-fullwidth-code-point": { @@ -13018,14 +12562,14 @@ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.3", - "use": "3.1.1" + "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" }, "dependencies": { "define-property": { @@ -13033,7 +12577,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -13041,7 +12585,7 @@ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -13051,9 +12595,9 @@ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" }, "dependencies": { "define-property": { @@ -13061,7 +12605,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -13069,7 +12613,7 @@ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -13077,7 +12621,7 @@ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "kind-of": "6.0.3" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -13085,9 +12629,9 @@ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.3" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "kind-of": { @@ -13102,7 +12646,7 @@ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.2.0" } }, "source-map": { @@ -13115,20 +12659,20 @@ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "requires": { - "atob": "2.1.2", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "requires": { - "buffer-from": "1.1.1", - "source-map": "0.6.1" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" }, "dependencies": { "source-map": { @@ -13144,26 +12688,26 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.5" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "requires": { - "spdx-exceptions": "2.2.0", - "spdx-license-ids": "3.0.5" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { @@ -13176,7 +12720,7 @@ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "requires": { - "extend-shallow": "3.0.2" + "extend-shallow": "^3.0.0" } }, "sprintf-js": { @@ -13189,15 +12733,15 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "requires": { - "asn1": "0.2.4", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.2", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.2", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "safer-buffer": "2.1.2", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, "stack-utils": { @@ -13207,11 +12751,11 @@ "dev": true }, "stacktrace-parser": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.9.tgz", - "integrity": "sha512-DRy03ljj0367Ud3OAJHD6eVS/+CvMK2u/djVYuU37fHYcYHoZ8tkFyhbRf7PNG1h3bWLsw+SNTSXrPFe07A7aQ==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", "requires": { - "type-fest": "0.7.1" + "type-fest": "^0.7.1" } }, "state-toggle": { @@ -13225,8 +12769,8 @@ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { "define-property": { @@ -13234,7 +12778,7 @@ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -13266,8 +12810,8 @@ "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", "dev": true, "requires": { - "astral-regex": "1.0.0", - "strip-ansi": "4.0.0" + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -13282,7 +12826,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -13292,9 +12836,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string.prototype.matchall": { @@ -13303,32 +12847,32 @@ "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", "dev": true, "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.17.5", - "has-symbols": "1.0.1", - "internal-slot": "1.0.2", - "regexp.prototype.flags": "1.3.0", - "side-channel": "1.0.2" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2" } }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", "dev": true, "requires": { - "define-properties": "1.1.3", - "function-bind": "1.1.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", "dev": true, "requires": { - "define-properties": "1.1.3", - "function-bind": "1.1.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" } }, "string_decoder": { @@ -13336,7 +12880,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } }, "stringify-entities": { @@ -13345,10 +12889,10 @@ "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", "dev": true, "requires": { - "character-entities-html4": "1.1.4", - "character-entities-legacy": "1.1.4", - "is-alphanumerical": "1.0.4", - "is-hexadecimal": "1.0.4" + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-hexadecimal": "^1.0.0" } }, "strip-ansi": { @@ -13356,7 +12900,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -13364,7 +12908,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-dirs": { @@ -13372,7 +12916,7 @@ "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", "requires": { - "is-natural-number": "4.0.1" + "is-natural-number": "^4.0.1" } }, "strip-eof": { @@ -13406,7 +12950,7 @@ "resolved": "https://registry.npmjs.org/sympto/-/sympto-2.0.0.tgz", "integrity": "sha512-RZJfMKRfTStVUEdHZxiEE1Y7j7W7klhFjNy7JVCBiQ5PFQujD2MJ1C9OUr2aKavciGdQdaHO6/9X3fWaChzWHQ==", "requires": { - "js-joda": "1.11.0" + "js-joda": "^1.9.2" } }, "sync-request": { @@ -13414,9 +12958,9 @@ "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-3.0.1.tgz", "integrity": "sha1-yqEjWq+Im6UBB2oYNMQ2gwqC+3M=", "requires": { - "concat-stream": "1.6.2", - "http-response-object": "1.1.0", - "then-request": "2.2.0" + "concat-stream": "^1.4.7", + "http-response-object": "^1.0.1", + "then-request": "^2.0.1" } }, "table": { @@ -13425,22 +12969,22 @@ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, "requires": { - "ajv": "6.12.0", - "lodash": "4.17.15", - "slice-ansi": "2.1.0", - "string-width": "3.1.0" + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" }, "dependencies": { "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", "dev": true, "requires": { - "fast-deep-equal": "3.1.1", - "fast-json-stable-stringify": "2.1.0", - "json-schema-traverse": "0.4.1", - "uri-js": "4.2.2" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-regex": { @@ -13449,10 +12993,16 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "is-fullwidth-code-point": { @@ -13473,9 +13023,9 @@ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "emoji-regex": "7.0.3", - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "5.2.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, "strip-ansi": { @@ -13484,15 +13034,15 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "4.1.0" + "ansi-regex": "^4.1.0" } } } }, "tail": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tail/-/tail-2.0.3.tgz", - "integrity": "sha512-s9NOGkLqqiDEtBttQZI7acLS8ycYK5sTlDwNjGnpXG9c8AWj0cfAtwEIzo/hVRMMiC5EYz+bXaJWC1u1u0GPpQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/tail/-/tail-2.0.4.tgz", + "integrity": "sha512-xHkZdNWIzO++g+V/rHGqVoHd2LRxz+8t8bj6FGelfb8FHBjg5yjkX7Su/8sQSBo5alIspYkRp/fU0A2SM5h+5A==", "dev": true }, "tar": { @@ -13500,13 +13050,13 @@ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", "requires": { - "chownr": "1.1.4", - "fs-minipass": "1.2.7", - "minipass": "2.9.0", - "minizlib": "1.3.3", - "mkdirp": "0.5.4", - "safe-buffer": "5.1.2", - "yallist": "3.1.1" + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" } }, "tar-stream": { @@ -13514,13 +13064,13 @@ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", "requires": { - "bl": "1.2.2", - "buffer-alloc": "1.2.0", - "end-of-stream": "1.4.4", - "fs-constants": "1.0.0", - "readable-stream": "2.3.7", - "to-buffer": "1.1.1", - "xtend": "4.0.2" + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" } }, "telnet-client": { @@ -13529,7 +13079,7 @@ "integrity": "sha512-GSfdzQV0BKIYsmeXq7bJFJ2wHeJud6icaIxCUf6QCGQUD6R0BBGbT1+yLDhq67JRdgRpwyPwUbV7JxFeRrZomQ==", "dev": true, "requires": { - "bluebird": "3.5.5" + "bluebird": "3.5.x" }, "dependencies": { "bluebird": { @@ -13545,8 +13095,8 @@ "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", "requires": { - "os-tmpdir": "1.0.2", - "rimraf": "2.2.8" + "os-tmpdir": "^1.0.0", + "rimraf": "~2.2.6" }, "dependencies": { "rimraf": { @@ -13568,8 +13118,8 @@ "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", "dev": true, "requires": { - "temp-dir": "1.0.0", - "uuid": "3.4.0" + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" } }, "test-exclude": { @@ -13578,10 +13128,10 @@ "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", "dev": true, "requires": { - "glob": "7.1.6", - "minimatch": "3.0.4", - "read-pkg-up": "4.0.0", - "require-main-filename": "2.0.0" + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" }, "dependencies": { "find-up": { @@ -13590,7 +13140,7 @@ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "locate-path": "3.0.0" + "locate-path": "^3.0.0" } }, "load-json-file": { @@ -13599,10 +13149,10 @@ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { - "graceful-fs": "4.2.3", - "parse-json": "4.0.0", - "pify": "3.0.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, "locate-path": { @@ -13611,17 +13161,17 @@ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "p-locate": "3.0.0", - "path-exists": "3.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "p-try": "2.2.0" + "p-try": "^2.0.0" } }, "p-locate": { @@ -13630,7 +13180,7 @@ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "p-limit": "2.2.2" + "p-limit": "^2.0.0" } }, "p-try": { @@ -13645,7 +13195,7 @@ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" } }, "pify": { @@ -13660,9 +13210,9 @@ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "load-json-file": "4.0.0", - "normalize-package-data": "2.5.0", - "path-type": "3.0.0" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" } }, "read-pkg-up": { @@ -13671,8 +13221,8 @@ "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", "dev": true, "requires": { - "find-up": "3.0.0", - "read-pkg": "3.0.0" + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" } }, "require-main-filename": { @@ -13694,8 +13244,8 @@ "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=", "requires": { - "array-back": "1.0.4", - "typical": "2.6.1" + "array-back": "^1.0.3", + "typical": "^2.6.0" }, "dependencies": { "array-back": { @@ -13703,7 +13253,7 @@ "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", "requires": { - "typical": "2.6.1" + "typical": "^2.6.0" } } } @@ -13719,12 +13269,12 @@ "resolved": "https://registry.npmjs.org/then-request/-/then-request-2.2.0.tgz", "integrity": "sha1-ZnizL6DKIY/laZgbvYhxtZQGDYE=", "requires": { - "caseless": "0.11.0", - "concat-stream": "1.6.2", - "http-basic": "2.5.1", - "http-response-object": "1.1.0", - "promise": "7.3.1", - "qs": "6.5.2" + "caseless": "~0.11.0", + "concat-stream": "^1.4.7", + "http-basic": "^2.5.1", + "http-response-object": "^1.1.0", + "promise": "^7.1.1", + "qs": "^6.1.0" }, "dependencies": { "caseless": { @@ -13749,8 +13299,8 @@ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "requires": { - "readable-stream": "2.3.7", - "xtend": "4.0.2" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, "time-stamp": { @@ -13763,7 +13313,7 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "os-tmpdir": "1.0.2" + "os-tmpdir": "~1.0.2" } }, "tmpl": { @@ -13786,7 +13336,7 @@ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "to-regex": { @@ -13794,10 +13344,10 @@ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, "to-regex-range": { @@ -13805,8 +13355,8 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" }, "dependencies": { "is-number": { @@ -13814,7 +13364,7 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } } } @@ -13825,8 +13375,8 @@ "integrity": "sha512-z1Lfx60yAMDMmr+f426Y4yECsHdl8GVEAE+LymjRF5oOIZ7T4N20IxWNAxXLMRzP9jSSll38Z0fKVAhVLsdLOw==", "dev": true, "requires": { - "is-buffer": "2.0.4", - "vfile": "3.0.1" + "is-buffer": "^2.0.0", + "vfile": "^3.0.0" }, "dependencies": { "is-buffer": { @@ -13847,8 +13397,8 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "requires": { - "psl": "1.8.0", - "punycode": "2.1.1" + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, "tr46": { @@ -13857,7 +13407,7 @@ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "dev": true, "requires": { - "punycode": "2.1.1" + "punycode": "^2.1.0" } }, "trim": { @@ -13884,13 +13434,13 @@ "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", "dev": true, "requires": { - "utf8-byte-length": "1.0.4" + "utf8-byte-length": "^1.0.1" } }, "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", "dev": true }, "tunnel-agent": { @@ -13898,7 +13448,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -13912,7 +13462,7 @@ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "prelude-ls": "1.1.2" + "prelude-ls": "~1.1.2" } }, "type-detect": { @@ -13951,8 +13501,8 @@ "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "requires": { - "commander": "2.13.0", - "source-map": "0.6.1" + "commander": "~2.13.0", + "source-map": "~0.6.1" }, "dependencies": { "commander": { @@ -13977,8 +13527,8 @@ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "requires": { - "buffer": "5.5.0", - "through": "2.3.8" + "buffer": "^5.2.1", + "through": "^2.3.8" } }, "unchanged": { @@ -13986,8 +13536,8 @@ "resolved": "https://registry.npmjs.org/unchanged/-/unchanged-2.2.1.tgz", "integrity": "sha512-pMlMNfqtfjOVpDAKVBH+LjnhnTwWYUrJq9fU3nGRYrw6JnprJEH1/cehJikRTf+o6dmkpX5XRRspb5mUAhxeZQ==", "requires": { - "curriable": "1.3.0", - "pathington": "1.1.7" + "curriable": "^1.3.0", + "pathington": "^1.1.7" } }, "unherit": { @@ -14010,8 +13560,8 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", "requires": { - "unicode-canonical-property-names-ecmascript": "1.0.4", - "unicode-property-aliases-ecmascript": "1.1.0" + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" } }, "unicode-match-property-value-ecmascript": { @@ -14030,14 +13580,14 @@ "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==", "dev": true, "requires": { - "@types/unist": "2.0.3", - "@types/vfile": "3.0.2", - "bail": "1.0.5", - "extend": "3.0.2", - "is-plain-obj": "1.1.0", - "trough": "1.0.5", - "vfile": "3.0.1", - "x-is-string": "0.1.0" + "@types/unist": "^2.0.0", + "@types/vfile": "^3.0.0", + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^3.0.0", + "x-is-string": "^0.1.0" } }, "union-value": { @@ -14045,10 +13595,10 @@ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "2.0.1" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" } }, "unist-builder": { @@ -14057,7 +13607,7 @@ "integrity": "sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg==", "dev": true, "requires": { - "object-assign": "4.1.1" + "object-assign": "^4.1.0" } }, "unist-util-is": { @@ -14072,7 +13622,7 @@ "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", "dev": true, "requires": { - "unist-util-visit": "1.4.1" + "unist-util-visit": "^1.1.0" } }, "unist-util-stringify-position": { @@ -14087,7 +13637,7 @@ "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", "dev": true, "requires": { - "unist-util-visit-parents": "2.1.2" + "unist-util-visit-parents": "^2.0.0" } }, "unist-util-visit-parents": { @@ -14096,7 +13646,7 @@ "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", "dev": true, "requires": { - "unist-util-is": "3.0.0" + "unist-util-is": "^3.0.0" } }, "universalify": { @@ -14114,8 +13664,8 @@ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { "has-value": { @@ -14123,9 +13673,9 @@ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "dependencies": { "isobject": { @@ -14150,7 +13700,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "requires": { - "punycode": "2.1.1" + "punycode": "^2.1.0" } }, "urix": { @@ -14163,8 +13713,8 @@ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", "requires": { - "querystringify": "2.1.1", - "requires-port": "1.0.0" + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" } }, "use": { @@ -14202,10 +13752,10 @@ "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", "dev": true, "requires": { - "define-properties": "1.1.3", - "es-abstract": "1.17.5", - "has-symbols": "1.0.1", - "object.getownpropertydescriptors": "2.1.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" } }, "utils-merge": { @@ -14223,8 +13773,8 @@ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "requires": { - "spdx-correct": "3.1.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "vary": { @@ -14237,9 +13787,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "vfile": { @@ -14248,10 +13798,10 @@ "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==", "dev": true, "requires": { - "is-buffer": "2.0.4", + "is-buffer": "^2.0.0", "replace-ext": "1.0.0", - "unist-util-stringify-position": "1.1.2", - "vfile-message": "1.1.1" + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" }, "dependencies": { "is-buffer": { @@ -14274,7 +13824,7 @@ "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", "dev": true, "requires": { - "unist-util-stringify-position": "1.1.2" + "unist-util-stringify-position": "^1.1.1" } }, "w3c-hr-time": { @@ -14283,7 +13833,7 @@ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", "dev": true, "requires": { - "browser-process-hrtime": "1.0.0" + "browser-process-hrtime": "^1.0.0" } }, "walker": { @@ -14291,7 +13841,7 @@ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", "requires": { - "makeerror": "1.0.11" + "makeerror": "1.0.x" } }, "watch": { @@ -14299,8 +13849,8 @@ "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", "requires": { - "exec-sh": "0.2.2", - "minimist": "1.2.5" + "exec-sh": "^0.2.0", + "minimist": "^1.2.0" } }, "webidl-conversions": { @@ -14319,9 +13869,9 @@ } }, "whatwg-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", - "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.0.tgz", + "integrity": "sha512-rsum2ulz2iuZH08mJkT0Yi6JnKhwdw4oeyMjokgxd+mmqYSd9cPpOQf01TIWgjxG/U4+QR+AwKq6lSbXVxkyoQ==" }, "whatwg-mimetype": { "version": "2.3.0", @@ -14335,9 +13885,9 @@ "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", "dev": true, "requires": { - "lodash.sortby": "4.7.0", - "tr46": "1.0.1", - "webidl-conversions": "4.0.2" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } }, "which": { @@ -14345,7 +13895,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -14358,7 +13908,7 @@ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2 || 2" } }, "word-wrap": { @@ -14377,8 +13927,8 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" } }, "wrappy": { @@ -14392,7 +13942,7 @@ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "dev": true, "requires": { - "mkdirp": "0.5.4" + "mkdirp": "^0.5.1" } }, "write-file-atomic": { @@ -14400,9 +13950,9 @@ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", "requires": { - "graceful-fs": "4.2.3", - "imurmurhash": "0.1.4", - "slide": "1.1.6" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" } }, "ws": { @@ -14410,8 +13960,8 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", "requires": { - "options": "0.0.6", - "ultron": "1.0.2" + "options": ">=0.0.5", + "ultron": "1.0.x" } }, "x-is-string": { @@ -14425,8 +13975,8 @@ "resolved": "https://registry.npmjs.org/xcode/-/xcode-0.9.3.tgz", "integrity": "sha1-kQqJwWrubMC0LKgFptC0z4chHPM=", "requires": { - "pegjs": "0.10.0", - "simple-plist": "0.2.1", + "pegjs": "^0.10.0", + "simple-plist": "^0.2.1", "uuid": "3.0.1" }, "dependencies": { @@ -14458,7 +14008,7 @@ "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-0.4.0.tgz", "integrity": "sha1-0lciS+g5PqrL+DfvIn/Y7CWzaIg=", "requires": { - "sax": "1.1.6" + "sax": "~1.1.1" } }, "xmldom": { @@ -14471,15 +14021,6 @@ "resolved": "https://registry.npmjs.org/xpipe/-/xpipe-1.0.5.tgz", "integrity": "sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98=" }, - "xregexp": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", - "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", - "dev": true, - "requires": { - "@babel/runtime-corejs3": "7.9.2" - } - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -14500,19 +14041,19 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.3", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" }, "dependencies": { "ansi-regex": { @@ -14530,8 +14071,8 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -14539,7 +14080,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -14549,7 +14090,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } }, "yauzl": { @@ -14557,8 +14098,8 @@ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", "requires": { - "buffer-crc32": "0.2.13", - "fd-slicer": "1.1.0" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } } } diff --git a/package.json b/package.json index 627b06d..06ae5b2 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "react-native-push-notification": "github:sdvig/react-native-push-notification", "react-native-restart": "0.0.9", "react-native-share": "^1.1.3", - "react-native-vector-icons": "^6.4.2", + "react-native-vector-icons": "6.4.2", "react-redux": "^6.0.0", "realm": "^3.6.5", "redux": "^4.0.1", @@ -120,4 +120,4 @@ }, "test-runner": "mocha" } -} \ No newline at end of file +} From 99a2bf256d65e01593b7ebef19a19893ba00a6b8 Mon Sep 17 00:00:00 2001 From: Sofiya Tepikin <sofiya.tepikin@gmail.com> Date: Sat, 22 Aug 2020 14:19:29 +0200 Subject: [PATCH 55/94] Fix linter issue --- components/helpers/calendar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/helpers/calendar.js b/components/helpers/calendar.js index 6b91f78..e765dd9 100644 --- a/components/helpers/calendar.js +++ b/components/helpers/calendar.js @@ -66,7 +66,7 @@ const styles = { }, } -const calendarTheme = { +export const calendarTheme = { calendarBackground: Colors.tourquiseLight, dayTextColor: Colors.greyDark, monthTextColor: Colors.purple, From 6de05f0d701da06b96744303e116fff0f48688fb Mon Sep 17 00:00:00 2001 From: emelko <ml.kochsiek@mailbox.org> Date: Sun, 20 Sep 2020 14:49:17 +0200 Subject: [PATCH 56/94] Fix unlocking app with password --- components/password-prompt.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/password-prompt.js b/components/password-prompt.js index 14203df..2924b46 100644 --- a/components/password-prompt.js +++ b/components/password-prompt.js @@ -76,6 +76,10 @@ export default class PasswordPrompt extends Component { requestHash('check-pw', this.state.password) } + setPassword = (password) => { + this.setState({ password }) + } + render() { const { password } = this.state const isPasswordEntered = password && password.length > 0 From 4f4dc85f8c90401bd58e66cf2f2488af64afd281 Mon Sep 17 00:00:00 2001 From: emelko <ml.kochsiek@mailbox.org> Date: Sun, 20 Sep 2020 15:02:51 +0200 Subject: [PATCH 57/94] Sets calendar pastScrollRange to 10 years --- components/calendar.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/calendar.js b/components/calendar.js index d3a9c44..3ab41df 100644 --- a/components/calendar.js +++ b/components/calendar.js @@ -77,6 +77,8 @@ class CalendarView extends Component { markedDates={markedDates} markingType={'custom'} theme={calendarTheme} + // Max amount of months allowed to scroll to the past. + pastScrollRange={120} /> </View> ) From b429954ad27f62cd9f76013b66f3b14caa3a3d09 Mon Sep 17 00:00:00 2001 From: emelko <ml.kochsiek@mailbox.org> Date: Sun, 20 Sep 2020 15:53:34 +0200 Subject: [PATCH 58/94] Update home page with more color contrast for grey --- components/home.js | 15 +++++++++------ styles/colors.js | 8 ++++---- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/components/home.js b/components/home.js index 888f289..eaf0b72 100644 --- a/components/home.js +++ b/components/home.js @@ -74,24 +74,24 @@ class Home extends Component { {this.cycleDayNumber && ( <React.Fragment> <AppText style={styles.whiteText}>{cycleDayText}</AppText> - <AppText>{labels.cycleDay}</AppText> + <AppText style={styles.tourquiseText}>{labels.cycleDay}</AppText> </React.Fragment> )} {!this.cycleDayNumber && <AppText>{cycleDayText}</AppText>} </View> <View style={styles.line}> - {!phase && <AppText>{phaseText}</AppText>} + {!phase && <AppText style={styles.tourquiseText}>{phaseText}</AppText>} {phase && ( <React.Fragment> <AppText style={styles.whiteText}>{phaseText}</AppText> - <AppText>{labels.cyclePhase}</AppText> - <AppText>{status}</AppText> + <AppText style={styles.tourquiseText}>{labels.cyclePhase}</AppText> + <AppText style={styles.tourquiseText}>{status}</AppText> <Asterisk /> </React.Fragment> )} </View> <View style={styles.line}> - <AppText>{prediction}</AppText> + <AppText style={styles.tourquiseText}>{prediction}</AppText> </View> <Button isCTA isSmall={false} onPress={this.navigateToCycleDayView}> {labels.addData} @@ -99,7 +99,7 @@ class Home extends Component { {phase && ( <View style={styles.line}> <Asterisk /> - <AppText linkStyle={styles.whiteText}>{statusText}</AppText> + <AppText style={styles.tourquiseText} linkStyle={styles.whiteText}>{statusText}</AppText> </View> )} </ScrollView> @@ -134,6 +134,9 @@ const styles = StyleSheet.create({ fontSize: Sizes.huge, marginVertical: Spacing.base, }, + tourquiseText: { + color: Colors.tourquise, + }, whiteText: { color: 'white' } diff --git a/styles/colors.js b/styles/colors.js index 87ffc8a..533e1a8 100644 --- a/styles/colors.js +++ b/styles/colors.js @@ -13,12 +13,12 @@ const orangeColor = '#bc6642' const mintColor = '#6ca299' export default { - greyDark: '#A5A5A5', - grey: '#D2D2D2', - greyLight: '#F2F2F2', + greyDark: '#555', + grey: '#888', + greyLight: '#CCC', orange: '#F38337', purple: '#3A2671', - purpleLight: '#5D4F8A', + purpleLight: '#938EB2', tourquiseDark: '#69CBC1', tourquise: '#CFECEA', tourquiseLight: '#E9F2ED', From 7916bae84857f31c2fc51eb6387df7f9c4520215 Mon Sep 17 00:00:00 2001 From: Sofiya Tepikin <sofiya.tepikin@gmail.com> Date: Mon, 16 Nov 2020 20:41:24 +0100 Subject: [PATCH 59/94] Roll back alert dialog styling --- android/app/src/main/res/values/styles.xml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index 76199a4..97b7d4f 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -6,16 +6,6 @@ <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> - - <item name="android:alertDialogTheme">@style/AlertDialogTheme</item> - </style> - - <style name="AlertDialogTheme" parent="Theme.AppCompat.Dialog.Alert"> - <item name="android:buttonBarButtonStyle">@style/ButtonBarStyle</item> - <item name="android:buttonBarPositiveButtonStyle">@style/PositiveButtonStyle</item> - <item name="android:fontFamily">@font/jost_normal</item> - <item name="android:textColorPrimary">@color/grey</item> - <item name="android:windowTitleStyle">@style/TitleStyle</item> </style> <style name="ButtonBarStyle" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog"> From 3778c1454f2066609508aafc71b064cbb9df927c Mon Sep 17 00:00:00 2001 From: Lisa <lisa.hillebrand@posteo.de> Date: Sat, 5 Dec 2020 10:08:24 +0000 Subject: [PATCH 60/94] Increase hitSlop of menu icon and navigation arrows --- .eslintrc | 34 +++++-------------- .gitignore | 3 ++ components/cycle-day/symptom-page-title.js | 38 ++++++++++------------ components/header/hamburger-menu.js | 34 +++++++++---------- config.js | 4 ++- 5 files changed, 49 insertions(+), 64 deletions(-) diff --git a/.eslintrc b/.eslintrc index 7fb97d8..29c077b 100644 --- a/.eslintrc +++ b/.eslintrc @@ -4,10 +4,7 @@ "mocha": true, "es6": true }, - "extends": [ - "eslint:recommended", - "plugin:react/recommended" - ], + "extends": ["eslint:recommended", "plugin:react/recommended"], "parser": "babel-eslint", "parserOptions": { "sourceType": "module", @@ -16,31 +13,18 @@ }, "ecmaVersion": 2018 }, - "plugins": [ - "react" - ], + "plugins": ["react"], "settings": { "react": { - "version": require('./package.json').dependencies.react, - }, + "version": require("./package.json").dependencies.react + } }, "rules": { - "indent": [ - "error", - 2 - ], - "no-console": [ - "error", - { allow: ["warn", "error"] } - ], + "indent": ["error", 2], + "no-console": ["error", { "allow": ["warn", "error"] }], "space-before-function-paren": 0, - "semi": [ - "warn", - "never" - ], - "space-infix-ops": [ - "warn" - ], + "semi": ["warn", "never"], + "space-infix-ops": ["warn"], "no-var": "error", "prefer-const": "error", "no-trailing-spaces": "error", @@ -53,6 +37,6 @@ "ignoreTemplateLiterals": true } ], - "no-multi-spaces": 2, + "no-multi-spaces": 2 } } diff --git a/.gitignore b/.gitignore index 4663f1b..2266a24 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,9 @@ # .DS_Store +# VSCode +.vscode/ + # Xcode # build/ diff --git a/components/cycle-day/symptom-page-title.js b/components/cycle-day/symptom-page-title.js index 3ef0967..ec47427 100644 --- a/components/cycle-day/symptom-page-title.js +++ b/components/cycle-day/symptom-page-title.js @@ -12,16 +12,17 @@ import { nextDate, prevDate, isTomorrowInFuture, - isYesterdayInFuture + isYesterdayInFuture, } from '../helpers/cycle-day' import { Colors, Containers, Spacing, Typography } from '../../styles' +import { HIT_SLOP } from '../../config' const SymptomPageTitle = ({ date, reloadSymptomData, setDate, subtitle, - title + title, }) => { const rightArrowColor = isTomorrowInFuture(date) ? Colors.grey : Colors.orange const leftArrowColor = isYesterdayInFuture(date) ? Colors.grey : Colors.orange @@ -33,15 +34,15 @@ const SymptomPageTitle = ({ return ( <View style={styles.container}> - <TouchableOpacity onPress={() => navigate(false)}> - <AppIcon name='chevron-left' color={leftArrowColor}/> + <TouchableOpacity onPress={() => navigate(false)} hitSlop={HIT_SLOP}> + <AppIcon name='chevron-left' color={leftArrowColor} /> </TouchableOpacity> <View style={styles.textContainer}> <AppText style={styles.title}>{title}</AppText> {subtitle && <AppText style={styles.subtitle}>{subtitle}</AppText>} </View> - <TouchableOpacity onPress={() => navigate(true)}> - <AppIcon name='chevron-right' color={rightArrowColor}/> + <TouchableOpacity onPress={() => navigate(true)} hitSlop={HIT_SLOP}> + <AppIcon name='chevron-right' color={rightArrowColor} /> </TouchableOpacity> </View> ) @@ -52,37 +53,34 @@ SymptomPageTitle.propTypes = { reloadSymptomData: PropTypes.func.isRequired, setDate: PropTypes.func.isRequired, subtitle: PropTypes.string, - title: PropTypes.string + title: PropTypes.string, } const styles = StyleSheet.create({ container: { - height: (Spacing.base * 4), + height: Spacing.base * 4, marginHorizontal: Spacing.base, marginTop: Spacing.base, - ...Containers.rowContainer + ...Containers.rowContainer, }, textContainer: { - alignItems: 'center' + alignItems: 'center', }, title: { - ...Typography.titleWithoutMargin - } + ...Typography.titleWithoutMargin, + }, }) const mapStateToProps = (state) => { - return({ + return { date: getDate(state), - }) + } } const mapDispatchToProps = (dispatch) => { - return({ + return { setDate: (date) => dispatch(setDate(date)), - }) + } } -export default connect( - mapStateToProps, - mapDispatchToProps, -)(SymptomPageTitle) \ No newline at end of file +export default connect(mapStateToProps, mapDispatchToProps)(SymptomPageTitle) diff --git a/components/header/hamburger-menu.js b/components/header/hamburger-menu.js index 8b59b27..16ace0b 100644 --- a/components/header/hamburger-menu.js +++ b/components/header/hamburger-menu.js @@ -6,6 +6,7 @@ import MenuItem from './menu-item' import { Colors, Sizes } from '../../styles' import settingsLabels from '../../i18n/en/settings' +import { HIT_SLOP } from '../../config' const { menuItems } = settingsLabels @@ -16,7 +17,6 @@ const settingsMenuItems = [ ] export default class HamburgerMenu extends Component { - constructor(props) { super(props) @@ -24,20 +24,20 @@ export default class HamburgerMenu extends Component { } toggleMenu = () => { - this.setState({ shouldShowMenu: !this.state.shouldShowMenu}) + this.setState({ shouldShowMenu: !this.state.shouldShowMenu }) } render() { const { shouldShowMenu } = this.state - return( + return ( <React.Fragment> - {!shouldShowMenu && - <TouchableOpacity onPress={this.toggleMenu}> - <AppIcon name='dots-three-vertical' color={Colors.orange}/> + {!shouldShowMenu && ( + <TouchableOpacity onPress={this.toggleMenu} hitSlop={HIT_SLOP}> + <AppIcon name='dots-three-vertical' color={Colors.orange} /> </TouchableOpacity> - } - {shouldShowMenu && + )} + {shouldShowMenu && ( <Modal animationType='fade' onRequestClose={this.toggleMenu} @@ -47,29 +47,27 @@ export default class HamburgerMenu extends Component { <TouchableOpacity onPress={this.toggleMenu} style={styles.blackBackground} - > - </TouchableOpacity> + ></TouchableOpacity> <View style={styles.menu}> <TouchableOpacity onPress={this.toggleMenu} style={styles.iconContainer} > - <AppIcon name='cross' color='black'/> + <AppIcon name='cross' color='black' /> </TouchableOpacity> - {settingsMenuItems.map(item => + {settingsMenuItems.map((item) => ( <MenuItem item={item} key={item.name} closeMenu={this.toggleMenu} /> - )} + ))} </View> </Modal> - } + )} </React.Fragment> ) } - } const styles = StyleSheet.create({ @@ -80,7 +78,7 @@ const styles = StyleSheet.create({ }, iconContainer: { alignSelf: 'flex-end', - marginBottom: Sizes.base + marginBottom: Sizes.base, }, menu: { alignSelf: 'flex-end', @@ -88,6 +86,6 @@ const styles = StyleSheet.create({ height: '100%', padding: Sizes.base, position: 'absolute', - width: '60%' - } + width: '60%', + }, }) diff --git a/config.js b/config.js index 343d760..ee9761d 100644 --- a/config.js +++ b/config.js @@ -11,7 +11,7 @@ export const SYMPTOMS = [ 'desire', 'pain', 'mood', - 'note' + 'note', ] export const CHART_COLUMN_WIDTH = 32 @@ -30,3 +30,5 @@ export const TEMP_SCALE_UNITS = 0.1 export const TEMP_MAX = 40 export const TEMP_MIN = 34 export const TEMP_SLIDER_STEP = 0.5 + +export const HIT_SLOP = { top: 20, bottom: 20, left: 20, right: 20 } From cf63fbb37c0ce6255daaa6762dda0be00b2f9f93 Mon Sep 17 00:00:00 2001 From: Maria Zadnepryanets <mariya.z@gmail.com> Date: Sat, 5 Dec 2020 10:15:12 +0000 Subject: [PATCH 61/94] Resolve "Chart" --- components/chart/chart-line.js | 2 +- components/chart/chart.js | 16 ++++++++-------- components/chart/day-column.js | 3 ++- components/chart/symptom-cell.js | 16 +++++++++++++--- config.js | 4 ++-- 5 files changed, 26 insertions(+), 15 deletions(-) diff --git a/components/chart/chart-line.js b/components/chart/chart-line.js index 53af2cc..30f2732 100644 --- a/components/chart/chart-line.js +++ b/components/chart/chart-line.js @@ -9,7 +9,7 @@ import { CHART_STROKE_WIDTH, CHART_GRID_LINE_HORIZONTAL_WIDTH } from '../../conf const ChartLine = ({ path, isNfpLine }) => { const color = isNfpLine ? Colors.orange : Colors.grey const width = isNfpLine - ? CHART_STROKE_WIDTH : CHART_GRID_LINE_HORIZONTAL_WIDTH + ? CHART_STROKE_WIDTH : CHART_GRID_LINE_HORIZONTAL_WIDTH * 2.5 return ( <Shape d={path} stroke={color} strokeWidth={width} /> diff --git a/components/chart/chart.js b/components/chart/chart.js index bdfa6f7..021f492 100644 --- a/components/chart/chart.js +++ b/components/chart/chart.js @@ -1,6 +1,6 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' -import { ActivityIndicator, FlatList, StyleSheet, View } from 'react-native' +import { ActivityIndicator, FlatList, Dimensions, StyleSheet, View } from 'react-native' import AppLoadingView from '../common/app-loading' import AppPage from '../common/app-page' @@ -63,10 +63,10 @@ class CycleChart extends Component { this.setState({ shouldShowHint: false }) } - onLayout = ({ nativeEvent }) => { + onLayout = () => { if (this.state.chartHeight) return false - this.reCalculateChartInfo(nativeEvent) + this.reCalculateChartInfo() this.updateListeners(this.reCalculateChartInfo) } @@ -100,17 +100,17 @@ class CycleChart extends Component { ) } - reCalculateChartInfo = (nativeEvent) => { - const { height, width } = nativeEvent.layout + reCalculateChartInfo = () => { + const { width, height } = Dimensions.get('window') - this.xAxisHeight = height * CHART_XAXIS_HEIGHT_RATIO - const remainingHeight = height - this.xAxisHeight + this.xAxisHeight = height * 0.7 * CHART_XAXIS_HEIGHT_RATIO + const remainingHeight = height * 0.7 - this.xAxisHeight this.symptomHeight = remainingHeight * CHART_SYMPTOM_HEIGHT_RATIO this.symptomRowHeight = this.symptomRowSymptoms.length * this.symptomHeight this.columnHeight = remainingHeight - this.symptomRowHeight const chartHeight = this.shouldShowTemperatureColumn ? - height : (this.symptomRowHeight + this.xAxisHeight) + height * 0.7 : (this.symptomRowHeight + this.xAxisHeight) const numberOfColumnsToRender = Math.round(width / CHART_COLUMN_WIDTH) const columns = makeColumnInfo() diff --git a/components/chart/day-column.js b/components/chart/day-column.js index c5429a0..2eb3710 100644 --- a/components/chart/day-column.js +++ b/components/chart/day-column.js @@ -104,10 +104,11 @@ class DayColumn extends Component { date={dateString} /> - { symptomRowSymptoms.map(symptom => { + { symptomRowSymptoms.map((symptom, i) => { const hasSymptomData = this.data.hasOwnProperty(symptom) return ( <SymptomCell + index={i} key={symptom} symptom={symptom} symptomValue={hasSymptomData && this.data[symptom]} diff --git a/components/chart/symptom-cell.js b/components/chart/symptom-cell.js index 445df49..ef8caa1 100644 --- a/components/chart/symptom-cell.js +++ b/components/chart/symptom-cell.js @@ -11,13 +11,16 @@ import { const SymptomCell = ({ height, + index, symptom, symptomValue, isSymptomDataComplete }) => { const shouldDrawDot = symptomValue !== false - const styleCell = [styles.cell, { height, width: CHART_COLUMN_WIDTH }] + const styleCell = index !== 0 + ? [styles.cell, { height, width: CHART_COLUMN_WIDTH }] + : [styles.cell, { height, width: CHART_COLUMN_WIDTH }, styles.topBorder] let styleDot if (shouldDrawDot) { @@ -40,6 +43,7 @@ const SymptomCell = ({ SymptomCell.propTypes = { height: PropTypes.number, + index: PropTypes.number.isRequired, symptom: PropTypes.string, symptomValue: PropTypes.oneOfType([ PropTypes.bool, @@ -51,10 +55,16 @@ SymptomCell.propTypes = { const styles = StyleSheet.create({ cell: { backgroundColor: 'white', - borderColor: Colors.greyLight, - borderWidth: CHART_GRID_LINE_HORIZONTAL_WIDTH, + borderBottomColor: Colors.grey, + borderBottomWidth: CHART_GRID_LINE_HORIZONTAL_WIDTH, + borderLeftColor: Colors.grey, + borderLeftWidth: CHART_GRID_LINE_HORIZONTAL_WIDTH, ...Containers.centerItems }, + topBorder: { + borderTopColor: Colors.grey, + borderTopWidth: CHART_GRID_LINE_HORIZONTAL_WIDTH, + }, dot: { width: CHART_DOT_RADIUS * 2, height: CHART_DOT_RADIUS * 2, diff --git a/config.js b/config.js index 343d760..31352f5 100644 --- a/config.js +++ b/config.js @@ -20,8 +20,8 @@ export const CHART_DOT_RADIUS = 6 export const CHART_GRID_LINE_HORIZONTAL_WIDTH = 0.3 export const CHART_ICON_SIZE = 20 export const CHART_STROKE_WIDTH = 3 -export const CHART_SYMPTOM_HEIGHT_RATIO = 0.1 -export const CHART_XAXIS_HEIGHT_RATIO = 0.14 +export const CHART_SYMPTOM_HEIGHT_RATIO = 0.08 +export const CHART_XAXIS_HEIGHT_RATIO = 0.1 export const CHART_YAXIS_WIDTH = 32 export const TEMP_SCALE_MAX = 38 From 750ceeaaf43ed602e49e32173e7045c1576c3631 Mon Sep 17 00:00:00 2001 From: Maria Zadnepryanets <mariya.z@gmail.com> Date: Sat, 5 Dec 2020 11:08:57 +0000 Subject: [PATCH 62/94] Resolve "Cycle day overview" --- components/cycle-day/symptom-page-title.js | 13 +++---------- components/helpers/cycle-day.js | 10 ---------- components/helpers/format-date.js | 2 +- components/home.js | 12 +++++++++--- 4 files changed, 13 insertions(+), 24 deletions(-) diff --git a/components/cycle-day/symptom-page-title.js b/components/cycle-day/symptom-page-title.js index ec47427..6203c1c 100644 --- a/components/cycle-day/symptom-page-title.js +++ b/components/cycle-day/symptom-page-title.js @@ -8,12 +8,7 @@ import AppText from '../common/app-text' import { connect } from 'react-redux' import { getDate, setDate } from '../../slices/date' -import { - nextDate, - prevDate, - isTomorrowInFuture, - isYesterdayInFuture, -} from '../helpers/cycle-day' +import { nextDate, prevDate } from '../helpers/cycle-day' import { Colors, Containers, Spacing, Typography } from '../../styles' import { HIT_SLOP } from '../../config' @@ -24,8 +19,6 @@ const SymptomPageTitle = ({ subtitle, title, }) => { - const rightArrowColor = isTomorrowInFuture(date) ? Colors.grey : Colors.orange - const leftArrowColor = isYesterdayInFuture(date) ? Colors.grey : Colors.orange const navigate = (isForward) => { const nextDay = isForward ? nextDate(date) : prevDate(date) reloadSymptomData(nextDay) @@ -35,14 +28,14 @@ const SymptomPageTitle = ({ return ( <View style={styles.container}> <TouchableOpacity onPress={() => navigate(false)} hitSlop={HIT_SLOP}> - <AppIcon name='chevron-left' color={leftArrowColor} /> + <AppIcon name='chevron-left' color={Colors.orange}/> </TouchableOpacity> <View style={styles.textContainer}> <AppText style={styles.title}>{title}</AppText> {subtitle && <AppText style={styles.subtitle}>{subtitle}</AppText>} </View> <TouchableOpacity onPress={() => navigate(true)} hitSlop={HIT_SLOP}> - <AppIcon name='chevron-right' color={rightArrowColor} /> + <AppIcon name='chevron-right' color={Colors.orange}/> </TouchableOpacity> </View> ) diff --git a/components/helpers/cycle-day.js b/components/helpers/cycle-day.js index 653765a..aae8a3f 100644 --- a/components/helpers/cycle-day.js +++ b/components/helpers/cycle-day.js @@ -425,13 +425,3 @@ export const nextDate = (dateString) => { export const isDateInFuture = (dateString) => { return LocalDate.now().isBefore(LocalDate.parse(dateString)) } - -export const isTomorrowInFuture = (dateString) => { - const tomorrow = nextDate(dateString) - return LocalDate.now().isBefore(LocalDate.parse(tomorrow)) -} - -export const isYesterdayInFuture = (dateString) => { - const yesterday = prevDate(dateString) - return LocalDate.now().isBefore(LocalDate.parse(yesterday)) -} \ No newline at end of file diff --git a/components/helpers/format-date.js b/components/helpers/format-date.js index 88e4ec4..f9e2cc3 100644 --- a/components/helpers/format-date.js +++ b/components/helpers/format-date.js @@ -20,5 +20,5 @@ export function dateToTitle(dateString) { const dateToDisplay = LocalDate.parse(dateString) return today.equals(dateToDisplay) ? labels.today : - moment(dateString).format('MMMM Do') + moment(dateString).format('dddd, Do MMM YYYY') } \ No newline at end of file diff --git a/components/home.js b/components/home.js index eaf0b72..a1d5e87 100644 --- a/components/home.js +++ b/components/home.js @@ -80,11 +80,15 @@ class Home extends Component { {!this.cycleDayNumber && <AppText>{cycleDayText}</AppText>} </View> <View style={styles.line}> - {!phase && <AppText style={styles.tourquiseText}>{phaseText}</AppText>} + {!phase && + <AppText style={styles.tourquiseText}>{phaseText}</AppText> + } {phase && ( <React.Fragment> <AppText style={styles.whiteText}>{phaseText}</AppText> - <AppText style={styles.tourquiseText}>{labels.cyclePhase}</AppText> + <AppText style={styles.tourquiseText}> + {labels.cyclePhase} + </AppText> <AppText style={styles.tourquiseText}>{status}</AppText> <Asterisk /> </React.Fragment> @@ -99,7 +103,9 @@ class Home extends Component { {phase && ( <View style={styles.line}> <Asterisk /> - <AppText style={styles.tourquiseText} linkStyle={styles.whiteText}>{statusText}</AppText> + <AppText style={styles.tourquiseText} linkStyle={styles.whiteText}> + {statusText} + </AppText> </View> )} </ScrollView> From fbfc4d66211fbc93757a78a1dacf2b63cfe19f49 Mon Sep 17 00:00:00 2001 From: emelko <ml.kochsiek@mailbox.org> Date: Sat, 5 Dec 2020 12:10:33 +0100 Subject: [PATCH 63/94] Remove line-through textDecoration for excluded values --- components/cycle-day/symptom-box.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/components/cycle-day/symptom-box.js b/components/cycle-day/symptom-box.js index b9aeac1..89d83a0 100644 --- a/components/cycle-day/symptom-box.js +++ b/components/cycle-day/symptom-box.js @@ -97,10 +97,6 @@ class SymptomBox extends Component { } } -const excluded = { - textDecorationLine: 'line-through' -} - const hint = { fontSize: Sizes.small, fontStyle: 'italic' @@ -136,7 +132,6 @@ const styles = StyleSheet.create({ }, symptomNameExcluded: { color: Colors.greyDark, - ...excluded }, textContainer: { flexDirection: 'column', @@ -151,7 +146,6 @@ const styles = StyleSheet.create({ }, textExcluded: { color: Colors.grey, - ...excluded } }) From e5418c32e21d6907cc292b3d54e90e6cfcdc7d97 Mon Sep 17 00:00:00 2001 From: Julia Friesel <julia.friesel@gmail.com> Date: Wed, 30 Sep 2020 20:33:21 +0200 Subject: [PATCH 64/94] Fix ordinal suffix for numbers greater than 10 --- components/chart/cycle-day-label.js | 6 +++--- components/helpers/home.js | 20 +++++++++++++------- components/home.js | 12 ++++++------ 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/components/chart/cycle-day-label.js b/components/chart/cycle-day-label.js index aec35d5..f5ef7aa 100644 --- a/components/chart/cycle-day-label.js +++ b/components/chart/cycle-day-label.js @@ -7,7 +7,7 @@ import moment from 'moment' import AppText from '../common/app-text' import cycleModule from '../../lib/cycle' -import { dateEnding } from '../helpers/home' +import { getOrdinalSuffix } from '../helpers/home' import { Containers, Typography } from '../../styles' const CycleDayLabel = ({ height, date }) => { @@ -18,13 +18,13 @@ const CycleDayLabel = ({ height, date }) => { const dateFormatting = isFirstDayOfMonth ? 'MMM' : 'D' const shortDate = moment(date, "YYYY-MM-DD").format(dateFormatting) const ending = isFirstDayOfMonth ? - '' : dateEnding[this.cycleDayNumber] || dateEnding['default'] + '' : getOrdinalSuffix(this.cycleDayNumber) const cycleDayLabel = cycleDayNumber ? cycleDayNumber : ' ' return ( <View style={[styles.container, { height }]}> <AppText style={styles.textBold}>{cycleDayLabel}</AppText> - <View style={{flexDirection: 'row', justifyContent: 'space-around', alignItems: 'center'}}> + <View style={{ flexDirection: 'row', justifyContent: 'space-around', alignItems: 'center' }}> <AppText style={styles.text}>{shortDate}</AppText> <AppText style={styles.textLight}>{ending}</AppText> </View> diff --git a/components/helpers/home.js b/components/helpers/home.js index 1da8516..4851091 100644 --- a/components/helpers/home.js +++ b/components/helpers/home.js @@ -12,7 +12,7 @@ function getTimes(prediction) { const predictedBleedingStart = LocalDate.parse(prediction[0][0]) /* the range of predicted bleeding days can be either 3 or 5 */ const predictedBleedingEnd = - LocalDate.parse(prediction[0][ prediction[0].length - 1 ]) + LocalDate.parse(prediction[0][prediction[0].length - 1]) const daysToEnd = todayDate.until(predictedBleedingEnd, ChronoUnit.DAYS) return { todayDate, predictedBleedingStart, predictedBleedingEnd, daysToEnd } } @@ -63,9 +63,15 @@ export function getBleedingPredictionRange(prediction) { return (daysToEnd === 0 ? '0' : `0 - ${daysToEnd}`) } -export const dateEnding = { - '1': 'st', - '2': 'nd', - '3': 'rd', - 'default': 'th' -} +export function getOrdinalSuffix(num) { + const suffixes = { + 1: 'st', + 2: 'nd', + 3: 'rd', + default: 'th' + } + + const numAsString = num.toString() + const lastNumber = numAsString[numAsString.length - 1] + return suffixes[lastNumber] || suffixes.default +} \ No newline at end of file diff --git a/components/home.js b/components/home.js index a1d5e87..2444194 100644 --- a/components/home.js +++ b/components/home.js @@ -13,7 +13,7 @@ import Button from './common/button' import cycleModule from '../lib/cycle' import { getFertilityStatusForDay } from '../lib/sympto-adapter' -import { determinePredictionText, dateEnding } from './helpers/home' +import { determinePredictionText, getOrdinalSuffix } from './helpers/home' import { Colors, Fonts, Sizes, Spacing } from '../styles' import { home as labels } from '../i18n/en/labels' @@ -32,15 +32,15 @@ class Home extends Component { this.todayDateString = today.toString() const { getCycleDayNumber, getPredictedMenses } = cycleModule() this.cycleDayNumber = getCycleDayNumber(this.todayDateString) - const {status, phase, statusText} = + const { status, phase, statusText } = getFertilityStatusForDay(this.todayDateString) const prediction = getPredictedMenses() this.cycleDayText = !this.cycleDayNumber ? labels.cycleDayNotEnoughInfo - : `${this.cycleDayNumber}${dateEnding[this.cycleDayNumber] || dateEnding['default']}` + : `${this.cycleDayNumber}${getOrdinalSuffix(this.cycleDayNumber)}` this.phase = phase this.phaseText = !phase ? statusText - : `${phase}${dateEnding[phase] || dateEnding['default']}` + : `${phase}${getOrdinalSuffix(phase)}` this.prediction = determinePredictionText(prediction) this.status = status this.statusText = statusText @@ -149,13 +149,13 @@ const styles = StyleSheet.create({ }) const mapStateToProps = (state) => { - return({ + return ({ date: getDate(state), }) } const mapDispatchToProps = (dispatch) => { - return({ + return ({ navigate: (page) => dispatch(navigate(page)), setDate: (date) => dispatch(setDate(date)), }) From 9d3c332453cd726d61592c23342da0772aeb94db Mon Sep 17 00:00:00 2001 From: Sofiya Tepikin <sofiya.tepikin@gmail.com> Date: Fri, 4 Dec 2020 19:30:15 +0100 Subject: [PATCH 65/94] Fix getOrdinalSuffix and add a formatting function --- components/helpers/home.js | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/components/helpers/home.js b/components/helpers/home.js index 4851091..e5b75c3 100644 --- a/components/helpers/home.js +++ b/components/helpers/home.js @@ -64,14 +64,24 @@ export function getBleedingPredictionRange(prediction) { } export function getOrdinalSuffix(num) { - const suffixes = { - 1: 'st', - 2: 'nd', - 3: 'rd', - default: 'th' + const j = num % 10 + const k = num % 100 + + if (j === 1 && k !== 11) { + return 'st' } - const numAsString = num.toString() - const lastNumber = numAsString[numAsString.length - 1] - return suffixes[lastNumber] || suffixes.default -} \ No newline at end of file + if (j === 2 && k !== 12) { + return 'nd' + } + + if (j === 3 && k !== 13) { + return 'rd' + } + + return 'th' +} + +export function formatWithOrdinalSuffix(num) { + return num + getOrdinalSuffix(num) +} From f9eb06f197b2254d7fc3898df0a9f6a47450c266 Mon Sep 17 00:00:00 2001 From: Sofiya Tepikin <sofiya.tepikin@gmail.com> Date: Fri, 4 Dec 2020 19:30:41 +0100 Subject: [PATCH 66/94] Make use of formatWithOrdinalSuffix function --- components/home.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/components/home.js b/components/home.js index 2444194..aabd81b 100644 --- a/components/home.js +++ b/components/home.js @@ -13,7 +13,7 @@ import Button from './common/button' import cycleModule from '../lib/cycle' import { getFertilityStatusForDay } from '../lib/sympto-adapter' -import { determinePredictionText, getOrdinalSuffix } from './helpers/home' +import { determinePredictionText, formatWithOrdinalSuffix } from './helpers/home' import { Colors, Fonts, Sizes, Spacing } from '../styles' import { home as labels } from '../i18n/en/labels' @@ -37,10 +37,9 @@ class Home extends Component { const prediction = getPredictedMenses() this.cycleDayText = !this.cycleDayNumber ? labels.cycleDayNotEnoughInfo - : `${this.cycleDayNumber}${getOrdinalSuffix(this.cycleDayNumber)}` + : formatWithOrdinalSuffix(this.cycleDayNumber) this.phase = phase - this.phaseText = !phase ? statusText - : `${phase}${getOrdinalSuffix(phase)}` + this.phaseText = !phase ? statusText : formatWithOrdinalSuffix(phase) this.prediction = determinePredictionText(prediction) this.status = status this.statusText = statusText From c270c7a55f5b953ab35ef5805c8e67dcff7e4560 Mon Sep 17 00:00:00 2001 From: Sofiya Tepikin <sofiya.tepikin@gmail.com> Date: Fri, 4 Dec 2020 19:33:25 +0100 Subject: [PATCH 67/94] Add tests to the getOrdinalSuffix function --- test/home-helpers.spec.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 test/home-helpers.spec.js diff --git a/test/home-helpers.spec.js b/test/home-helpers.spec.js new file mode 100644 index 0000000..696a7b9 --- /dev/null +++ b/test/home-helpers.spec.js @@ -0,0 +1,25 @@ +import { expect } from 'chai' + +import {getOrdinalSuffix } from '../components/helpers/home' + +describe('Home helper: getOrdinalSuffix', () => { + it('For 1, it returns suffix \'st\'', () => { + expect(getOrdinalSuffix(1)).to.eql('st') + }) + + it('For 2, it returns suffix \'nd\'', () => { + expect(getOrdinalSuffix(2)).to.eql('nd') + }) + + it('For 3, it returns suffix \'rd\'', () => { + expect(getOrdinalSuffix(3)).to.eql('rd') + }) + + it('For 11, it returns suffix \'th\'', () => { + expect(getOrdinalSuffix(11)).to.eql('th') + }) + + it('For 23, it returns suffix \'rd\'', () => { + expect(getOrdinalSuffix(23)).to.eql('rd') + }) +}) From 45da01ba07eda0f24086d6172b589dbaac677edf Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Sat, 5 Dec 2020 12:33:11 +0100 Subject: [PATCH 68/94] Fixes bug when .8 and .3 labels are not shown in chart --- components/helpers/chart.js | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/components/helpers/chart.js b/components/helpers/chart.js index 245df1f..80b7551 100644 --- a/components/helpers/chart.js +++ b/components/helpers/chart.js @@ -44,25 +44,19 @@ export function getTickList(columnHeight) { return getTickPositions(columnHeight).map((tickPosition, i) => { const tick = scaleMax - i * unit - let isBold, label, shouldShowLabel - - if (Number.isInteger(tick)) { - isBold = true - label = tick.toString() + '.0' - } else { - isBold = false - label = tick.toString() - } + const isBold = Number.isInteger(tick) ? true : false + const label = tick.toFixed(1) + let shouldShowLabel // when temp range <= 2, units === 0.1 we show temp values with step 0.2 // when temp range > 2, units === 0.5 we show temp values with step 0.5 if (unit === 0.1) { // show label with step 0.2 - shouldShowLabel = !(tick * 10 % 2) + shouldShowLabel = !(label * 10 % 2) } else { // show label with step 0.5 - shouldShowLabel = !(tick * 10 % 5) + shouldShowLabel = !(label * 10 % 5) } // don't show label, if first or last tick From 295e751217b1aacf834980697701c95c3ad7d5cb Mon Sep 17 00:00:00 2001 From: emelko <ml.kochsiek@mailbox.org> Date: Sat, 5 Dec 2020 12:47:28 +0100 Subject: [PATCH 69/94] Limit line length on text of symptom box --- components/cycle-day/symptom-box.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/cycle-day/symptom-box.js b/components/cycle-day/symptom-box.js index b9aeac1..90fdf43 100644 --- a/components/cycle-day/symptom-box.js +++ b/components/cycle-day/symptom-box.js @@ -86,7 +86,7 @@ class SymptomBox extends Component { {symptomTitles[symptom].toLowerCase()} </AppText> {symptomDataToDisplay && - <AppText style={textStyle}> + <AppText style={textStyle} numberOfLines={4}> {symptomDataToDisplay} </AppText> } From 72bcd34272968e7c12cc3590d1598861feeecae0 Mon Sep 17 00:00:00 2001 From: Sofiya Tepikin <sofiya.tepikin@gmail.com> Date: Sat, 5 Dec 2020 19:31:30 +0100 Subject: [PATCH 70/94] Fixes ordinal number suffix on chart date labels --- components/chart/cycle-day-label.js | 34 ++++++++++++++++++----------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/components/chart/cycle-day-label.js b/components/chart/cycle-day-label.js index f5ef7aa..ed24cde 100644 --- a/components/chart/cycle-day-label.js +++ b/components/chart/cycle-day-label.js @@ -1,7 +1,6 @@ import React from 'react' import PropTypes from 'prop-types' import { StyleSheet, View } from 'react-native' -import { LocalDate } from 'js-joda' import moment from 'moment' import AppText from '../common/app-text' @@ -11,22 +10,25 @@ import { getOrdinalSuffix } from '../helpers/home' import { Containers, Typography } from '../../styles' const CycleDayLabel = ({ height, date }) => { - const dayDate = LocalDate.parse(date) const cycleDayNumber = cycleModule().getCycleDayNumber(date) - - const isFirstDayOfMonth = dayDate.dayOfMonth() === 1 - const dateFormatting = isFirstDayOfMonth ? 'MMM' : 'D' - const shortDate = moment(date, "YYYY-MM-DD").format(dateFormatting) - const ending = isFirstDayOfMonth ? - '' : getOrdinalSuffix(this.cycleDayNumber) const cycleDayLabel = cycleDayNumber ? cycleDayNumber : ' ' + const momentDate = moment(date) + const dayOfMonth = momentDate.date() + const isFirstDayOfMonth = dayOfMonth === 1 + return ( <View style={[styles.container, { height }]}> <AppText style={styles.textBold}>{cycleDayLabel}</AppText> - <View style={{ flexDirection: 'row', justifyContent: 'space-around', alignItems: 'center' }}> - <AppText style={styles.text}>{shortDate}</AppText> - <AppText style={styles.textLight}>{ending}</AppText> + <View style={styles.dateLabel}> + <AppText style={styles.text}> + {isFirstDayOfMonth ? momentDate.format('MMM') : dayOfMonth} + </AppText> + {!isFirstDayOfMonth && + <AppText style={styles.textLight}> + {getOrdinalSuffix(dayOfMonth)} + </AppText> + } </View> </View> ) @@ -47,13 +49,19 @@ const styles = StyleSheet.create({ ...Containers.rowContainer }, text: { - ...Typography.label + ...Typography.label, + fontSize: 12 }, textBold: { ...Typography.labelBold }, textLight: { - ...Typography.labelLight + ...Typography.labelLight, + }, + dateLabel: { + flexDirection: 'row', + justifyContent: 'space-around', + alignItems: 'center', } }) From 42bf02a0c7420009318be6656d109d509645b50d Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Sat, 5 Dec 2020 20:45:01 +0100 Subject: [PATCH 71/94] Updates settings menu styling --- components/common/segment.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/components/common/segment.js b/components/common/segment.js index b0baca1..af96dcf 100644 --- a/components/common/segment.js +++ b/components/common/segment.js @@ -22,7 +22,7 @@ Segment.propTypes = { children: PropTypes.node, last: PropTypes.bool, style: PropTypes.object, - title: PropTypes.string + title: PropTypes.string, } const segmentContainer = { @@ -33,16 +33,16 @@ const segmentContainer = { const styles = StyleSheet.create({ container: { borderStyle: 'solid', - borderBottomWidth: 2, - borderBottomColor: Colors.grey, + borderBottomWidth: 1, + borderBottomColor: Colors.greyLight, paddingBottom: Spacing.base, - ...segmentContainer + ...segmentContainer, }, containerLast: { - ...segmentContainer + ...segmentContainer, }, title: { - ...Typography.subtitle + ...Typography.subtitle, } }) From 60cde25f7615c26f1ea40cfd911b1ee6de46ee50 Mon Sep 17 00:00:00 2001 From: Sofiya Tepikin <sofiya.tepikin@gmail.com> Date: Sun, 13 Dec 2020 15:54:16 +0100 Subject: [PATCH 72/94] Fix redirect to TemperatureEditView from reminder --- components/app.js | 2 ++ components/cycle-day/cycle-day-overview.js | 11 ++++++++++- components/cycle-day/symptom-box.js | 13 ++++++++++--- components/views.js | 3 ++- lib/notifications.js | 3 +-- 5 files changed, 25 insertions(+), 7 deletions(-) diff --git a/components/app.js b/components/app.js index 505f7bb..f8a0350 100644 --- a/components/app.js +++ b/components/app.js @@ -65,6 +65,7 @@ class App extends Component { const title = headerTitles[currentPage] const isSettingsSubView = isSettingsView(currentPage) + const isTemperatureEditView = currentPage === 'TemperatureEditView' const headerProps = { title, @@ -74,6 +75,7 @@ class App extends Component { const pageProps = { cycleDay: date && getCycleDay(date), date, + isTemperatureEditView, } return ( diff --git a/components/cycle-day/cycle-day-overview.js b/components/cycle-day/cycle-day-overview.js index d26ad97..3fcfe64 100644 --- a/components/cycle-day/cycle-day-overview.js +++ b/components/cycle-day/cycle-day-overview.js @@ -1,6 +1,7 @@ import React, { Component } from 'react' import { StyleSheet, View } from 'react-native' import PropTypes from 'prop-types' +import { LocalDate } from 'js-joda' import AppPage from '../common/app-page' import SymptomBox from './symptom-box' @@ -26,12 +27,17 @@ class CycleDayOverView extends Component { setDate: PropTypes.func, cycleDay: PropTypes.object, date: PropTypes.string, + isTemperatureEditView: PropTypes.bool, } constructor(props) { super(props) this.state = { cycleDay: getCycleDay(props.date), data: null } + if (props.isTemperatureEditView) { + const todayDateString = LocalDate.now().toString() + props.setDate(todayDateString) + } } updateCycleDay = (date) => { @@ -41,7 +47,7 @@ class CycleDayOverView extends Component { render() { const { cycleDay } = this.state - const { date } = this.props + const { date, isTemperatureEditView } = this.props const { getCycleDayNumber } = cycleModule() const cycleDayNumber = getCycleDayNumber(date) @@ -59,6 +65,8 @@ class CycleDayOverView extends Component { const symptomData = cycleDay && cycleDay[symptom] ? cycleDay[symptom] : null + const isSymptomEdited = isTemperatureEditView && symptom === 'temperature' + return( <SymptomBox key={symptom} @@ -66,6 +74,7 @@ class CycleDayOverView extends Component { symptomData={symptomData} symptomDataToDisplay={getData(symptom, symptomData)} updateCycleDayData={this.updateCycleDay} + isSymptomEdited={isSymptomEdited} /> ) })} diff --git a/components/cycle-day/symptom-box.js b/components/cycle-day/symptom-box.js index a30e883..af9e514 100644 --- a/components/cycle-day/symptom-box.js +++ b/components/cycle-day/symptom-box.js @@ -17,16 +17,23 @@ class SymptomBox extends Component { static propTypes = { date: PropTypes.string.isRequired, + isSymptomEdited: PropTypes.bool, symptom: PropTypes.string.isRequired, symptomData: PropTypes.object, symptomDataToDisplay: PropTypes.string, - updateCycleDayData: PropTypes.func.isRequired + updateCycleDayData: PropTypes.func.isRequired, + } + + static defaultProps = { + isSymptomEdited: false, } constructor(props) { super(props) - this.state = { isSymptomEdited: false } + this.state = { + isSymptomEdited: props.isSymptomEdited + } } onFinishEditing = () => { @@ -158,4 +165,4 @@ const mapStateToProps = (state) => { export default connect( mapStateToProps, null, -)(SymptomBox) \ No newline at end of file +)(SymptomBox) diff --git a/components/views.js b/components/views.js index e32d29a..7e325b8 100644 --- a/components/views.js +++ b/components/views.js @@ -10,8 +10,9 @@ export const viewsList = { Home, Calendar, CycleDay, + TemperatureEditView: CycleDay, Chart, SettingsMenu, ...settingsViews, - Stats + Stats, } diff --git a/lib/notifications.js b/lib/notifications.js index 1692484..f58a767 100644 --- a/lib/notifications.js +++ b/lib/notifications.js @@ -1,6 +1,5 @@ import {tempReminderObservable, periodReminderObservable} from '../local-storage' import Notification from 'react-native-push-notification' -import { LocalDate } from 'js-joda' import Moment from 'moment' import labels from '../i18n/en/settings' import { getBleedingDaysSortedByDate } from '../db' @@ -11,7 +10,7 @@ export default function setupNotifications(navigate) { Notification.configure({ onNotification: (notification) => { if (notification.id === '1') { - navigate('TemperatureEditView', { date: LocalDate.now().toString() }) + navigate('TemperatureEditView') } else { navigate('Home') } From c00e3f2befd3fdc4d9bdbe4d3aa6a7fd21bde6b7 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Sun, 13 Dec 2020 17:03:49 +0100 Subject: [PATCH 73/94] Adds padding between keyboard and text input --- components/common/app-text-input.js | 11 +++++++++-- components/cycle-day/symptom-edit-view.js | 5 +++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/components/common/app-text-input.js b/components/common/app-text-input.js index 8439266..d0cbdbf 100644 --- a/components/common/app-text-input.js +++ b/components/common/app-text-input.js @@ -1,11 +1,18 @@ import React from 'react' -import { StyleSheet, TextInput } from 'react-native' +import { KeyboardAvoidingView, StyleSheet, TextInput } from 'react-native' import PropTypes from 'prop-types' import { Colors, Spacing, Typography } from '../../styles' const AppTextInput = ({ style, ...props }) => { - return <TextInput style={[styles.input, style]} {...props} /> + return ( + <KeyboardAvoidingView + behavior="padding" + keyboardVerticalOffset={250} + > + <TextInput style={[styles.input, style]} {...props} /> + </KeyboardAvoidingView> + ) } AppTextInput.propTypes = { diff --git a/components/cycle-day/symptom-edit-view.js b/components/cycle-day/symptom-edit-view.js index 500c07e..b6e4195 100644 --- a/components/cycle-day/symptom-edit-view.js +++ b/components/cycle-day/symptom-edit-view.js @@ -215,10 +215,11 @@ class SymptomEditView extends Component { <AppText>{symtomPage[symptom].note}</AppText> <AppTextInput multiline={true} - placeholder={sharedLabels.enter} + numberOfLines={3} onChangeText={this.onEditNote} - value={noteText !== null ? noteText : ''} + placeholder={sharedLabels.enter} testID='noteInput' + value={noteText !== null ? noteText : ''} /> </Segment> } From 8145619f285c5793d69c830bdf21b250f50097e7 Mon Sep 17 00:00:00 2001 From: Lisa Hillebrand <lisa.hillebrand@posteo.de> Date: Sun, 13 Dec 2020 16:16:11 +0100 Subject: [PATCH 74/94] Fix error occurring when navigating back from settings section --- slices/navigation.js | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/slices/navigation.js b/slices/navigation.js index 89a442c..306a107 100644 --- a/slices/navigation.js +++ b/slices/navigation.js @@ -1,5 +1,5 @@ import { createSlice } from 'redux-starter-kit' -import { pages, isSymptomView } from '../components/pages' +import { pages } from '../components/pages' const navigationSlice = createSlice({ slice: 'navigation', @@ -14,22 +14,19 @@ const navigationSlice = createSlice({ } }, goBack: ({ currentPage, previousPage }) => { - - if (currentPage === 'CycleDay' || isSymptomView(currentPage)) { - if (previousPage) { - return { - currentPage: previousPage - } + if (currentPage === 'CycleDay' && !!previousPage) { + return { + currentPage: previousPage, } } - const page = pages.find(p => p.component === currentPage) + const page = pages.find((p) => p.component === currentPage) return { currentPage: page.parent, previousPage: currentPage, } - } - } + }, + }, }) // Extract the action creators object and the reducer From 59aef1126dc62d38592a110df498a633af62e646 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Sat, 5 Dec 2020 20:33:58 +0100 Subject: [PATCH 75/94] Updates styling of Stats page --- components/common/table.js | 13 +++++++------ components/stats.js | 31 +++++++++++++++++-------------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/components/common/table.js b/components/common/table.js index c319c05..c652996 100644 --- a/components/common/table.js +++ b/components/common/table.js @@ -50,29 +50,30 @@ const Cell = ({ content, isLeft }) => { Cell.propTypes = { content: PropTypes.node.isRequired, - isLeft: PropTypes.bool + isLeft: PropTypes.bool, } const styles = StyleSheet.create({ accentOrange: { - ...Typography.accentOrange + ...Typography.accentOrange, + fontSize: 18, }, accentPurpleBig: { ...Typography.accentPurpleBig, - marginRight: Spacing.base + marginRight: Spacing.base, }, cellLeft: { alignItems: 'flex-end', flex: 5, - justifyContent: 'center' + justifyContent: 'center', }, cellRight: { flex: 6, - justifyContent: 'center' + justifyContent: 'center', }, row: { flexDirection: 'row', - marginBottom: Spacing.tiny + marginBottom: Spacing.tiny, } }) diff --git a/components/stats.js b/components/stats.js index fd1af89..d43a74d 100644 --- a/components/stats.js +++ b/components/stats.js @@ -10,7 +10,7 @@ import cycleModule from '../lib/cycle' import {getCycleLengthStats as getCycleInfo} from '../lib/cycle-length' import {stats as labels} from '../i18n/en/labels' -import { Sizes, Spacing, Typography } from '../styles' +import { Spacing, Typography } from '../styles' const image = require('../assets/cycle-icon.png') @@ -28,7 +28,7 @@ const Stats = () => { [numberOfCycles, labels.basisOfStatsEnd] ] return ( - <AppPage> + <AppPage contentContainerStyle={styles.pageContainer}> <Segment last style={styles.pageContainer}> <AppText>{labels.cycleLengthExplainer}</AppText> {!hasAtLeastOneCycle && <AppText>{labels.emptyStats}</AppText>} @@ -66,20 +66,21 @@ const Stats = () => { } const column = { - flexDirection: 'column' + flexDirection: 'column', } const styles = StyleSheet.create({ accentOrange: { - ...Typography.accentOrange + ...Typography.accentOrange, + fontSize: 20, }, accentPurpleGiant: { ...Typography.accentPurpleGiant, - marginVertical: -25 }, accentPurpleHuge: { ...Typography.accentPurpleHuge, - marginRight: Spacing.base + marginRight: Spacing.base, + marginTop: -15, }, container: { alignItems: 'center', @@ -88,24 +89,26 @@ const styles = StyleSheet.create({ }, columnLeft: { ...column, - flex: 4 + flex: 4, }, columnRight: { ...column, - flex: 5 + flex: 5, + paddingTop: Spacing.small, }, image: { - height: Sizes.huge * 3, - marginLeft: Sizes.huge / 2, + height: 120, + marginLeft: 20, + marginTop: 20, resizeMode: 'contain', - width: Sizes.huge * 3 + width: 120, }, imageContainter: { - paddingTop: Sizes.huge, - marginBottom: Sizes.huge / 4 + paddingTop: 40, + marginBottom: 20, }, pageContainer: { - marginVertical: Spacing.large + marginVertical: Spacing.base, } }) From ada60a745bb27419c9dd19f7f99e8901cc6feed2 Mon Sep 17 00:00:00 2001 From: Maria Zadnepryanets <mariya.z@gmail.com> Date: Sun, 20 Dec 2020 10:38:11 +0000 Subject: [PATCH 76/94] Resolve "Redesign fix: Homepage fix" --- README.md | 3 ++ components/home.js | 79 +++++++++++++++++++++++--------------------- config.js | 3 ++ i18n/en/labels.js | 3 +- styles/spacing.js | 10 +++--- styles/typography.js | 20 ++++++----- 6 files changed, 65 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index a7c4315..b088d35 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,9 @@ A menstrual cycle tracking app that's open-source and leaves your data on your phone. Use it to track your menstrual cycle and/or for fertility awareness! Find more information on [our website](https://bloodyhealth.gitlab.io/). +[<img src="https://bloodyhealth.gitlab.io/assets/get.png" + alt="Get it here" + height="55">](https://bloodyhealth.gitlab.io/release/5.apk) [<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" alt="Get it on F-Droid" height="80">](https://f-droid.org/packages/com.drip/) diff --git a/components/home.js b/components/home.js index aabd81b..3db3507 100644 --- a/components/home.js +++ b/components/home.js @@ -35,16 +35,19 @@ class Home extends Component { const { status, phase, statusText } = getFertilityStatusForDay(this.todayDateString) const prediction = getPredictedMenses() - - this.cycleDayText = !this.cycleDayNumber ? labels.cycleDayNotEnoughInfo - : formatWithOrdinalSuffix(this.cycleDayNumber) - this.phase = phase - this.phaseText = !phase ? statusText : formatWithOrdinalSuffix(phase) this.prediction = determinePredictionText(prediction) - this.status = status - this.statusText = statusText - this.title = `${today.dayOfMonth()} ${today.month()}` + this.title = `${today.dayOfMonth()} ${today.month()} ${today.year()}` + if (this.cycleDayNumber) { + this.cycleDayText = formatWithOrdinalSuffix(this.cycleDayNumber) + } + + if (phase) { + this.phase = phase + this.phaseText = formatWithOrdinalSuffix(phase) + this.status = status + this.statusText = statusText + } } navigateToCycleDayView = () => { @@ -54,6 +57,7 @@ class Home extends Component { render() { const { + cycleDayNumber, cycleDayText, phase, phaseText, @@ -69,30 +73,23 @@ class Home extends Component { contentContainerStyle={styles.contentContainer} > <AppText style={styles.title}>{title}</AppText> - <View style={styles.line}> - {this.cycleDayNumber && ( - <React.Fragment> - <AppText style={styles.whiteText}>{cycleDayText}</AppText> - <AppText style={styles.tourquiseText}>{labels.cycleDay}</AppText> - </React.Fragment> - )} - {!this.cycleDayNumber && <AppText>{cycleDayText}</AppText>} - </View> - <View style={styles.line}> - {!phase && - <AppText style={styles.tourquiseText}>{phaseText}</AppText> - } - {phase && ( - <React.Fragment> - <AppText style={styles.whiteText}>{phaseText}</AppText> - <AppText style={styles.tourquiseText}> - {labels.cyclePhase} - </AppText> - <AppText style={styles.tourquiseText}>{status}</AppText> - <Asterisk /> - </React.Fragment> - )} - </View> + + {cycleDayNumber && + <View style={styles.line}> + <AppText style={styles.whiteSubtitle}>{cycleDayText}</AppText> + <AppText style={styles.tourquiseText}>{labels.cycleDay}</AppText> + </View> + } + {phase && + <View style={styles.line}> + <AppText style={styles.whiteSubtitle}>{phaseText}</AppText> + <AppText style={styles.tourquiseText}> + {labels.cyclePhase} + </AppText> + <AppText style={styles.tourquiseText}>{status}</AppText> + <Asterisk /> + </View> + } <View style={styles.line}> <AppText style={styles.tourquiseText}>{prediction}</AppText> </View> @@ -102,7 +99,7 @@ class Home extends Component { {phase && ( <View style={styles.line}> <Asterisk /> - <AppText style={styles.tourquiseText} linkStyle={styles.whiteText}> + <AppText linkStyle={styles.whiteText}> {statusText} </AppText> </View> @@ -119,19 +116,20 @@ const Asterisk = () => { const styles = StyleSheet.create({ asterisk: { color: Colors.orange, - paddingRight: Spacing.base + paddingRight: Spacing.base, }, container: { backgroundColor: Colors.purple, - flex: 1 + flex: 1, }, contentContainer: { - padding: Spacing.base + padding: Spacing.base, }, line: { flexDirection: 'row', justifyContent: 'flex-start', - marginBottom: Spacing.tiny + marginBottom: Spacing.tiny, + marginTop: Spacing.small, }, title: { color: Colors.purpleLight, @@ -141,9 +139,14 @@ const styles = StyleSheet.create({ }, tourquiseText: { color: Colors.tourquise, + fontSize: Sizes.subtitle, + }, + whiteSubtitle: { + color: 'white', + fontSize: Sizes.subtitle, }, whiteText: { - color: 'white' + color: 'white', } }) diff --git a/config.js b/config.js index 71855b6..4053b74 100644 --- a/config.js +++ b/config.js @@ -1,3 +1,5 @@ +import { PixelRatio } from 'react-native' + export const ACTION_DELETE = 'delete' export const ACTION_EXPORT = 'export' export const ACTION_IMPORT = 'import' @@ -14,6 +16,7 @@ export const SYMPTOMS = [ 'note', ] +export const fontRatio = PixelRatio.getFontScale() export const CHART_COLUMN_WIDTH = 32 export const CHART_COLUMN_MIDDLE = CHART_COLUMN_WIDTH / 2 export const CHART_DOT_RADIUS = 6 diff --git a/i18n/en/labels.js b/i18n/en/labels.js index ce66229..3fb046b 100644 --- a/i18n/en/labels.js +++ b/i18n/en/labels.js @@ -2,7 +2,6 @@ import labels from './settings' const settingsTitles = labels.menuItems export const home = { - cycleDayNotEnoughInfo: "We don't have enough information to know what your current cycle day is.", unknown: '?', phase: n => `${['1st', '2nd', '3rd'][n - 1]} cycle phase`, cycleDay: ' day of your cycle', @@ -70,7 +69,7 @@ export const stats = { } export const bleedingPrediction = { - noPrediction: 'There is not enough period data to predict the next one.', + noPrediction: `As soon as you have tracked 3 menstrual cycles, drip will make predictions for the next ones.`, predictionInFuture: (startDays, endDays) => `Your next period is likely to start in ${startDays} to ${endDays} days.`, predictionStartedXDaysLeft: (numberOfDays) => `Your period is likely to start today or during the next ${numberOfDays} days.`, predictionStarted1DayLeft: 'Your period is likely to start today or tomorrow.', diff --git a/styles/spacing.js b/styles/spacing.js index b665347..50eb0d7 100644 --- a/styles/spacing.js +++ b/styles/spacing.js @@ -1,8 +1,10 @@ +import { fontRatio } from '../config' + export default { - tiny: 4, - small: 10, - base: 16, - large: 20, + tiny: 4 / fontRatio, + small: 10 / fontRatio, + base: 16 / fontRatio, + large: 20 / fontRatio, symptomTileWidth: '48%', textWidth: '70%' } \ No newline at end of file diff --git a/styles/typography.js b/styles/typography.js index f0f6bb5..2ea043d 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -1,3 +1,5 @@ +import { fontRatio } from '../config' + import Colors from './colors' import Spacing from './spacing' @@ -7,13 +9,13 @@ export const fonts = { } export const sizes = { - tiny: 7, - footnote: 10, - small: 14, - base: 18, - subtitle: 22, - title: 24, - huge: 40 + tiny: 7 / fontRatio, + footnote: 10 / fontRatio, + small: 14 / fontRatio, + base: 18 / fontRatio, + subtitle: 22 / fontRatio, + title: 24 / fontRatio, + huge: 32 / fontRatio, } const accentText = { @@ -24,12 +26,12 @@ const accentText = { const accentTextBig = { ...accentText, - fontSize: 30, + fontSize: 30 / fontRatio, } const accentTextGiant = { ...accentText, - fontSize: 50, + fontSize: 50 / fontRatio, } const accentTextHuge = { From 9e907dad0bccd948380ae65406726b28445c2e22 Mon Sep 17 00:00:00 2001 From: Lisa <lisa.hillebrand@posteo.de> Date: Sun, 20 Dec 2020 10:48:56 +0000 Subject: [PATCH 77/94] Fix error occurring when navigating back from settings section --- slices/navigation.js | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/slices/navigation.js b/slices/navigation.js index 306a107..babdb03 100644 --- a/slices/navigation.js +++ b/slices/navigation.js @@ -7,23 +7,15 @@ const navigationSlice = createSlice({ currentPage: 'Home', }, reducers: { - navigate: (state, action) => { + navigate: (_state, action) => { return { currentPage: action.payload, - previousPage: state.currentPage, } }, - goBack: ({ currentPage, previousPage }) => { - if (currentPage === 'CycleDay' && !!previousPage) { - return { - currentPage: previousPage, - } - } - + goBack: ({ currentPage }) => { const page = pages.find((p) => p.component === currentPage) return { currentPage: page.parent, - previousPage: currentPage, } }, }, From b00b97d4115ac699fec88dd6173ae28c2df45e9c Mon Sep 17 00:00:00 2001 From: emelko <ml.kochsiek@mailbox.org> Date: Sun, 20 Dec 2020 12:59:41 +0100 Subject: [PATCH 78/94] Add secureTextEntry to password AppTextInput --- components/settings/common/confirm-with-password.js | 1 + components/settings/password/enter-new-password.js | 2 ++ 2 files changed, 3 insertions(+) diff --git a/components/settings/common/confirm-with-password.js b/components/settings/common/confirm-with-password.js index f96978a..2b0b970 100644 --- a/components/settings/common/confirm-with-password.js +++ b/components/settings/common/confirm-with-password.js @@ -70,6 +70,7 @@ export default class ConfirmWithPassword extends Component { onChangeText={this.handlePasswordInput} placeholder={labels.enterCurrent} value={password} + secureTextEntry={true} /> <View style={styles.container}> <Button onPress={this.props.onCancel}> diff --git a/components/settings/password/enter-new-password.js b/components/settings/password/enter-new-password.js index 5fc8d71..a351099 100644 --- a/components/settings/password/enter-new-password.js +++ b/components/settings/password/enter-new-password.js @@ -69,12 +69,14 @@ export default class EnterNewPassword extends Component { placeholder={labels.enterNew} textContentType="password" value={password} + secureTextEntry={true} /> <AppTextInput onChangeText={this.handleConfirmationInput} placeholder={labels.confirmPassword} textContentType="password" value={passwordConfirmation} + secureTextEntry={true} /> {shouldShowErrorMessage && <AppText style={styles.error}>{labels.passwordsDontMatch}</AppText> From 8f6ae97ef9cc9647a14aad0c0d96d6107f7086e8 Mon Sep 17 00:00:00 2001 From: emelko <ml.kochsiek@mailbox.org> Date: Sun, 20 Dec 2020 17:18:17 +0100 Subject: [PATCH 79/94] No warning msg if there is no temp data --- components/helpers/cycle-day.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/helpers/cycle-day.js b/components/helpers/cycle-day.js index aae8a3f..1912284 100644 --- a/components/helpers/cycle-day.js +++ b/components/helpers/cycle-day.js @@ -33,7 +33,7 @@ export const isPreviousTemperature = (temperature) => { } export const isTemperatureOutOfRange = (temperature) => { - if (temperature === '') return null + if (temperature === null) return null const value = Number(temperature) const range = { min: TEMP_MIN, max: TEMP_MAX } From 80cc9bc73dc45de8df51af3075c4c0e1c4f578c9 Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Sun, 20 Dec 2020 14:12:20 +0100 Subject: [PATCH 80/94] Update AppTextInput behavior, when Keyboard is visible --- components/common/app-text-input.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/common/app-text-input.js b/components/common/app-text-input.js index d0cbdbf..3ec9369 100644 --- a/components/common/app-text-input.js +++ b/components/common/app-text-input.js @@ -8,7 +8,7 @@ const AppTextInput = ({ style, ...props }) => { return ( <KeyboardAvoidingView behavior="padding" - keyboardVerticalOffset={250} + keyboardVerticalOffset={300} > <TextInput style={[styles.input, style]} {...props} /> </KeyboardAvoidingView> From d25af176d3a4a93faf2328015614a3caa99c6716 Mon Sep 17 00:00:00 2001 From: Maria Zadnepryanets <mariya.z@gmail.com> Date: Sun, 20 Dec 2020 19:11:03 +0000 Subject: [PATCH 81/94] Resolve "Stats" --- components/common/menu-icon.js | 2 +- components/common/table.js | 6 +++--- components/home.js | 5 ++++- components/stats.js | 30 ++++++++++++++++-------------- styles/typography.js | 3 ++- 5 files changed, 26 insertions(+), 20 deletions(-) diff --git a/components/common/menu-icon.js b/components/common/menu-icon.js index cd1fa0f..8ef9b9a 100644 --- a/components/common/menu-icon.js +++ b/components/common/menu-icon.js @@ -10,7 +10,7 @@ const Icon = createIconSetFromIcoMoon(iconConfig, '', 'Menu') const MenuIcon = ({ isActive, name }) => { const color = isActive ? Colors.greyDark : Colors.grey - return <Icon name={name} size={Sizes.huge} color={color} /> + return <Icon name={name} size={Sizes.icon} color={color} /> } MenuIcon.propTypes = { diff --git a/components/common/table.js b/components/common/table.js index c652996..bb84f27 100644 --- a/components/common/table.js +++ b/components/common/table.js @@ -4,7 +4,7 @@ import PropTypes from 'prop-types' import AppText from './app-text' -import { Spacing, Typography } from '../../styles' +import { Sizes, Spacing, Typography } from '../../styles' const Table = ({ tableContent }) => { return ( @@ -56,11 +56,11 @@ Cell.propTypes = { const styles = StyleSheet.create({ accentOrange: { ...Typography.accentOrange, - fontSize: 18, + fontSize: Sizes.small, }, accentPurpleBig: { ...Typography.accentPurpleBig, - marginRight: Spacing.base, + marginRight: Spacing.small, }, cellLeft: { alignItems: 'flex-end', diff --git a/components/home.js b/components/home.js index 3db3507..ad2ff53 100644 --- a/components/home.js +++ b/components/home.js @@ -99,7 +99,7 @@ class Home extends Component { {phase && ( <View style={styles.line}> <Asterisk /> - <AppText linkStyle={styles.whiteText}> + <AppText linkStyle={styles.whiteText} style={styles.greyText}> {statusText} </AppText> </View> @@ -147,6 +147,9 @@ const styles = StyleSheet.create({ }, whiteText: { color: 'white', + }, + greyText: { + color: Colors.greyLight, } }) diff --git a/components/stats.js b/components/stats.js index d43a74d..1cdcf1b 100644 --- a/components/stats.js +++ b/components/stats.js @@ -1,5 +1,5 @@ import React from 'react' -import { ImageBackground, StyleSheet, View } from 'react-native' +import { Dimensions, ImageBackground, StyleSheet, View } from 'react-native' import AppPage from './common/app-page' import AppText from './common/app-text' @@ -10,9 +10,11 @@ import cycleModule from '../lib/cycle' import {getCycleLengthStats as getCycleInfo} from '../lib/cycle-length' import {stats as labels} from '../i18n/en/labels' -import { Spacing, Typography } from '../styles' +import { Sizes, Spacing, Typography } from '../styles' +import { fontRatio } from '../config' const image = require('../assets/cycle-icon.png') +const screen = Dimensions.get('screen') const Stats = () => { const cycleLengths = cycleModule().getAllCycleLengths() @@ -20,13 +22,15 @@ const Stats = () => { const hasAtLeastOneCycle = numberOfCycles >= 1 const cycleData = hasAtLeastOneCycle ? getCycleInfo(cycleLengths) : { minimum: '—', maximum: '—', stdDeviation: '—' } - const statsData = [ [cycleData.minimum, labels.minLabel], [cycleData.maximum, labels.maxLabel], [cycleData.stdDeviation ? cycleData.stdDeviation : '—', labels.stdLabel], [numberOfCycles, labels.basisOfStatsEnd] ] + const height = screen.height * 0.2 + const marginTop = (height / 8 - Sizes.icon / fontRatio) / 4 + return ( <AppPage contentContainerStyle={styles.pageContainer}> <Segment last style={styles.pageContainer}> @@ -38,12 +42,12 @@ const Stats = () => { <ImageBackground source={image} imageStyle={styles.image} - style={styles.imageContainter} + style={[styles.imageContainter, { height }]} > <AppText numberOfLines={1} ellipsizeMode="clip" - style={styles.accentPurpleGiant} + style={[styles.accentPurpleGiant, { marginTop }]} > {cycleData.mean} </AppText> @@ -72,15 +76,14 @@ const column = { const styles = StyleSheet.create({ accentOrange: { ...Typography.accentOrange, - fontSize: 20, + fontSize: Sizes.small, }, accentPurpleGiant: { ...Typography.accentPurpleGiant, }, accentPurpleHuge: { ...Typography.accentPurpleHuge, - marginRight: Spacing.base, - marginTop: -15, + marginTop: Spacing.base * (-1), }, container: { alignItems: 'center', @@ -97,15 +100,14 @@ const styles = StyleSheet.create({ paddingTop: Spacing.small, }, image: { - height: 120, - marginLeft: 20, - marginTop: 20, + marginLeft: Spacing.large, + marginTop: Spacing.large, resizeMode: 'contain', - width: 120, + }, imageContainter: { - paddingTop: 40, - marginBottom: 20, + paddingTop: Spacing.large * 2, + marginBottom: Spacing.large, }, pageContainer: { marginVertical: Spacing.base, diff --git a/styles/typography.js b/styles/typography.js index 2ea043d..3df807b 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -16,6 +16,7 @@ export const sizes = { subtitle: 22 / fontRatio, title: 24 / fontRatio, huge: 32 / fontRatio, + icon: 40 / fontRatio, } const accentText = { @@ -31,7 +32,7 @@ const accentTextBig = { const accentTextGiant = { ...accentText, - fontSize: 50 / fontRatio, + fontSize: sizes.icon / fontRatio, } const accentTextHuge = { From 4e6653c54c45cccf98f65ac5d1b41f47b432da9e Mon Sep 17 00:00:00 2001 From: emelko <ml.kochsiek@mailbox.org> Date: Tue, 22 Dec 2020 22:24:57 +0100 Subject: [PATCH 82/94] Check for falsy value --- components/helpers/cycle-day.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/helpers/cycle-day.js b/components/helpers/cycle-day.js index 1912284..d862a37 100644 --- a/components/helpers/cycle-day.js +++ b/components/helpers/cycle-day.js @@ -33,7 +33,7 @@ export const isPreviousTemperature = (temperature) => { } export const isTemperatureOutOfRange = (temperature) => { - if (temperature === null) return null + if (!temperature) return null const value = Number(temperature) const range = { min: TEMP_MIN, max: TEMP_MAX } From af5c24c466a88fc902e9e797bf3b208fbd344c26 Mon Sep 17 00:00:00 2001 From: Lisa <lisa.hillebrand@posteo.de> Date: Wed, 30 Dec 2020 15:07:03 +0000 Subject: [PATCH 83/94] Change font color of marked calendar days --- components/calendar.js | 23 ++++++------ components/chart/chart.js | 2 +- components/chart/dot-and-line.js | 6 ++-- components/common/app-page.js | 4 +-- components/header/logo.js | 2 +- components/helpers/calendar.js | 35 ++++++++++--------- components/home.js | 12 +++---- .../nfp-settings/temperature-slider.js | 6 ++-- styles/colors.js | 6 ++-- 9 files changed, 47 insertions(+), 49 deletions(-) diff --git a/components/calendar.js b/components/calendar.js index 3ab41df..80ac49f 100644 --- a/components/calendar.js +++ b/components/calendar.js @@ -14,13 +14,13 @@ import { calendarTheme, predictionToCalFormat, toCalFormat, - todayToCalFormat + todayToCalFormat, } from './helpers/calendar' class CalendarView extends Component { static propTypes = { setDate: PropTypes.func.isRequired, - navigate: PropTypes.func.isRequired + navigate: PropTypes.func.isRequired, } constructor(props) { @@ -30,7 +30,7 @@ class CalendarView extends Component { this.state = { bleedingDaysInCalFormat: toCalFormat(this.bleedingDays), predictedBleedingDaysInCalFormat: predictionToCalFormat(predictedMenses), - todayInCalFormat: todayToCalFormat() + todayInCalFormat: todayToCalFormat(), } this.bleedingDays.addListener(this.setStateWithCalFormattedDays) @@ -42,7 +42,7 @@ class CalendarView extends Component { this.setState({ bleedingDaysInCalFormat: toCalFormat(this.bleedingDays), predictedBleedingDaysInCalFormat: predictionToCalFormat(predictedMenses), - todayInCalFormat: todayToCalFormat() + todayInCalFormat: todayToCalFormat(), }) } @@ -59,7 +59,7 @@ class CalendarView extends Component { const { todayInCalFormat, bleedingDaysInCalFormat, - predictedBleedingDaysInCalFormat + predictedBleedingDaysInCalFormat, } = this.state const markedDates = Object.assign( {}, @@ -75,7 +75,7 @@ class CalendarView extends Component { firstDay={1} onDayPress={this.passDateToDayView.bind(this)} markedDates={markedDates} - markingType={'custom'} + markingType='custom' theme={calendarTheme} // Max amount of months allowed to scroll to the past. pastScrollRange={120} @@ -86,17 +86,14 @@ class CalendarView extends Component { } const styles = StyleSheet.create({ - container: { flex: 1 } + container: { flex: 1 }, }) const mapDispatchToProps = (dispatch) => { - return({ + return { setDate: (date) => dispatch(setDate(date)), navigate: (page) => dispatch(navigate(page)), - }) + } } -export default connect( - null, - mapDispatchToProps, -)(CalendarView) +export default connect(null, mapDispatchToProps)(CalendarView) diff --git a/components/chart/chart.js b/components/chart/chart.js index 021f492..0dc364e 100644 --- a/components/chart/chart.js +++ b/components/chart/chart.js @@ -229,7 +229,7 @@ const styles = StyleSheet.create({ }, loadingContainer: { height: '100%', - backgroundColor: Colors.tourquiseLight, + backgroundColor: Colors.turquoiseLight, justifyContent: 'center' }, page: { diff --git a/components/chart/dot-and-line.js b/components/chart/dot-and-line.js index e3be7aa..d2618c3 100644 --- a/components/chart/dot-and-line.js +++ b/components/chart/dot-and-line.js @@ -54,11 +54,11 @@ export default class DotAndLine extends Component { const dot = new Path().moveTo(CHART_COLUMN_MIDDLE , y - CHART_DOT_RADIUS) .arc(0, CHART_DOT_RADIUS * 2, CHART_DOT_RADIUS) .arc(0, CHART_DOT_RADIUS * -2, CHART_DOT_RADIUS) - const dotColor = exclude ? Colors.tourquise : Colors.tourquiseDark + const dotColor = exclude ? Colors.turquoise : Colors.turquoiseDark const lineColorLeft = excludeLeftLine ? - Colors.tourquise : Colors.tourquiseDark + Colors.turquoise : Colors.turquoiseDark const lineColorRight = excludeRightLine ? - Colors.tourquise : Colors.tourquiseDark + Colors.turquoise : Colors.turquoiseDark return( <React.Fragment> diff --git a/components/common/app-page.js b/components/common/app-page.js index 6181700..0ffde8d 100644 --- a/components/common/app-page.js +++ b/components/common/app-page.js @@ -36,11 +36,11 @@ AppPage.propTypes = { const styles = StyleSheet.create({ container: { - backgroundColor: Colors.tourquiseLight, + backgroundColor: Colors.turquoiseLight, flex: 1 }, scrollView: { - backgroundColor: Colors.tourquiseLight, + backgroundColor: Colors.turquoiseLight, flexGrow: 1 }, title: { diff --git a/components/header/logo.js b/components/header/logo.js index 4bd63fe..da2759b 100644 --- a/components/header/logo.js +++ b/components/header/logo.js @@ -23,7 +23,7 @@ Logo.propTypes = { const styles = StyleSheet.create({ logo: { - color: Colors.tourquiseDark, + color: Colors.turquoiseDark, fontFamily: Fonts.bold, fontSize: Sizes.title } diff --git a/components/helpers/calendar.js b/components/helpers/calendar.js index e765dd9..fdedfa8 100644 --- a/components/helpers/calendar.js +++ b/components/helpers/calendar.js @@ -12,11 +12,13 @@ export const toCalFormat = (bleedingDaysSortedByDate) => { customStyles: { container: { backgroundColor: shades[day.bleeding.value], - } - } - } - if (day.date === todayDateString) { - acc[day.date].customStyles.text = styles.calendarToday + paddingTop: 2, + }, + text: { + color: Colors.turquoiseLight, + ...(day.date === todayDateString && styles.calendarToday), + }, + }, } return acc }, {}) @@ -31,12 +33,11 @@ export const predictionToCalFormat = (predictedDays) => { accSet[day] = { customStyles: { container: { - borderColor: (i === middleIndex) ? shades[3] : shades[0], - borderStyle: (i === middleIndex) ? 'solid' : 'dashed', + borderColor: i === middleIndex ? shades[3] : shades[0], + borderStyle: i === middleIndex ? 'solid' : 'dashed', borderWidth: 1, }, - - } + }, } if (day === todayDateString) { accSet[day].customStyles.text = styles.calendarToday @@ -50,24 +51,24 @@ export const predictionToCalFormat = (predictedDays) => { export const todayToCalFormat = () => { const todayDateString = LocalDate.now().toString() - const todayFormated = {} - todayFormated[todayDateString] = { - customStyles: { - text: styles.calendarToday - } + return { + [todayDateString]: { + customStyles: { + text: styles.calendarToday, + }, + }, } - return todayFormated } const styles = { calendarToday: { fontFamily: Fonts.bold, - color: Colors.purple + color: Colors.purple, }, } export const calendarTheme = { - calendarBackground: Colors.tourquiseLight, + calendarBackground: Colors.turquoiseLight, dayTextColor: Colors.greyDark, monthTextColor: Colors.purple, textDayFontFamily: Fonts.main, diff --git a/components/home.js b/components/home.js index ad2ff53..423d82a 100644 --- a/components/home.js +++ b/components/home.js @@ -77,21 +77,21 @@ class Home extends Component { {cycleDayNumber && <View style={styles.line}> <AppText style={styles.whiteSubtitle}>{cycleDayText}</AppText> - <AppText style={styles.tourquiseText}>{labels.cycleDay}</AppText> + <AppText style={styles.turquoiseText}>{labels.cycleDay}</AppText> </View> } {phase && <View style={styles.line}> <AppText style={styles.whiteSubtitle}>{phaseText}</AppText> - <AppText style={styles.tourquiseText}> + <AppText style={styles.turquoiseText}> {labels.cyclePhase} </AppText> - <AppText style={styles.tourquiseText}>{status}</AppText> + <AppText style={styles.turquoiseText}>{status}</AppText> <Asterisk /> </View> } <View style={styles.line}> - <AppText style={styles.tourquiseText}>{prediction}</AppText> + <AppText style={styles.turquoiseText}>{prediction}</AppText> </View> <Button isCTA isSmall={false} onPress={this.navigateToCycleDayView}> {labels.addData} @@ -137,8 +137,8 @@ const styles = StyleSheet.create({ fontSize: Sizes.huge, marginVertical: Spacing.base, }, - tourquiseText: { - color: Colors.tourquise, + turquoiseText: { + color: Colors.turquoise, fontSize: Sizes.subtitle, }, whiteSubtitle: { diff --git a/components/settings/nfp-settings/temperature-slider.js b/components/settings/nfp-settings/temperature-slider.js index 01cfdb0..86b9c53 100644 --- a/components/settings/nfp-settings/temperature-slider.js +++ b/components/settings/nfp-settings/temperature-slider.js @@ -61,7 +61,7 @@ const styles = StyleSheet.create({ paddingTop: Sizes.base }, marker: { - backgroundColor: Colors.tourquiseDark, + backgroundColor: Colors.turquoiseDark, borderRadius: 50, elevation: 4, height: Sizes.subtitle, @@ -72,9 +72,9 @@ const styles = StyleSheet.create({ height: Sizes.small }, sliderAccentBackground: { - backgroundColor: Colors.tourquiseDark + backgroundColor: Colors.turquoiseDark }, sliderBackground: { - backgroundColor: Colors.tourquise + backgroundColor: Colors.turquoise }, }) diff --git a/styles/colors.js b/styles/colors.js index 533e1a8..047a60f 100644 --- a/styles/colors.js +++ b/styles/colors.js @@ -19,9 +19,9 @@ export default { orange: '#F38337', purple: '#3A2671', purpleLight: '#938EB2', - tourquiseDark: '#69CBC1', - tourquise: '#CFECEA', - tourquiseLight: '#E9F2ED', + turquoiseDark: '#69CBC1', + turquoise: '#CFECEA', + turquoiseLight: '#E9F2ED', iconColors: { 'bleeding': { color: redColor, From 97ff3deac36559a79df07a50bfb7ba73984ea06e Mon Sep 17 00:00:00 2001 From: mashazyu <mariya.z@gmail.com> Date: Wed, 30 Dec 2020 17:32:34 +0100 Subject: [PATCH 84/94] Fixes extra horizontal grid line on chart --- components/helpers/chart.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/helpers/chart.js b/components/helpers/chart.js index 80b7551..318bd67 100644 --- a/components/helpers/chart.js +++ b/components/helpers/chart.js @@ -21,7 +21,7 @@ function getTickConfig() { //Add 1 tick above the max value to display on chart const scaleMax = scaleObservable.value.max + unit const scaleMin = scaleObservable.value.min - unit - const numberOfTicks = (scaleMax - scaleMin) / unit + 1 + const numberOfTicks = Math.round((scaleMax - scaleMin) / unit + 1) return { numberOfTicks, scaleMax, scaleMin, unit } } From 7aff04946e8c45e83fa9d01e5f10b3b6b29bff23 Mon Sep 17 00:00:00 2001 From: Sofiya Tepikin <sofiya.tepikin@gmail.com> Date: Wed, 30 Dec 2020 18:35:33 +0100 Subject: [PATCH 85/94] Fixes error on highes/lowest scale values --- components/chart/temperature-column.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/chart/temperature-column.js b/components/chart/temperature-column.js index 18f36bf..3ae3779 100644 --- a/components/chart/temperature-column.js +++ b/components/chart/temperature-column.js @@ -41,7 +41,7 @@ const TemperatureColumn = ({ key='fhm' />} - {data && data.y && <DotAndLine + {data && typeof(data.y) !== 'undefined' && <DotAndLine y={data.y} exclude={data.temperatureExclude} rightY={data.rightY} From 2fb20c0031dae6e85f34727a5a1565f7c6dadd09 Mon Sep 17 00:00:00 2001 From: Sofiya Tepikin <sofiya.tepikin@gmail.com> Date: Sun, 3 Jan 2021 12:36:37 +0000 Subject: [PATCH 86/94] Fix chart dots and lines --- components/chart/cycle-day-label.js | 4 ++-- components/chart/dot-and-line.js | 12 +++++++++--- components/chart/tick.js | 6 +++--- components/helpers/chart.js | 9 ++++++--- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/components/chart/cycle-day-label.js b/components/chart/cycle-day-label.js index ed24cde..1f8a82f 100644 --- a/components/chart/cycle-day-label.js +++ b/components/chart/cycle-day-label.js @@ -7,7 +7,7 @@ import AppText from '../common/app-text' import cycleModule from '../../lib/cycle' import { getOrdinalSuffix } from '../helpers/home' -import { Containers, Typography } from '../../styles' +import { Containers, Typography, Sizes } from '../../styles' const CycleDayLabel = ({ height, date }) => { const cycleDayNumber = cycleModule().getCycleDayNumber(date) @@ -50,7 +50,7 @@ const styles = StyleSheet.create({ }, text: { ...Typography.label, - fontSize: 12 + fontSize: Sizes.small, }, textBold: { ...Typography.labelBold diff --git a/components/chart/dot-and-line.js b/components/chart/dot-and-line.js index d2618c3..335e72c 100644 --- a/components/chart/dot-and-line.js +++ b/components/chart/dot-and-line.js @@ -40,14 +40,14 @@ export default class DotAndLine extends Component { const middleY = ((leftY - y) / 2) + y excludeLeftLine = leftTemperatureExclude || exclude lineLeft = new Path() - .moveTo(CHART_COLUMN_MIDDLE - CHART_DOT_RADIUS, y) + .moveTo(CHART_COLUMN_MIDDLE, y) .lineTo(0, middleY) } if (rightY) { const middleY = ((y - rightY) / 2) + rightY excludeRightLine = rightTemperatureExclude || exclude lineRight = new Path() - .moveTo(CHART_COLUMN_MIDDLE + CHART_DOT_RADIUS, y) + .moveTo(CHART_COLUMN_MIDDLE, y) .lineTo(CHART_COLUMN_WIDTH, middleY) } @@ -74,7 +74,13 @@ export default class DotAndLine extends Component { strokeWidth={CHART_STROKE_WIDTH} key={y + CHART_DOT_RADIUS} /> - <Shape d={dot} stroke={dotColor} strokeWidth={CHART_STROKE_WIDTH} key='dot' /> + <Shape + d={dot} + stroke={dotColor} + strokeWidth={CHART_STROKE_WIDTH} + fill="white" + key='dot' + /> </React.Fragment> ) } diff --git a/components/chart/tick.js b/components/chart/tick.js index e626644..f492c80 100644 --- a/components/chart/tick.js +++ b/components/chart/tick.js @@ -28,13 +28,13 @@ Tick.propTypes = { const text = { - right: 4, lineHeight: Sizes.base, - textAlign: 'right', - textAlignVertical: 'center' + right: 4, + textAlign: 'right' } const styles = StyleSheet.create({ container: { + justifyContent: 'center', position: 'absolute', right: 0, width: 40 diff --git a/components/helpers/chart.js b/components/helpers/chart.js index 318bd67..0a68a1b 100644 --- a/components/helpers/chart.js +++ b/components/helpers/chart.js @@ -7,8 +7,11 @@ import { getCycleDay, getAmountOfCycleDays } from '../../db' //YAxis helpers export function normalizeToScale(temp, columnHeight) { - const scale = scaleObservable.value - const valueRelativeToScale = (scale.max - temp) / (scale.max - scale.min) + const unit = unitObservable.value + //Add 1 tick above the max value to display on chart + const scaleMax = scaleObservable.value.max + unit + const scaleMin = scaleObservable.value.min - unit + const valueRelativeToScale = (scaleMax - temp) / (scaleMax - scaleMin) return getAbsoluteValue(valueRelativeToScale, columnHeight) } @@ -286,4 +289,4 @@ export function nfpLines() { return ret } -} \ No newline at end of file +} From 68ef06b93e9525ff48d799f3acbbee94b0aabf56 Mon Sep 17 00:00:00 2001 From: emelko <ml.kochsiek@mailbox.org> Date: Sun, 3 Jan 2021 15:10:44 +0100 Subject: [PATCH 87/94] Adds back computed mucus value to be saved --- components/helpers/cycle-day.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/components/helpers/cycle-day.js b/components/helpers/cycle-day.js index d862a37..56e1b06 100644 --- a/components/helpers/cycle-day.js +++ b/components/helpers/cycle-day.js @@ -7,6 +7,8 @@ import * as labels from '../../i18n/en/cycle-day' import { getLabelsList } from './labels' import { TEMP_MAX, TEMP_MIN } from '../../config' +import computeNfpValue from '../../lib/nfp-mucus' + const bleedingLabels = labels.bleeding.labels const cervixLabels = labels.cervix const contraceptiveLabels = labels.contraceptives.categories @@ -263,7 +265,7 @@ export const save = { const isDataEntered = ['feeling', 'texture'].some( value => isNumber(data[value])) const valuesToSave = shouldDeleteData || !isDataEntered - ? null : { feeling, texture, exclude } + ? null : { feeling, texture, value: computeNfpValue(feeling, texture), exclude } saveSymptom('mucus', date, valuesToSave) }, From 97d9e8bd25851f2b0eec68939fbf00589ab205af Mon Sep 17 00:00:00 2001 From: Sofiya Tepikin <sofiya.tepikin@gmail.com> Date: Sun, 3 Jan 2021 16:25:49 +0100 Subject: [PATCH 88/94] Changes the icon --- android/app/src/main/AndroidManifest.xml | 1 + android/app/src/main/ic_launcher-web.png | Bin 28870 -> 60234 bytes .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 ----- .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 ----- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 4316 -> 3408 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 4051 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 4316 -> 5297 bytes .../main/res/mipmap-hdpi/ic_notification.png | Bin 430 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2715 -> 1898 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 2497 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 2715 -> 2890 bytes .../main/res/mipmap-mdpi/ic_notification.png | Bin 327 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 6558 -> 4655 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 5821 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 6558 -> 7266 bytes .../main/res/mipmap-xhdpi/ic_notification.png | Bin 642 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 10228 -> 9006 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 9653 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 10228 -> 13886 bytes .../res/mipmap-xxhdpi/ic_notification.png | Bin 879 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 13836 -> 13876 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 14172 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 13836 -> 19583 bytes .../res/mipmap-xxxhdpi/ic_notification.png | Bin 1255 -> 0 bytes .../res/values/ic_launcher_background.xml | 4 ++-- ic_launcher-web.png | Bin 0 -> 59894 bytes 26 files changed, 3 insertions(+), 12 deletions(-) mode change 100644 => 100755 android/app/src/main/ic_launcher-web.png delete mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml delete mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml mode change 100644 => 100755 android/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png mode change 100644 => 100755 android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png delete mode 100644 android/app/src/main/res/mipmap-hdpi/ic_notification.png mode change 100644 => 100755 android/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png mode change 100644 => 100755 android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png delete mode 100644 android/app/src/main/res/mipmap-mdpi/ic_notification.png mode change 100644 => 100755 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png mode change 100644 => 100755 android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_notification.png mode change 100644 => 100755 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png mode change 100644 => 100755 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_notification.png mode change 100644 => 100755 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png mode change 100644 => 100755 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_notification.png create mode 100755 ic_launcher-web.png diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 4d86e06..c5d85cf 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -23,6 +23,7 @@ android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" + android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="false" android:theme="@style/AppTheme"> <activity diff --git a/android/app/src/main/ic_launcher-web.png b/android/app/src/main/ic_launcher-web.png old mode 100644 new mode 100755 index ddb8d27df7820120ede78650424d4cf29d361bbe..80bf3b97c412ac56ae4fd91fb1bf521529ce3d79 GIT binary patch literal 60234 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 RctOD517&Tc5(TTU{|Bh6gSh|z literal 28870 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 diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index 036d09b..0000000 --- a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> - <background android:drawable="@color/ic_launcher_background"/> - <foreground android:drawable="@mipmap/ic_launcher_foreground"/> -</adaptive-icon> \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index 036d09b..0000000 --- a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> - <background android:drawable="@color/ic_launcher_background"/> - <foreground android:drawable="@mipmap/ic_launcher_foreground"/> -</adaptive-icon> \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png old mode 100644 new mode 100755 index e5a65c8d061f88d74c7cda412e290ac51e967f95..66a8ef350a14bf6bd51ec7f0ad89d127f7d967b0 GIT binary patch delta 3406 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 literal 4316 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 KMNUMnLSTZ>IZX%v diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png deleted file mode 100644 index fd2730dae9e5e5a0ec0aa5aa6d00893aa145e212..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4051 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 diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png old mode 100644 new mode 100755 index e5a65c8d061f88d74c7cda412e290ac51e967f95..eb3a7f9a41d07ae12fdc241e39ed134e9b851f4c GIT binary patch literal 5297 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 D>EZn$ literal 4316 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 KMNUMnLSTZ>IZX%v diff --git a/android/app/src/main/res/mipmap-hdpi/ic_notification.png b/android/app/src/main/res/mipmap-hdpi/ic_notification.png deleted file mode 100644 index 58405822bf648ee118a2416345c123b3fcd13c61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430 zcmV;f0a5;mP)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ0004XNkl<ZScUD> zze`nN9Kd0<yxw~i^T(p54nmIBmWYF33eGKw1WgHTt}RV&ZbG1=Lvf`Lj8Fszb&<Ae zh!)Asq5t7=@J(JW7f<Jk-h%ft9p3w%?|Hbq=QK5?QmNE`7ADc&XvbyvjfahPT$Vst zT?IljivJSmK0e+U3axm87kG@je?Vx#1UfN=dnjQ%{8qwDxaU!rF^5vUm@a(9A>QIU zRw7U#tbM^QMlgsiv|$K8@CM(oj{PumATOp65U-=PK75KmZQ*(*+B1aDC}J2VIKXhU z=Ox~woCnm84>i`GSAq7?n*n-NV@?GR@_+_Vsj<FL1=>ST257OyoOc+_11e%I9)@0Q z)&bf>f3#;l{6igo4GK4Q;}pl(2nTc(XBZ3TY^Mq|i0vxSGJb{`NBEWdP)83a;VG6d z9T4*Y+k#mXqWxtTpNTsWsO;kNu!LvmtP6A9B2XcF_brq_StU?bXb*2ybE7S(R4SFH YbBQ93l&n;v-2eap07*qoM6N<$f}>fsKmY&$ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png old mode 100644 new mode 100755 index d89472084779542c16826cb25e8c09b5179d5cc9..3973daef7c0f912c8e2d5e7393bb616ef7ef9dc6 GIT binary patch delta 1884 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 W?00;L2bTx{0000<MNUMnLSTZ*oQQV- delta 2708 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 O0000<MNUMnLSTZBz#NYN diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png deleted file mode 100644 index f127df225cccce7f106b8ad0216c3fdc360500a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2497 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 YPB0<39kMRY|3Nb*BLj2&23;WKpC%QlX8-^I diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png old mode 100644 new mode 100755 index d89472084779542c16826cb25e8c09b5179d5cc9..1ad111e632e1921d731b0e2d33076eb1643830bb GIT binary patch delta 2884 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 delta 2708 zcmV;F3TySs7Mm52BYz5FNkl<Zc-qBU2~?EV75*8A0cM6BW<j(p;!-gMK`<(dK|vuW zE~$-5%xR*=wu;(_8m-nuPny^S4M;!~Bdz<%v8he8)fz-aLycQBjlnHR>l#tnj3UeJ zy>I@1=FQAMz{ptVoO_u0-+TAo@7?viA3^B)#|^0)lDqh~qkj)S*G+hW9|e+9b|g4h zE2x8vg0DWD5q+m;@*kzh>j^6E-MzQq9rCi^ZCr~~A$S`u;NP1_cSX7>KC3Xzp}Dx` z2>@}o+GQW(6hUj;i%K;hfs@q0))EiBULz~Rg&#N0zui#quTX(%8-?1CT02Q?HfyUH zPfJWFT^S#iz<>17C!(+_PB1ECXcm=n)&g>CtC$Qq*<DxOI2Q%9ScIFuyMkIcAT3Om z3qbJ77g>a{U2Aip@|+7Y-qP>2T>)Xq23q45Zr9D`9*~#{&rX;EVf_c0mFO1G6Eu<0 z5HN5E7?RVVM@AMS`cBVijOKLgTB01SaVr-K-JA(nX@BR7<&-DNFDiwWmKK;XX92hy zA|P~RCJb7%5K{BsgN(9ukhyiE711*q8?@+k2u;soYutQ7ItJlwEa7zORA4Jb<>xq3 zUINhC+6r%O*#c?B`7nC(21s187@{UlhM<HbP)9_gl97z)dr(3$M7=PX&7rxprq_gt z;I0qv41b8%taR%z&-)k>Yy#GbIqlq<^<@me>WXssSxyf44u}V(E({R3WB0%@n&TTC z&(@4AErKB{-T?oY!H%pU$~K@bx*;9a35(x*8>+Z~wPUOwIvlniJ;DIwEL{!?|4^rc zmevF%CPQjL9;6i&FrM;rB^~s~I2{#^T}Nx2!GED|v)y?Tl(}sq{N>DP2H@4%^ShLN zR3W_}E_WW|NxWq&(Pjy1!z@RxWI_}YqUI{BU7jaX({9Dh&xNAR+noYHiUo&9gIXV9 zH|E)+4+BBGNrr<uK~^{~1O)iVSwRZiDUSS}f{px@OisJD`h#^&0f<gWfdhw*z<c?{ z4u35{yh(<;F5FS&CJ<9?t>DJx{JnC%PrFAMgMyCymY%IDEO83JsBx2_zM%mQ9jO9^ zZ+F=_#G7Q0EPGcHb<*hfbGz?mDG)xvQCwGPWdX15Q822c5aQ;}H3zI2Ku&JEZsR6q zB`@67jIom-8Vg{1fjw}}941R0+S?X{lz)-1iw)?{7dKN{BGXuchAr|5iGu8@Gob|i z{lNE^p>WeS7&Gyg(9JItR;@7sm@Wc{eClbKxA+a1Fl9P;8>3)+_EcE9VkHb5Hj<5Z z?-L8TzgrI3(`H(-S>#i&XxSf_3{rM@=JSwOS_b9cU4jpH?1UM!7l1BefNi^h!GEm# z4WCj?7SQU~OGs(g;*!&ux$oV(2Q95F@UXd=RbFy~Z6AFMJ9q820x){~WT>sJgJZ`} z!T$1t(9qDx=1-ZP!^Q_clLZZpjd0-b5wk)uL(|xt(`UYd_lwrUU0mOca+>iO$-IC6 z0i6B!Imj3{iEWzM3Yy?Dn-(8`cz+uXO8}x`hCt=#|6<I}T(}6uRh97TmG8ovZ|A|~ zZ@*_k8xfc_fNZF%uV-r>K70sO$4<bCm8+pY1}}|2jR0sfDk_g!0U#bUzp1GSZruC< zU2`4Gd^Zo?KU@KaPMl<8=PzD{A!*NA0BH3`ZBi+ou1rThHmSJuPfU@&et-H8h)NsH z`WR{jXgoYR5zbX#V1nfUkifh(Ye9=G1n=MN0U)|{s|FHMMzNToU?!QNSQiS`ZeZZZ zsu=uY9Oy3zg0H_tf3Lvq2;c?{dK-JSUb}t+Zq?L4Tv9q1Qqov6M*WN=_@x=MnTyB) z_|KKA5YV%qU4XU+fHsS)C4W69StOIXSbgLGW`Vl8dgvFQELq^D;OQ4;0pOvF#DP0B zNR!A{&!F#7x}$cOn7MO1N}1#mx{@4#edQIh8Kyk|ckbL}er~QgD2rs0Z2G-p=Pnix z&%ZcT%8qvhRbXEZ0861J0C7nSz}c_QvA~f7FktX-xcr?wfKUGZPk-kD+^uDG!V!Rv zKK_IO7@z$L2f&<4$%XuTq6^VA2xtrutyivIhnkw(keE6ej431RTxjad*PyY{6vWeJ zbsYe?(A#-y%r%2|p^)COaPjiDP+M0AePV}7F7$)o;Ty>XF$M$|#QDXgjOm_z<<KwV zIjbP<8<)fwO2Id6)_=S%1CZP(DSZs92T~CKBzXj^FWUl5m>Bl#`;5l8AlB;mUdRJc zRZ0ND`X|8t1BY0;yzt*Eu=&&%kXuj)1nlay>kM3deS^yYJb2KAE^;4kBZv<-ZHI-0 z#ZY?eb2#-)HD<MD`0DF#ARg<Ir4Hz-P-ivY$SLvRM!sZI{(s*4*#XQp4Gf6M)GcVr zdf4#iZLFA4$|QG^dL8oRUAy<n0vJ3zlYuTjSZN2~<d<h*`8%ti=Jp-NQ?kmvAAf{n zCr(33#yF{eG6C=k+ALOKrBsgH1a0svu9aZzgjyE?<0roYdFwaAo=es6PDv?@9P<KW zmNIG_{Py)_EPtS-`Y?0eVr(^DmIYvpih-QmCGd-vUbO>2T`IXwd~yaX%P)l87ptM5 zY!keQRouTvU$E8-TM13TJh2jUt%TYy7JaKuu9@>NMnd}9H4r;{_9LCX9FZ*m;vIuB zNR}tI*Yd|peZAo2Gnj9wrFL42aZujbcKUGu=v+G;e1DL#j_pyv6bD{`Iks+O&doaO z1C6Tzcwo!k&Vk0_K3>dyl(xr8@qpmfgB{!2JyPbgBPAUJT?OFCsnZa@U_RsB?vYZf zyC4XjVU7;=gve7+2QGGG1^!S^Ai8P^3BZ>(u0htevi1)3rrlTjEn_-5xF3=b8PN*I zJGxe(-G53gSjGJIQLj~!exA($d~yCf7>0Flt)kVPMBPF=x@J_eqNeg2i|6AeN3KM> zM5ZQxrJyriYz=byVr$0E9Si^!H-(?vIoTk(j-g3V`A%TEb>amGf$&3DddqYRz}?H( z-c(?)QN|!^SY0imRqU=7@fnRtSBuZ!nz2iMZ-14AWYT6EDvyEdzmn<HiK|8aZA^%u z3EU!rXmtdF1Uq-RyU={O8#8PKtMcWCD&-FFtzy>M&UA6|t)@aWRk)xD`kM&CVp0d> z?DaZb8f0J#l9-xl?=~!GgFZzaBAj@IYxjbKd@d4qVJipX@xS2Ens>gJsDtuR-_j^W z27h4+P2fso{J=(7n+p|h6P16U&;<OEWOh|~-kns;4^^5;f;#xP#TsVetxkez<6iQ$ zSzHErt2Ei7&#PSVl8+B;Vn{au{S?}O<=B3oXQq~aDbW#G)({Wmg*;av@1Ke?RFCW5 z5Zpzx8jxZYYX8Noxzg%uIjeMn*d=W(t$$@akeA4_Q+eJM)*vBXNP46`LN|4mLLIOa zGuC!?TB4psqrZ;3Tf>Nbr)M~ZbJ$#5gKPVWJiJ7nPvn0lNU)En2nAk0q&Pw8nIb4X z(oKZl>6vLPOq}b(ovQw?ipyC<Df+F7vkv|LgSSW;ZkJV@;$8Oh{{bB;8sl}RG7TC4 O0000<MNUMnLSTZD$sBh8 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_notification.png b/android/app/src/main/res/mipmap-mdpi/ic_notification.png deleted file mode 100644 index 003156a561f7fb781c3a8e95d310147e5ca59505..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmV-N0l5B&P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0003FNkl<ZNQv## z&np9P9L8~(ZP?c2x6DP%N>0iNhpCkVkqZYUZGIf&AR;#xR|hF4PW}OZ;LGKsmc#tW zR<h^v?Nd+B`}y|i`|apx>wgPL3?bDlKpu-2Y!;v&6^yhLfE6Tv8rp?9Y{pqZ0b?j5 zferLv0Fzk70=hp7Plfpgd$_|Dig?6H0G=?6T|A(Mb8I2g2r!PLXqSwD3zV>rT=-t& zMm3y8v2@JEMt}m2>*nofR*H714}dC8>-<%e8UfN+$89ve$0eq*_P$uWU=#;<#v!hw zQ1&Z(n8yyLA}EImbcSaceX;a%EPV;R4a2`9WFvg`*Fswj$iz1?(=0$D-a@`9fVTdQ Z-T<u>i2oqCN-+Qc002ovPDHLkV1my{ibenc diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png old mode 100644 new mode 100755 index 9654b8701077d42321cb7257c5349b98581c0ba1..424386b201651e1cf366c9f0e083a7783446f86c GIT binary patch literal 4655 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 literal 6558 zcmV;P8DZv$P)<h;3K|Lk000e1NJLTq003YB003YJ1^@s6;+S_h000?fNkl<Zc-rk< z2Y6IP*S^{8CfSx`lk8^GAOu1h=^+U%Ap)UD5m1_f_$eTYAV^V>;wL{Sf^-B#h!6w> z1o1-@6;Y|8AOg}sX$FwqOE~|W*|~S`wq#qvM#=Nc1IgaKcjmk^@2NAF;~xGz{ITQ5 zi!=#q-sLp@I<JRfbN&YfC}qvth5LAm?jw09*0N_f3QJa|z{A58oGMhu1%_4U)ZuZQ zN}og<{vZE_pW!uS1HwP!;R+GWP%~j9`EaVR1kyT?_68Af5ozCY>ag9UognQ3Y1c@* z!P+(YH~+BXhHLOz@*VuH;T{R}o|d4yy27gLkLAD>QQ@2_yfYEtEF#FA<ln2Lft%V@ za?c&~-uMiBmi3A7ubA;h!H0yX$?WV%+Q&pVB{qb2k5lXK8XNvjTd7&QXX9FH_bj2$ z#Ajn4Z1wLSEBJuW7|uU@G!euB>jD=9eBTYT|Gp_e7M~xWeZfBc1A*`|S=s@*nnY<% zBZIzZDj@wGHwxTNK<G2Y&$~$bhJ7@pO0TNS^Gxv7G=zi45XE@Ol3FT7=w*OmPF19j z*jMbcwXsx@SuYcQQ-yaS13O|IV42+fAR9j+_}`BZYU(N)m#iwR28qC(N?j=DuU{e( zJWn&=;f<#!!|yl-9E(vmNIY558h-rst(d(op7l_*nyAm{U*MRmjn(7$UZo#lHtX+K zJ>gpz2!`KP`jH|Ul6so(y-6n*RP9-B$7)cAEfkIUfrB6uIaFU6IkZY}y%V~DjY}1_ zj?-uYOl0uDW`1CFAnDXr(M+in%JB*a2d}^gkOW4O|3?s>4zEnJ700@b^N$RAP%A+y z%zU+eizAdHB?5bS*hqMN^f=o3zB~-HHR_Zj><CcQNCI7h#t_}MJ;e9u3CYht52^k7 zL0bR*kn-Y-kkqR;#CGWhQOzHPp!9km)5lZ-C53L~0s{jp8w79RUsc$bj`F=<NHmn3 zISY61-lc8-!NZW0oo{lDL=y$-_%w(td=xTX83aw<p9-xO7eVV!7C@Wj#n5)eB53>R z#}=&(`FrbS3*phFA3@87b0KfS+mO)nKLoe}kXMVZ7!Z`9>qInE;ntDS23CiC<P7cj z5&+JeJqM+wrL-M9e8d0%p%9<2nxL!S7_wd+Mum>Tv=H*LVt8~(5wuz~4_X#~$l5$; z_3?aYy_5lD_8q)7f6}{<@boj_pO^{W!PVRq(lCIa3N02{N0N%4{WL}|C?<zE-#4VX z1pujeg@jr<K;FCKECh(Ny4l?KA$Q~(kn~({h-v=>gclToHaCw_jV3Jzf-@UXdP4e% z?c9yhQls%>p(PQ#H83)V42GbL`c#LwDbR-|>gbAI1%_qjAJ)RmG5}Wq`19O3cxKT8 zN-w;SaE9l<Hy)DvJP#q+jlef54y5FJRN0pI41c7sNRWlbfFdRdqFS_py11fdO`~A) z&uBp?3h5131S)hFts`Ut)Cp}X$}*A);RO}VIyr6U`v#i=aO%os==b#+gWw6zH~7D| z=nR)vPjH)MgF3}OAp_!`>OrYZSY-qd1g3iH$H1Ea>{=WN^@08bCl88rw^H^Jno7Ue zRVT|D055#C8gfPqC$y4p-z;~bp>>2bhCqn*O7<JC(-q^wy$v!^=$4DBGQ8Y3`&FTx z&A89uPD-`WkkI8RIDhr30Kgw5C6M2<7om(AmF84=k(H&Yok~pEzEp|xt0DircOay0 zLuV=JKGOwcCFpv%YZVw23VMBN{UMX(=3qn1Bk`GMq1`77;o^-OMkRdc2qf0ce<0p1 zQd2~e7DUO<6jno%SyQP(cZrJBx+9!g9pVn9?9Hg>zpe^DbMPyadpoRJVgkT{2M7S) zl(mv61&WOTeO?o1>F^#^$jXrMqH-G-W<Tai4P_usSv^QQIP-bM*M`{Z7p`CPC;+H~ zSS=2+h7A>bk7ggtfY62o&KLsBEDgQLse%(+p&~;*R24SamDyjbQ&%#hKB9v{zOC7= zBb+&R&f@^UhK?YvRDLBqGII(9BxO0j3KY6o7I|@p6tAB?n%wMfr)EEyIT4Svp!PN| z{OYaRf)BBRFcjg508kLZW2t|@gOESrZSak(?c^%ZpXYpn<DKyhc<vwJEcM8v6X^`1 zw6lB>wZTyr$cW;rXaFRHy9-)%ggNtzVdAt|5SP)=F*+iSU;gBGg_u*)bG@7iUz8eF zfp)B;x`4$pv?_9wz0S}NIyLD71_<UIh7mAqOm#vf0FYY037kB2T6o5WjhjIilkCtv zFwB8^fDd1wbLf;sq|)u@IR79=;zS1SSL+^g*6v5s4ufOZ`NmV<19g15Q7IDu{;FUA zdiNg!H*eh%o^krGGtjVUTZesx=r-+z5J~>z3E&$M>!e?x>1MAk;Jr5qQNG2_c)e0> z4H{H4c$f>Rn{V<t1>j7D0#Mkl3tYH(QFz9l-}ghU)cQ_%%{3v1tX>>TYvRAu>eR(i z)0Fp)mx(H}y~?K_rB+YAc+z41$63?1gD`8*wl?>0F(LC;$(ah*0Rx7PfFCz+gRj?b zfL0x!boyR_$#p3O;dq+PnL%}%6DH|t&Mz?99>+|^l<(ut&<~n%{OrfT8pd`k^g|^8 zz^^pSv}vj(P(WM>TTp$*6f%ap9q<iAG!*<aoBclJSwDn+^fMft{n*i%g68nt+EwuE zm!Cni3GY~4u9g5ChQzEqk50&kWHp5L#q;1fGOowppAOo%bZ4xgc_xKxWn{Z#<V)M_ z0RYpB`7PSRr0H{LOy}0^+k#;6|GR(R2k%aq33<&Q18)X~H2@OK0LaR34vUwsg3s1` zMcZqm#|re7oYNQvzB-D0z7jTW`3b)IW<AtM&N2BuT09FDFB85$dFEVDh1Ig8m&iDn zw{VGY-Sj#0A-H;?Ft)}mJHVtFbLc9)b?1)B*if&GpF9H^Hfu}96j446DRnz>7erY! z#H^o?I8pU-sV$DJnNkmmm#!cdMhV=zcTeb?dAmzKLxE43`2obHH6YYbJ^-ycJ_Q#q zT^6ocvHA;2C8NhqfWt?Q!JWHzjR~FOCm|uz^!w3C*(Rp$j$OMUh<x9C90=6$6Q@j+ zbyPwo9or%@Htc7aV<Y{*@lTueA@w!9tWy)O2QG2Sz%+~6Su5se`|>hg&DwT`-Fx@h z?3k^#eaElRsIZ;G0DSl3W>~u7Gq`>Gj>SFQ4ZzcV`onK~93R_G@(g4HD<G7L^g#Er z%uxgXt3zM2mG8xyx9QZw#L3~?O|nE!T)qT*&z8VeBItvMj}n31Ho4{=CSXpNz|EUR z8~wn+@&UL*?rlC3@%I}yZo=Mu2cUL(L$?5M_3AaaBFa_p4WEO#>m3IV!tdwK(sAAv ztwO%xGm*B;K)5gH0afrATYA7tKt`?q(3bZblafohUi{GO*RK;(?|XRjyKkWHy8l6^ zh4UafqXD&Sa5in)x*cwboFenK-wpu8?b@|#@a={lq2DX7L(?{$pl*H(kn3u=1po`d z-@FOm6EFJl?!Cx(@*wM}r=k1mW$?nf&tX_m5v>1yBfUoaoo(B9SPOmdA?ih<GIuX) z3fPC1-B|%ZNt}|R;-w}JyKvzm3?BX_1Se+Fx*asrFzg@|<yUdwW5!P=e0k4h0RB92 z5_<I;46>lI<1+3509V53aT7ruX7qjoQ?sGvLPG{EYv>TrL?^+}5pTimJEqi#F(|WD zz;ec+8$^m&Vh#Wzq9OqNY7KzGcAeq;1*3O~e2l`t=w@hx#)9*Or6cC%C+2}MC}uue z9036H$mrpEvzSsv0)Ufc@bLdytSlM%ozI@-jUPut6SANv7%^r%S((>O`ihpE6#(`S z83$Pl&KcZfr81N(m7~@GKvcz@{POGd!c4?+K}@({avKxg)`SvTGlhDl&H#WqVBCbM z<<5L}0kCD;&qVk!Rz3aviSGzrv7&~-WDSgphqde0n^;G<>ZQiX!T`|y$;su_Yy;pM zP?G>qVr~JU4SnS3AHoC9pT7Vt+IJH=hP9gLDPk(Gtf*n<r~A;(ISK#@6HQoqogY^K zK<eq-vyaVt*M0p}!PCdYzF--W)hX6>+kV~wny7d)OGtN?^HJ5Y1%QO6(5(0XDfJ$K zbAO*Vnq0r_5ejOtf&dF;`LL}v$F^4+lblP;#uE+$fP?XNpo+~E0QMa?MEaRyJJkKs zODxAx3<1e?jS=9u3=`A*^5rWK8J}tC3n&6ItXV<^0F;^(a^V$o03K=m1Y8mc1nGy5 zuXvGVmfG(nA?t;4bek?cQCdH2+UhU>=%qRmI&cMmO<R8gKdtQ&nL54u2zid64C7b> zB5K2$FTXJ{laq4`%mKK{$^CO|0pLwMwNz^WG=HosMU=n!s{ef{Xn9PuU@ayOfF>>1 zc9Me#;oI+ia2S9UtJhQ-02_$Yhk-m>_r~lP4?u91krt7rKP4W!7=VmM&8z{CYi%RA z;SWARN!BQ+LDM$W<m7LTv)GrJnrQK0eZB#Jd9+a0R_DWFQ(?!iyUhSN1o4@TJO+TD zckU8%w?)HZF1~13JlQaY^xY4eL{{Q$qPOZ>Qjjbl%QgVM>e|+naJ7UilkmZzBgcr) z@&wBOH%Cw%@bUaIi<;6KG=<Aou6Q&6Cr+NC&YjIM3>+vVo3P%L|9kE91}4wM5Q!)a zYE;59WvXoe<nl-Yz%g?(6#4##O<PRR<s+2XaAykL9I<o(EfKdBpPxKqjukW1vj9LV z4I{X=?p^QAQHJX31#@XZ7cU?51;qDR`srt&Fq*PPGt}3&mbKGa_+!3;Y&l}+@rq4I zoGI0l3|0UN9SfS!GB6}8EIW>h{P@XJ9uELEwD@q-h<RWQ>9%0nBty;6jL9IcZlJ21 z#;s`VO9;>0xB<`feOdf{u_LCpriA%3+58DleQgZ@4AJh|z1O6pYl$^fqfQRBd~jP3 zb_^9V*5`}An@~58ns-)15eGaE0IKIUZ?!NEP~gpr=FoB0e`_?&8AsR2hM#xrGL4K9 zGu=#&FaSa}Fi%)w9*W>Yq$;vZ=34^*m)Vogz6du(;RIX}zx?_ebnVk0IxYVg+EEvM zEZrP|=!eCoLGPD_(2%puV4Q~nfO(9)`}RZkUN2Ge8ONimpD$E<G#NP(dOSY>cJ2Ay zG(L9m5_LGO2IJ&GOK@|Sty5TJG*G0{jTD7ZO~TQB+Gv<tw8$dNeEG^%_~rCTShjCB zOxm~s`n@)a^62Jm+u{248x|ZZ4lR2U0N5|{us6nd)^FGd<0s94*WRBE)3<Md<@@%) zj-y9t_}YAI6Q;fo%FvqT;pqD`A0Q7J&w_C>TM2nTP9D;=tb~j|aX2t8WDbHo4dd!F zKPaN13{M2$*dNDX^%v{l)-5N-MwnstyoDgQbmDju6ga<tUR1_567y2}fh-`CeBpdq z88IBptE0x!L6()W6Sw0hPQtJeV~EEXM+>FIuD_=MfElqmIgM!~w7gWSxczbb1Pmo( z^AC?LBPFT3$Vt_WnDAv~o%5q5d{u5z9yt*cA}c>%Yc<R)4sI=9wFYtvT2WIJbqNm6 zQvryGOQ&PQ^kVUn6&5sOI<{-DY~|<FZz#iiW=VPNE+X3qCS#i=ioUoXhM+au-m(<z zY<TT7s-UMVS^{g29E2|pAAnh3d;uMwd=^4$TGnKu+1998TiUYn3N1pvD6D#qv=**O zaIkCzD;f}R%s*qxXxPlEfNTL^9>03>#eq<?WfL9OXS;U7JJV;u6Fqu^zE+C;WhwID zMO3y18FOU;prS=YP84S0md{6tmC$bGV!8<q%`{K0_pt{6Y`9||!_SYAapk@-+$7^? zUtt#Ef4P4@DqDjND6=q2&iVKx8n>g`Uz|m^A`KZVgll6uJYlO;qsjn)`^fU%eOoBA z$E`~amnJH8r#P7`gUZ&90$p4MI)a*0TT(GZi*7o#mB}g)CoQTP0O<MBT35Dhsov<3 zAk{gvoAa)rDlT{xk!fgo^uq~>d5#O@`~rJ8LqoXzKV#4!p_VeaZ(ll#sv-cY*c2$3 zK1oP6(b?}G<~aTMs$QTnwG#ku<}BbDpH6MiKwW@4(D@tz?iZ+P0C)#ihx9=Mg{?}s zcg(@kbQXTl9w4$zU^2CPub6_;kWxF&nL{}+O^N#gFiB5$9L}8yO8YDZ&j5hT@>twl z$VzP*Pn`(r1cwT84aHdK{VFt5sVt4<D4e}C<j=|E*<=ZoII~X-w<%>0e@&pGoRP!9 z&+TXSQ~&_+8FaTizk?n(W<)e?>8LTm+x}-csb3zIrJeL6cFNFX3g;9dvz*<iho@Ze zWgOV*4jT$SR;rXe34qjgk3-Yh(*@yU3et&VZ49&DPxBF#p+S}opBrIt%B1r8WEGro z7KC6joA`q<(3;2`@`|H-ttt(G!>3O}*ToA2GdgS75b$x_m*HpsIWqeTnDgc5>?tW2 zI*sI%ArlSf;W!Qe>H|Cl3u}hN3Jte{dKv(KUb+a+tX)a_*kH_?bOk$geh>}3X=YN{ z8D!}6sVP1zfl!BTw{+pC8Z_bfZJ+$EL-ZLQq@!jHfSzkUrNYOYhSP_2C_)Z#9Cf^c z9OZsnt002&)x1D?%}FXk6AsT_z*HVz*3s;PnY66&L4+)@Kh-lE!bwrF!LbYHp>Xsl z=V!iP_p4uFfj575oEao#NY*4C-3mrU&YgZvW_v(Vrr_Ee6x{;46*Mp<yV6zzI)>=s zwkH$dtmxp7-wz#zsHAM?kE)?b7tQBXRtA~5<<u-MX2a?^nXE3S)Ezb11MAGGS&_A= zbs;`f4?WHFmj}>dC-a=LyBa<>vRNy-lM@Ys?u2f{0N4t~*}WfF8S)1wmDXd4cNOQx z<L)I)n^)uf)IG^EyX!0!i34|G1%*@>pt;A>QuCtOwDvwMzbO@%OJNMMqVTvJbONzz z8&@9hTw&|BatWNddc{=$_<-A8&R5Zg%E%xqx1XLUV;)^Ci85$B<vJHZptF*gq_v*t zLd(6)kE?7tdm5w-7(kB<z|9d@pI_b{UF3GGUcdx;Y?mh?chm^uv1I(cmoK7$wUmxs z;Dl(ql@kC6yf2XlO-9);8CA%6(q1f_ipwjWX82Wlr_K(wDzxZC>i#1=@aGE|^~6HD zGX+B$=-6S2I94fRp)67vR%fRVe3=$aVciavj$rkI`5B~z^JhcO8?RG~45OO3XThF) zK-u92jP(bupfWMYMp2P(+K@2Kjv79hQ)t&Q5bn9<&~7rjk#;b6hiCQ_&YNX84cEp| z#pN{w04b;Ol!=h=pJzdnUeDxsN_!JBHiXZVZt!{{ixiR7Q{ive@D}s|$E6X=XtP^E zFpDQ?>*Yi3Zr!O~z->WDRVY;93~AC3AgtBIJOrA#STvRTVn3+St|L9E#a1W*(~UcR z{f!n0VEcaK76_}AYQOLm!P|%oGAokzZBdbwChs{ensz`DyhTJu?tgcHzd>oEzQAok znB)ma&Z3SST1}etT<}lKptYLF|L9jp?AS|&`^~B)X3>o!*l<IIwCwMd8l#-SKasI# zGZ|>PN`B>)mq;nsAT6DA=xcW=W)FUW1IzDH+R0*L*FC5=Eb%9QV5$w@LYGPu^Cuz@ z{z0!W5l%_x6>b_Eb10L+1ADy{4}zA>hGb%nO&~V$9Z_tgw2IGqKC^X)nVQLLtl9@H zd~-SqW*tlNRs=jpI($?VJGxtSXFcWnV-jB#I$23<jKQ3Tz1WQhA%H2R1gTWskdtdx zaVnkVZ1U`OPgG8bv7OaYLslz+jV+M#(6{RGdta5LMUfVZ_OV1BIEYh*>^D=;mG$CI zM_<GsQnVolBy#m&X5+`QF)6t!@HTD<%K(M4s9>T@Cd-w`HPeaXRw4r8z6a=tQWO7$ z(v7x6;-{I3ea61CF@&-)RhjqF^OU4!P72PTWT~&RxkM2>pA7OZ5fD7z-s39ob+-3R z^b+=k^hu%!D)RPKv}B4lmi1lDRgo8Y+M*;sk(CsOOIqsdTSzR5DV!o?FXdUIvIZ+} z%D(R=YB6;Z@tIWcA$!T{oJ#uCg3(Q!$jb4n3Y257=d2X@3^>SSvdpt3a{mED(XAwU z;!i3NQ!vb_!n~E1^O@;=c%ft5o;(wuP5O|-W_+B;wpVgh{AJFzbc0L;L^NCGNkj;# z#L_4rN^cOEjm2bE{=%uW=ZLUMjiBfqea{y!aB>grS-dCS8=ryC!e=tGGM4p)7rd-0 zalI=*D40DRDOweEP%xy`C0yJFXDG3vCX(5@l(_%jk(s-b2=g%E>r=$pJ45K}Z`$zx zO7b`S46ng!<(eh<U2>29crUys6M7xdY>#ApQ2ZMNZ%aq`vh<ynDZQF3u@TRNl|lrU zMp`D)1={3<ubZJzy?qqzXe0l}zmd-x;Wg~qG{)(5*u848dsk!6Qn6=y|I?_(86YH# zbA1^NXjpP1iqS(16J9Kvz45Fih*~`RES6mx!@e8E?xkV(_GQnK{M!X@4<J4)3#VjW zHdY#hFuvBCwNUn15W7~%zU%W);I0G0gTim|=g(RYH~#Mu&du-fs>q-J2a^JUsN#(T Q?f?J)07*qoM6N<$f)cQQE&u=k diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png deleted file mode 100644 index ea3a6ba78792a96d51ed5f83ed3a8cc7136f52e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5821 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 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png old mode 100644 new mode 100755 index 9654b8701077d42321cb7257c5349b98581c0ba1..945bf23eedbc1669fa99acedab23b09b9cbe561b GIT binary patch literal 7266 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 literal 6558 zcmV;P8DZv$P)<h;3K|Lk000e1NJLTq003YB003YJ1^@s6;+S_h000?fNkl<Zc-rk< z2Y6IP*S^{8CfSx`lk8^GAOu1h=^+U%Ap)UD5m1_f_$eTYAV^V>;wL{Sf^-B#h!6w> z1o1-@6;Y|8AOg}sX$FwqOE~|W*|~S`wq#qvM#=Nc1IgaKcjmk^@2NAF;~xGz{ITQ5 zi!=#q-sLp@I<JRfbN&YfC}qvth5LAm?jw09*0N_f3QJa|z{A58oGMhu1%_4U)ZuZQ zN}og<{vZE_pW!uS1HwP!;R+GWP%~j9`EaVR1kyT?_68Af5ozCY>ag9UognQ3Y1c@* z!P+(YH~+BXhHLOz@*VuH;T{R}o|d4yy27gLkLAD>QQ@2_yfYEtEF#FA<ln2Lft%V@ za?c&~-uMiBmi3A7ubA;h!H0yX$?WV%+Q&pVB{qb2k5lXK8XNvjTd7&QXX9FH_bj2$ z#Ajn4Z1wLSEBJuW7|uU@G!euB>jD=9eBTYT|Gp_e7M~xWeZfBc1A*`|S=s@*nnY<% zBZIzZDj@wGHwxTNK<G2Y&$~$bhJ7@pO0TNS^Gxv7G=zi45XE@Ol3FT7=w*OmPF19j z*jMbcwXsx@SuYcQQ-yaS13O|IV42+fAR9j+_}`BZYU(N)m#iwR28qC(N?j=DuU{e( zJWn&=;f<#!!|yl-9E(vmNIY558h-rst(d(op7l_*nyAm{U*MRmjn(7$UZo#lHtX+K zJ>gpz2!`KP`jH|Ul6so(y-6n*RP9-B$7)cAEfkIUfrB6uIaFU6IkZY}y%V~DjY}1_ zj?-uYOl0uDW`1CFAnDXr(M+in%JB*a2d}^gkOW4O|3?s>4zEnJ700@b^N$RAP%A+y z%zU+eizAdHB?5bS*hqMN^f=o3zB~-HHR_Zj><CcQNCI7h#t_}MJ;e9u3CYht52^k7 zL0bR*kn-Y-kkqR;#CGWhQOzHPp!9km)5lZ-C53L~0s{jp8w79RUsc$bj`F=<NHmn3 zISY61-lc8-!NZW0oo{lDL=y$-_%w(td=xTX83aw<p9-xO7eVV!7C@Wj#n5)eB53>R z#}=&(`FrbS3*phFA3@87b0KfS+mO)nKLoe}kXMVZ7!Z`9>qInE;ntDS23CiC<P7cj z5&+JeJqM+wrL-M9e8d0%p%9<2nxL!S7_wd+Mum>Tv=H*LVt8~(5wuz~4_X#~$l5$; z_3?aYy_5lD_8q)7f6}{<@boj_pO^{W!PVRq(lCIa3N02{N0N%4{WL}|C?<zE-#4VX z1pujeg@jr<K;FCKECh(Ny4l?KA$Q~(kn~({h-v=>gclToHaCw_jV3Jzf-@UXdP4e% z?c9yhQls%>p(PQ#H83)V42GbL`c#LwDbR-|>gbAI1%_qjAJ)RmG5}Wq`19O3cxKT8 zN-w;SaE9l<Hy)DvJP#q+jlef54y5FJRN0pI41c7sNRWlbfFdRdqFS_py11fdO`~A) z&uBp?3h5131S)hFts`Ut)Cp}X$}*A);RO}VIyr6U`v#i=aO%os==b#+gWw6zH~7D| z=nR)vPjH)MgF3}OAp_!`>OrYZSY-qd1g3iH$H1Ea>{=WN^@08bCl88rw^H^Jno7Ue zRVT|D055#C8gfPqC$y4p-z;~bp>>2bhCqn*O7<JC(-q^wy$v!^=$4DBGQ8Y3`&FTx z&A89uPD-`WkkI8RIDhr30Kgw5C6M2<7om(AmF84=k(H&Yok~pEzEp|xt0DircOay0 zLuV=JKGOwcCFpv%YZVw23VMBN{UMX(=3qn1Bk`GMq1`77;o^-OMkRdc2qf0ce<0p1 zQd2~e7DUO<6jno%SyQP(cZrJBx+9!g9pVn9?9Hg>zpe^DbMPyadpoRJVgkT{2M7S) zl(mv61&WOTeO?o1>F^#^$jXrMqH-G-W<Tai4P_usSv^QQIP-bM*M`{Z7p`CPC;+H~ zSS=2+h7A>bk7ggtfY62o&KLsBEDgQLse%(+p&~;*R24SamDyjbQ&%#hKB9v{zOC7= zBb+&R&f@^UhK?YvRDLBqGII(9BxO0j3KY6o7I|@p6tAB?n%wMfr)EEyIT4Svp!PN| z{OYaRf)BBRFcjg508kLZW2t|@gOESrZSak(?c^%ZpXYpn<DKyhc<vwJEcM8v6X^`1 zw6lB>wZTyr$cW;rXaFRHy9-)%ggNtzVdAt|5SP)=F*+iSU;gBGg_u*)bG@7iUz8eF zfp)B;x`4$pv?_9wz0S}NIyLD71_<UIh7mAqOm#vf0FYY037kB2T6o5WjhjIilkCtv zFwB8^fDd1wbLf;sq|)u@IR79=;zS1SSL+^g*6v5s4ufOZ`NmV<19g15Q7IDu{;FUA zdiNg!H*eh%o^krGGtjVUTZesx=r-+z5J~>z3E&$M>!e?x>1MAk;Jr5qQNG2_c)e0> z4H{H4c$f>Rn{V<t1>j7D0#Mkl3tYH(QFz9l-}ghU)cQ_%%{3v1tX>>TYvRAu>eR(i z)0Fp)mx(H}y~?K_rB+YAc+z41$63?1gD`8*wl?>0F(LC;$(ah*0Rx7PfFCz+gRj?b zfL0x!boyR_$#p3O;dq+PnL%}%6DH|t&Mz?99>+|^l<(ut&<~n%{OrfT8pd`k^g|^8 zz^^pSv}vj(P(WM>TTp$*6f%ap9q<iAG!*<aoBclJSwDn+^fMft{n*i%g68nt+EwuE zm!Cni3GY~4u9g5ChQzEqk50&kWHp5L#q;1fGOowppAOo%bZ4xgc_xKxWn{Z#<V)M_ z0RYpB`7PSRr0H{LOy}0^+k#;6|GR(R2k%aq33<&Q18)X~H2@OK0LaR34vUwsg3s1` zMcZqm#|re7oYNQvzB-D0z7jTW`3b)IW<AtM&N2BuT09FDFB85$dFEVDh1Ig8m&iDn zw{VGY-Sj#0A-H;?Ft)}mJHVtFbLc9)b?1)B*if&GpF9H^Hfu}96j446DRnz>7erY! z#H^o?I8pU-sV$DJnNkmmm#!cdMhV=zcTeb?dAmzKLxE43`2obHH6YYbJ^-ycJ_Q#q zT^6ocvHA;2C8NhqfWt?Q!JWHzjR~FOCm|uz^!w3C*(Rp$j$OMUh<x9C90=6$6Q@j+ zbyPwo9or%@Htc7aV<Y{*@lTueA@w!9tWy)O2QG2Sz%+~6Su5se`|>hg&DwT`-Fx@h z?3k^#eaElRsIZ;G0DSl3W>~u7Gq`>Gj>SFQ4ZzcV`onK~93R_G@(g4HD<G7L^g#Er z%uxgXt3zM2mG8xyx9QZw#L3~?O|nE!T)qT*&z8VeBItvMj}n31Ho4{=CSXpNz|EUR z8~wn+@&UL*?rlC3@%I}yZo=Mu2cUL(L$?5M_3AaaBFa_p4WEO#>m3IV!tdwK(sAAv ztwO%xGm*B;K)5gH0afrATYA7tKt`?q(3bZblafohUi{GO*RK;(?|XRjyKkWHy8l6^ zh4UafqXD&Sa5in)x*cwboFenK-wpu8?b@|#@a={lq2DX7L(?{$pl*H(kn3u=1po`d z-@FOm6EFJl?!Cx(@*wM}r=k1mW$?nf&tX_m5v>1yBfUoaoo(B9SPOmdA?ih<GIuX) z3fPC1-B|%ZNt}|R;-w}JyKvzm3?BX_1Se+Fx*asrFzg@|<yUdwW5!P=e0k4h0RB92 z5_<I;46>lI<1+3509V53aT7ruX7qjoQ?sGvLPG{EYv>TrL?^+}5pTimJEqi#F(|WD zz;ec+8$^m&Vh#Wzq9OqNY7KzGcAeq;1*3O~e2l`t=w@hx#)9*Or6cC%C+2}MC}uue z9036H$mrpEvzSsv0)Ufc@bLdytSlM%ozI@-jUPut6SANv7%^r%S((>O`ihpE6#(`S z83$Pl&KcZfr81N(m7~@GKvcz@{POGd!c4?+K}@({avKxg)`SvTGlhDl&H#WqVBCbM z<<5L}0kCD;&qVk!Rz3aviSGzrv7&~-WDSgphqde0n^;G<>ZQiX!T`|y$;su_Yy;pM zP?G>qVr~JU4SnS3AHoC9pT7Vt+IJH=hP9gLDPk(Gtf*n<r~A;(ISK#@6HQoqogY^K zK<eq-vyaVt*M0p}!PCdYzF--W)hX6>+kV~wny7d)OGtN?^HJ5Y1%QO6(5(0XDfJ$K zbAO*Vnq0r_5ejOtf&dF;`LL}v$F^4+lblP;#uE+$fP?XNpo+~E0QMa?MEaRyJJkKs zODxAx3<1e?jS=9u3=`A*^5rWK8J}tC3n&6ItXV<^0F;^(a^V$o03K=m1Y8mc1nGy5 zuXvGVmfG(nA?t;4bek?cQCdH2+UhU>=%qRmI&cMmO<R8gKdtQ&nL54u2zid64C7b> zB5K2$FTXJ{laq4`%mKK{$^CO|0pLwMwNz^WG=HosMU=n!s{ef{Xn9PuU@ayOfF>>1 zc9Me#;oI+ia2S9UtJhQ-02_$Yhk-m>_r~lP4?u91krt7rKP4W!7=VmM&8z{CYi%RA z;SWARN!BQ+LDM$W<m7LTv)GrJnrQK0eZB#Jd9+a0R_DWFQ(?!iyUhSN1o4@TJO+TD zckU8%w?)HZF1~13JlQaY^xY4eL{{Q$qPOZ>Qjjbl%QgVM>e|+naJ7UilkmZzBgcr) z@&wBOH%Cw%@bUaIi<;6KG=<Aou6Q&6Cr+NC&YjIM3>+vVo3P%L|9kE91}4wM5Q!)a zYE;59WvXoe<nl-Yz%g?(6#4##O<PRR<s+2XaAykL9I<o(EfKdBpPxKqjukW1vj9LV z4I{X=?p^QAQHJX31#@XZ7cU?51;qDR`srt&Fq*PPGt}3&mbKGa_+!3;Y&l}+@rq4I zoGI0l3|0UN9SfS!GB6}8EIW>h{P@XJ9uELEwD@q-h<RWQ>9%0nBty;6jL9IcZlJ21 z#;s`VO9;>0xB<`feOdf{u_LCpriA%3+58DleQgZ@4AJh|z1O6pYl$^fqfQRBd~jP3 zb_^9V*5`}An@~58ns-)15eGaE0IKIUZ?!NEP~gpr=FoB0e`_?&8AsR2hM#xrGL4K9 zGu=#&FaSa}Fi%)w9*W>Yq$;vZ=34^*m)Vogz6du(;RIX}zx?_ebnVk0IxYVg+EEvM zEZrP|=!eCoLGPD_(2%puV4Q~nfO(9)`}RZkUN2Ge8ONimpD$E<G#NP(dOSY>cJ2Ay zG(L9m5_LGO2IJ&GOK@|Sty5TJG*G0{jTD7ZO~TQB+Gv<tw8$dNeEG^%_~rCTShjCB zOxm~s`n@)a^62Jm+u{248x|ZZ4lR2U0N5|{us6nd)^FGd<0s94*WRBE)3<Md<@@%) zj-y9t_}YAI6Q;fo%FvqT;pqD`A0Q7J&w_C>TM2nTP9D;=tb~j|aX2t8WDbHo4dd!F zKPaN13{M2$*dNDX^%v{l)-5N-MwnstyoDgQbmDju6ga<tUR1_567y2}fh-`CeBpdq z88IBptE0x!L6()W6Sw0hPQtJeV~EEXM+>FIuD_=MfElqmIgM!~w7gWSxczbb1Pmo( z^AC?LBPFT3$Vt_WnDAv~o%5q5d{u5z9yt*cA}c>%Yc<R)4sI=9wFYtvT2WIJbqNm6 zQvryGOQ&PQ^kVUn6&5sOI<{-DY~|<FZz#iiW=VPNE+X3qCS#i=ioUoXhM+au-m(<z zY<TT7s-UMVS^{g29E2|pAAnh3d;uMwd=^4$TGnKu+1998TiUYn3N1pvD6D#qv=**O zaIkCzD;f}R%s*qxXxPlEfNTL^9>03>#eq<?WfL9OXS;U7JJV;u6Fqu^zE+C;WhwID zMO3y18FOU;prS=YP84S0md{6tmC$bGV!8<q%`{K0_pt{6Y`9||!_SYAapk@-+$7^? zUtt#Ef4P4@DqDjND6=q2&iVKx8n>g`Uz|m^A`KZVgll6uJYlO;qsjn)`^fU%eOoBA z$E`~amnJH8r#P7`gUZ&90$p4MI)a*0TT(GZi*7o#mB}g)CoQTP0O<MBT35Dhsov<3 zAk{gvoAa)rDlT{xk!fgo^uq~>d5#O@`~rJ8LqoXzKV#4!p_VeaZ(ll#sv-cY*c2$3 zK1oP6(b?}G<~aTMs$QTnwG#ku<}BbDpH6MiKwW@4(D@tz?iZ+P0C)#ihx9=Mg{?}s zcg(@kbQXTl9w4$zU^2CPub6_;kWxF&nL{}+O^N#gFiB5$9L}8yO8YDZ&j5hT@>twl z$VzP*Pn`(r1cwT84aHdK{VFt5sVt4<D4e}C<j=|E*<=ZoII~X-w<%>0e@&pGoRP!9 z&+TXSQ~&_+8FaTizk?n(W<)e?>8LTm+x}-csb3zIrJeL6cFNFX3g;9dvz*<iho@Ze zWgOV*4jT$SR;rXe34qjgk3-Yh(*@yU3et&VZ49&DPxBF#p+S}opBrIt%B1r8WEGro z7KC6joA`q<(3;2`@`|H-ttt(G!>3O}*ToA2GdgS75b$x_m*HpsIWqeTnDgc5>?tW2 zI*sI%ArlSf;W!Qe>H|Cl3u}hN3Jte{dKv(KUb+a+tX)a_*kH_?bOk$geh>}3X=YN{ z8D!}6sVP1zfl!BTw{+pC8Z_bfZJ+$EL-ZLQq@!jHfSzkUrNYOYhSP_2C_)Z#9Cf^c z9OZsnt002&)x1D?%}FXk6AsT_z*HVz*3s;PnY66&L4+)@Kh-lE!bwrF!LbYHp>Xsl z=V!iP_p4uFfj575oEao#NY*4C-3mrU&YgZvW_v(Vrr_Ee6x{;46*Mp<yV6zzI)>=s zwkH$dtmxp7-wz#zsHAM?kE)?b7tQBXRtA~5<<u-MX2a?^nXE3S)Ezb11MAGGS&_A= zbs;`f4?WHFmj}>dC-a=LyBa<>vRNy-lM@Ys?u2f{0N4t~*}WfF8S)1wmDXd4cNOQx z<L)I)n^)uf)IG^EyX!0!i34|G1%*@>pt;A>QuCtOwDvwMzbO@%OJNMMqVTvJbONzz z8&@9hTw&|BatWNddc{=$_<-A8&R5Zg%E%xqx1XLUV;)^Ci85$B<vJHZptF*gq_v*t zLd(6)kE?7tdm5w-7(kB<z|9d@pI_b{UF3GGUcdx;Y?mh?chm^uv1I(cmoK7$wUmxs z;Dl(ql@kC6yf2XlO-9);8CA%6(q1f_ipwjWX82Wlr_K(wDzxZC>i#1=@aGE|^~6HD zGX+B$=-6S2I94fRp)67vR%fRVe3=$aVciavj$rkI`5B~z^JhcO8?RG~45OO3XThF) zK-u92jP(bupfWMYMp2P(+K@2Kjv79hQ)t&Q5bn9<&~7rjk#;b6hiCQ_&YNX84cEp| z#pN{w04b;Ol!=h=pJzdnUeDxsN_!JBHiXZVZt!{{ixiR7Q{ive@D}s|$E6X=XtP^E zFpDQ?>*Yi3Zr!O~z->WDRVY;93~AC3AgtBIJOrA#STvRTVn3+St|L9E#a1W*(~UcR z{f!n0VEcaK76_}AYQOLm!P|%oGAokzZBdbwChs{ensz`DyhTJu?tgcHzd>oEzQAok znB)ma&Z3SST1}etT<}lKptYLF|L9jp?AS|&`^~B)X3>o!*l<IIwCwMd8l#-SKasI# zGZ|>PN`B>)mq;nsAT6DA=xcW=W)FUW1IzDH+R0*L*FC5=Eb%9QV5$w@LYGPu^Cuz@ z{z0!W5l%_x6>b_Eb10L+1ADy{4}zA>hGb%nO&~V$9Z_tgw2IGqKC^X)nVQLLtl9@H zd~-SqW*tlNRs=jpI($?VJGxtSXFcWnV-jB#I$23<jKQ3Tz1WQhA%H2R1gTWskdtdx zaVnkVZ1U`OPgG8bv7OaYLslz+jV+M#(6{RGdta5LMUfVZ_OV1BIEYh*>^D=;mG$CI zM_<GsQnVolBy#m&X5+`QF)6t!@HTD<%K(M4s9>T@Cd-w`HPeaXRw4r8z6a=tQWO7$ z(v7x6;-{I3ea61CF@&-)RhjqF^OU4!P72PTWT~&RxkM2>pA7OZ5fD7z-s39ob+-3R z^b+=k^hu%!D)RPKv}B4lmi1lDRgo8Y+M*;sk(CsOOIqsdTSzR5DV!o?FXdUIvIZ+} z%D(R=YB6;Z@tIWcA$!T{oJ#uCg3(Q!$jb4n3Y257=d2X@3^>SSvdpt3a{mED(XAwU z;!i3NQ!vb_!n~E1^O@;=c%ft5o;(wuP5O|-W_+B;wpVgh{AJFzbc0L;L^NCGNkj;# z#L_4rN^cOEjm2bE{=%uW=ZLUMjiBfqea{y!aB>grS-dCS8=ryC!e=tGGM4p)7rd-0 zalI=*D40DRDOweEP%xy`C0yJFXDG3vCX(5@l(_%jk(s-b2=g%E>r=$pJ45K}Z`$zx zO7b`S46ng!<(eh<U2>29crUys6M7xdY>#ApQ2ZMNZ%aq`vh<ynDZQF3u@TRNl|lrU zMp`D)1={3<ubZJzy?qqzXe0l}zmd-x;Wg~qG{)(5*u848dsk!6Qn6=y|I?_(86YH# zbA1^NXjpP1iqS(16J9Kvz45Fih*~`RES6mx!@e8E?xkV(_GQnK{M!X@4<J4)3#VjW zHdY#hFuvBCwNUn15W7~%zU%W);I0G0gTim|=g(RYH~#Mu&du-fs>q-J2a^JUsN#(T Q?f?J)07*qoM6N<$f)cQQE&u=k diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_notification.png b/android/app/src/main/res/mipmap-xhdpi/ic_notification.png deleted file mode 100644 index 1bdb4bd53e9e6b94bf8daf92b194331d50f6c9d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 642 zcmV-|0)737P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm0006>Nkl<ZXo2n5 zTZoKd9LI6Xvet@lC7Z+UN@#P6<U)$pmQoHS6gLiAwj5&}+7!vLxRR1nO1Rn!H_nt= z+_-W`xsod-r9|oDV*X_sGcr44Cp_PJYo7P{_kVxi_kG@HX8QC=Boc{4B9W*ZSc0ZX z=jbtbhmDoa(PQud?Ul~aW0F9n`CS22qq;XT6-5yObFmOZdL!3wQ-nY(mSNa0YO2bc z?nmQlOu}}YL<bttFIxa3u?|g`iq#k&bMvtXLu1^4UD0C{wngtfn2!GC3SWl}xD&@U zJi_fb|0zpgI$q-<?%^_K$J`N|!RQ#b;3HPyCc1GwKHtZVUp=j21eQjaooL25Ou+#> z$G0qjnfQtaSdNJp9CN2|31eftNQRd<foaiuGTP#1tuJX=#iKooW4SLMhT(h!&K7tZ z0S4sM7ZSLE5jnMW*o`ZgREj`zEQ2)#=C|T=j=)PS$WvQLU|)gWtx?}ns=y_zE-=42 zkH8DeFG8TBK<}1#mr4?-$2lBCZO+^voW_?D1-ej|Q(GgmD_uo%DFRhkiMz3`8$+rI zTktB+OI)nL8|=mS=-nW*{ocYR^y{%eT&OOV$`d?{JJyY-XvcfBMePhc!@N9wj>~Ka zV{!!6;&B{ZGCST=bYgf(;j=D20JCB#UBDrkt+X2ZF(>NkW%lo%{@`FSR*1blOQ1IH zerNPPD)X~rU|GWF2~w7?`z(Q)taE+K)&Gx^PvEa22~?USP-*@JfeAQ_zLn0BNF)-8 cMB=~YJMbs>%jRKWYybcN07*qoM6N<$f_2U(J^%m! diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png old mode 100644 new mode 100755 index 49cef5311fde2a0fb38213a96ed7613001f625d9..4d024f0e9937c5d4294df0ea94e332b8d14ec9af GIT binary patch literal 9006 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 U>NrTs*#H0l07*qoM6N<$f&mBe+yDRo literal 10228 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 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png deleted file mode 100644 index c637a3fc2388080667d41895ff3f8ea36064775d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9653 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 PfFB)A1C7c@FW&q=R&O<V diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png old mode 100644 new mode 100755 index 49cef5311fde2a0fb38213a96ed7613001f625d9..9d5aafe927a003b6f1aeb634f8e0e6c31c816a96 GIT binary patch literal 13886 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 M07*qoM6N<$f){SrIsgCw literal 10228 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 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_notification.png b/android/app/src/main/res/mipmap-xxhdpi/ic_notification.png deleted file mode 100644 index 9af70b030606f70a4d6666dd5434aa2d998ea239..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 879 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@Zgyv2U^eq~aSW-L^Y*59hpeke!^1Os zD}7~}rQ#oWUC5o#F)<^o>7ct<(+`J(twKj6LX<kzwYUVZh!!e$bSV@*bXs&!!6iV@ z^?Q?oU|`^4wTY6)-HnXrcUv)=U*Ea1Ol`Zm;q&&$JFi{^FaNi0o!#BdDV~#5kkQ)) z!8b>eBlg|+Ij3a7;t$;CV&2sFSp@~Oii9Y#hI%-P!k7^&6xJNIv*|f!P!tp5*RbHV zL7%x_rsGGijUspVeY=)#SfV_AqS>+4s+*b06U@IokhSUVe)MBbQ-R^UgVTQO<>F5g z5Bv5dx_x=!cbQ~+5yNRm-<#fO+^#(R?hgLdZTXMxpDazP{~>4mgS-8M^|Hme*2ma5 zZb`g-|4{0W;B%RylD2=}9l39KbK*W3yMBr157t@KTP4XJnSZg&;8^snWea8-G<w>I zuYSQ5Bd`7N_KY{LMIGZGIdt4@tFBVN6mX$i@oBhC)9gaayo16PJ<2<_+aKHTq$DZm z@{U@E`FR|3QYS398M-COVUAkUkt|7BfyZ7xtw%nK8GU!t`2JI5TllZFhy6tzA4k;B zk?>{t+vYnpCNFqf<MmnRisKSeW7ht)*ng>9^4?mGUyFnmcP=<@5Y}ld^|wFCck<42 z+%XcKd)FUKmd+1ldAoMbeU}UDe~&-wxP0{V#s8b4?tNb7eqrCO(C&ZB=PtOoWBUG} zn;)hm<@$3s*@dnwowD|!aO!)Rd%9xHwvyjJUGv(%^~X9^$M%9;)pKd7@9$hq>El*f zcdSw3!!gF%T|c5Uue9lAu-U&@dEoc2wc+!oO<r_J-fD*_+nfNo-?Ixv%`}hR`xlX# zzfIwV=+a|91*4}Xl``iYSiJF2--CbuB%GDQPF(%rrYWI5)vL_r$e9O)bFMZmD4wcS zsr64SY0u5;^X5B8{r*2aIL>IhhX17gj}wD_#S0yG|DY9D@W%Va(u;B0X66r6Z3<)@ zlRy4uvbj3>bo;6DC07s6_+78$qI3QG&g2uxa>^@~?-kxTXV?9HKbB?|RY$H>6PmP^ zEa1{y;e^6$c)sy^!+DwIwh_IX#jX31Q|*)gNA1h1|EoUW-aHMMkr+H({an^LB{Ts5 D8bYHC diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png old mode 100644 new mode 100755 index 11c63249a68a9e12b290bf9da761365c0a92bc25..5ad1890a738ff2c263a24ed8d9bd88f9c694cec7 GIT binary patch literal 13876 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 CqbzO! literal 13836 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 O0000<MNUMnLSTa2BoHD1 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png deleted file mode 100644 index a1eed6e1b9566284d0c809bcca5af1d3578a32a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14172 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 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png old mode 100644 new mode 100755 index 11c63249a68a9e12b290bf9da761365c0a92bc25..50cb4adae34ab1088cbb75ab2866361a00b40e75 GIT binary patch literal 19583 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 literal 13836 zcmV+nHuK4eP)<h;3K|Lk000e1NJLTq006)M006)U1^@s6Qrv6@001@9Nkl<Zc-rk< z2Y3`k``@(dcPV$dl0piQ5L!q;dg#3hC>E@IiVFG(DvE$2O#$nNjX#KVuwd^6{M66h zuz=V_5k)%EOWyyyv$M(OvbVQ;W$%*gKF>Vj<!*O&=Kan5-Z~toU;3qA`lVm`rC<7` zU;3qA`lVm`rC<6L=9NHNB56siC97=0?-JR)^h>|uTF6moQ$#`==}UM{iU=S&IP@!K zE4mUPPvKG<rE})&9L|x`gtK~DaSm^L&gSdJ*}OfuR9`>Z@Zb0u{*8Wzd>4O%zvTs9 zDL8ac=vP!$-Q<AZ@OZ3Ts;7{%X7%Ch-iwJa-%9?wl(YL@BL97#{C5j!+ezC;+ELO@ zkan81O45L}O7__a_MLs~H(S^}UZVHp?|m_S7CsZ79r#L);%=m0^<3x$;qkljO=P7m zA#Eh*$hwWJ*pG4ctgncG?qmWC8nx5>Gs&~D57-yGZv^@OX0(sBF9F0l81zearBAH& zISQ4-cL5Qy2ia=8S4J>}mHbqIc3NSR`+cR%^Y_v|VqdY(6c7^cr0)#+C0ZG4uJl=1 z79u!Zc)F3bfe6*E0K$d>dD2fXD>YdCEB$~b^g-&oyXZUc@6v_7Td?=nuLhyaCi^Lh zDV#mK6InH96QTKtv|};?e_A6!4+R*cZ{9$FI7Z)%z9V_pn##4*nCMqMr8(6XDv}Q0 zL?Re(O9=gGg|s7HTczJS_=DkX`tCRewRZ)b9@S%-lfc<Ly$B^(#+27Ut31@Rb~*rE z+DXR($E4;CpwpvzV$G@M_Pk=aQDUX6uR<RT41PNs85<m<n!18+J*v}GCnLi_l)$UV z1aFd9?N8NFdJ{>SbV_1Z*hI!`JeQuHs#Bx7r`+-vI*E9}-z>4(H)Nrg1B3tAY^Gya z)8VEo%W=x{6RLpV@SRU4?^9jyBL;*|IY-ucHO5%i58`mur!h9Z*Ce)hUGPJvN7ZA8 zV~b;~?*?&kRSUi)H;ebw`i_ex@T4xp5o_YHJWj_N$6RVI^h@Ja-{HHEOv*2Qlclft z(W6Gf|NlbAUf&Hg=lcAW=F1~1(c^wrozuFYYGOjIwi@9a;9N+}k$y#q^4PM@C4;|1 zr#o>&i+0dC(J4{XC=b7?pk3PGdswGCaZ8I9iF^l1IwguE<*~avadz*Q`l=uIyTK+h zSDkfA6iLcs_l+a%AAQxY6X6v==gQ{0LZ?LG3x6UR%)9kfzs~Lk_lR}?9R#X`-;t9+ z2Jl%wD~~Q<b)$*q%KIE=&vNM?P$m4CO+=v#x_Ps%n@erJ&p5lQSO<X;=T@q(Eg7_* zb-rKUtVG^lXxSItX(nUlw0e4z!TOsG-U(fR>Pz#ox%B?cS>640GigoX=VQ$6S;NR6 z9nyur-h<!}Eh{4!IT|ns5~@}KTGNIWgsRt;o`ke)NOI*til-0^z9wMIYDyda8$U~O z=0QSgcKx>y*~nbmyrXN#Km%2HiST=dMpO6`i9ih;c|P2=@L{<7{zbJKe%@oyC`gFJ zv(j@QIWr$jxy4{_RtD}aJ)q#sQBZQ}SSXt`5!z3m3Y})ofG)SshKl)fq1%ExXv2Tw zXZW}F)27nz;&1S`?#?~vz3`rRZ+u4m0D+f)z&)x~aASiKeyoXE)4>(-0Z&THf!Xu# zg_9>w!s*keYc>4*hG{b)!I7o@{th1`y9*$#v^^9I9|^6;Pk_#|Z-c%|9)ux}uY_Sw zuZ>8<d*MCt-mS-vr_V}n(}C_9*oV67D<E`;*9jUF2zcSQWR;Ua_$%792LUi^{yh-` z0MZmk^K!`PI|#}qPJ~_${s#uGS_(s+SOvqLS`#s$57@{v@L2;_FNIzY-3R5@O@iG1 zLuj9nUe&>!U?*qxbZjUf5ZU>&e$+zYr2v>G4}j~Z$^!toyQxt#DroI)x)J&;et;MF zXbZd29fI@)`*g;Xo1oFap|r2q=Q^Yq|IFE)&FZ_KfH!qw$#1*w6RoU0;Q#>Xji;g) zlwN%`3|RRHS$)^WjnD_)A=bixRgXZMYpwxrx8C#}>I4XE-p@(PtgiudiB*;#yYDG2 ztvzZ1fd91=G>6;)L!s-uxs+;zL~Y1#20y+62CP^@`Fqa??uG7m&x5Xa5M_7P4Cr|4 zbm%~oVr=+t{0#rr{qFhnyZ9UYE#4#4=VRY1=HE`=#hl+fG(AT%I^-oF@H{6H{(4h_ zrMi-U-Mc{KCa=^A05k8nTM+<~GYcS}D3~aOp-`M5L|A(-S_tiKoD9WdE`*$ZgTd9l zg7R~7UI`eyjfoD?NYd1apW)x|JNR8k^S1Q2cn`c6-m~|j`$JN$@m=tp@ZIno<F<^W z4MC9kAFgKgiTYyh^j_*0Cj#*TfGKkqK;u!P>B_5qg`Ep6ue=g`-TM;3ZH6g=(R&|q zZ{+t#ZCYJ%CD}3N5C!}ZRXaql2k(PI@~#G7<9Li60v-hJ@%2S1=7rzkJ%cE{`(qK+ znM9Pq+vEUn>J&Wu?%Rr1)}iay5M5vi6}+PJFQleOV@?rKICEm)RLcQlc2h_%?EppR zjiG)7q)bECuMYYiNUJ)}nMw7VWLJLtMUmRP2RM6X*SZb@p3BkFgcuDN8!vA#0GuKK zc=XH9V0aLrL2A?T@^Rp7*M(A*c%u>6C+u5`%PxoB4=+@-8w^_WC^e%Z<%&Cf!0P^z zb2u`%I$DG)p{iBq@Wv#>fdb(6yFvoMptZ}W^C@r0nbhf27s3><kJ#5ngN8xpS+~)5 z2u9^lx5ythl6sos1_Vfj?CxbXWT_5aDa_M5Iu^XY1^|da%m@O2rG5Yyv~C%tIaxjX zQJPU#!w#_Tz8?LkbtxDS@bBo@GZ(~#wTS5h9<mc;Uc!Vwr7lsQ1bWP;&G%cZ1KiXA z0QqybJMVz(-UH%kH4M8YyYe8rSAVEja7R!bq5Hjef~RZGcmM$}GgkK>oQWRdQ780) zgen`Z&9^!pqB{+Q4$S|*rSbsS^eMFfH9qScFl04}t|cc{jl2^^ol<Mp{rAdRj{2`y zOvd8ecvu8ZGON&&B0V6ksSpct^PJ;n<Bg5*lL>D{6xUT>d`hi7fviCD);&gT^$Dr< zQ1EN%2wC7LDW@SFgCAQS*iuCPhDtwO5Mt{e5U9|l@xBZ2)W_=fkWPOW>(w7E8|Yyj zPFA|Lo4*VU0J1Y&ck_&R_L4@;jEVt$a=s6wOE`w+yykJ>C3gSFnKN?Z83g<ZB3KF| z##J0}h3h<fCbiq2`OG?469fR08Xy1!i;=BqYv^#xG_vBakOl!+K+tD^V;WQc08fP$ zaZ-mJ#*f3x(?OKh7!#|Hy||P*g@g&z0ic8`Hil-GTpADr*l<kk#cg716|#B`b2eAc zc(V#6ROR;48Zfb=J~%=CP9Q}9n9{HTAnXPhV$o;GgMpoaWNc#y0$w4uX1>N%SCvSJ zAL?WCjf$n>i(9mK<<|ia0tm<$WOnKf-S1ftF!URJ3TQBhu|j-tyig&Q)t_S~tN;74 zTK!SsMb0lZVQAl9_0{J(0MsldM8Lb<H7_6tP$!5{_ypSpT%U5B%g%|bip0?4OQ?@$ zY^+v)G}ED_VyJ{&8$athcNX0K&|)|t6Ae0P%B?y8{F<e(B@F`!G_E-2Xl9PxE|768 z6MjRCSN}{Kp+BF;!t#TTniiLjllE?s)eCopR6>oW&zcV>PUrv#MW;d#NbLkT<}EH8 z7Yk<@ZxOP(zu~yl^jHSV#dh^40*jtoNoNk3u<m3F$5jl=qD-GPPX|EAJ3$LNmQo-< zs}atD#$zYm1tzkEI3-4_KW8G`{{yYLKMpv?tMp&KSUR4CC~<<Kh5(qR10ZajfGWmP zVH0EyJY6)89TIeb&xs7$W3dY)$I|kH`K^H_1kHG8$q*OD3I>3QbqoM08M$EfGzOcu zF&JHWn)DsVG?0lD=K|+M`(40IK;XQDEy&4Q+x?Tt>i?qFt3Ps14BHKq>4dgyu|U)( z0AL@x^cf0|u6hi9{OK3?ZTlba>YE#3^u<?z#a$TnXXDt?Bz=jo$2rkh9}sqd4NMW% z%rC&Wzq<=peK56VUf=v-BP3(nk&j|ILI0!`1i;jpchn02oO#}*@coZJ(Fj)YJM7uJ zk5<3Kogv!JG8|(mk1@^(&W-lo;mi|67wE60MJS0joA&{&Ek9^`#_T1j6$s;5q!PWW z0dOKP0B(wZ0GKliVC(lkNWKHM{re9<xBh2p5;lQj9Vl&-76#DNB1Dv7i*rSlTx!Do zF)GjI+omM|FsTFcSEb_EF`^NJx&jr)oqAi{2f(m%E)FRCLVIY*a<U6VKVKQgx|dWG zDVdwHNt5VYX_rJ#XpklI56);W(!wH?Oi{+4+Ni1WixmtoiCZde9m9G9<?A8<ZocjI zAON_903g2U&owtp3krazpMM!_8aStLtZ~exOwa?#9N}DPZxVG)W;;M~G)<p8!tB0R zv{Zg^+ocW}341>#b|lJ_B}q)psuuvb;Iaup0kC4t6JXM)%n6P;j=j{5jB}-7-6264 zev8PaStO@XTKz39Jj3gNmdbD8$kCG42Tbh?7N?#_sLjnY>OKIxO-f<c?mYp8|HzS} zaPFm7X-ehLKOmJ*gL73l@@$P0=-vNtrnK&C7f6Yg@|(=rJyWz4ek|^a)y$+^@r_5F z6Euwx0Wf98TzLT8cuPbM$cT1BWq#lO{k7iV`0?ZL+)J;4-KT8@3mkj&1WSdY^m^bv zEz2;TrZmXxyrXKNjuQRBsL!{wQhsqY!+Mrd76&|8MM*GLf&u_sO8`(89AHRqF8}vr z_-gYOD)jhHfBv--7TotB_?pHhP9K92aW16h2<J|t9f^+*vba7ZGU|v14Px{MOB`xP zf3Qk37Im#<b6&R$vU?3sRK1}-0YIpA>dJ2cZ7cdgr(T00r&&1|oiRKZgN!ehk-<5s z<sl|>r;&$PM1!2YqCtaFc>3eJPNaQD-TH%Ny``!&W6>(5H7yYUH{Du)01%gThcff& zoJdur#yQl;8dS;q1YEP&f}Ij+`ePvU=XtH@4|4yCd2=N_j#%wX4UN(P5dD@#=0wUv zk8`NeAssAC+PNXp)*zn#V0EtQN^emGKr-3p3wjNNbDmfY7r*=rTteDKFFg(Czpx&9 zkO4L26sZKj9321}lws^TXC{n({s|cK;!|Yao~HA5{*!B<X}=+0CLl<RZf#XwCM}se zI751?NYWsl{@60lie{Zp9Gtx7XTXJ*Ujuh8d>CGS?|s<x*ADo0_usH}_b%AHYbSjA z=O6I&JMY4+a~43qGtUJ_c2Q6zivr-5@Bx7LK`*O;@NKD<oSv)r9$7?TZPTSU4Q%T^ zU<Bm1Y_Du#AkPT&d;__!T7?rAnt=BsEm1+CFr2qWCGB9$zb3%q7hZ&SfBzM}AoI3` z%-45&$h`f%6W;m!3s|}CNm`_Mz=-o8Rl&T49vkE)AV|H8E!<(p1|?M8$nKpNY2nAg zYf{<?ZkRR;-uv+5fI=Fm?c28>o_X;VIQznJR51)BbT{5ITNVKSRsewVioWpkuiN1G z@e`8mnHOFGM^<e!WNJ<^^d5RP%(?SEc;~$jVfUWewtS3MRWe@dpM8;9f27*}0|%h2 zYadnPfA0f}1HKQoKEuulsE8Mpbs^(A2j2hi6V>y!ci%qxF2m2g1k!SvMcy20aX!q1 zKRMh8Q6a#{MEKR4k)l5+_|4i@!0ZM0!IrJx!?9z>R1Kh1AlQH3eIG6ycMVxxifgPc zkpe*5Zv9}}@7n|R0qyXPtZHh8tK7&j|ALKg{}2A&wL4&KQZ)cTkOjKOp+kqEylY=o z^YEXC9+4f_e#6g^oVVNW`VVaV{zo!z$3vd8Qw#_j|NAc8_0w{jMPgTA=1}MRL}qP~ z2#rXl&6wFFQvBcQZ48%=pG3oY<%A-Xh7*GEFr9l3sd4Dt<mtfxFg>CGXxgSTtXTU5 z96EehQNQZ~05AdPk}Izz^Y$|tvr`eBH{8LVfB7{^2g3wGwH}a?RvHOwPzr5$ns+tz zsSMSr)%=X^R6vg$JsQyg^sn~(*UrCT>dbjmAQb^%a%2GD%xez4hnx*R{jyD!ki;_p zaQsTzb%Q6LeIe@ewu|hPnAecrs3aV7DCz;HIkV$jCclPo_<suH|2Krg|FK5@8QllK zXJ333@l`)?Y|Ih3f6-FNE-E7cm=$#Zy!6_eaM{(@!>`+ZSKZfm1;Buj=R>=0{o&)! zzR+ymkPa_hv6dP{!qfxiGT~1NRSyvIEHUwYX*l$!FIh=&>(pWZ{e}Bkq9ot>pNC`t za7_dNu;b62R1poOpYaNSdG|a(xxUu(hP%OQ8{UH4l6K)F$vjDASIA)r0|0h%(|1Dw z00yFU?>_>5{P`EE^r#YEG6)Bc9fe(o55b>%_flGOm~iS-r_}LJ6nqRIJ0(*YE)oC; zr^PD(4j(?Edc1Kw_w7Fbf0Hr)`_MnI=g46=eB!wJ`6u^z<@Jp;)FZ^Wpil9L#&7_@ zD-eA4S4awQ<JKMFlg~FP9>ilrShwxp2QUBh9o+Nrdob;t4RHO&*Wj#Kv!QF>;V|Uv z3u#2;8yo)%d-v^+$hNE{0PtC;82_>3PuTR;H}Jm?KBiWp^T&>lO8}@*Vt@MOS6I3B zNf<kR65a97oqIc6xA9e&{MPGm+y6Gg(l0-S54LZEJqHg4tkNenUJou=4)(03p((;f zdvTQ>8=?Yi;LPsM<c9yK)d4byBJ<=kFDQD^qeqXyhPU2@i4Q#tqn~}emOI_sy-zJW zbgPa%sU7?G?SI5Q0FDs>dGEtdXkrdJztVG?(RWb0y~i5>aCb%h0CgXypC86Y=B!qP z=##6V$2Hf&t#j{$Z@>FN(KB$tKqE#7$?}IdWBNd*2N*(8fRR5LLpkmUlS{6jIurgm zbSNm-`+fTkxcd63;43bJ*5fDC$}k%8_zExuD8y=X<rC$)KfL_f2AU8OZva3V_xYD! z!?=G>25*zrVTS_5699Ja-UGAd-2?e8&X6=+VgZ9%hmVuFZ9RTG7&7yzKLJg}2gr^P z>{;8%j@i0XFSV8+vJ0eNL1mba4N3?F04C1rnWWbIi5mR2-+~JZt^&P>j;4Zv5rtA| zk639SSlBaqfgf1BjCwEQ1pv4@zWC}JP*mPEVs8I<0l<zw|AGrHyIMZ{gS@j;1rMBK zp?(k+_L??x9{lsqKS3ADr7PD_UxZ>1pdxI_n8oBcBmfv$0?gfN=nt0fcyP(GpuGQs zk3NOw?W!xdnR1JvuSDgsb~jE|RyM?4ARG5D3xFG@MHB#N%Dd-*|5Gzzbp`<Fz(m7_ zlKaz~VTsCpIM?F%CInM3wt!Tq@37G-O`#c&FyS|b0szzjtVE+;r$zxTC0i9Ld2%m< zf5(Ilaj=!Wq)c+lEFN>A@&p=pAuL(8T2*L8Gyt%4<yy!rXc_T{$5;d4AX%vgpLHP- zT4nl6@dX#vqO_PVY;RUptJLH4+4JfB<(|LhiKoG&toj_Y1ZBKPWjF+1fDlTGrO)3` zx&z==kDk0>gE-;(n``~n-KB?Qa&=C>!Rq4Di^^zRP^<v(!;e3Mr*Z43g#5-50I0~{ zwQ!LtI+xpjh-5JXcjxZ46YR5^!s^GLlI;T;JUa9ksBj1HVvg{8EJZR!ZJw|YN}5V2 z(8o#vfO)B(eetF2OFZ@bOOjEO1!s<`HBbXqECE;h3e|$rYw%gHXU|^60Ju6r061{q zAY6RKzoQoO9!mfqWmRjFcXj9n16D4P%oUdUev31@)0(Gpb2aat`xRP(XmZTgM26iW zkFY8L7&(h2i`;CBQULTDelF~m5j^C1{YRW9`CF_x=|51Y6NGXemCf4();#{SBL71q z0f0i186YgXE(72=(W|bSG)1*C?`Y9hQm-qyWUO?8eMTdgv*12i|IU}+Y*AAEj+a%7 z>qpLLY{GPa6gB+cK!0R(G!>OV3<?1BXvzhFz4FFJY6F-0ZP}!Wk|hsAJ&OvRG3d!u z27sv%0RU#6MKkLvRsi^V^S6-OtZfKo>`Nr;2H{)>`c0G4&NNI~&bn4y)>R<@GXLOG ztZf(o6f43408E@Uy%o99PNe{N?!{MSR}tjeQmaTpS~j$wK2@Tsz&tQ`L$joyLcICg z@00=H`tSjO_Uw*52iH3Q;4XUKgG)lHIf~Wcq^f$fpLVlsDa)5$eN(ni7md3{X?ECd z&TQ{gWztsx0Nw;@NyRE~`;-76i3qWrz{yQek}D57&72{5BxjN{^kT1%tXQiV05E8* zQE0(iaSec@$Bx11i^hdk!o`^<SuFzRI!UIK3nnnh(IC_Vg3vL+8+?E>*?KTjXb1o> zI~AY&jzwAJO85P-<1esyqz`dOA)j}ZIODg|tQi4U3MK8zYi|sy2Sf@0Z@u##%?GG& z06@jQS$RcB{l&TKJZpyJsq-nGzz2E^963hTL%iy-^}%YO3Om3N&Xn3G6ae6tEu1+6 z<A9DT0e~~F1ss)0m_X}Lp!gT8@K!Oub_o<biZk2;B@P8~utW*~m=A#InDq?+JO0{9 z<GMoabH^FeYnMtPb1hfZuS1VPu>FreWs;9xt&x5z1At>hj~zf|S%o(^fqmJ+nbIpb zyZ3|=0HEz#F60$$^MST4V^&k>w&3>KTygr;umlDxN60Bukp#f=emTMQ1pwQA`<;6C zL+x`13Ei%O%(X!#!n3q<FB)AMiZP`o09+>t00uJvSd;=Fu_geN9fRa9Y!&b{c5GM? zL2CdE7;(O2F<E~AOt>z506bSu0q`4nXN#v$QvkH-(uY>y2-K&SU*ABJ=oKBGR1*M+ zN&#S^E@X3hSI*`;q67fAP0A&KfBE(1fWcGIqClfAxC{;-Iidp~3;<vv5-x69QXnj9 zfJJ`;9|ZCe*yRf&Gc&0BC;`AA77k%n0{}A*fQ(K`m0&bG%5{3@-@7C|z|mBKvD$+Y zC0GZ5eCSH+j=dtR1kWOK9+*~Py&$>ZxJOs53uczBR)USG{TKi&>H%O$ZAWgjR|x=+ z-h8&{E7|lqOa{@?47%>gXB3%1bpXhhn!)gnP(r$KUZu^Tx601zjJbEoI#e;CMqyIS ze$Hg;6$$`&3WT*)?A||>I>InoFR%yiBn?+il33AsN7&5~b%bGIsvm#;RR=%>9AS$e zT@}*NOQATzFw%76+waNtX~g+sl>%TFmu&AE3I*Z;fH{?R?=MOLfHgMd;_=`9-v<H1 zgd-UWfvXi(Wjm^%jtvihn{@!lMY#U-3p6h66uD4{i4$cM;NEcXVBoN5tWBgKC{M5g zZRb)fZ9@Tok^abJ$|C^StP}th{f5ix0q9l4bF9<_!>Nx!aW-mBD+(x$1|6>hAm|uj zoR`{^PPM^ss7EeZx>8ne!$JZI`oTwoT3kPH215x0fJqGiQrM3&$&Efz3V@8f=Cp%y zgNYtfJn$`A;n2AHW0eII2ps^C3x~!qmlo~2M>QN87f>{o$i<T(jaCs3{S}enY$nSF zwE#e+!Nu7;iW6e6VWnp|1Y@?AR4hlN5@K3)>;d0=yH!;}j1B;0<MjAb&q0cUGVq}! z#AFwj(GoFoeL$VARfirb5@Ismql-8%%PC3$Ae2P6F#xPl1AwMwUEup4ev+@|eBc0$ z_Yj9hV47UGDUle9^Xi)$71y270iZ4=5-mbk{QE{QDm)2ZX-XtI+LkO|6Ev0ep(V?e zMy0Y-Bhz1?GR(_zvYJo`z9JmQIXSEQE;Rta4&p%wX!VhM8H}FnF=%AOlH$=3hx{>= zsu1HRP0<0Mu%V83{#a$_5i3cGN8!gp#=(jiV4!9D?gN#+8xH_e+M`s4d0AEkfFzbn znLz+>gW9qvX*tF4#g|_P9Zam7kJ(tJ%mSIRDEG^jMZt-{MEut`{5RyfKso?Ut4@x; z{jP;{p5^8xSXq?(7VT+dXRsX`|Bkul2IW4XO3vmc07#$9$|I&SnN|e=+&0oVt80wf z!dTcwUv!16LL*Kjd34oda7K?o&~D;HiNaVbB@1KW0HZQJcEWXZHwm>&q7Hyit8X8r z@7!b1C|Z(6O<^o&VM`jR`^jgUXj#Qz&%$$&vDksS!dRJ=oY8SLm0^AdPz?aooYUy> z^LDT5vw^XE#T|DqR9qMIx9xwxs*M|IJ;_mi<q>_N(uimR%Puab)z;9jfMpfKEsdxH zAoR9t_ikDSrY8Y{O%$KwUm9^ZX=9#$60UoA5e*$b_|G9l_s2yPeLCt(Bf1W92K#U- z!_}w7C<cHK4w1?kjpz*fIh6AOke5HU{yD|Pst_!P$%^pnzP<3q&p*J5uRn){pMC&0 zEnY%PsbIP84R5_ed8m?=Ls11c9RLw2XO7SR?uVafF@ou{7r-scmczXtzXuO}{t-O3 z<tzAj$97sR`nZb1Wf)wEXE!9Pusl@<!a28dDJg9j{Sm?-6xRk4oMEU3_&A&Qtx(Sg zz!MPBycG&XIYrwkI>2hnbc-udV6C1&zefOEr2`;f3B+K=j6i^>YNtb+H;f&-=l(@C zb`@3S(ap|Ji0n3EGOXAMCI*0kp~u5nJ&%NQKn9)!snjzY$%aCKG;Hc^cLdypbN~b% zzbmf25ng!Zb<O7uh5v3M{OB1D`G5>_#(FBdybK#c0YD1-v758HC)YTVK7`mDR9IIN zjsLL1gX6+&$Q@Czu}07hQ)dPSzzH1y0nZ3K^IY&WZUv97TnGOs<m}-#v<zbP5WD)7 zzgj-6)B-e*6~#(b;{=oP1-Lj%+AyV=VZlNrFqC!Y-@BuFEYjCow!)|}mr<`Jf-fil zCh7o?J0%j&^2JIGNQt64Z=1iRNlaKPG`z#IT_-q`^<w4(bA)nUu-F@%!5OTri6Z<{ zBo4~PaA-_=eq-a?A=mVmJ1-cw&b$_9)YyG=0EB-`Dq7!KckD^eT$78|4C$<aJ$ngN zy&rN*+J-wuEC|l|JC|(k%zOa$Pyvv{EJ0~BpvdNZHBtv<3pM>Q(E@XY<<9U5emu_! zdKSUTb?d1q&OdHl2SDTw%I5Pdiec#Ji{bf~U#IDkCqneU;C$eCE?fOLRP-GVMrU3m z#z^4*7z32YWY?m`1nO@JH8K?WIBVv-aP)vcC&{3x6cZdUjN#{BwkZYz#)YFF0K;_4 zEBb*UzyKlu#*V*^Ml){x{)bu(KR<8mRYCjOvVC`2*+S|b*d8YRM|~rj0KixnG&M>! z%(=$mve5>B_#B9ygU_NK;Z5Y(N=@Au?}Nuh%^*}57ZpQf1ixA?sRuZ9F_l?fc8zLH zp#GMibgE68($6OkI2j2V6sRSq<xq<edI=Y-T?fx>-3%}P_#M3Z)A#V=4_o1hEnma5 z#Y>?3z!9`8hSD@W{2p%Mftu3$$lW6`LZ`sUKVSYm)ZQ-~0QiqfR#6+cc-9<vWYedx ze(N{z5}UV|$h<9j_Bk4Gh^GPJ&YuvSu@bVtPH{%t1ZDxs2*m>AZwYeHkWwr%8X-ME zN%K_ng28JZg^|xbM%##I9;4nwj3qH<H;uZmHG~!^0MODlWKM)wuHnzDgAr`rhOAiz z-ilsYybtC7304>K|1K;HIwT8_zang55p}s_dwE(b03^E$pkiL_QYnMhE`zKd{d572 zGXP}u>__LOR$&7&hso{&Z2&;{e}XmRO~(J7Om>sG5KoF16k!uHCuMO~*W^$F<3eq@ z1BSwoCss*Ri<natQK+}r0|4hjs`>-YUG9J(TD(j3$&jYhc~n;U9l#Wd0_?8{8<;lj zrImK=zQ48F1uXf^C94VyTDJ_cdk+YDdZgYo005Z-oC}<j+EqQ~gE_ysM)Zg1dbZ5H zoY69j$||qB8bVco{q+DFLsUMYL9a*B92!h{#r)A)2QHJ=?an*Ekkv#N<QM}0=K$wI zYL4=Ujf|GUD{1~ruw=YXWVA7pRa-dx-(L?fvzz8}7U$GRn?vQd*8=GEz<sp_cj)@n z(D<x#AR$%X1!4sNtnGtyfO8>L(k3~xKr8xF$yqajGp61}Wt5jyb2$9pUk?!c0a-i^ z^6b=#24O24dA4M7H4d_)q+A!~7y$s!Z<DI~Gx)I;P&ndjt=@yT{@7f52>ltt_`j3M zY*M%Y5c>lhEV!tEvwEJ_5&&2oPAXk;*i&n1-f3c5jxNv|0|3Xo-IN>Y97v@-hFZ}t zbnB1vEk=Lbp+<lzF^76+jJ4T$O)Uq627ZBoYaW$YZI(k$-$7v&(bWN<4gfgTIOaI^ z{_}xz<muW|!_}WUzkoA2Zej8N-f+#Ia^_H;2BoBwk!@$ImH<e0<w4n`Nwso@vGpR` zu&t=IF4P(Uz}B=i9rM~d@)|lv$*w#NSATSVIe#HC*+E2qOp&5L{xrzW9#TM*;rq1& z0H0{x40=DjP}1Vi;g)H%7^^PW(FFjGF^;v=9N^rT8a31M9ZvJM|Fl(9CVAPkN0R<X z(I7X~w2jsQWEa@4H3;&Dj*#>?qT+@1MRh6^Jpka?;uzyt*YeG*Sw`nZQ{kt|Z{|VH zU^|Ohe>{<<KT_79G={V$oXzzN>&!{5UL3uSSY23Z1wu=aw_9(mY|jk}05q$QjIES4 zPN?{-v3LF?Mt&w(GTxxF$jf9}B&|PkPBAZaikTc25)O7sb1H-$;(HcIP6Sq$b9d^l z3wVS9fMY6ExsQ5$$y{jU@vZ6kwPv2?jJEMq7Wwe!h&aELIK@yI&LORcXyE_V$}=op zjXYg?LjUE915OCqsC6Na3;=K}11&f>2RIiR@4ABL_hTZ1&6q4YBjx;35*uV^Wv2@{ zWBQe}428zK0LGx87gEX;hqh^qL$MUL)CE0E09XoJK=-@mN!t5y>~Rh>j>!_@et<LD zCsP^Z0bq|r?2j5{*u@l&W`v8qPjfLf+yw-EpvC2vOS<B5!aC2MS*sGU-joAi<W<-5 z4oC^%$1!hl+2yf_$`w}sFNo|l7ll4pqPhA@DZ{Dk;f={IFrIX(QmZg&&hLoT4!2Gx z6H?nhF!ZT4(0R^GeJ2PJ05?AW3?0MT!oP+dVQcVd9*kJYxPK*Qu;0Wyzm1qIMosyZ zKS74?Knc+WHpXHX5DKy4YA?l61v(VUQA-US0JpxoQF2UitV21wEi$V=wfua*R{us! z2CdOle&syFX^ek0;Y^N;h%Rtkb6r3P%ql5|E)r)ASAl>iad<L`ZXyj2064}m3P9w! zzr}T&Gup0Xrq5g^gC?z3|G;?ys0&z}>zP7)Iu;XZFD?z}DHcqm)K8#0%R&MGj;+18 zO|1G$y}k*S^jDeXCto7&Uo!v*%CLABXiUAsR`<?W?E(}8MWumv0_H3$8T+qT@YgyG z036ep3O~mDSe&~#gLx$5{^Hd?Sxe#fH;LMqMF`DN#hf|gURs<;qlB42bO?E>lwvG| zO`sBIBVcLByMYn_P(#A(+hUn_Axe0$FQzia13)<Y%b@k@FQp5lGQR+Jtdz65K4(<u zWUM9^m9&o3I<z|AZh#SuIeiB=$b15P=ZBWBkq5v#8|WCuNZ}QQJkV+nn~7|-Wipn- zWKMJLFSQE@79nTVE?}}>La5M*SW+RuM2fa*NoSd8H#lR;P1M`j5OxE6M|@XIBzkts zSF!-Oc=p^_=Uof6eok;k%LKOi7cyD1#)A6?^9y(xLQ6PP#&Sl5PRDY>(NWWQ)aZa= z6M~fpQ~R2neJ(%Y_0dv9-U$~3^xV=kM)J-t{P3;3CwRnpvFvjtulQy{qB;EuDpS1W z$E&s7U(LbV8O%1@l(cd}g}z}_=v1sH9}nUV6we~|Zg#tK9%T0(Sg-01VS-9_uK~1r zgP0Nq1%QgeSW)x%nlrv9vecf*R34Kti<WkOrMrL-BjjdCZAPh(#eI}H$YQz^p#9&R zUjl8ey_UwV%K-sv++amBtaetH%P?Z!eLecoqE%8k6mbjyp88laj}hu~6*GG_WwIs2 z{KUoTFBK`8#zIqz&|8;?nPXV7mj^&)%vVFQvSZ=~^%p#~Mji-6XwU+ZH{?u6@fOwz z9Rd58;wgkigN8%rS+_|Few+h<QXdR<OSGgdWgg!mCR1tAj`)nELY&7s-kMOMcbGnK zDqaKyQ}@ayO_WTumrVCtv=Ca38waj4x<ZmOFYW|C$=L{;?YdB<U(Oj=2LN!2cX-iI z=Tas^`SGOqDp80XEIo~<Ldm8+1O&gug+AcNjj@6OuJTf8eo{eT16D4f^r(2ug^=E+ zBN%gvVq!+cXClSHJ`|mI0d-UjSg}Ob>??K#;yW*Y`IUGBz$sSZ<PR>%IEYc7CQOzb z@uc|5Da2wbl*LR}gbJl!N%Vmu@t_Y#)g8h@PEtjl0$YyOz`)f@p<@2+(CW&o2-oh* z+smVAK|(!-Jj2_)4}E6Wd2?Xks-;1xTn*pHgZDw<$k8;pJ(AU-Bj@dP9ZfXbuV>V! zSd{80P@hCDjxQ-Hl*5qRGSQqqpJwsLAqa#rj9AYSqerExQU_~89$!hQ(*4xNUVOnt zklTL<xH@zLM~k*pa8c-xK1t~k_!<5Uzk}b!-{5cY9(XUjC*B*Mp}Jq>UGSao-NfYz z;|KskiX$YN9Sc!b{4%}bn)=95A;Bt?&t9k%XLhdPK@hu8iQv|v=Cm|BQXRD`tayh& zs)3XVgYa;7K_NtoOs82hsE4(~^r^JrzdMu9@Nf7X{4V|me@m0lLwvrlL*cvNJNZY# z#t8tZ9H7!mc>mK>MtE5%5LtcVp8CiI%Lxv$Cd`>pN<gq7o-9LhhjgHh(0alIDvVN@ zQE}Hu9|x>@1lnA44S2fsmOY#z4ggT)>`E|a{Ex^+8wrP(DITppYN(Kf)oQQO2U1eZ z9XX5hvv{)%1>6<VvZ>Vw=}5bqCPSaa4}?UKqSdf3*r#?=Zh}Swhtj@cpS3(8CQOUZ z*U8D|u712f-Ou4wrvM-oF)G#vS|ppSeK@o0`?>-GvAGdrX>$4ugf<herAj5zBnpU7 zs7eUb2A_rW2A_?k2y^=lrhQ6MS&}fu0N}H`%o#r?87%`*CfMpP@cx)adPYkh5K<@+ z=`E8C_A}|B#uNnJlXcG9>fmWoTI=>y!E8N#JT))&A^bg10jW?L-V5)E_r_=7v(igD zK#C{4`ui~i04r+c+>yjrb!+LD;#ennzY={wD6yW$Ub<D1*>*Mo!Hzl$0<mpAJ%@Ul zO}WLi8U?0c77QN=C6|n)PPg{cZiY@XXHc7c#r(O@ZNVM1;lJ^-PBU+%-@z(t_!~SO z2k(LR!h7Pq@fnfoZ=YeKVaklT0b4<<4$%{StMjiUlXVPJdRsA>a5EV()diEMS}G*? z2U3}1BflC1j`ONPP<QB1C}9d{>cmh5jLbA-HRT)mH-3ins-A~rv!r(C&LpfVSS|ed zBBfVs?@!?B$t6~b1t*!8nYx6X;2e6!E42>Ma*LJqSP&XotE^Ud3GJy~`CBp>@QR#W zDfLbG<t#%!HUKyntx+c+Ao!j+%TDVcs5ipTC$yW>e`1`!HERV-2I{=UCtUMrp)e@a zI)o-t9t4%~=rPutDi1Hs=S{F=e3^_z6Zm;9WpgezcN*%u@JpFTt(<V`3_l=rCrD0C z?!=kXH_}9CySHBJ1@)Tm^Y#02<$ssVX&2GTF9?4IlYs^!{8C9YVh~j61Su&g<(w&X zEd_y12SMFac4;mz5&qQmbS|qE-U12XPijcQF9!mj9|+ncTGJOKSTm1^EJV6q5bw$^ zEnbUJosN5P4*e8fpDz4?K_Do``OGoGgTP{&kYIIg)AfQn!}otrG+QT%gugjgeTYT6 zF8uO}v0x(2V{sv+WFSk40@Xjkobj$7CDM0;xLNhRG@O~t(fdh8%OIRH7Tng1&81-K z6s$eE@XLTeaFz)bCaCg62DL2Fl==|imWP?Y;IzIQ#C+91&750@$=obvd|yy@o3c6d zusLlIrp`z?%TiffNG=PHZ6$yp$z&g!V9oeOv>Tk%cLU8={gZUnM=OstV+)y+%W-a) z;J4zct2bwgJiNN_s|cGgv7jid0h!HAXDt{dYC~H4L`&KVUO{$ie?(KmUiE=r^<77k ztm$jWTy$i7zm&~UA)7N7n?qB53~$f^1V$DXn;}w;iv+!Z?FN@6Skgb|tS%5$qSJv8 zHM+xAeM|bLM5FCWoC6WxFA^!c8Eo#1y6}e%0<ncCjd4kV615cV2JI5fX$#4U^p~HK ztOFr3f=``VyoJa4SEAYRAnw4TRllW(@_5)>i7h?4@P}z874!m!h!PcutweM;Fj|Ij z=Cr4Yl6=T7`CbP?s4G7Hn-5|;lweMKF3DgyQ?%-rvN<RaQ67hg@9UPHDCh+?W=r-m z3qupeJImN^P)=ykzY?tJZ_%p4)j-g91XU|O<N0I^6U^yvlQA8KW6M_kGB)N-*c^D- zoY-`}uMH&<Or_%8pom!@+6X{EXH0@6<3louCv_mG6@2H(1WVdSWDKtp34R+k#zlUs zeyS*-O{Y8>nM%dGfuI}krP-@>1KbtbQXrT!-bt`z9u?^bl{!7DdjCo~CY0)A9z};E z6a2P*bf<)?KAy<qx9aOA&KT|n$UB|P`jE%A=H_fSC}opa&MZdH)3c^15InU7p`pa* zSD7<Cf^xfuaQqjTJ-=Ke_+@M?o3OF<v9WgOtA1=j;BPJ!EJc}YYtCn$$QHGLU@(tJ zG^PGug4ww>!J0{vHQ25orbw0bQ0N)OVXM70^As6_@5opz!7=d@{5EXtnzFIXW@9T@ zc>K+qy70$%H}I!LZjpY_ROCb}6M%p*>WK#XjbvANg>c>-Xy2wzwQ4Y&uA{p{rC;B9 z{RiI-LzMAd$vcyGzX``cB=}__XI4`Y&v#4E9evf0Q%jM7nc?gr{UArQBb2a7E*I$u z<w-`%5V8`^A^dkk6&UEw;E_@k;|&m%etm<gm0m3L<lV?S-j3#Ck<jBxUoPVK!it|G z5_~%wQ-f~dsXMgD9|*#ZAm|9i%%V{y1_A@autbyNHnK{-M7Z$}H2BV1Yj^Mmgcdu6 z|H>{Q@Ql-wKGVLFcOdUFE6HFP&XiiQ;0v)k#UhTMtw8W~;jhC$$YhEf+OG?lNv}Cu z0c(LFIoZ?$UH*w?#{*;qeUl26&2^9hLf9cFD7<ol8i`gDSXILA<^|rCd64#v^btL^ zq|aB8zV{T~!%yf1np4Eapb;CBOkMEnKM-upZtY|a9DyDQyFv>QMe+wkTLeUs$$km0 zs)^?GwF%brw+X%Yj<nr0FpmO53=Rg6+8_zg*!Khhr_Eh0=;Rsvv+$YeZ(|?m3U9Js zihaYd5V62BUN2Cb=AzYJpgCSP7O8A(biuFZKoFE=!F(#-6>|N+P$Hs9Vx6H(w6eA% ziev?)O-9=UB8;;!XCcXwv7X;CGCm^h8=guzw-IWxoe1$?r0pWB_HNqn-}E#58~F~U zE*W35-@ZZa^(5Yt+<Oi_1L+KTW;c<rmy7z<hQ;Iy^rpm5=yUy6d%>J3D7U)cHvk|c z1=tlb82|N&c811GF{FolFrjM0K;hrY{aRZlr0o$T$wp&;0+gXi2J<M=&Q3De&fy#W zn|wz8hTp;OvS71zBHmsuA?$+Xri`oh(h7%5G-Z7kR(c<Mw~PR*eUdKt4bN&M-W7}z zV8~<?A)E1JF(8B;0x44~CV<%5F~Kd964nr!aF2F)Z_#sFan%)-i~R(?5$m&;y@S8d z8~s*$-KwMS3RSy;7z|cM5z-h>766gOs6-yKl{aP-qlgJ(GbWhL*^1nXad2@f^K1Tp z7b+<<XZLEx?p?&5)tEgykM$)>B=AnwX9s%+f1%e`d;L-j27^dv5C9?U5H3b5yo_RG zGhuAR1T&urX`u)tLTl>R#D8ndepA5ik;m?t%bww5&vdgs2rIlG@B*hd=t8ew;etU5 z5W)^&VYI@|1Tc*$mQE&^nM_DMOkf3|2rY{>@n^#KJnXlb>|RcG?=<!-JA1Z8w8BdX zye{<m6%jD_140TECMJw#(T-sgfy5!&L8O}Scf06!R*{gK*)ybsT}t3}q1P|XK;aJz z0URkJkQhW@k!s@ah<}?LK+ttz*RQw(L?Cb^1^|ncP$$X=xi0V#y#602tl=FMD7DN0 O0000<MNUMnLSTa2BoHD1 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_notification.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_notification.png deleted file mode 100644 index 45e66248aff96311c3ea623827fd3a1dd88669be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1255 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>U|Hws;uumf=k0Cpj<8aR<AwT* zmsTF+THPwBwkShzNnlEfZd6Ej&mvz(ktso2R=DomxTv+o(UUVUL_l}Z?7JE(T}vFj z#o2CNHR9FXa^~dgkjK9>KmO-0p7m_5WqMV7f8TlWIJR>??ax=9`~3U<xzFitJseF6 zIM72@w@0jNj&<#NZ29hh#-FbJ8`r(7=(FC$P_1(9y6pKvca8vKMTfI345q?NSA0-7 z)+{HU_GU(OT#kBJeB+WDW7-4PoFhp+xvlpTJ!iAb=stg;^|#?N(YkikT%iP+b4OJz zHjCQzM;eF;8!p_x@<B#y%f-gYMQ_v-Qtlc~Wm{}0ub-&B?dg3noB8icpKSAGJyEyr z$n6R~?oVGoR_4`<-cL@F-z{08cKhy)_)i7eap!Z7iOw^Z*50^N;CI-XgQB*%{ZR&@ z(i_58eH71pu)gMf=A5bVyJj-T?y&uRv+4B)hS!A#@%afw^1DBObl&%0!R@>7^RA|T zPYcP@AKCw%sp~FDw%>R3PTBK9j|4x(i+3$I$|p$5O%pp-+dBPrV`VeP29^82IoChE zcjI%9-=7!zl@sC?-gWk6sZdd$wI%g#z=vvv*&DdNKhk}p#laW8-Fp7i17Ge`R|#!i z<+)ok=)L`n+wTrM6k>XFzVqd&q%(2~(^fInOizA!O36R_(f56S-pC1xg`5qJo=_$$ z@40uMusQ#wx+x~-#oP}kFqsq`3VYP!_$OR+L8J4fn_n94^X%}55|{e<eoEsldBG*E zdF678%BOFUoa}z6aT1fvG_ga=Z1*RGhc@KxY2;K*-miGPmc#q>jV--%mY7=poUMK9 z+!1qCR*R0Ks(-^o6Xf;QO8joG6v+vCevV`L6NLvSyS62NsPtqkd$ep)-D<82ot~n} z`;BkE(=gV$-L~aN-Q4D#*&N@by}35<UZ4IYGPJ=~BGm95H<#?=Pg>h_m-aK1^BlBe z`C<PcWN+{VVbNUcDf63dX*w*Q#9eT(u5jDk#>mi|=q{7~{mQzB;zPIC?l!1;C6b`g z{o(f|r9Z64!Z+qx?qJ>jTs$i1(lX|L&(zLctS^pf|EdY(fAC-H<>3w7r%&D3BD!+g zC(pWxb0bVVeg{@C?AQFSc+HPds#3%zZ^CBgm>KT5%J#`wGiTiDE8*B=&i>7Knt7&q z=&xCK*G6eBn#=S>rDT1`+PU|Rytlnn?p?lZb^gb<-6ee1`!6i!^AtT}8Wi|ib7joN z*!-=9(t6Xx4qCC!==A>@mR*0)Y9-4)p?t5<3x9WRHYw=svR<yt<oEskT;F<=51Y1d z@R!IHEMb|U^Y)qC)!VygZxnsLRVzN%@s?z4TX}Jj_2>L>zdufMX58*OQXSEq{`-ey zZ}#WCSH1Wu&rDi1E4whd-gfJHhM!UF=O((n`Q~(|`h%g^${n$5WnWt4d%a6_Kl`wv zp6Sa@`>6MhXDyCjn)qbnfdnR&Ts4*zGX)l;IW^4UWX!_Lk<>Xl{gQo>Otk60hYck~ n=I&Of`=aUvSRApU(?8ie+>?XmB;0QT7GMmXu6{1-oD!M<crrbX diff --git a/android/app/src/main/res/values/ic_launcher_background.xml b/android/app/src/main/res/values/ic_launcher_background.xml index 2f6d956..fde0f6a 100644 --- a/android/app/src/main/res/values/ic_launcher_background.xml +++ b/android/app/src/main/res/values/ic_launcher_background.xml @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <color name="ic_launcher_background">#000D19</color> -</resources> \ No newline at end of file + <color name="ic_launcher_background">#3A2671</color> +</resources> diff --git a/ic_launcher-web.png b/ic_launcher-web.png new file mode 100755 index 0000000000000000000000000000000000000000..7889d1452c5a1724055e7784b42ece8e4db06d7c GIT binary patch literal 59894 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 BFj4>j literal 0 HcmV?d00001 From a51e4855452f92859137141b80600b6d32a0af3f Mon Sep 17 00:00:00 2001 From: Sofiya Tepikin <sofiya.tepikin@gmail.com> Date: Wed, 6 Jan 2021 20:11:55 +0100 Subject: [PATCH 89/94] Adds missing notification icon --- .../src/main/res/mipmap-hdpi/ic_notification.png | Bin 0 -> 919 bytes .../src/main/res/mipmap-mdpi/ic_notification.png | Bin 0 -> 542 bytes .../main/res/mipmap-xhdpi/ic_notification.png | Bin 0 -> 1128 bytes .../main/res/mipmap-xxhdpi/ic_notification.png | Bin 0 -> 2041 bytes .../main/res/mipmap-xxxhdpi/ic_notification.png | Bin 0 -> 2505 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 android/app/src/main/res/mipmap-hdpi/ic_notification.png create mode 100755 android/app/src/main/res/mipmap-mdpi/ic_notification.png create mode 100755 android/app/src/main/res/mipmap-xhdpi/ic_notification.png create mode 100755 android/app/src/main/res/mipmap-xxhdpi/ic_notification.png create mode 100755 android/app/src/main/res/mipmap-xxxhdpi/ic_notification.png diff --git a/android/app/src/main/res/mipmap-hdpi/ic_notification.png b/android/app/src/main/res/mipmap-hdpi/ic_notification.png new file mode 100755 index 0000000000000000000000000000000000000000..8ba134795100609a1813d685d04e032001ec72f7 GIT binary patch literal 919 zcmV;I18Dq-P)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ000ACNkl<ZSVzs6 zOQ@Dr6o#MI%1TUv3cE-miek`ZkPRA?1P+R@Xdsdf5=A{-$)XE&x*TmFVpJ-6s(~b; z1S;4_QN%%!Iw-sxvO$A_Fd?z*rl~7l*auX;@8A3T{||D*;S9dL*M9ceYrku)UtDHG zml+Q|14YDGU=c6^SS#t5UJlt4P(+Ld27vhq;#1%)Nq=?=)iqE=c<nOa72wJQa28k& z^h=6vpt=Hzh^v7Y(&knBE&<j^I@1)YF;GNY1Iz_J0<Nvu@NeL0V6&uunm{!IiioR# z$AR~OahZ*N0$v2ROZvAIsu(CD{E8j~Rs#1x_Julzz5!ka_DVWm0@Va)Qi6Hpf*{WA z;UM1uERpnmZnD1@0Y$_p;MMf!fNnAz*sFkdB>j<FSPJwIusdfg^ZhYN+jBOuKoM~Z z@Fg%IXDsvG3Vy$&A3DwJ2$ZgB4e(TtFvH8Y0`nyOUS}@{^dztz@N;itILMy|*3~I_ zEl@;^2R7QxrNLi7JS+usBz;#kzY~!4qaPSkuu+pKPQ2E#0ZHdBU04Ye5w`&!0}r?8 zoiBi!foT>>U~!d~>VPbM9|9J`wuTe#VPGflvlU#@rcw`i@q2(1X<K6t@F;LRC1qdP zyQM%YQVwbh#&%8uw*rTNiK#q!wiIYJ@JyRD$<}qiSHPXXCz2MH0=c|!>Cooz>$(Z} z7MSdMN|KAbi$+~gzn*I4;nK7XuwAK^ItDmdJJ~KR1)7z#B3Fbp0d@L04ftg_ue~J6 z!dv8_sg`%(fhIe4n0o|x0@wiDm*S{T(!o+7=PtYRx#ZqnxPG)Zk|??kcYQSI+N!GF z?vy(220jDs>XOE3VJHc#ugbc1J8;z1gQTyk>~;dWA~k@PfTr2r0G|WfQZvv8OaWY1 zyN|1Fk#gmSJJZ*IHwwMv@?uN!>|elaU?$*p+f9Pg(c6-KtFu>9G5U$V30Mkp!(E0w zFeCMDHv%Kmq7PC>+p(_B0@+w<4i~s@2X08G&B6J*ujoW-xd%&{#v-5u<(Tr5wYvJh zPwy+OvT+Ld6*vIcGyAG)pGHAlcl?O(72FF<PcQKL3tDQo&5jT2i))_!k{sa0qu4`L t7E=>&N75Kiu>ueMFF(f=AGzVg{{R>G@+C}mH$wmb002ovPDHLkV1iIBp$q^3 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_notification.png b/android/app/src/main/res/mipmap-mdpi/ic_notification.png new file mode 100755 index 0000000000000000000000000000000000000000..5093ea01123d38fcb27369f66de462f125f6b924 GIT binary patch literal 542 zcmV+(0^$9MP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0005yNkl<ZNK3Vq zONftA7{-5(aVZ;i%4NiqSg^1VGoxmtv9O(**jd@m!p_D*HnO0UrIoTUQ!^zYxund- zC>us-nvJp{u@F6ab^bNJ|93fO;az^`J<soZuSfi6Q;ELqBfuI-&vWl(18k22kCO1X zq{lgsEP(A{;4ZK!iGBr6NLuKEbOLN|1wv?hMQjB)B<WKdq!nO$Gw=r3(jXGz`y_p7 zf;0kb$Jsn^vLg)-feA^j^J@c~1#WcZIGs;Rx|$8Jy%%_~s;FI@AHb-j#j0a%1h$_7 zN4r!j=kY_s)l~HXY##$2#6T4Sq6U+aW>(+(2Vi>xumlViioXXork@&;^u2e#3fPs} za(y9S7KpT72KGye*8Xc%!10uxLVaSgr+|AYO?R3Ar+{0f>dAisxDT9>bh8OC0z9im zmI3?#OapVkn4~97fE~a)Ac|dLmw?z=r-40^mYV<rKy<{;67@7QQRL6SHc7u~0r4?S z@vF=zBHBsdHZTMnmh`f54tfW+F9PRVq6pzA<XhlcO3xKZ=dxBsiX?hE3b(cfbODH# z9tC~_*Tc7Nqqc3+SQQ6>SjWAWtjhWZ#A;cT6reuKdC}Iz%LN<&b|;08!0UMFB>ik_ gh)zIZH}$#y0q4n!8H#Jc7XSbN07*qoM6N<$f&roK!vFvP literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_notification.png b/android/app/src/main/res/mipmap-xhdpi/ic_notification.png new file mode 100755 index 0000000000000000000000000000000000000000..9d6e5eea33161ee9dee92c820b9098a4a784942f GIT binary patch literal 1128 zcmV-u1eg1XP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm000CpNkl<ZXhYSR zNyr{W5Qd-EsJP-m4M=hjqk@V=P_l`VgA1q!_YDae0ui@>8a%`W+;GDk)Pwwnpb=CE ziXwV&0k^2Qp|}JDA&H`*AS$jUFZ96p@qhD8PtW}D_jRhO>*=ZPuBsNZd}x;Y&!7Mi zu^TW)(l0|T)L;M+u{ZDzuqSYYr0qjM3<3}lbAdO31<C0zfukk;&^JWy01@F8e*-vt z#MzI5Ws-jF6QWmuh}Z{s3pj9$lV1T#CH>eJL~j5Qu|o=*#S@%+9at_Y`he&Y;Bnym zmQGDcTG>*zQLGpsBIW?M0as@_bPI5Uq<=E?{wH1p5E0ft6?n?$eWoLJ{0!jPl5i>o zSPr}l?3n3%CH@z1f}~eF>UY11BVu1*Gq8Wx$&=nUz>=;PUFSa#5nlP@3Z1XieQzAo zC6uxOQruq(JkXQ#m6>~ht8yW_04xMPfbQYf0Pg$YwVZ{?0*Ht`(q%Q8CgjZ7B<uaK zSkkv`4dw#e0jzCnyrbNDNf)-&Z4D3+`vKe98ZMMOO49pnY_tN1h+Wc=IaKJ3`ua7n zuuUP<7U1-B+d5&Jsd0&<hbB!n5g={cp9*f<Nj@}vpC_p?Y})`hYkaiCivrzsl5TC% zZv)_S`Pc#{a#U{wT#jCxl(tEl*BKxpT+?pJ@t{!lB*4YLFUo41BI)^Yb{qddL|hBp zROnQW`h&n4;LlomzCqH8t^h9rC+2uiDEqFYMG@iTZdtPRwxp$90p0_SEOaVI-7CK< za4&FqQv6)fAzcAJ1rE*epa<FAfop*4ldUb14(bZvUd~M2zLk&u1KxY<`uGFxu8obq z9#(tQ#8yf3BjQQmob++Cq_M4<NvF_8;M@Tm9cOX_;7ru%v`bcxO_EOQ8bUTUHG=>r z1Fi`^sm-}Y(*0cl+#dfK*l7kJ+^O3OSPk4+n{Te9?>hllDI%T#&Knru54Tr<4}s5s zDt&lClK;xs(Iyu<9(ZYBfV(8EjR^073u<$nCF$u>07LpTS~38{zrgM3*gO;P=~FGL z_rd~6e-{CyFggJE2yju~*Z2)M8*sXE5%3656-*APMUs3EHI9iPlmIMu88G%Vm^4xC zyI0+nmK(y~0r#biTd($916(J`vgH7kg^2LPRjxkC_ULz4b*}(drj*&qnvdww*5pP> zZQJyD&8gItdkh$x-ZoIJlr$9)e!bZQ95#*YbMAJxS@}x0RS4B5N*xNXqN}Hzmb$~m zk9-GDbFVm5ZuW+j<h{{)WCPT~$?pP&C{6a9@%o|Tnbuy{1Umzy&Al^l1>k1y{EW_p zA2+rF4+D2g@~P8l6am!!h8th5pAE9AA@#81>r-d@3rW9s^181-Fx}+o&CG2`Ke;-$ u_pqam|Lvu3Vxx2R@&`&+u|$8?1N;YrFD*bqZEy4d0000<MNUMnLSTZYdKH5J literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_notification.png b/android/app/src/main/res/mipmap-xxhdpi/ic_notification.png new file mode 100755 index 0000000000000000000000000000000000000000..8a6edab4d451f9c20e32428c9b5fe6242079f91c GIT binary patch literal 2041 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 Xk9i4aN&ovm00000NkvXXu0mjf*d*rC literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_notification.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_notification.png new file mode 100755 index 0000000000000000000000000000000000000000..d646430ae31a31cfb2b88af8614bc00552e168e7 GIT binary patch literal 2505 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 Tu_hV<00000NkvXXu0mjf9OkFM literal 0 HcmV?d00001 From 5fc2320afe0edfb349035135cc14b1216744eeb6 Mon Sep 17 00:00:00 2001 From: emelko <ml.kochsiek@mailbox.org> Date: Fri, 8 Jan 2021 17:25:29 +0100 Subject: [PATCH 90/94] Adds updated text about credits. --- i18n/en/links.js | 22 +++++++++++++++++++++- i18n/en/settings.js | 2 +- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/i18n/en/links.js b/i18n/en/links.js index c677b28..c738749 100644 --- a/i18n/en/links.js +++ b/i18n/en/links.js @@ -17,5 +17,25 @@ export default { donate: { url: 'https://ko-fi.com/dripapp', text: 'here' - } + }, + smashicons: { + url: 'https://smashicons.com/', + text: 'Smashicons', + }, + pause08: { + url: 'https://www.flaticon.com/authors/pause08', + text: 'Pause08', + }, + kazachek: { + url: 'https://www.flaticon.com/authors/kirill-kazachek', + text: 'Kirill Kazachek', + }, + freepik: { + url: 'https://www.flaticon.com/authors/freepik', + text: 'Freepik', + }, + flaticon: { + url: 'https://www.flaticon.com', + text: 'Flaticon', + }, } diff --git a/i18n/en/settings.js b/i18n/en/settings.js index ca83862..e104971 100644 --- a/i18n/en/settings.js +++ b/i18n/en/settings.js @@ -138,7 +138,7 @@ You can contact us by bloodyhealth@mailbox.org.` }, credits: { title: 'Credits', - note: 'Thanks and lots of <3 to all of our contributors as well as Susanne Umscheid for the wonderful design, and Paula Härtel for the symptom icons.' + note: `We love the drip team. Thanks and lots of <3 to all of our condributors. Thanks to Paula Härtel for the symptom tracking icons. All the other icons are made by ${links.smashicons.url}, ${links.pause08.url}, ${links.kazachek.url} & ${links.freepik.url} from ${links.flaticon.url}.` }, donate: { title: 'Buy us a coffee!', From e61f8c9483fbabe3b870a3ad34e5b589708dc538 Mon Sep 17 00:00:00 2001 From: Sofiya Tepikin <sofiya.tepikin@gmail.com> Date: Fri, 8 Jan 2021 16:34:00 +0000 Subject: [PATCH 91/94] Fixes the date label on chart from breaking --- components/chart/chart-legend.js | 2 +- components/home.js | 2 +- styles/typography.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/chart/chart-legend.js b/components/chart/chart-legend.js index 6739161..9d6e8cc 100644 --- a/components/chart/chart-legend.js +++ b/components/chart/chart-legend.js @@ -28,7 +28,7 @@ const styles = StyleSheet.create({ width: CHART_YAXIS_WIDTH }, text: { - ...Typography.label + ...Typography.label, }, textBold: { ...Typography.labelBold diff --git a/components/home.js b/components/home.js index 423d82a..a6c8cc1 100644 --- a/components/home.js +++ b/components/home.js @@ -116,7 +116,6 @@ const Asterisk = () => { const styles = StyleSheet.create({ asterisk: { color: Colors.orange, - paddingRight: Spacing.base, }, container: { backgroundColor: Colors.purple, @@ -150,6 +149,7 @@ const styles = StyleSheet.create({ }, greyText: { color: Colors.greyLight, + paddingLeft: Spacing.base, } }) diff --git a/styles/typography.js b/styles/typography.js index 3df807b..5b1bfd0 100644 --- a/styles/typography.js +++ b/styles/typography.js @@ -11,7 +11,7 @@ export const fonts = { export const sizes = { tiny: 7 / fontRatio, footnote: 10 / fontRatio, - small: 14 / fontRatio, + small: 13 / fontRatio, base: 18 / fontRatio, subtitle: 22 / fontRatio, title: 24 / fontRatio, From e5d2a7e4cf77410b1e9c44171d2ea2747733ae9b Mon Sep 17 00:00:00 2001 From: emelko <ml.kochsiek@mailbox.org> Date: Fri, 8 Jan 2021 17:39:14 +0100 Subject: [PATCH 92/94] Fix drip typo --- CONTRIBUTING.md | 10 +++++----- i18n/en/settings.js | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 11be4df..2bbf312 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,4 @@ -# Contributing to drip aka CONDRIBUTING +# Contributing to drip aka CONDRIPUTING So good to see you here, hello :wave\_tone1: :wave\_tone2: :wave\_tone3: :wave\_tone4: :wave\_tone5: @@ -8,7 +8,7 @@ So good to see you here, hello :wave\_tone1: :wave\_tone2: :wave\_tone3: :wave\_ [What should I know before I get started?](#what-should-i-know-before-i-get-started) -[How can I condribute?](#how-can-i-condribute) +[How can I condripute?](#how-can-i-condripute) [Thank you](#thank-you) @@ -23,9 +23,9 @@ We have prepared something for **you**: check out our [README](https://gitlab.co Let us know if you want to suggest improvements for the README and open a merge request (which is just like Github's pull request) -## How can I condribute? +## How can I condripute? -### Your First Code Condribution +### Your First Code Condripution We are fans of labels, at least for our issues. You can find a list of `newbie` issues [here](https://gitlab.com/bloodyhealth/drip/issues?label_name%5B%5D=Newbie). If you decide to work on an issue, please click on `Create branch` based on that issue. You can find this as a dropdown option right under `Create merge request`. @@ -54,5 +54,5 @@ To send us a new issue you can also use our [gitlab email](mailto:incoming+blood ![](https://media.giphy.com/media/kPA88elN9kYco/giphy.gif) -Thank you for condributing to open source, thank you for condributing to drip! +Thank you for condriputing to open source, thank you for condriputing to drip! Much love from Bloody Health :heart\_exclamation: diff --git a/i18n/en/settings.js b/i18n/en/settings.js index e104971..cc63775 100644 --- a/i18n/en/settings.js +++ b/i18n/en/settings.js @@ -138,7 +138,7 @@ You can contact us by bloodyhealth@mailbox.org.` }, credits: { title: 'Credits', - note: `We love the drip team. Thanks and lots of <3 to all of our condributors. Thanks to Paula Härtel for the symptom tracking icons. All the other icons are made by ${links.smashicons.url}, ${links.pause08.url}, ${links.kazachek.url} & ${links.freepik.url} from ${links.flaticon.url}.` + note: `We love the drip team. Thanks and lots of <3 to all of our condriputors. Thanks to Paula Härtel for the symptom tracking icons. All the other icons are made by ${links.smashicons.url}, ${links.pause08.url}, ${links.kazachek.url} & ${links.freepik.url} from ${links.flaticon.url}.` }, donate: { title: 'Buy us a coffee!', From 9aba800119ced9df20e81d0e8c5097cf0304d727 Mon Sep 17 00:00:00 2001 From: emelko <ml.kochsiek@mailbox.org> Date: Fri, 8 Jan 2021 17:45:28 +0100 Subject: [PATCH 93/94] Better wording for prediction text --- i18n/en/labels.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/en/labels.js b/i18n/en/labels.js index 3fb046b..c454423 100644 --- a/i18n/en/labels.js +++ b/i18n/en/labels.js @@ -71,7 +71,7 @@ export const stats = { export const bleedingPrediction = { noPrediction: `As soon as you have tracked 3 menstrual cycles, drip will make predictions for the next ones.`, predictionInFuture: (startDays, endDays) => `Your next period is likely to start in ${startDays} to ${endDays} days.`, - predictionStartedXDaysLeft: (numberOfDays) => `Your period is likely to start today or during the next ${numberOfDays} days.`, + predictionStartedXDaysLeft: (numberOfDays) => `Your period is likely to start today or within the next ${numberOfDays} days.`, predictionStarted1DayLeft: 'Your period is likely to start today or tomorrow.', predictionStartedNoDaysLeft: 'Your period is likely to start today.', predictionInPast: (startDate, endDate) => `Based on your documented data, your period was likely to start between ${startDate} and ${endDate}.` From 7616d79687062d022b1a0fc9cfaa0bbce2b91ba2 Mon Sep 17 00:00:00 2001 From: emelko <ml.kochsiek@mailbox.org> Date: Fri, 8 Jan 2021 18:17:49 +0100 Subject: [PATCH 94/94] Add Lisa as condriputor <3 --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 06ae5b2..496b612 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "Marie Kochsiek", "Tina Baumann", "Sofiya Tepikin", - "Mariya Zadnepryanets" + "Mariya Zadnepryanets", + "Lisa Hillebrand" ], "scripts": { "start": "node node_modules/react-native/local-cli/cli.js start",