diff --git a/.npmrc b/.npmrc index 4b3609061..d80632a00 100644 --- a/.npmrc +++ b/.npmrc @@ -1,5 +1,18 @@ runtime = electron -target = 2.0.7 +target = 5.0.0 target_arch = x64 +config_arch=x64 disturl = https://atom.io/download/atom-shell tag-version-prefix="" +build_from_source=true + + +# npm_config_target=1.2.3 +# The architecture of Electron, see https://electronjs.org/docs/tutorial/support#supported-platforms +# for supported architectures. +# m_config_target_arch=x64 +# Download headers for Electron. +# export npm_config_disturl=https://atom.io/download/electron +# Tell node-pre-gyp that we are building for Electron. +# export npm_config_runtime=electron +# Tell node-pre-gyp to build module from source code. diff --git a/.nvmrc b/.nvmrc index a244f6f35..65466b83f 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v8.9.0 +v10.15.0 diff --git a/.travis.yml b/.travis.yml index d6a2c1506..c93c48a09 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,9 +4,6 @@ matrix: include: - os: osx language: node_js - node_js: - # Must use node 8 while on electron 2.x (for safe.spec tests.) - - 8 env: - ELECTRON_CACHE=$HOME/.cache/electron - ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder @@ -14,8 +11,6 @@ matrix: - os: linux language: node_js - node_js: - - 8 env: - NODE_ENV=dev addons: @@ -89,8 +84,8 @@ script: fi - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then xdg-open --version; fi - - travis_retry eval "pkill -f electron || pkill -f jest || yarn run test-peruse --forceExit" - - travis_retry eval "pkill -f electron || pkill -f jest || yarn run test-exts --forceExit" + - travis_retry yarn run test-peruse --forceExit + - travis_retry yarn run test-exts --forceExit - yarn build-e2e - travis_retry yarn cross-env NODE_ENV=test TEST_CAFE=true IS_UNPACKED=true testcafe electron:. ./__testcafe__/peruse.spec.ts - travis_retry yarn cross-env NODE_ENV=test TEST_CAFE=true IS_UNPACKED=true testcafe electron:. ./__testcafe__/navigation.spec.ts diff --git a/__tests__/components/AddressBar.spec.tsx b/__tests__/components/AddressBar.spec.tsx index 2ecfc1944..35ee17540 100644 --- a/__tests__/components/AddressBar.spec.tsx +++ b/__tests__/components/AddressBar.spec.tsx @@ -14,7 +14,7 @@ jest.mock( 'extensions/safe/ffi/refs/parsers', () => ( {} ) ); jest.mock( 'ref-array', () => jest.fn() ); // -jest.mock( 'ffi', () => jest.fn() ); +jest.mock( 'ffi-napi', () => jest.fn() ); jest.mock( 'extensions/safe/ffi/authenticator', () => jest.fn() ); jest.mock( '@maidsafe/safe-node-app', () => jest.fn() ); @@ -23,11 +23,11 @@ jest.mock( 'extensions/safe/actions/safeBrowserApplication_actions' ); describe( 'AddressBar', () => { let wrapper; let instance; - let props; + let properties; let store; beforeEach( () => { - props = { + properties = { windowId: 1, address: 'about:blank', isSelected: false, @@ -50,11 +50,11 @@ describe( 'AddressBar', () => { describe( 'constructor( props )', () => { beforeEach( () => { - store = mockStore( props ); + store = mockStore( properties ); wrapper = shallow( - + ).dive(); diff --git a/__tests__/components/AddressBarButtonsLHS.spec.tsx b/__tests__/components/AddressBarButtonsLHS.spec.tsx index cbedda53d..6604fbc92 100644 --- a/__tests__/components/AddressBarButtonsLHS.spec.tsx +++ b/__tests__/components/AddressBarButtonsLHS.spec.tsx @@ -15,7 +15,7 @@ jest.mock( 'extensions/safe/ffi/refs/parsers', () => ( {} ) ); jest.mock( 'ref-array', () => jest.fn() ); // -jest.mock( 'ffi', () => jest.fn() ); +jest.mock( 'ffi-napi', () => jest.fn() ); jest.mock( 'extensions/safe/ffi/authenticator', () => jest.fn() ); jest.mock( '@maidsafe/safe-node-app', () => jest.fn() ); @@ -27,11 +27,11 @@ jest.mock( '$Utils/extendComponent' ); describe( 'AddressBarButtonsLHS', () => { let wrapper; let instance; - let props; + let properties; let store; beforeEach( () => { - props = { + properties = { windowId: 1, address: 'about:blank', isSelected: false, @@ -50,11 +50,11 @@ describe( 'AddressBarButtonsLHS', () => { describe( 'constructor( props )', () => { beforeEach( () => { - store = mockStore( props ); + store = mockStore( properties ); wrapper = shallow( - + ).dive(); instance = wrapper.instance(); diff --git a/__tests__/components/AddressBarButtonsRHS.spec.tsx b/__tests__/components/AddressBarButtonsRHS.spec.tsx index 1467eff6e..51fc6d696 100644 --- a/__tests__/components/AddressBarButtonsRHS.spec.tsx +++ b/__tests__/components/AddressBarButtonsRHS.spec.tsx @@ -15,7 +15,7 @@ jest.mock( 'extensions/safe/ffi/refs/parsers', () => ( {} ) ); jest.mock( 'ref-array', () => jest.fn() ); // -jest.mock( 'ffi', () => jest.fn() ); +jest.mock( 'ffi-napi', () => jest.fn() ); jest.mock( 'extensions/safe/ffi/authenticator', () => jest.fn() ); jest.mock( '@maidsafe/safe-node-app', () => jest.fn() ); @@ -26,11 +26,11 @@ jest.mock( '$Utils/extendComponent' ); describe( 'AddressBarButtonsRHS', () => { let wrapper; let instance; - let props; + let properties; let store; beforeEach( () => { - props = { + properties = { windowId: 1, address: 'about:blank', isSelected: false, @@ -48,11 +48,11 @@ describe( 'AddressBarButtonsRHS', () => { describe( 'constructor( props )', () => { beforeEach( () => { - store = mockStore( props ); + store = mockStore( properties ); wrapper = shallow( - + ).dive(); instance = wrapper.instance(); diff --git a/__tests__/components/AddressBarInput.spec.tsx b/__tests__/components/AddressBarInput.spec.tsx index 8115c7b1d..7dcef82d0 100644 --- a/__tests__/components/AddressBarInput.spec.tsx +++ b/__tests__/components/AddressBarInput.spec.tsx @@ -13,7 +13,7 @@ jest.mock( 'extensions/safe/ffi/refs/parsers', () => ( {} ) ); jest.mock( 'ref-array', () => jest.fn() ); // -jest.mock( 'ffi', () => jest.fn() ); +jest.mock( 'ffi-napi', () => jest.fn() ); jest.mock( 'extensions/safe/ffi/authenticator', () => jest.fn() ); jest.mock( '@maidsafe/safe-node-app', () => jest.fn() ); @@ -22,11 +22,11 @@ jest.mock( 'extensions/safe/actions/safeBrowserApplication_actions' ); describe( 'AddressBarInput', () => { let wrapper; let instance; - let props; + let properties; let store; beforeEach( () => { - props = { + properties = { windowId: 1, address: 'about:blank', isSelected: false, @@ -46,11 +46,11 @@ describe( 'AddressBarInput', () => { describe( 'constructor( props )', () => { beforeEach( () => { - store = mockStore( props ); + store = mockStore( properties ); wrapper = shallow( - + ).dive(); instance = wrapper.instance(); @@ -63,11 +63,11 @@ describe( 'AddressBarInput', () => { describe( 'events', () => { beforeEach( () => { - store = mockStore( props ); + store = mockStore( properties ); wrapper = mount( - + ); instance = wrapper.instance(); @@ -81,7 +81,7 @@ describe( 'AddressBarInput', () => { const handleBlur = jest.fn(); wrapper = mount( - + ); const input = wrapper.find( 'Input' ); @@ -92,14 +92,14 @@ describe( 'AddressBarInput', () => { it( 'check on onBlur,onBlur() is called', () => { const input = wrapper.find( 'Input' ); input.simulate( 'blur' ); - expect( props.onBlur ).toHaveBeenCalled(); + expect( properties.onBlur ).toHaveBeenCalled(); } ); it( 'check on onFocus,handleFocus is called', () => { const handleFocus = jest.fn(); wrapper = mount( - + ); instance = wrapper.instance(); @@ -111,25 +111,25 @@ describe( 'AddressBarInput', () => { it( 'check on onFocus,onFocus() is called', () => { wrapper = mount( - + ); instance = wrapper.instance(); const input = wrapper.find( 'Input' ); input.simulate( 'focus' ); - expect( props.onFocus ).toHaveBeenCalled(); + expect( properties.onFocus ).toHaveBeenCalled(); } ); it( 'check on onKeyPress if updateTab is called', () => { const input = wrapper.find( 'Input' ); input.simulate( 'keyPress', { key: 'Enter', keyCode: 13, which: 13 } ); - expect( props.updateTab ).toHaveBeenCalled(); + expect( properties.updateTab ).toHaveBeenCalled(); } ); it( 'check on onKeyPress if updateTab is called with params', () => { const input = wrapper.find( 'Input' ); input.simulate( 'keyPress', { key: 'Enter', keyCode: 13, which: 13 } ); - expect( props.updateTab ).toHaveBeenCalledWith( { + expect( properties.updateTab ).toHaveBeenCalledWith( { url: 'about:blank', windowId: 1 } ); @@ -139,7 +139,7 @@ describe( 'AddressBarInput', () => { const input = wrapper.find( 'Input' ); input.value = '123456'; input.simulate( 'change' ); - expect( props.onSelect ).toHaveBeenCalled(); + expect( properties.onSelect ).toHaveBeenCalled(); } ); } ); } ); diff --git a/__tests__/components/TabBar.spec.tsx b/__tests__/components/TabBar.spec.tsx index 8a9ed6227..a694a5b99 100644 --- a/__tests__/components/TabBar.spec.tsx +++ b/__tests__/components/TabBar.spec.tsx @@ -1,10 +1,8 @@ import React from 'react'; import { mount, shallow } from 'enzyme'; import TabBar from '$Components/TabBar'; -import MdClose from 'react-icons/lib/md/close'; -import MdAdd from 'react-icons/lib/md/add'; +import { Icon } from 'antd'; import { CLASSES } from '$Constants'; -import { Spinner } from 'nessie-ui'; describe( 'TabBar', () => { let wrapper; @@ -54,12 +52,9 @@ describe( 'TabBar', () => { expect( wrapper.find( '#favicon-img' ).length ).toBe( 1 ); } ); - it( 'should have exactly 1 MdAdd component', () => { - expect( wrapper.find( MdAdd ).length ).toBe( 1 ); - } ); - - it( 'should have exactly 1 MdClose component', () => { - expect( wrapper.find( MdClose ).length ).toBe( 1 ); + it( 'should have exactly 2 Button components', () => { + // add and close + expect( wrapper.find( Icon ).length ).toBe( 2 ); } ); } ); @@ -80,7 +75,7 @@ describe( 'TabBar', () => { } ); it( 'should have exactly 1 tab with loading indicator', () => { - expect( wrapper.find( Spinner ).length ).toBe( 1 ); + expect( wrapper.find( Icon ).length ).toBe( 3 ); } ); } ); diff --git a/app/browserPreload.ts b/app/browserPreload.ts deleted file mode 100644 index ee7c3be88..000000000 --- a/app/browserPreload.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { push } from 'react-router-redux'; -import { PROTOCOLS } from '$Constants'; -// import setupPreloadAPIs from './setupPreloadAPIs';; - -// no logger to avoid duplicate msgs. -console.info( 'Peruse Browser window preloaded.' ); - -window.peruseNav = location => { - if ( peruseStore ) { - peruseStore.dispatch( push( location ) ); - } else { - window.perusePendingNavigation = location; - } -}; - -// setupPreloadAPIs( `${PROTOCOLS.SAFE_AUTH}:` ); diff --git a/app/components/PerusePages/Bookmarks/Bookmarks.tsx b/app/components/PerusePages/Bookmarks/Bookmarks.tsx index dcad820c7..450499044 100644 --- a/app/components/PerusePages/Bookmarks/Bookmarks.tsx +++ b/app/components/PerusePages/Bookmarks/Bookmarks.tsx @@ -1,5 +1,4 @@ import React, { Component } from 'react'; -// import { Link } from 'react-router'; import { ipcRenderer, remote } from 'electron'; import { Page, H1, PageHeader } from 'nessie-ui'; import UrlList from '$Components/UrlList'; @@ -19,7 +18,7 @@ export default class Bookmarks extends Component { render() { const { bookmarks, isActiveTab, addTab } = this.props; - const bookmarkList = bookmarks.map( bookmark => bookmark.url ); + const bookmarkList = bookmarks.map( ( bookmark ) => bookmark.url ); let moddedClass = styles.tab; if ( isActiveTab ) { moddedClass = styles.activeTab; diff --git a/app/components/Tab/Tab.tsx b/app/components/Tab/Tab.tsx index fb35d927b..55174afe3 100644 --- a/app/components/Tab/Tab.tsx +++ b/app/components/Tab/Tab.tsx @@ -92,7 +92,7 @@ export default class Tab extends Component { append: ( params ) => [ { label: 'Open Link in New Tab.', - visible: params.linkURL.length > 0, + visible: params.linkURL && params.linkURL.length > 0, click() { addTab( { url: params.linkURL, @@ -119,6 +119,7 @@ export default class Tab extends Component { componentDidMount() { const { webview } = this; + const callbackSetup = () => { if ( !webview ) { logger.info( @@ -126,6 +127,12 @@ export default class Tab extends Component { ); return; } + + const webContents = webview.getWebContents(); + + webContents.on( 'preload-error', ( error ) => { + logger.error('Webview: Preload script Error:', error ); + } ) webview.addEventListener( 'did-start-loading', this.didStartLoading.bind( this ) @@ -216,7 +223,8 @@ export default class Tab extends Component { const webviewSource = parseURL( webview.src ); if ( webviewSource.href === '' || - `${webviewSource.protocol}${webviewSource.hostname}` === 'about:blank' || + `${webviewSource.protocol}${webviewSource.hostname}` === + 'about:blank' || urlHasChanged( webview.src, nextProperties.url ) ) { this.loadURL( nextProperties.url ); @@ -331,7 +339,10 @@ export default class Tab extends Component { } ` ); }; - if ( urlObject.hostname === '127.0.0.1' || urlObject.hostname === 'localhost' ) { + if ( + urlObject.hostname === '127.0.0.1' || + urlObject.hostname === 'localhost' + ) { try { renderError( 'Page Load Failed' ); } catch ( scriptError ) { @@ -643,7 +654,7 @@ For updates or to submit ideas and suggestions, visit https://github.com/maidsaf ] ); logger.error( 'Error from Tab.jsx', error ); logger.error( stringError ); - // You can render any custom fallback UI + return (

Something went wrong with this tab.

@@ -658,7 +669,8 @@ For updates or to submit ideas and suggestions, visit https://github.com/maidsaf
{ diff --git a/app/components/TabBar/TabBar.tsx b/app/components/TabBar/TabBar.tsx index bd23fcf28..4aa471d8e 100644 --- a/app/components/TabBar/TabBar.tsx +++ b/app/components/TabBar/TabBar.tsx @@ -1,144 +1,167 @@ -/* eslint-disable */ import { remote } from 'electron'; import url from 'url'; import React, { Component } from 'react'; import ReactDOM from 'react-dom'; import styles from './tabBar.css'; -import MdClose from 'react-icons/lib/md/close'; -import MdAdd from 'react-icons/lib/md/add'; +import { Button, Row, Col, Icon } from 'antd'; +import 'antd/lib/icon/style'; +import 'antd/lib/button/style'; +import 'antd/lib/row/style'; +import 'antd/lib/col/style'; +import { I18n } from 'react-redux-i18n'; + import { logger } from '$Logger'; import { isInternalPage } from '$Utils/urlHelpers'; import { CLASSES, INTERNAL_PAGES } from '$Constants'; -import { Column, Spinner, Row } from 'nessie-ui'; -type TabBarProps = { - tabInFocus: number; - tabs: any[]; - setActiveTab: (...args: any[]) => any; - addTab: (...args: any[]) => any; - closeTab: (...args: any[]) => any; - selectAddressBar: (...args: any[]) => any; -}; -type TabBarState = { - tabInFocus: number; -}; + +interface TabBarProps { + tabInFocus: number; + tabs: Array; + setActiveTab: ( ...args: Array ) => any; + addTab: ( ...args: Array ) => any; + closeTab: ( ...args: Array ) => any; + selectAddressBar: ( ...args: Array ) => any; +} +interface TabBarState { + tabInFocus: number; +} export default class TabBar extends Component { - static defaultProps = { - tabInFocus: 0, - tabs: [] - }; - constructor(props) { - super(props); - this.state = { - tabInFocus: 0 // to update when many tabs can exist + static defaultProps = { + tabInFocus: 0, + tabs: [] + }; + + constructor( props ) { + super( props ); + this.state = { + tabInFocus: 0 // to update when many tabs can exist + }; + this.handleAddTabClick = this.handleAddTabClick.bind( this ); + } + + handleTabClick( tabData, event ) { + event.stopPropagation(); + this.props.setActiveTab( { + index: tabData.tabIndex, + url: event.target.value + } ); + } + + handleTabClose( tabData, event ) { + event.stopPropagation(); + const { closeTab, windowId } = this.props; + closeTab( { index: tabData.tabIndex, windowId } ); + } + + handleAddTabClick( event ) { + const { windowId } = this.props; + event.stopPropagation(); + const { addTab, selectAddressBar } = this.props; + const newTabUrl = 'about:blank'; + event.preventDefault(); + addTab( { + url: newTabUrl, + isActiveTab: true, + windowId + } ); + selectAddressBar(); + } + + getTabs = () => { + const { tabs } = this.props; + return tabs.map( ( tab, i ) => { + let { title } = tab; + if ( isInternalPage( tab ) ) { + // TODO: DRY this out with TabContents.jsx + const urlObj = url.parse( tab.url ); + switch ( urlObj.host ) { + case INTERNAL_PAGES.HISTORY: { + title = 'History'; + break; + } + case INTERNAL_PAGES.BOOKMARKS: { + title = 'Bookmarks'; + break; + } + default: { + title = null; + break; + } + } + } + if ( tab.isClosed ) { + return; + } + const { isActiveTab } = tab; + let tabStyleClass = styles.tab; + const tabData = { + key: tab.index, + tabIndex: tab.index, + url: tab.url + }; + if ( isActiveTab ) { + tabStyleClass = `${styles.activeTab} ${CLASSES.ACTIVE_TAB}`; + } + return ( +
+ + +
+ {tab.isLoading && ( + + )} + {!tab.isLoading && tab.favicon && ( + + )} +
+ + {title || 'New Tab'} + + + +
+
+ ); + } ); }; - this.handleAddTabClick = this.handleAddTabClick.bind(this); - } - handleTabClick(tabData, event) { - event.stopPropagation(); - this.props.setActiveTab({ - index: tabData.tabIndex, - url: event.target.value - }); - } - handleTabClose(tabData, event) { - event.stopPropagation(); - const { closeTab, windowId } = this.props; - closeTab({ index: tabData.tabIndex, windowId }); - } - handleAddTabClick(event) { - const { windowId } = this.props; - event.stopPropagation(); - const { addTab, selectAddressBar } = this.props; - const newTabUrl = 'about:blank'; - event.preventDefault(); - addTab({ - url: newTabUrl, - isActiveTab: true, - windowId: windowId - }); - selectAddressBar(); - } - getTabs = () => { - const { tabs } = this.props; - return tabs.map((tab, i) => { - let title = tab.title; - if (isInternalPage(tab)) { - // TODO: DRY this out with TabContents.jsx - const urlObj = url.parse(tab.url); - switch (urlObj.host) { - case INTERNAL_PAGES.HISTORY: { - title = 'History'; - break; - } - case INTERNAL_PAGES.BOOKMARKS: { - title = 'Bookmarks'; - break; - } - default: { - title = null; - break; - } - } - } - if (tab.isClosed) { - return; - } - const isActiveTab = tab.isActiveTab; - let tabStyleClass = styles.tab; - const tabData = { - key: tab.index, - tabIndex: tab.index, - url: tab.url - }; - if (isActiveTab) { - tabStyleClass = `${styles.activeTab} ${CLASSES.ACTIVE_TAB}`; - } - return ( -
- - - {tab.isLoading && } - {!tab.isLoading && tab.favicon && ( - - )} - - - {title || 'New Tab'} - - - - - -
- ); - }); - }; - render() { - return ( -
-
- {this.getTabs()} -
- -
-
-
- ); - } + + render() { + return ( +
+
+ {this.getTabs()} + +
+
+ ); + } } diff --git a/app/components/TabBar/tabBar.css b/app/components/TabBar/tabBar.css index 63b9806d4..8c3812703 100644 --- a/app/components/TabBar/tabBar.css +++ b/app/components/TabBar/tabBar.css @@ -1,27 +1,21 @@ - -.container -{ +.container { flex: 0; height: 100%; padding-left: 10px; padding-right: 10px; padding-top: 5px; - background: rgba( 207, 208, 209, 1); + background: rgba(207, 208, 209, 1); z-index: 4; font-size: 1.4rem; -webkit-app-region: drag; } -.containerMac -{ +.containerMac { padding-top: 10px; padding-left: 100px; } - - -.tabBar -{ +.tabBar { display: flex; flex-grow: 1; align-items: center; @@ -30,93 +24,82 @@ -webkit-app-region: no-drag; } - -.tabBox -{ - padding-right: 7px; - padding-left: 7px; - min-height: 31px; - padding-top: 4px; - padding-bottom: 5px; - box-sizing: border-box; - border-top: 1px solid rgba( 127, 127, 127, 1); - border-right: 1px solid rgba( 127, 127, 127, 1); +.tabBox { + padding-right: 7px; + padding-left: 7px; + min-height: 31px; + padding-top: 4px; + box-sizing: border-box; + border-top: 1px solid rgba(127, 127, 127, 1); + border-right: 1px solid rgba(127, 127, 127, 1); } -.tabBox:hover:not(.activeTab) -{ - background-color: rgba( 246, 246, 246, 0.5); +.tabBox:hover:not(.activeTab) { + background-color: rgba(246, 246, 246, 0.5); } - -.tab -{ - composes: tabBox; - flex: 1; - overflow:hidden; +.tab { + composes: tabBox; /* stylelint-disable-line */ + overflow: hidden; position: relative; - max-width: 200px; + max-width: 250px; text-align: left; - justify-content: space-between; + user-select: none; } -.tab:first-child -{ - border-left: 1px solid rgba( 127, 127, 127, 1); +.tab:first-child { + border-left: 1px solid rgba(127, 127, 127, 1); } - -.addTab -{ - composes: tabBox; +.addTab { + margin-left: 10px; } - - -.tabText -{ +.tabText { white-space: nowrap; overflow: hidden; display: inline-block; line-height: 1.2; text-overflow: ellipsis; user-select: none; + margin-left: 5px; + margin-right: 5px; } +.favicon { + width: 20px; + height: 20px; + margin-top: -4px; +} + +.faviconContainer { + height: 20px; + width: 20px; +} + +.loadingIcon { + font-size: 20px; +} -.tabAddButton, -.tabCloseButton -{ - padding: 1px; - flex: 0 0 14px; +.addTab, +.closeTab { + padding: 4px; border-radius: 100%; } -.addTab:hover .tabAddButton -{ +.addTab:hover { color: white; background-color: rgba(54, 125, 62, 0.9); + cursor: default; } -.tabCloseButton:hover -{ +.closeTab:hover { color: white; + cursor: default; background-color: rgba(187, 45, 0, 0.9); } -.favicon -{ - min-width: 20px; - max-width: 20px; -} - -.favicon img -{ - max-width: 16px; -} - -.activeTab -{ - composes: tab; - background-color: rgba( 246, 246, 246, 1); +.activeTab { + composes: tab; /* stylelint-disable-line */ + background-color: rgba(246, 246, 246, 1); } diff --git a/app/constants.ts b/app/constants.ts index 4b0811cf9..96d63aced 100644 --- a/app/constants.ts +++ b/app/constants.ts @@ -1,6 +1,6 @@ import path from 'path'; import fs from 'fs-extra'; -import { remote } from 'electron'; +import { remote, app } from 'electron'; import pkg from '$Package'; import getPort from 'get-port'; import { CLASSES, GET_DOM_EL_CLASS } from './constants/classes'; @@ -12,7 +12,7 @@ const WINDOWS = 'win32'; export { CLASSES, GET_DOM_EL_CLASS }; -const allPassedArgs = process.argv; +const allPassedArguments = process.argv; let shouldRunMockNetwork = fs.existsSync( path.resolve( __dirname, '../..', 'startAsMock' ) @@ -30,8 +30,13 @@ export const isRunningSpectronTestProcess = ? remote.getGlobal( 'isRunningSpectronTestProcess' ) : process.env.SPECTRON_TEST || false; -export const isRunningUnpacked = process.env.IS_UNPACKED; -export const isRunningPackaged = !isRunningUnpacked; +export const isRunningPackaged = + remote && remote.getGlobal + ? remote.getGlobal( 'isRunningPackaged' ) + : app + ? app.isPackaged + : false; +export const isRunningUnpacked = !isRunningPackaged; export const isRunningSpectronTestProcessingPackagedApp = remote && remote.getGlobal ? remote.getGlobal( 'isRunningSpectronTestProcessingPackagedApp' ) @@ -48,23 +53,23 @@ if ( shouldRunMockNetwork = true; } -if ( allPassedArgs.includes( '--mock' ) ) { +if ( allPassedArguments.includes( '--mock' ) ) { shouldRunMockNetwork = true; } -if ( allPassedArgs.includes( '--live' ) ) { +if ( allPassedArguments.includes( '--live' ) ) { shouldRunMockNetwork = false; } -if ( allPassedArgs.includes( '--debug' ) ) { +if ( allPassedArguments.includes( '--debug' ) ) { hasDebugFlag = true; } let forcedPort; -if ( allPassedArgs.includes( '--port' ) ) { - const index = allPassedArgs.indexOf( '--port' ); +if ( allPassedArguments.includes( '--port' ) ) { + const index = allPassedArguments.indexOf( '--port' ); - forcedPort = allPassedArgs[index + 1]; + forcedPort = allPassedArguments[index + 1]; } export const shouldStartAsMockFromFlagsOrPackage = shouldRunMockNetwork; @@ -94,9 +99,11 @@ export const isRunningNodeEnvTest = /^test/.test( env ); export const isRunningDebug = hasDebugFlag || isRunningSpectronTestProcess; export const inRendererProcess = typeof window !== 'undefined'; export const inMainProcess = typeof remote === 'undefined'; +const currentWindow = + remote && remote.getCurrentWindow ? remote.getCurrentWindow() : undefined; +export const currentWindowId = currentWindow ? currentWindow.id : undefined; -export const currentWindowId = - remote && remote.getCurrentWindow ? remote.getCurrentWindow().id : undefined; +export const inTabProcess = inRendererProcess && !currentWindow; // Set global for tab preload. // Adds app folder for asar packaging (space before app is important). @@ -113,7 +120,7 @@ if ( isRunningPackaged && !isRunningNodeEnvTest ) { * or from the main process global * @return {[type]} [description] */ -const safeNodeLibPath = () => { +const safeNodeLibraryPath = () => { // only exists in render processes if ( remote && remote.getGlobal && !isRunningNodeEnvTest ) { return remote.getGlobal( 'SAFE_NODE_LIB_PATH' ); @@ -169,7 +176,7 @@ const getRandomPort = async () => { export const CONFIG = { PORT: remote ? remote.getGlobal( 'port' ) : getRandomPort(), SAFE_PARTITION: 'persist:safe-tab', - SAFE_NODE_LIB_PATH: safeNodeLibPath(), + SAFE_NODE_LIB_PATH: safeNodeLibraryPath(), APP_HTML_PATH: path.resolve( __dirname, './app.html' ), DATE_FORMAT: 'h:MM-mmm dd', NET_STATUS_CONNECTED: 'Connected', @@ -179,8 +186,9 @@ export const CONFIG = { }; if ( inMainProcess ) { - const devPort = process.env.PORT || 1212; + const developmentPort = process.env.PORT || 1212; + global.isRunningPackaged = isRunningPackaged; global.preloadFile = `file://${__dirname}/webPreload.prod.js`; global.appDir = __dirname; global.isCI = isCI; diff --git a/app/extensions/safe/auth-web-app/index.tsx b/app/extensions/safe/auth-web-app/index.tsx index 1f8dd2af6..a9c650c45 100644 --- a/app/extensions/safe/auth-web-app/index.tsx +++ b/app/extensions/safe/auth-web-app/index.tsx @@ -32,7 +32,7 @@ if ( !window.safeAuthenticator.getLibStatus() ) { store.dispatch( showLibErrPopup() ); } -const registerNetworkStateListener = cb => { +const registerNetworkStateListener = ( cb ) => { // set network listener if ( window.safeAuthenticator && window.safeAuthenticator.setNetworkListener ) { window.safeAuthenticator.setNetworkListener( cb ); @@ -60,7 +60,7 @@ const networkStateListenerCb = ( err, state ) => { } }; -const registerIsAuthorisedListener = cb => { +const registerIsAuthorisedListener = ( cb ) => { if ( window.safeAuthenticator && window.safeAuthenticator.setIsAuthorisedListener @@ -77,7 +77,7 @@ const isAuthorisedListenerCb = ( err, state ) => { return store.dispatch( setIsAuthorised( state ) ); }; -const registerAppListUpdateListener = cb => { +const registerAppListUpdateListener = ( cb ) => { if ( window.safeAuthenticator && window.safeAuthenticator.setAppListUpdateListener @@ -113,7 +113,7 @@ window.safeAuthenticator.setReAuthoriseState( reAuthoriseState ); window.addEventListener( 'message', - evt => { + ( evt ) => { console.warn( 'Invitation code ::', evt.data ); store.dispatch( setInviteCode( evt.data ) ); store.dispatch( toggleInvitePopup() ); diff --git a/app/extensions/safe/ffi/authenticator.ts b/app/extensions/safe/ffi/authenticator.ts index d6a7c1b89..6d676efe4 100644 --- a/app/extensions/safe/ffi/authenticator.ts +++ b/app/extensions/safe/ffi/authenticator.ts @@ -5,8 +5,8 @@ */ /* eslint-disable no-underscore-dangle */ /* eslint-disable import/no-unresolved, import/extensions */ -import ffi from 'ffi'; -import ref from 'ref'; +import ffi from 'ffi-napi'; +import ref from 'ref-napi'; /* eslint-enable import/no-unresolved, import/extensions */ import crypto from 'crypto'; import lodash from 'lodash'; @@ -26,15 +26,15 @@ import { isRunningNodeEnvTest } from '$Constants'; const _registeredClientHandle = Symbol( 'registeredClientHandle' ); const _nwState = Symbol( 'nwState' ); const _appListUpdateListener = Symbol( 'appListUpdate' ); -const _authReqListener = Symbol( 'authReq' ); -const _containerReqListener = Symbol( 'containerReq' ); -const _mDataReqListener = Symbol( 'mDataReq' ); +const _authRequestListener = Symbol( 'authReq' ); +const _containerRequestListener = Symbol( 'containerReq' ); +const _mDataRequestListener = Symbol( 'mDataReq' ); const _nwStateChangeListener = Symbol( 'nwStateChangeListener' ); const _isAuthorisedListener = Symbol( 'isAuthorisedListener' ); -const _reqErrListener = Symbol( 'reqErrListener' ); -const _cbRegistry = Symbol( 'cbRegistry' ); -const _netDisconnectCb = Symbol( 'netDisconnectCb' ); -const _decodeReqPool = Symbol( 'decodeReqPool' ); +const _requestErrorListener = Symbol( 'reqErrListener' ); +const _callbackRegistry = Symbol( 'cbRegistry' ); +const _netDisconnectCallback = Symbol( 'netDisconnectCb' ); +const _decodeRequestPool = Symbol( 'decodeReqPool' ); /** * @private @@ -42,8 +42,8 @@ const _decodeReqPool = Symbol( 'decodeReqPool' ); * characters or symbols which are not valid for a URL like '=' sign, * and making it lower case. */ -const genAppUri = str => { - const urlSafeBase64 = new Buffer( str ) +const genAppUri = ( string ) => { + const urlSafeBase64 = new Buffer( string ) .toString( 'base64' ) .replace( /\+/g, '-' ) // Convert '+' to '-' .replace( /\//g, '_' ) // Convert '/' to '_' @@ -58,15 +58,15 @@ class Authenticator extends SafeLib { this[_registeredClientHandle] = null; this[_nwState] = CONSTANTS.NETWORK_STATUS.DISCONNECTED; this[_appListUpdateListener] = new Listener(); - this[_authReqListener] = new Listener(); - this[_containerReqListener] = new Listener(); - this[_mDataReqListener] = new Listener(); + this[_authRequestListener] = new Listener(); + this[_containerRequestListener] = new Listener(); + this[_mDataRequestListener] = new Listener(); this[_nwStateChangeListener] = new Listener(); - this[_reqErrListener] = new Listener(); + this[_requestErrorListener] = new Listener(); this[_isAuthorisedListener] = new Listener(); - this[_cbRegistry] = {}; - this[_decodeReqPool] = {}; - this[_netDisconnectCb] = ffi.Callback( + this[_callbackRegistry] = {}; + this[_decodeRequestPool] = {}; + this[_netDisconnectCallback] = ffi.Callback( types.Void, [types.voidPointer, types.int32, types.int32], () => { @@ -95,7 +95,7 @@ class Authenticator extends SafeLib { } get networkDisconnectCb() { - return this[_netDisconnectCb]; + return this[_netDisconnectCallback]; } getLibStatus() { @@ -202,29 +202,29 @@ class Authenticator extends SafeLib { }; } - setListener( type, cb ) { + setListener( type, callback ) { // FIXME check .key required switch ( type.key ) { case CONSTANTS.LISTENER_TYPES.APP_LIST_UPDATE.key: { - return this[_appListUpdateListener].add( cb ); + return this[_appListUpdateListener].add( callback ); } case CONSTANTS.LISTENER_TYPES.AUTH_REQ.key: { - return this[_authReqListener].add( cb ); + return this[_authRequestListener].add( callback ); } case CONSTANTS.LISTENER_TYPES.CONTAINER_REQ.key: { - return this[_containerReqListener].add( cb ); + return this[_containerRequestListener].add( callback ); } case CONSTANTS.LISTENER_TYPES.MDATA_REQ.key: { - return this[_mDataReqListener].add( cb ); + return this[_mDataRequestListener].add( callback ); } case CONSTANTS.LISTENER_TYPES.NW_STATE_CHANGE.key: { - return this[_nwStateChangeListener].add( cb ); + return this[_nwStateChangeListener].add( callback ); } case CONSTANTS.LISTENER_TYPES.REQUEST_ERR.key: { - return this[_reqErrListener].add( cb ); + return this[_requestErrorListener].add( callback ); } case CONSTANTS.LISTENER_TYPES.IS_AUTHORISED.key: { - return this[_isAuthorisedListener].add( cb ); + return this[_isAuthorisedListener].add( callback ); } default: { throw new Error( errConst.INVALID_LISTENER.msg ); @@ -238,16 +238,16 @@ class Authenticator extends SafeLib { return this[_appListUpdateListener].remove( id ); } case CONSTANTS.LISTENER_TYPES.AUTH_REQ.key: { - return this[_authReqListener].remove( id ); + return this[_authRequestListener].remove( id ); } case CONSTANTS.LISTENER_TYPES.CONTAINER_REQ.key: { - return this[_containerReqListener].remove( id ); + return this[_containerRequestListener].remove( id ); } case CONSTANTS.LISTENER_TYPES.NW_STATE_CHANGE.key: { return this[_nwStateChangeListener].remove( id ); } case CONSTANTS.LISTENER_TYPES.REQUEST_ERR.key: { - return this[_reqErrListener].remove( id ); + return this[_requestErrorListener].remove( id ); } case CONSTANTS.LISTENER_TYPES.IS_AUTHORISED.key: { return this[_isAuthorisedListener].remove( id ); @@ -264,7 +264,7 @@ class Authenticator extends SafeLib { return reject( new Error( i18n.__( 'messages.unauthorised' ) ) ); } try { - const cb = this._pushCb( + const callback = this._pushCb( ffi.Callback( types.Void, [types.voidPointer, types.FfiResultPointer], @@ -282,7 +282,7 @@ class Authenticator extends SafeLib { this.safeLib.auth_reconnect( this.registeredClientHandle, types.Null, - this._getCb( cb ) + this._getCb( callback ) ); } catch ( e ) { reject( e ); @@ -292,9 +292,9 @@ class Authenticator extends SafeLib { createAccount( locator, secret, invitation ) { return new Promise( ( resolve, reject ) => { - const validationErr = this._isUserCredentialsValid( locator, secret ); - if ( validationErr ) { - return reject( validationErr ); + const validationError = this._isUserCredentialsValid( locator, secret ); + if ( validationError ) { + return reject( validationError ); } if ( @@ -306,7 +306,7 @@ class Authenticator extends SafeLib { } try { - const createAccCb = this._pushCb( + const createAccCallback = this._pushCb( ffi.Callback( types.Void, [ @@ -326,9 +326,9 @@ class Authenticator extends SafeLib { ) ); - const onResult = ( err, res ) => { - if ( err || res !== 0 ) { - return reject( err ); + const onResult = ( error, res ) => { + if ( error || res !== 0 ) { + return reject( error ); } }; @@ -338,7 +338,7 @@ class Authenticator extends SafeLib { types.allocCString( invitation ), types.Null, this.networkDisconnectCb, - this._getCb( createAccCb ), + this._getCb( createAccCallback ), onResult ); } catch ( e ) { @@ -349,13 +349,13 @@ class Authenticator extends SafeLib { login( locator, secret ) { return new Promise( ( resolve, reject ) => { - const validationErr = this._isUserCredentialsValid( locator, secret ); - if ( validationErr ) { - return reject( validationErr ); + const validationError = this._isUserCredentialsValid( locator, secret ); + if ( validationError ) { + return reject( validationError ); } try { - const loginCb = this._pushCb( + const loginCallback = this._pushCb( ffi.Callback( types.Void, [ @@ -378,10 +378,10 @@ class Authenticator extends SafeLib { ) ); - const onResult = ( err, res ) => { - if ( err || res !== 0 ) { - this[_isAuthorisedListener].broadcast( err ); - return reject( err ); + const onResult = ( error, res ) => { + if ( error || res !== 0 ) { + this[_isAuthorisedListener].broadcast( error ); + return reject( error ); } }; @@ -390,7 +390,7 @@ class Authenticator extends SafeLib { types.allocCString( secret ), types.Null, this.networkDisconnectCb, - this._getCb( loginCb ), + this._getCb( loginCallback ), onResult ); } catch ( e ) { @@ -437,24 +437,24 @@ class Authenticator extends SafeLib { return this._decodeUnRegisteredRequest( parsedURI, resolve, reject ); } - const decodeReqAuthCb = this._pushCb( + const decodeRequestAuthCallback = this._pushCb( ffi.Callback( types.Void, [types.voidPointer, types.u32, types.AuthReqPointer], - ( userData, reqId, req ) => { + ( userData, requestId, request ) => { if ( - !( this[_authReqListener] && this[_authReqListener].len() !== 0 ) + !( this[_authRequestListener] && this[_authRequestListener].len() !== 0 ) ) { return; } - const authReq = typeParser.parseAuthReq( req.deref() ); - this[_decodeReqPool][reqId] = authReq; + const authRequest = typeParser.parseAuthReq( request.deref() ); + this[_decodeRequestPool][requestId] = authRequest; const result = { - reqId, - authReq + requestId, + authRequest }; logger.info( 'Authenticator.js decoded authReq result: ', result ); - return this._isAlreadyAuthorised( authReq ).then( resolved => { + return this._isAlreadyAuthorised( authRequest ).then( ( resolved ) => { if ( resolved.isAuthorised ) { result.isAuthorised = true; if ( resolved.previouslyAuthorisedContainers ) { @@ -468,30 +468,30 @@ class Authenticator extends SafeLib { ) ); - const decodeReqContainerCb = this._pushCb( + const decodeRequestContainerCallback = this._pushCb( ffi.Callback( types.Void, [types.voidPointer, types.u32, types.ContainersReqPointer], - ( userData, reqId, req ) => { + ( userData, requestId, request ) => { if ( !( - this[_containerReqListener] && - this[_containerReqListener].len() !== 0 + this[_containerRequestListener] && + this[_containerRequestListener].len() !== 0 ) ) { return; } - const contReq = typeParser.parseContainerReq( req.deref() ); - this[_decodeReqPool][reqId] = contReq; + const contRequest = typeParser.parseContainerReq( request.deref() ); + this[_decodeRequestPool][requestId] = contRequest; const result = { - reqId, - contReq + requestId, + contRequest }; logger.info( 'Authenticator.js decoded contReq result: ', result ); - return this._isAlreadyAuthorisedContainer( contReq ).then( - isAuthorised => { + return this._isAlreadyAuthorisedContainer( contRequest ).then( + ( isAuthorised ) => { if ( isAuthorised ) { result.isAuthorised = true; } @@ -502,38 +502,38 @@ class Authenticator extends SafeLib { ) ); - const shareMdataCb = this._pushCb( + const shareMdataCallback = this._pushCb( ffi.Callback( types.Void, [types.voidPointer, types.u32, types.ShareMDataReqPointer, 'pointer'], - async ( userData, reqId, req, meta ) => { - const mDataReq = typeParser.parseShareMDataReq( req.deref() ); + async ( userData, requestId, request, meta ) => { + const mDataRequest = typeParser.parseShareMDataReq( request.deref() ); const metaData = typeParser.parseUserMetaDataArray( meta, - mDataReq.mdata_len + mDataRequest.mdata_len ); - this[_decodeReqPool][reqId] = mDataReq; + this[_decodeRequestPool][requestId] = mDataRequest; const result = { - reqId, - mDataReq, + requestId, + mDataRequest, metaData }; logger.info( 'Authenticator.js decoded MDataReq result: ', result ); const appAccess = []; - const tempArr = []; - for ( let i = 0; i < mDataReq.mdata_len; i++ ) { - tempArr[i] = i; + const temporaryArray = []; + for ( let i = 0; i < mDataRequest.mdata_len; i++ ) { + temporaryArray[i] = i; } await Promise.all( - tempArr.map( i => { - const mdata = mDataReq.mdata[i]; + temporaryArray.map( ( i ) => { + const mdata = mDataRequest.mdata[i]; return this._appsAccessingMData( mdata.name, mdata.type_tag - ).then( res => { + ).then( ( res ) => { appAccess[i] = res; } ); } ) @@ -544,9 +544,9 @@ class Authenticator extends SafeLib { ) ); - const unregisteredCb = this._getUnregisteredClientCb( resolve, reject ); + const unregisteredCallback = this._getUnregisteredClientCb( resolve, reject ); - const decodeReqErrorCb = this._pushCb( + const decodeRequestErrorCallback = this._pushCb( ffi.Callback( types.Void, [types.voidPointer, types.FfiResultPointer, types.CString], @@ -556,11 +556,11 @@ class Authenticator extends SafeLib { error_code: result.error_code, description: result.description }; - if ( !( this[_reqErrListener] && this[_reqErrListener].len() !== 0 ) ) { + if ( !( this[_requestErrorListener] && this[_requestErrorListener].len() !== 0 ) ) { return; } - this[_reqErrListener].broadcast( JSON.stringify( error ) ); + this[_requestErrorListener].broadcast( JSON.stringify( error ) ); return reject( error ); } ) @@ -570,11 +570,11 @@ class Authenticator extends SafeLib { this.registeredClientHandle, types.allocCString( parsedURI ), types.Null, - this._getCb( decodeReqAuthCb ), - this._getCb( decodeReqContainerCb ), - this._getCb( unregisteredCb ), - this._getCb( shareMdataCb ), - this._getCb( decodeReqErrorCb ) + this._getCb( decodeRequestAuthCallback ), + this._getCb( decodeRequestContainerCallback ), + this._getCb( unregisteredCallback ), + this._getCb( shareMdataCallback ), + this._getCb( decodeRequestErrorCallback ) ); } catch ( e ) { reject( e ); @@ -582,30 +582,30 @@ class Authenticator extends SafeLib { } ); } - encodeAuthResp( req, isAllowed ) { + encodeAuthResp( request, isAllowed ) { return new Promise( ( resolve, reject ) => { - logger.info( 'authenticator.js: encoding auth response', req, isAllowed ); + logger.info( 'authenticator.js: encoding auth response', request, isAllowed ); if ( !this.registeredClientHandle ) { return reject( new Error( i18n.__( 'messages.unauthorised' ) ) ); } - if ( !req || typeof isAllowed !== 'boolean' ) { + if ( !request || typeof isAllowed !== 'boolean' ) { return reject( new Error( i18n.__( 'messages.invalid_params' ) ) ); } - if ( !req.reqId || !this[_decodeReqPool][req.reqId] ) { + if ( !request.reqId || !this[_decodeRequestPool][request.reqId] ) { return reject( new Error( i18n.__( 'messages.invalid_req' ) ) ); } - const authReq = types.allocAuthReq( - typeConstructor.constructAuthReq( this[_decodeReqPool][req.reqId] ) + const authRequest = types.allocAuthReq( + typeConstructor.constructAuthReq( this[_decodeRequestPool][request.reqId] ) ); - delete this[_decodeReqPool][req.reqId]; + delete this[_decodeRequestPool][request.reqId]; try { - const authDecisionCb = this._pushCb( + const authDecisionCallback = this._pushCb( ffi.Callback( types.Void, [types.voidPointer, types.FfiResultPointer, types.CString], @@ -624,18 +624,18 @@ class Authenticator extends SafeLib { if ( isAllowed ) { this._updateAppList(); } - const appUri = genAppUri( req.authReq.app.id ); + const appUri = genAppUri( request.authReq.app.id ); resolve( `${appUri}:${res}` ); } ) ); this.safeLib.encode_auth_resp( this.registeredClientHandle, - authReq, - req.reqId, + authRequest, + request.reqId, isAllowed, types.Null, - this._getCb( authDecisionCb ) + this._getCb( authDecisionCallback ) ); } catch ( e ) { reject( e ); @@ -643,27 +643,27 @@ class Authenticator extends SafeLib { } ); } - encodeContainersResp( req, isAllowed ) { + encodeContainersResp( request, isAllowed ) { return new Promise( ( resolve, reject ) => { if ( !this.registeredClientHandle ) { return reject( new Error( i18n.__( 'messages.unauthorised' ) ) ); } - if ( !req || typeof isAllowed !== 'boolean' ) { + if ( !request || typeof isAllowed !== 'boolean' ) { return reject( new Error( i18n.__( 'messages.invalid_params' ) ) ); } - if ( !req.reqId || !this[_decodeReqPool][req.reqId] ) { + if ( !request.reqId || !this[_decodeRequestPool][request.reqId] ) { return reject( new Error( i18n.__( 'messages.invalid_req' ) ) ); } - const contReq = types.allocContainerReq( - typeConstructor.constructContainerReq( this[_decodeReqPool][req.reqId] ) + const contRequest = types.allocContainerReq( + typeConstructor.constructContainerReq( this[_decodeRequestPool][request.reqId] ) ); - delete this[_decodeReqPool][req.reqId]; + delete this[_decodeRequestPool][request.reqId]; try { - const contDecisionCb = this._pushCb( + const contDecisionCallback = this._pushCb( ffi.Callback( types.Void, [types.voidPointer, types.FfiResultPointer, types.CString], @@ -675,7 +675,7 @@ class Authenticator extends SafeLib { if ( isAllowed ) { this._updateAppList(); } - const appUri = genAppUri( req.contReq.app.id ); + const appUri = genAppUri( request.contReq.app.id ); resolve( `${appUri}:${res}` ); } ) @@ -683,11 +683,11 @@ class Authenticator extends SafeLib { this.safeLib.encode_containers_resp( this.registeredClientHandle, - contReq, - req.reqId, + contRequest, + request.reqId, isAllowed, types.Null, - this._getCb( contDecisionCb ) + this._getCb( contDecisionCallback ) ); } catch ( e ) { reject( e ); @@ -695,30 +695,30 @@ class Authenticator extends SafeLib { } ); } - encodeMDataResp( req, isAllowed ) { + encodeMDataResp( request, isAllowed ) { console.log( 'asdadad' ); - logger.info( 'doing this', req, isAllowed ); + logger.info( 'doing this', request, isAllowed ); return new Promise( ( resolve, reject ) => { if ( !this.registeredClientHandle ) { return reject( new Error( i18n.__( 'messages.unauthorised' ) ) ); } - if ( !req || typeof isAllowed !== 'boolean' ) { + if ( !request || typeof isAllowed !== 'boolean' ) { return reject( new Error( i18n.__( 'messages.invalid_params' ) ) ); } - if ( !req.reqId || !this[_decodeReqPool][req.reqId] ) { + if ( !request.reqId || !this[_decodeRequestPool][request.reqId] ) { return reject( new Error( i18n.__( 'messages.invalid_req' ) ) ); } - const mDataReq = types.allocSharedMdataReq( - typeConstructor.constructSharedMdataReq( this[_decodeReqPool][req.reqId] ) + const mDataRequest = types.allocSharedMdataReq( + typeConstructor.constructSharedMdataReq( this[_decodeRequestPool][request.reqId] ) ); - delete this[_decodeReqPool][req.reqId]; + delete this[_decodeRequestPool][request.reqId]; try { - const mDataDecisionCb = this._pushCb( + const mDataDecisionCallback = this._pushCb( ffi.Callback( types.Void, [types.voidPointer, types.FfiResultPointer, types.CString], @@ -730,7 +730,7 @@ class Authenticator extends SafeLib { if ( isAllowed ) { this._updateAppList(); } - const appUri = genAppUri( req.mDataReq.app.id ); + const appUri = genAppUri( request.mDataReq.app.id ); resolve( `${appUri}:${res}` ); } ) @@ -738,11 +738,11 @@ class Authenticator extends SafeLib { this.safeLib.encode_share_mdata_resp( this.registeredClientHandle, - mDataReq, - req.reqId, + mDataRequest, + request.reqId, isAllowed, types.Null, - this._getCb( mDataDecisionCb ) + this._getCb( mDataDecisionCallback ) ); } catch ( e ) { reject( e ); @@ -775,7 +775,7 @@ class Authenticator extends SafeLib { } try { - const revokeCb = this._pushCb( + const revokeCallback = this._pushCb( ffi.Callback( types.Void, [types.voidPointer, types.FfiResultPointer, types.CString], @@ -794,7 +794,7 @@ class Authenticator extends SafeLib { this.registeredClientHandle, types.allocCString( appId ), types.Null, - this._getCb( revokeCb ) + this._getCb( revokeCallback ) ); } catch ( e ) { reject( e.message ); @@ -807,8 +807,8 @@ class Authenticator extends SafeLib { if ( !this.registeredClientHandle ) { return reject( new Error( i18n.__( 'messages.unauthorised' ) ) ); } - let cb = null; - cb = this._pushCb( + let callback = null; + callback = this._pushCb( ffi.Callback( types.Void, [ @@ -817,13 +817,13 @@ class Authenticator extends SafeLib { types.RegisteredAppPointer, types.usize ], - ( userData, resultPtr, appList, len ) => { + ( userData, resultPtr, appList, length ) => { const result = resultPtr.deref(); - this._deleteFromCb( cb ); + this._deleteFromCb( callback ); if ( result.error_code !== 0 ) { return reject( JSON.stringify( result ) ); } - const apps = typeParser.parseRegisteredAppArray( appList, len ); + const apps = typeParser.parseRegisteredAppArray( appList, length ); resolve( apps ); } ) @@ -833,7 +833,7 @@ class Authenticator extends SafeLib { this.safeLib.auth_registered_apps( this.registeredClientHandle, types.Null, - this._getCb( cb ) + this._getCb( callback ) ); } catch ( e ) { reject( e.message ); @@ -846,7 +846,7 @@ class Authenticator extends SafeLib { if ( !this.registeredClientHandle ) { return reject( new Error( i18n.__( 'messages.unauthorised' ) ) ); } - const cb = this._pushCb( + const callback = this._pushCb( ffi.Callback( types.Void, [types.voidPointer, types.FfiResultPointer, types.AccountInfoPointer], @@ -868,7 +868,7 @@ class Authenticator extends SafeLib { this.safeLib.auth_account_info( this.registeredClientHandle, types.Null, - this._getCb( cb ) + this._getCb( callback ) ); } catch ( e ) { reject( e.message ); @@ -882,7 +882,7 @@ class Authenticator extends SafeLib { if ( !this.registeredClientHandle ) { return reject( new Error( i18n.__( 'messages.unauthorised' ) ) ); } - const cb = this._pushCb( + const callback = this._pushCb( ffi.Callback( types.Void, [ @@ -891,12 +891,12 @@ class Authenticator extends SafeLib { types.AppAccessPointer, types.usize ], - ( userData, resultPtr, appAccess, len ) => { + ( userData, resultPtr, appAccess, length ) => { const result = resultPtr.deref(); if ( result.error_code !== 0 ) { return reject( JSON.stringify( result ) ); } - const appAccessInfo = typeParser.parseAppAccess( appAccess, len ); + const appAccessInfo = typeParser.parseAppAccess( appAccess, length ); return resolve( appAccessInfo ); } ) @@ -908,7 +908,7 @@ class Authenticator extends SafeLib { nameBuf, typeTag, types.Null, - this._getCb( cb ) + this._getCb( callback ) ); } catch ( e ) { reject( e.message ); @@ -916,25 +916,25 @@ class Authenticator extends SafeLib { } ); } - _pushCb( cb ) { + _pushCb( callback ) { const rand = crypto.randomBytes( 32 ).toString( 'hex' ); - this[_cbRegistry][rand] = cb; + this[_callbackRegistry][rand] = callback; return rand; } _getCb( rand ) { - return this[_cbRegistry][rand]; + return this[_callbackRegistry][rand]; } _deleteFromCb( rand ) { - if ( !this[_cbRegistry][rand] ) { + if ( !this[_callbackRegistry][rand] ) { return; } - delete this[_cbRegistry][rand]; + delete this[_callbackRegistry][rand]; } _updateAppList() { - this.getRegisteredApps().then( apps => { + this.getRegisteredApps().then( ( apps ) => { if ( this[_appListUpdateListener] && this[_appListUpdateListener].len() !== 0 @@ -949,9 +949,9 @@ class Authenticator extends SafeLib { return reject( new Error( errConst.INVALID_URI.msg ) ); } - const unregisteredCb = this._getUnregisteredClientCb( resolve, reject ); + const unregisteredCallback = this._getUnregisteredClientCb( resolve, reject ); - const decodeReqErrorCb = this._pushCb( + const decodeRequestErrorCallback = this._pushCb( ffi.Callback( types.Void, [types.voidPointer, types.FfiResultPointer, types.CString], @@ -965,18 +965,18 @@ class Authenticator extends SafeLib { this.safeLib.auth_unregistered_decode_ipc_msg( types.allocCString( parsedUri ), types.Null, - this._getCb( unregisteredCb ), - this._getCb( decodeReqErrorCb ) + this._getCb( unregisteredCallback ), + this._getCb( decodeRequestErrorCallback ) ); - } catch ( err ) { - return reject( err ); + } catch ( error ) { + return reject( error ); } } - _encodeUnRegisteredResp( reqId, appId ) { + _encodeUnRegisteredResp( requestId, appId ) { return new Promise( ( resolve, reject ) => { try { - const encodeCb = this._pushCb( + const encodeCallback = this._pushCb( ffi.Callback( types.Void, [types.voidPointer, types.FfiResultPointer, types.CString], @@ -991,10 +991,10 @@ class Authenticator extends SafeLib { ) ); this.safeLib.encode_unregistered_resp( - reqId, + requestId, true, types.Null, - this._getCb( encodeCb ) + this._getCb( encodeCallback ) ); } catch ( e ) { reject( e.message ); @@ -1007,13 +1007,13 @@ class Authenticator extends SafeLib { ffi.Callback( types.Void, [types.voidPointer, types.u32, types.u8Pointer, types.usize], - ( userData, reqId, appIdPtr, appIdLen ) => { - if ( !reqId || appIdLen <= 0 ) { + ( userData, requestId, appIdPtr, appIdLength ) => { + if ( !requestId || appIdLength <= 0 ) { return reject( new Error( errConst, INVALID_RESPONSE.msg ) ); } - const appId = ref.reinterpret( appIdPtr, appIdLen ); - return this._encodeUnRegisteredResp( reqId, appId ).then( res => + const appId = ref.reinterpret( appIdPtr, appIdLength ); + return this._encodeUnRegisteredResp( requestId, appId ).then( ( res ) => resolve( res ) ); } @@ -1022,14 +1022,14 @@ class Authenticator extends SafeLib { } _isAlreadyAuthorised( request ) { - const req = lodash.cloneDeep( request ); + const request_ = lodash.cloneDeep( request ); return new Promise( ( resolve, reject ) => { try { this.getRegisteredApps() - .then( authorisedApps => { + .then( ( authorisedApps ) => { let previouslyAuthorisedContainers; - const isAuthorised = authorisedApps.some( app => { - const appIsPresent = lodash.isEqual( app.app_info, req.app ); + const isAuthorised = authorisedApps.some( ( app ) => { + const appIsPresent = lodash.isEqual( app.app_info, request_.app ); if ( appIsPresent && app.containers ) { previouslyAuthorisedContainers = app.containers; } @@ -1041,20 +1041,20 @@ class Authenticator extends SafeLib { }; } ) .then( resolve ); - } catch ( err ) { - return reject( err ); + } catch ( error ) { + return reject( error ); } } ); } _isAlreadyAuthorisedContainer( request ) { - const req = lodash.cloneDeep( request ); + const request_ = lodash.cloneDeep( request ); let app = null; return new Promise( ( resolve, reject ) => { try { - this.getRegisteredApps().then( authorisedApps => { - app = authorisedApps.filter( apps => - lodash.isEqual( apps.app_info, req.app ) + this.getRegisteredApps().then( ( authorisedApps ) => { + app = authorisedApps.filter( ( apps ) => + lodash.isEqual( apps.app_info, request_.app ) ); // Return false if no apps found match with requested app if ( app.length === 0 ) { @@ -1062,16 +1062,16 @@ class Authenticator extends SafeLib { } app = app[0]; let i; - for ( i = 0; i < req.containers.length; i++ ) { - if ( lodash.findIndex( app.containers, req.containers[i] ) === -1 ) { + for ( i = 0; i < request_.containers.length; i++ ) { + if ( lodash.findIndex( app.containers, request_.containers[i] ) === -1 ) { resolve( false ); break; } } return resolve( true ); } ); - } catch ( err ) { - return reject( err ); + } catch ( error ) { + return reject( error ); } } ); } diff --git a/app/extensions/safe/ffi/lib.ts b/app/extensions/safe/ffi/lib.ts index 934bd3255..5fd48ea6a 100644 --- a/app/extensions/safe/ffi/lib.ts +++ b/app/extensions/safe/ffi/lib.ts @@ -2,7 +2,7 @@ * LibLoader class to load APIs */ /* eslint-disable no-underscore-dangle */ -import ffi from 'ffi'; +import ffi from 'ffi-napi'; import os from 'os'; import path from 'path'; @@ -13,22 +13,22 @@ import * as types from './refs/types'; import CONSTANTS from '../auth-constants'; const _mods = Symbol( '_mods' ); -const _libPath = Symbol( '_libPath' ); +const _libraryPath = Symbol( '_libPath' ); -class LibLoader { +class LibraryLoader { constructor() { this[_mods] = [authenticator]; - this[_libPath] = CONSTANTS.LIB_PATH.SAFE_AUTH[os.platform()]; + this[_libraryPath] = CONSTANTS.LIB_PATH.SAFE_AUTH[os.platform()]; } load( isMock = false ) { if ( isMock ) { - this[_libPath] = CONSTANTS.LIB_PATH_MOCK.SAFE_AUTH[os.platform()]; + this[_libraryPath] = CONSTANTS.LIB_PATH_MOCK.SAFE_AUTH[os.platform()]; } - logger.info( 'Auth lib location loading: ', this[_libPath] ); + logger.info( 'Auth lib location loading: ', this[_libraryPath] ); - const safeLib = {}; + const safeLibrary = {}; const { RTLD_NOW } = ffi.DynamicLibrary.FLAGS; const { RTLD_GLOBAL } = ffi.DynamicLibrary.FLAGS; const mode = RTLD_NOW || RTLD_GLOBAL; @@ -38,11 +38,11 @@ class LibLoader { let fnDefinition; // Load all modules - this[_mods].forEach( mod => { - if ( !( mod instanceof SafeLib ) ) { + this[_mods].forEach( ( module_ ) => { + if ( !( module_ instanceof SafeLib ) ) { return; } - fnsToRegister = mod.fnsToRegister(); + fnsToRegister = module_.fnsToRegister(); if ( !fnsToRegister ) { return; } @@ -51,25 +51,25 @@ class LibLoader { return new Promise( ( resolve, reject ) => { try { - const lib = ffi.DynamicLibrary( - path.resolve( __dirname, this[_libPath] ), + const library = ffi.DynamicLibrary( + path.resolve( __dirname, this[_libraryPath] ), mode ); - Object.keys( ffiFunctions ).forEach( fnName => { + Object.keys( ffiFunctions ).forEach( ( fnName ) => { fnDefinition = ffiFunctions[fnName]; - safeLib[fnName] = ffi.ForeignFunction( - lib.get( fnName ), + safeLibrary[fnName] = ffi.ForeignFunction( + library.get( fnName ), fnDefinition[0], fnDefinition[1] ); } ); - this[_mods].forEach( mod => { - if ( !( mod instanceof SafeLib ) ) { + this[_mods].forEach( ( module_ ) => { + if ( !( module_ instanceof SafeLib ) ) { return; } - mod.isLibLoaded = true; - mod.safeLib = safeLib; + module_.isLibLoaded = true; + module_.safeLib = safeLibrary; } ); const setConfigSearchPath = () => { @@ -79,7 +79,7 @@ class LibLoader { ) { const configPath = types.allocCString( process.env.SAFE_CONFIG_PATH ); - safeLib.auth_set_additional_search_path( + safeLibrary.auth_set_additional_search_path( configPath, types.Null, ffi.Callback( @@ -100,7 +100,7 @@ class LibLoader { }; // init logging - safeLib.auth_init_logging( + safeLibrary.auth_init_logging( types.allocCString( 'authenticator.log' ), types.Null, ffi.Callback( @@ -116,18 +116,18 @@ class LibLoader { } ) ); - } catch ( err ) { - this[_mods].forEach( mod => { - if ( !( mod instanceof SafeLib ) ) { + } catch ( error ) { + this[_mods].forEach( ( module_ ) => { + if ( !( module_ instanceof SafeLib ) ) { return; } - mod.isLibLoaded = false; + module_.isLibLoaded = false; } ); - return reject( err ); + return reject( error ); } } ); } } -const libLoader = new LibLoader(); -export default libLoader; +const libraryLoader = new LibraryLoader(); +export default libraryLoader; diff --git a/app/extensions/safe/ffi/refs/parsers.ts b/app/extensions/safe/ffi/refs/parsers.ts index 7bd11bd3c..b4d9cbad5 100644 --- a/app/extensions/safe/ffi/refs/parsers.ts +++ b/app/extensions/safe/ffi/refs/parsers.ts @@ -1,24 +1,24 @@ -import ref from 'ref'; +import ref from 'ref-napi'; import ArrayType from 'ref-array'; import * as types from './types'; -export const parseArray = ( type, arrayBuf, len ) => { - if ( len === 0 ) { +export const parseArray = ( type, arrayBuf, length ) => { + if ( length === 0 ) { return []; } - const arrPtr = ref.reinterpret( arrayBuf, type.size * len ); - const ArrType = ArrayType( type ); - return ArrType( arrPtr ); + const arrayPtr = ref.reinterpret( arrayBuf, type.size * length ); + const ArrayType_ = ArrayType( type ); + return ArrayType_( arrayPtr ); }; -export const parseAppExchangeInfo = appExchangeInfo => ( { +export const parseAppExchangeInfo = ( appExchangeInfo ) => ( { id: appExchangeInfo.id, scope: appExchangeInfo.scope, name: appExchangeInfo.name, vendor: appExchangeInfo.vendor } ); -const parsePermissionSet = perms => ( { +const parsePermissionSet = ( perms ) => ( { read: perms.read, insert: perms.insert, update: perms.update, @@ -26,29 +26,29 @@ const parsePermissionSet = perms => ( { manage_permissions: perms.manage_permissions } ); -export const parseContainerPermissions = containerPermissions => ( { +export const parseContainerPermissions = ( containerPermissions ) => ( { cont_name: containerPermissions.cont_name, access: parsePermissionSet( containerPermissions.access ) } ); export const parseContainerPermissionsArray = ( containerPermissionsArray, - len + length ) => { const res = []; let i = 0; - const contArr = parseArray( + const contArray = parseArray( types.ContainerPermissions, containerPermissionsArray, - len + length ); - for ( i = 0; i < contArr.length; i++ ) { - res.push( parseContainerPermissions( contArr[i] ) ); + for ( i = 0; i < contArray.length; i++ ) { + res.push( parseContainerPermissions( contArray[i] ) ); } return res; }; -export const parseRegisteredApp = registeredApp => ( { +export const parseRegisteredApp = ( registeredApp ) => ( { app_info: parseAppExchangeInfo( registeredApp.app_info ), containers: parseContainerPermissionsArray( registeredApp.containers, @@ -58,13 +58,13 @@ export const parseRegisteredApp = registeredApp => ( { containers_cap: registeredApp.containers_cap } ); -export const parseRegisteredAppArray = ( registeredAppArray, len ) => { +export const parseRegisteredAppArray = ( registeredAppArray, length ) => { const res = []; let i = 0; const registeredApps = parseArray( types.RegisteredApp, registeredAppArray, - len + length ); for ( i = 0; i < registeredApps.length; i++ ) { res.push( parseRegisteredApp( registeredApps[i] ) ); @@ -72,72 +72,72 @@ export const parseRegisteredAppArray = ( registeredAppArray, len ) => { return res; }; -export const parseAuthReq = authReq => ( { - app: parseAppExchangeInfo( authReq.app ), - app_container: authReq.app_container, +export const parseAuthReq = ( authRequest ) => ( { + app: parseAppExchangeInfo( authRequest.app ), + app_container: authRequest.app_container, containers: parseContainerPermissionsArray( - authReq.containers, - authReq.containers_len + authRequest.containers, + authRequest.containers_len ), - containers_len: authReq.containers_len, - containers_cap: authReq.containers_cap + containers_len: authRequest.containers_len, + containers_cap: authRequest.containers_cap } ); -export const parseContainerReq = containersReq => ( { - app: parseAppExchangeInfo( containersReq.app ), +export const parseContainerReq = ( containersRequest ) => ( { + app: parseAppExchangeInfo( containersRequest.app ), containers: parseContainerPermissionsArray( - containersReq.containers, - containersReq.containers_len + containersRequest.containers, + containersRequest.containers_len ), - containers_len: containersReq.containers_len, - containers_cap: containersReq.containers_cap + containers_len: containersRequest.containers_len, + containers_cap: containersRequest.containers_cap } ); -const parseXorName = str => { - const b = new Buffer( str ); +const parseXorName = ( string ) => { + const b = new Buffer( string ); if ( b.length !== 32 ) throw Error( 'XOR Names _must be_ 32 bytes long.' ); const name = types.XorName( b ); return new Buffer( name ).toString( 'hex' ); }; -const parseShareMData = shareMData => ( { +const parseShareMData = ( shareMData ) => ( { type_tag: shareMData.type_tag, name: parseXorName( shareMData.name ), perms: parsePermissionSet( shareMData.perms ) } ); -const parseSharedMDataArray = ( shareMData, len ) => { +const parseSharedMDataArray = ( shareMData, length ) => { const res = []; let i = 0; - const mdatas = parseArray( types.ShareMData, shareMData, len ); + const mdatas = parseArray( types.ShareMData, shareMData, length ); for ( i = 0; i < mdatas.length; i++ ) { res.push( parseShareMData( mdatas[i] ) ); } return res; }; -export const parseShareMDataReq = shareMDataReq => ( { - app: parseAppExchangeInfo( shareMDataReq.app ), - mdata: parseSharedMDataArray( shareMDataReq.mdata, shareMDataReq.mdata_len ), - mdata_len: shareMDataReq.mdata_len +export const parseShareMDataReq = ( shareMDataRequest ) => ( { + app: parseAppExchangeInfo( shareMDataRequest.app ), + mdata: parseSharedMDataArray( shareMDataRequest.mdata, shareMDataRequest.mdata_len ), + mdata_len: shareMDataRequest.mdata_len } ); -const parseUserMetaData = meta => ( { +const parseUserMetaData = ( meta ) => ( { name: meta.name, description: meta.description } ); -export const parseUserMetaDataArray = ( metaArr, len ) => { +export const parseUserMetaDataArray = ( metaArray, length ) => { const res = []; let i = 0; - const metaData = parseArray( types.UserMetadata, metaArr, len ); + const metaData = parseArray( types.UserMetadata, metaArray, length ); for ( i = 0; i < metaData.length; i++ ) { res.push( parseUserMetaData( metaData[i] ) ); } return res; }; -const parseAppAccessInfo = appAccess => { +const parseAppAccessInfo = ( appAccess ) => { let signKey = types.U8Array( new Buffer( appAccess.sign_key ) ); signKey = new Buffer( signKey ).toString( 'hex' ); return { @@ -149,10 +149,10 @@ const parseAppAccessInfo = appAccess => { }; }; -export const parseAppAccess = ( appAccess, len ) => { +export const parseAppAccess = ( appAccess, length ) => { const res = []; let i = 0; - const info = parseArray( types.AppAccess, appAccess, len ); + const info = parseArray( types.AppAccess, appAccess, length ); for ( i = 0; i < info.length; i++ ) { res.push( parseAppAccessInfo( info[i] ) ); } diff --git a/app/extensions/safe/ffi/refs/types.ts b/app/extensions/safe/ffi/refs/types.ts index 34c530983..86ff1572c 100644 --- a/app/extensions/safe/ffi/refs/types.ts +++ b/app/extensions/safe/ffi/refs/types.ts @@ -1,4 +1,4 @@ -import ref from 'ref'; +import ref from 'ref-napi'; import ArrayType from 'ref-array'; import StructType from 'ref-struct'; @@ -114,10 +114,10 @@ export const AppAccessPointer = ref.refType( AppAccess ); export const allocAppHandlePointer = () => ref.alloc( ClientHandlePointer ); -export const allocCString = str => ref.allocCString( str ); +export const allocCString = ( string ) => ref.allocCString( string ); -export const allocAuthReq = req => ref.alloc( AuthReq, req ); +export const allocAuthReq = ( request ) => ref.alloc( AuthReq, request ); -export const allocContainerReq = req => ref.alloc( ContainersReq, req ); +export const allocContainerReq = ( request ) => ref.alloc( ContainersReq, request ); -export const allocSharedMdataReq = req => ref.alloc( ShareMDataReq, req ); +export const allocSharedMdataReq = ( request ) => ref.alloc( ShareMDataReq, request ); diff --git a/app/extensions/safe/ffi/sys_uri.ts b/app/extensions/safe/ffi/sys_uri.ts index 4cd728397..99c126d04 100644 --- a/app/extensions/safe/ffi/sys_uri.ts +++ b/app/extensions/safe/ffi/sys_uri.ts @@ -1,6 +1,6 @@ /* eslint-disable no-underscore-dangle */ /* eslint-disable import/no-unresolved, import/extensions */ -import ffi from 'ffi'; +import ffi from 'ffi-napi'; /* eslint-enable import/no-unresolved, import/extensions */ import os from 'os'; import path from 'path'; @@ -11,12 +11,12 @@ import * as type from './refs/types'; const StringArray = ArrayType( type.CString ); const _ffiFunctions = Symbol( 'ffiFunctions' ); -const _libPath = Symbol( 'libPath' ); -const _isLibLoaded = Symbol( 'isLibLoaded' ); +const _libraryPath = Symbol( 'libPath' ); +const _isLibraryLoaded = Symbol( 'isLibLoaded' ); class SystemUriLoader { constructor() { - this[_libPath] = CONSTANTS.LIB_PATH.SYSTEM_URI[os.platform()]; + this[_libraryPath] = CONSTANTS.LIB_PATH.SYSTEM_URI[os.platform()]; this[_ffiFunctions] = { open_uri: [type.Void, ['string', 'pointer', 'pointer']], install: [ @@ -34,23 +34,23 @@ class SystemUriLoader { ] ] }; - this[_isLibLoaded] = false; + this[_isLibraryLoaded] = false; this.lib = null; } get isLibLoaded() { - return this[_isLibLoaded]; + return this[_isLibraryLoaded]; } load() { try { this.lib = ffi.Library( - path.resolve( __dirname, this[_libPath] ), + path.resolve( __dirname, this[_libraryPath] ), this[_ffiFunctions] ); - this[_isLibLoaded] = true; - } catch ( err ) { - this[_isLibLoaded] = false; + this[_isLibraryLoaded] = true; + } catch ( error ) { + this[_isLibraryLoaded] = false; } } @@ -72,7 +72,7 @@ class SystemUriLoader { return new Promise( ( resolve, reject ) => { try { - const cb = this._handleError( resolve, reject ); + const callback = this._handleError( resolve, reject ); this.lib.install( bundle, vendor, @@ -82,24 +82,24 @@ class SystemUriLoader { icon, joinedSchemes, type.Null, - cb + callback ); - } catch ( err ) { - return reject( err ); + } catch ( error ) { + return reject( error ); } } ); } - openUri( str ) { + openUri( string ) { if ( !this.lib ) { return; } return new Promise( ( resolve, reject ) => { try { - const cb = this._handleError( resolve, reject ); - this.lib.open_uri( str, type.Null, cb ); - } catch ( err ) { - return reject( err ); + const callback = this._handleError( resolve, reject ); + this.lib.open_uri( string, type.Null, callback ); + } catch ( error ) { + return reject( error ); } } ); } diff --git a/app/extensions/safe/iconfont/iconfont.css b/app/extensions/safe/iconfont/iconfont.css deleted file mode 100644 index ca7076d85..000000000 --- a/app/extensions/safe/iconfont/iconfont.css +++ /dev/null @@ -1,613 +0,0 @@ - -@font-face {font-family: "anticon"; - src: url('iconfont.eot?t=1519899342204'); /* IE9*/ - src: url('iconfont.eot?t=1519899342204#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'), - url('iconfont.ttf?t=1519899342204') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ - url('iconfont.svg?t=1519899342204#anticon') format('svg'); /* iOS 4.1- */ -} - -.anticon { - font-family:"anticon" !important; - font-size:16px; - font-style:normal; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-stepforward:before { content: "\e600"; } - -.icon-stepbackward:before { content: "\e601"; } - -.icon-forward:before { content: "\e602"; } - -.icon-banckward:before { content: "\e603"; } - -.icon-caretright:before { content: "\e604"; } - -.icon-caretleft:before { content: "\e605"; } - -.icon-caretdown:before { content: "\e606"; } - -.icon-caretup:before { content: "\e607"; } - -.icon-rightcircle:before { content: "\e608"; } - -.icon-leftcircle:before { content: "\e609"; } - -.icon-upcircle:before { content: "\e60a"; } - -.icon-downcircle:before { content: "\e60b"; } - -.icon-rightcircleo:before { content: "\e60c"; } - -.icon-leftcircleo:before { content: "\e60d"; } - -.icon-upcircleo:before { content: "\e60e"; } - -.icon-downcircleo:before { content: "\e60f"; } - -.icon-verticleleft:before { content: "\e610"; } - -.icon-verticleright:before { content: "\e611"; } - -.icon-back:before { content: "\e612"; } - -.icon-retweet:before { content: "\e613"; } - -.icon-shrink:before { content: "\e614"; } - -.icon-arrowsalt:before { content: "\e615"; } - -.icon-doubleright:before { content: "\e617"; } - -.icon-doubleleft:before { content: "\e618"; } - -.icon-arrowdown:before { content: "\e619"; } - -.icon-arrowup:before { content: "\e61a"; } - -.icon-arrowright:before { content: "\e61b"; } - -.icon-arrowleft:before { content: "\e61c"; } - -.icon-down:before { content: "\e61d"; } - -.icon-up:before { content: "\e61e"; } - -.icon-right:before { content: "\e61f"; } - -.icon-left:before { content: "\e620"; } - -.icon-minussquareo:before { content: "\e621"; } - -.icon-minuscircle:before { content: "\e622"; } - -.icon-minuscircleo:before { content: "\e623"; } - -.icon-minus:before { content: "\e624"; } - -.icon-pluscircleo:before { content: "\e625"; } - -.icon-pluscircle:before { content: "\e626"; } - -.icon-plus:before { content: "\e627"; } - -.icon-infocirlce:before { content: "\e628"; } - -.icon-infocirlceo:before { content: "\e629"; } - -.icon-info:before { content: "\e62a"; } - -.icon-exclamation:before { content: "\e62b"; } - -.icon-exclamationcircle:before { content: "\e62c"; } - -.icon-exclamationcircleo:before { content: "\e62d"; } - -.icon-closecircle:before { content: "\e62e"; } - -.icon-closecircleo:before { content: "\e62f"; } - -.icon-checkcircle:before { content: "\e630"; } - -.icon-checkcircleo:before { content: "\e631"; } - -.icon-check:before { content: "\e632"; } - -.icon-close:before { content: "\e633"; } - -.icon-customerservice:before { content: "\e634"; } - -.icon-creditcard:before { content: "\e635"; } - -.icon-codesquareo:before { content: "\e636"; } - -.icon-book:before { content: "\e637"; } - -.icon-barschart:before { content: "\e638"; } - -.icon-bars:before { content: "\e639"; } - -.icon-question:before { content: "\e63a"; } - -.icon-questioncircle:before { content: "\e63b"; } - -.icon-questioncircleo:before { content: "\e63c"; } - -.icon-pause:before { content: "\e63d"; } - -.icon-pausecircle:before { content: "\e63e"; } - -.icon-pausecircleo:before { content: "\e63f"; } - -.icon-clockcircle:before { content: "\e640"; } - -.icon-clockcircleo:before { content: "\e641"; } - -.icon-swap:before { content: "\e642"; } - -.icon-swapleft:before { content: "\e643"; } - -.icon-swapright:before { content: "\e644"; } - -.icon-plussquareo:before { content: "\e645"; } - -.icon-frown:before { content: "\e646"; } - -.icon-menufold:before { content: "\e658"; } - -.icon-mail:before { content: "\e659"; } - -.icon-link:before { content: "\e65b"; } - -.icon-areachart:before { content: "\e65c"; } - -.icon-linechart:before { content: "\e65d"; } - -.icon-home:before { content: "\e65e"; } - -.icon-laptop:before { content: "\e65f"; } - -.icon-star:before { content: "\e660"; } - -.icon-staro:before { content: "\e661"; } - -.icon-filter:before { content: "\e663"; } - -.icon-meho:before { content: "\e666"; } - -.icon-meh:before { content: "\e667"; } - -.icon-shoppingcart:before { content: "\e668"; } - -.icon-save:before { content: "\e669"; } - -.icon-user:before { content: "\e66a"; } - -.icon-videocamera:before { content: "\e66b"; } - -.icon-totop:before { content: "\e66c"; } - -.icon-team:before { content: "\e66d"; } - -.icon-sharealt:before { content: "\e671"; } - -.icon-setting:before { content: "\e672"; } - -.icon-picture:before { content: "\e674"; } - -.icon-phone:before { content: "\e675"; } - -.icon-paperclip:before { content: "\e676"; } - -.icon-notification:before { content: "\e677"; } - -.icon-menuunfold:before { content: "\e679"; } - -.icon-inbox:before { content: "\e67a"; } - -.icon-lock:before { content: "\e67b"; } - -.icon-qrcode:before { content: "\e67c"; } - -.icon-tags:before { content: "\e67d"; } - -.icon-tagso:before { content: "\e67e"; } - -.icon-cloudo:before { content: "\e67f"; } - -.icon-cloud:before { content: "\e680"; } - -.icon-cloudupload:before { content: "\e681"; } - -.icon-clouddownload:before { content: "\e682"; } - -.icon-clouddownloado:before { content: "\e683"; } - -.icon-clouduploado:before { content: "\e684"; } - -.icon-enviroment:before { content: "\e685"; } - -.icon-enviromento:before { content: "\e686"; } - -.icon-eye:before { content: "\e687"; } - -.icon-eyeo:before { content: "\e688"; } - -.icon-camera:before { content: "\e689"; } - -.icon-camerao:before { content: "\e68a"; } - -.icon-windows:before { content: "\e68b"; } - -.icon-export2:before { content: "\e690"; } - -.icon-export:before { content: "\e691"; } - -.icon-circledowno:before { content: "\e693"; } - -.icon-circledown:before { content: "\e694"; } - -.icon-hdd:before { content: "\e69a"; } - -.icon-ie:before { content: "\e69b"; } - -.icon-delete:before { content: "\e69f"; } - -.icon-enter:before { content: "\e6a0"; } - -.icon-pushpino:before { content: "\e6a1"; } - -.icon-pushpin:before { content: "\e6a2"; } - -.icon-heart:before { content: "\e6a3"; } - -.icon-hearto:before { content: "\e6a4"; } - -.icon-smile-circle:before { content: "\e6a7"; } - -.icon-smileo:before { content: "\e6a8"; } - -.icon-frowno:before { content: "\e6a9"; } - -.icon-calculator:before { content: "\e6aa"; } - -.icon-chrome:before { content: "\e6ac"; } - -.icon-github:before { content: "\e6ad"; } - -.icon-iconfontdesktop:before { content: "\e6b4"; } - -.icon-caretcircleoup:before { content: "\e6b5"; } - -.icon-upload:before { content: "\e6b6"; } - -.icon-download:before { content: "\e6b7"; } - -.icon-piechart:before { content: "\e6b8"; } - -.icon-lock1:before { content: "\e6b9"; } - -.icon-unlock:before { content: "\e6ba"; } - -.icon-windowso:before { content: "\e6bc"; } - -.icon-dotchart:before { content: "\e6bd"; } - -.icon-barchart:before { content: "\e6be"; } - -.icon-codesquare:before { content: "\e6bf"; } - -.icon-plussquare:before { content: "\e6c0"; } - -.icon-minussquare:before { content: "\e6c1"; } - -.icon-closesquare:before { content: "\e6c2"; } - -.icon-closesquareo:before { content: "\e6c3"; } - -.icon-checksquare:before { content: "\e6c4"; } - -.icon-checksquareo:before { content: "\e6c5"; } - -.icon-fastbackward:before { content: "\e6c6"; } - -.icon-fastforward:before { content: "\e6c7"; } - -.icon-upsquare:before { content: "\e6c8"; } - -.icon-downsquare:before { content: "\e6c9"; } - -.icon-leftsquare:before { content: "\e6ca"; } - -.icon-rightsquare:before { content: "\e6cb"; } - -.icon-rightsquareo:before { content: "\e6cc"; } - -.icon-leftsquareo:before { content: "\e6cd"; } - -.icon-down-square-o:before { content: "\e6ce"; } - -.icon-up-square-o:before { content: "\e6cf"; } - -.icon-play:before { content: "\e6d0"; } - -.icon-playcircleo:before { content: "\e6d1"; } - -.icon-tag:before { content: "\e6d2"; } - -.icon-tago:before { content: "\e6d3"; } - -.icon-addfile:before { content: "\e910"; } - -.icon-folder1:before { content: "\e662"; } - -.icon-file1:before { content: "\e664"; } - -.icon-switcher:before { content: "\e913"; } - -.icon-addfolder:before { content: "\e914"; } - -.icon-folderopen:before { content: "\e699"; } - -.icon-search1:before { content: "\e670"; } - -.icon-ellipsis1:before { content: "\e647"; } - -.icon-calendar:before { content: "\e6bb"; } - -.icon-filetext1:before { content: "\e698"; } - -.icon-copy1:before { content: "\e648"; } - -.icon-jpgfile1:before { content: "\e69c"; } - -.icon-pdffile1:before { content: "\e6b3"; } - -.icon-exclefile1:before { content: "\e6b0"; } - -.icon-pptfile1:before { content: "\e6b1"; } - -.icon-unknowfile1:before { content: "\e6af"; } - -.icon-wordfile1:before { content: "\e6b2"; } - -.icon-dingding:before { content: "\e923"; } - -.icon-dingding-o:before { content: "\e925"; } - -.icon-mobile1:before { content: "\e678"; } - -.icon-tablet1:before { content: "\e66e"; } - -.icon-bells:before { content: "\e64e"; } - -.icon-disconnect:before { content: "\e64f"; } - -.icon-database:before { content: "\e650"; } - -.icon-barcode:before { content: "\e652"; } - -.icon-hourglass:before { content: "\e653"; } - -.icon-key:before { content: "\e654"; } - -.icon-flag:before { content: "\e655"; } - -.icon-layout:before { content: "\e656"; } - -.icon-printer:before { content: "\e673"; } - -.icon-USB:before { content: "\e6d7"; } - -.icon-skin:before { content: "\e6d8"; } - -.icon-tool:before { content: "\e6d9"; } - -.icon-car:before { content: "\e6dc"; } - -.icon-addusergroup:before { content: "\e6dd"; } - -.icon-carryout:before { content: "\e6df"; } - -.icon-deleteuser:before { content: "\e6e0"; } - -.icon-deleteusergroup:before { content: "\e6e1"; } - -.icon-man:before { content: "\e6e2"; } - -.icon-isv:before { content: "\e6e3"; } - -.icon-gift:before { content: "\e6e4"; } - -.icon-idcard:before { content: "\e6e5"; } - -.icon-medicinebox:before { content: "\e6e6"; } - -.icon-redenvelopes:before { content: "\e6e7"; } - -.icon-rest:before { content: "\e6e8"; } - -.icon-Safety:before { content: "\e6ea"; } - -.icon-wallet:before { content: "\e6eb"; } - -.icon-woman:before { content: "\e6ec"; } - -.icon-adduser:before { content: "\e6ed"; } - -.icon-bank:before { content: "\e6ee"; } - -.icon-Trophy:before { content: "\e6ef"; } - -.icon-loading1:before { content: "\e6ae"; } - -.icon-loading2:before { content: "\e64d"; } - -.icon-like2:before { content: "\e69d"; } - -.icon-dislike2:before { content: "\e69e"; } - -.icon-like1:before { content: "\e64c"; } - -.icon-dislike1:before { content: "\e64b"; } - -.icon-bulb1:before { content: "\e649"; } - -.icon-rocket1:before { content: "\e90f"; } - -.icon-select1:before { content: "\e64a"; } - -.icon-apple1:before { content: "\e68c"; } - -.icon-apple-o:before { content: "\e6d4"; } - -.icon-android1:before { content: "\e938"; } - -.icon-android:before { content: "\e68d"; } - -.icon-aliwangwang-o1:before { content: "\e68f"; } - -.icon-aliwangwang:before { content: "\e68e"; } - -.icon-pay-circle1:before { content: "\e6a5"; } - -.icon-pay-circle-o1:before { content: "\e6a6"; } - -.icon-poweroff:before { content: "\e6d5"; } - -.icon-trademark:before { content: "\e651"; } - -.icon-find:before { content: "\e6db"; } - -.icon-copyright:before { content: "\e6de"; } - -.icon-sound:before { content: "\e6e9"; } - -.icon-earth:before { content: "\e6f1"; } - -.icon-wifi:before { content: "\e6d6"; } - -.icon-sync:before { content: "\e6da"; } - -.icon-login:before { content: "\e657"; } - -.icon-logout:before { content: "\e65a"; } - -.icon-reload1:before { content: "\e616"; } - -.icon-message1:before { content: "\e6ab"; } - -.icon-shake:before { content: "\e94f"; } - -.icon-API:before { content: "\e951"; } - -.icon-appstore-o:before { content: "\e695"; } - -.icon-appstore1:before { content: "\e696"; } - -.icon-scan1:before { content: "\e697"; } - -.icon-exception1:before { content: "\e665"; } - -.icon-contacts:before { content: "\e6f0"; } - -.icon-solution1:before { content: "\e66f"; } - -.icon-fork:before { content: "\e6f2"; } - -.icon-edit:before { content: "\e692"; } - -.icon-form:before { content: "\e996"; } - -.icon-warning:before { content: "\e997"; } - -.icon-table:before { content: "\e998"; } - -.icon-profile:before { content: "\e999"; } - -.icon-dashboard:before { content: "\e99a"; } - -.icon-indent-left:before { content: "\e9a6"; } - -.icon-indent-right:before { content: "\e9a7"; } - -.icon-menu-unfold:before { content: "\e9ac"; } - -.icon-menu-fold:before { content: "\e9ad"; } - -.icon-antdesign:before { content: "\e9b2"; } - -.icon-alipay-square:before { content: "\e9b3"; } - -.icon-codepen-circle:before { content: "\e9b4"; } - -.icon-google:before { content: "\e9b5"; } - -.icon-amazon:before { content: "\e9b6"; } - -.icon-codepen:before { content: "\e9b7"; } - -.icon-facebook-square:before { content: "\e9b8"; } - -.icon-dropbox:before { content: "\e9b9"; } - -.icon-googleplus:before { content: "\e9ba"; } - -.icon-linkedin-square:before { content: "\e9bb"; } - -.icon-medium-monogram:before { content: "\e9bc"; } - -.icon-gitlab:before { content: "\e9bd"; } - -.icon-medium-wordmark:before { content: "\e9be"; } - -.icon-QQ:before { content: "\e9bf"; } - -.icon-skype:before { content: "\e9c0"; } - -.icon-taobao-square:before { content: "\e9c1"; } - -.icon-alipay-circle:before { content: "\e9c2"; } - -.icon-youtube:before { content: "\e9c3"; } - -.icon-wechat:before { content: "\e9c4"; } - -.icon-twitter:before { content: "\e9c5"; } - -.icon-weibo:before { content: "\e9c6"; } - -.icon-HTML:before { content: "\e9c7"; } - -.icon-taobao-circle:before { content: "\e6f3"; } - -.icon-weibo-circle:before { content: "\e6f4"; } - -.icon-weibo-square:before { content: "\e6f5"; } - -.icon-CodeSandbox:before { content: "\e9d4"; } - -.icon-aliyun:before { content: "\e9f4"; } - -.icon-zhihu:before { content: "\e703"; } - -.icon-behance:before { content: "\e707"; } - -.icon-dribbble:before { content: "\e709"; } - -.icon-dribbble-square:before { content: "\e70a"; } - -.icon-behance-square:before { content: "\e708"; } - -.icon-file-markdown:before { content: "\e704"; } - -.icon-instagram:before { content: "\e70b"; } - -.icon-yuque:before { content: "\e70c"; } - -.icon-slack:before { content: "\e705"; } - -.icon-slack-square:before { content: "\e706"; } - diff --git a/app/extensions/safe/iconfont/iconfont.eot b/app/extensions/safe/iconfont/iconfont.eot deleted file mode 100644 index 92ad6fa15..000000000 Binary files a/app/extensions/safe/iconfont/iconfont.eot and /dev/null differ diff --git a/app/extensions/safe/iconfont/iconfont.svg b/app/extensions/safe/iconfont/iconfont.svg deleted file mode 100644 index 382450543..000000000 --- a/app/extensions/safe/iconfont/iconfont.svg +++ /dev/null @@ -1,927 +0,0 @@ - - - - - -Created by iconfont - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/extensions/safe/iconfont/iconfont.ts b/app/extensions/safe/iconfont/iconfont.ts deleted file mode 100644 index 574578e14..000000000 --- a/app/extensions/safe/iconfont/iconfont.ts +++ /dev/null @@ -1,90 +0,0 @@ -( function( window ) { - let svgSprite = - ''; - const script = ( function() { - const scripts = document.getElementsByTagName( 'script' ); - return scripts[scripts.length - 1]; - } )(); - const shouldInjectCss = script.getAttribute( 'data-injectcss' ); - const ready = function( fn ) { - if ( document.addEventListener ) { - if ( ~['complete', 'loaded', 'interactive'].indexOf( document.readyState ) ) { - setTimeout( fn, 0 ); - } else { - var loadFn = function() { - document.removeEventListener( 'DOMContentLoaded', loadFn, false ); - fn(); - }; - document.addEventListener( 'DOMContentLoaded', loadFn, false ); - } - } else if ( document.attachEvent ) { - IEContentLoaded( window, fn ); - } - function IEContentLoaded( w, fn ) { - const d = w.document; - - let done = false; - - const init = function() { - if ( !done ) { - done = true; - fn(); - } - }; - var polling = function() { - try { - d.documentElement.doScroll( 'left' ); - } catch ( e ) { - setTimeout( polling, 50 ); - return; - } - init(); - }; - polling(); - d.onreadystatechange = function() { - if ( d.readyState == 'complete' ) { - d.onreadystatechange = null; - init(); - } - }; - } - }; - const before = function( el, target ) { - target.parentNode.insertBefore( el, target ); - }; - const prepend = function( el, target ) { - if ( target.firstChild ) { - before( el, target.firstChild ); - } else { - target.append( el ); - } - }; - function appendSvg() { - let div; - - let svg; - div = document.createElement( 'div' ); - div.innerHTML = svgSprite; - svgSprite = null; - svg = div.getElementsByTagName( 'svg' )[0]; - if ( svg ) { - svg.setAttribute( 'aria-hidden', 'true' ); - svg.style.position = 'absolute'; - svg.style.width = 0; - svg.style.height = 0; - svg.style.overflow = 'hidden'; - prepend( svg, document.body ); - } - } - if ( shouldInjectCss && !window.__iconfont__svg__cssinject__ ) { - window.__iconfont__svg__cssinject__ = true; - try { - document.write( - '' - ); - } catch ( e ) { - console && console.info( e ); - } - } - ready( appendSvg ); -} )( window ); diff --git a/app/extensions/safe/iconfont/iconfont.ttf b/app/extensions/safe/iconfont/iconfont.ttf deleted file mode 100644 index 90111cb25..000000000 Binary files a/app/extensions/safe/iconfont/iconfont.ttf and /dev/null differ diff --git a/app/extensions/safe/iconfont/iconfont.woff b/app/extensions/safe/iconfont/iconfont.woff deleted file mode 100644 index 70ca476f5..000000000 Binary files a/app/extensions/safe/iconfont/iconfont.woff and /dev/null differ diff --git a/app/extensions/safe/index.ts b/app/extensions/safe/index.ts index b26172751..60e61ff02 100644 --- a/app/extensions/safe/index.ts +++ b/app/extensions/safe/index.ts @@ -3,7 +3,9 @@ import { handleAuthUrl, setAuthLibStatus } from '$Extensions/safe/actions/authenticator_actions'; -import { app, BrowserWindow } from 'electron'; + +import { app, protocol, BrowserWindow } from 'electron'; + import * as safeBrowserAppActions from '$Extensions/safe/actions/safeBrowserApplication_actions'; import { initSafeBrowserApp } from '$Extensions/safe/safeBrowserApplication'; import { getLibStatus } from '$Extensions/safe/auth-api/authFuncs'; @@ -35,13 +37,35 @@ import { handleSafeBrowserStoreChanges } from './safeBrowserApplication'; import blockNonSAFERequests from './blockNonSafeReqs'; import registerSafeAuthProtocol from './protocols/safe-auth'; import registerSafeProtocol from './protocols/safe'; -import setupRoutes from './server-routes'; +import { setupRoutes } from '$Extensions/safe/server-routes'; import * as ffiLoader from './auth-api/ffiLoader'; +import pkg from '$Package'; const onWebviewPreload = ( store ) => webviewPreload( store ); const preAppLoad = () => { - // app.setPath( 'userData', path.resolve( app.getPath( 'temp' ), 'safe-browser' ) ); + + + pkg.build.protocols.schemes.forEach( ( theScheme ) => { + + logger.verbose('Registering priviledged scheme: ', theScheme) + protocol.registerSchemesAsPrivileged( [ + { + scheme: theScheme, + privileges: { + standard: true, + secure: true + , + bypassCSP: true, + allowServiceWorkers: true, + supportFetchAPI: true, + corsEnabled: true, + } + } + ] ); + } ); + + if ( isRunningUnpacked && process.platform === 'win32' ) return; app.setAsDefaultProtocolClient( 'safe-auth' ); app.setAsDefaultProtocolClient( 'safe' ); diff --git a/app/extensions/safe/server-routes/index.ts b/app/extensions/safe/server-routes/index.ts index c86a0a139..4b469f91b 100644 --- a/app/extensions/safe/server-routes/index.ts +++ b/app/extensions/safe/server-routes/index.ts @@ -1,47 +1,16 @@ import { logger } from '$Logger'; -import { - isRunningPackaged, - isRunningSpectronTestProcess, - isRunningSpectronTestProcessingPackagedApp -} from '$Constants'; -import path from 'path'; -import url from 'url'; import safeRoute from './safe'; import authRoute from './auth'; -const setupRoutes = ( server, store ) => { +export const setupRoutes = ( server, store ): void => { const routes = [safeRoute( store ), authRoute]; - // TODO: Remove serving onf antd files when we can package - // webId manager properly. - server.get( /dummy/, ( request, res ) => { - const { link } = request.params; - const linkUrl = url.parse( link ); - - let safeFolder = isRunningPackaged - ? '../extensions/safe/' - : './extensions/safe/'; - safeFolder = - isRunningSpectronTestProcess && - !isRunningSpectronTestProcessingPackagedApp - ? 'extensions/safe/' - : safeFolder; - - const antdIcons = path.resolve( __dirname, safeFolder, 'iconfont/' ); - const finalPath = path.resolve( antdIcons, link ); - res - .sendFile( finalPath, { confine: false } ) - .header( 'Access-Control-Allow-Origin', '*' ); - } ); - - routes.forEach( route => { + routes.forEach( ( route ) => { try { server.get( route.path, route.handler ); - } catch ( e ) { - logger.error( 'Problem initing a route.', route, e ); + } catch ( error ) { + logger.error( 'Problem initing a route.', route, error ); } } ); }; - -export default setupRoutes; diff --git a/app/extensions/safe/test/app/onNetworkChange.spec.ts b/app/extensions/safe/test/app/onNetworkChange.spec.ts index d31132aa0..4815ec5b4 100644 --- a/app/extensions/safe/test/app/onNetworkChange.spec.ts +++ b/app/extensions/safe/test/app/onNetworkChange.spec.ts @@ -10,7 +10,7 @@ jest.mock( 'extensions/safe/ffi/refs/parsers', () => ( {} ) ); jest.mock( 'ref-array', () => jest.fn() ); // -jest.mock( 'ffi', () => jest.fn() ); +jest.mock( 'ffi-napi', () => jest.fn() ); jest.mock( 'extensions/safe/ffi/authenticator', () => jest.fn() ); jest.mock( '@maidsafe/safe-node-app', () => jest.fn() ); @@ -26,13 +26,13 @@ describe( 'Network callback', () => { getState: () => initialState, dispatch: jest.fn() }; - const networkCb = onNetworkStateChange( mockStore ); - networkCb( 'Connected' ); - const dispatchArg = mockStore.dispatch.mock.calls[0][0]; + const networkCallback = onNetworkStateChange( mockStore ); + networkCallback( 'Connected' ); + const dispatchArgument = mockStore.dispatch.mock.calls[0][0]; expect( mockStore.dispatch.mock.calls.length ).toBe( 1 ); - expect( dispatchArg.type ).toBe( PERUSE_TYPES.SET_NETWORK_STATUS ); - expect( dispatchArg.payload ).toBe( SAFE.NETWORK_STATE.CONNECTED ); + expect( dispatchArgument.type ).toBe( PERUSE_TYPES.SET_NETWORK_STATUS ); + expect( dispatchArgument.payload ).toBe( SAFE.NETWORK_STATE.CONNECTED ); } ); it( 'network callback dispatches actions on Disconnected', () => { @@ -45,19 +45,19 @@ describe( 'Network callback', () => { getState: () => initialState, dispatch: jest.fn() }; - const networkCb = onNetworkStateChange( mockStore ); - networkCb( 'Disconnected' ); - const dispatchArgOne = mockStore.dispatch.mock.calls[0][0]; - const dispatchArgTwo = mockStore.dispatch.mock.calls[1][0]; + const networkCallback = onNetworkStateChange( mockStore ); + networkCallback( 'Disconnected' ); + const dispatchArgumentOne = mockStore.dispatch.mock.calls[0][0]; + const dispatchArgumentTwo = mockStore.dispatch.mock.calls[1][0]; expect( mockStore.dispatch.mock.calls.length ).toBe( 2 ); - expect( dispatchArgOne.type ).toBe( PERUSE_TYPES.SET_NETWORK_STATUS ); - expect( dispatchArgOne.payload ).toBe( SAFE.NETWORK_STATE.DISCONNECTED ); + expect( dispatchArgumentOne.type ).toBe( PERUSE_TYPES.SET_NETWORK_STATUS ); + expect( dispatchArgumentOne.payload ).toBe( SAFE.NETWORK_STATE.DISCONNECTED ); - expect( dispatchArgTwo.type ).toBe( TYPES.ADD_NOTIFICATION ); - expect( dispatchArgTwo.payload.title ).toBe( 'Network state: Disconnected' ); - expect( dispatchArgTwo.payload.body ).toBe( 'Reconnecting...' ); + expect( dispatchArgumentTwo.type ).toBe( TYPES.ADD_NOTIFICATION ); + expect( dispatchArgumentTwo.payload.title ).toBe( 'Network state: Disconnected' ); + expect( dispatchArgumentTwo.payload.body ).toBe( 'Reconnecting...' ); } ); it( 'network callback invokes operation to begin reconnection attempts upon Disconnect event', () => { @@ -71,8 +71,8 @@ describe( 'Network callback', () => { dispatch: jest.fn() }; const mockAttemptReconnect = jest.fn(); - const networkCb = onNetworkStateChange( mockStore, mockAttemptReconnect ); - networkCb( 'Disconnected' ); + const networkCallback = onNetworkStateChange( mockStore, mockAttemptReconnect ); + networkCallback( 'Disconnected' ); expect( mockAttemptReconnect.mock.calls.length ).toBe( 1 ); } ); } ); diff --git a/app/extensions/safe/test/app/webviewPreload.spec.ts b/app/extensions/safe/test/app/webviewPreload.spec.ts index 2e25edded..359b0e0c2 100644 --- a/app/extensions/safe/test/app/webviewPreload.spec.ts +++ b/app/extensions/safe/test/app/webviewPreload.spec.ts @@ -11,7 +11,7 @@ jest.mock( 'extensions/safe/ffi/refs/parsers', () => ( {} ) ); jest.mock( 'ref-array', () => jest.fn() ); // -jest.mock( 'ffi', () => jest.fn() ); +jest.mock( 'ffi-napi', () => jest.fn() ); jest.mock( 'extensions/safe/ffi/authenticator', () => jest.fn() ); jest.mock( '@maidsafe/safe-node-app', () => jest.fn() ); @@ -52,7 +52,7 @@ describe( 'SAFE manageWebIdUpdates', () => { test( 'webIdEventEmitter should emit events', async () => { expect.assertions( 1 ); const theData = 'webId!!!'; - win.webIdEventEmitter.on( 'update', data => { + win.webIdEventEmitter.on( 'update', ( data ) => { expect( data ).toBe( theData ); } ); diff --git a/app/extensions/safe/test/auth/ipc.spec.ts b/app/extensions/safe/test/auth/ipc.spec.ts index 8ccb0f893..abfdade42 100644 --- a/app/extensions/safe/test/auth/ipc.spec.ts +++ b/app/extensions/safe/test/auth/ipc.spec.ts @@ -7,7 +7,7 @@ jest.mock( 'extensions/safe/ffi/refs/parsers', () => ( {} ) ); jest.mock( 'ref-array', () => jest.fn() ); // -jest.mock( 'ffi', () => jest.fn() ); +jest.mock( 'ffi-napi', () => jest.fn() ); jest.mock( '@maidsafe/safe-node-app', () => jest.fn() ); diff --git a/app/extensions/safe/test/locales/en.json b/app/extensions/safe/test/locales/en.json index addfe1a9c..579349f5c 100644 --- a/app/extensions/safe/test/locales/en.json +++ b/app/extensions/safe/test/locales/en.json @@ -4,7 +4,8 @@ "should_not_be_empty": "messages.should_not_be_empty", "must_be_string": "messages.must_be_string", "invalid_params": "messages.invalid_params", - "invalid_req": "messages.invalid_req" + "invalid_req": "messages.invalid_req", + "unauthorised": "messages.unauthorised" }, "Secret": "Secret", "AppId": "AppId" diff --git a/app/extensions/safe/webviewPreload.ts b/app/extensions/safe/webviewPreload.ts index 50fd99117..74182f485 100644 --- a/app/extensions/safe/webviewPreload.ts +++ b/app/extensions/safe/webviewPreload.ts @@ -6,6 +6,7 @@ import safe from '@maidsafe/safe-node-app'; import { PROTOCOLS, CONFIG } from '$Constants'; import { manifest as authManifest } from '$Extensions/safe/auth-api/manifest'; import { callIPC } from './ffi/ipc'; +import { Store } from 'redux'; // shim for rdflib.js const _setImmediate = setImmediate; @@ -24,9 +25,10 @@ class WebIdEvents extends EventEmitter {} const webIdEventEmitter = new WebIdEvents(); -export const onPreload = ( passedStore, win = window ) => { +export const onPreload = ( passedStore : Store, win = window ) => { watchForExpermentalChangesAndReload( passedStore, win ); setupPreloadedSafeAuthApis( passedStore, win ); + setupSafeAPIs( passedStore, win ); setupWebIdEventEmitter( passedStore, win ); }; @@ -34,7 +36,7 @@ export const onPreload = ( passedStore, win = window ) => { * Set the window var for experimentsEnabled for Tab api import. * Also subscrives to the store to watch for updates / trigger reload. */ -const watchForExpermentalChangesAndReload = ( passedStore, win = window ) => { +const watchForExpermentalChangesAndReload = ( passedStore : Store, win = window ) => { const stopListening = passedStore.subscribe( async () => { const safeBrowserAppState = passedStore.getState().safeBrowserApp; const { experimentsEnabled } = safeBrowserAppState; @@ -52,7 +54,7 @@ const watchForExpermentalChangesAndReload = ( passedStore, win = window ) => { } ); }; -export const setupWebIdEventEmitter = ( passedStore, win = window ) => { +export const setupWebIdEventEmitter = ( passedStore : Store, win = window ) => { const safeBrowserAppState = passedStore.getState().safeBrowserApp; const { experimentsEnabled } = safeBrowserAppState; @@ -73,12 +75,12 @@ export const setupWebIdEventEmitter = ( passedStore, win = window ) => { } }; -export const setupSafeAPIs = ( passedStore, win = window ) => { +export const setupSafeAPIs = ( passedStore : Store , win = window ) => { logger.info( 'Setup up SAFE Dom API via @maidsafe/safe-node-app' ); // use from passed object if present (for testing) win.safe = win.safe || { ...safe }; - win.process = null; + // win.process = null; const safeBrowserAppState = passedStore.getState().safeBrowserApp; const { experimentsEnabled } = safeBrowserAppState; @@ -155,38 +157,37 @@ export const setupSafeAPIs = ( passedStore, win = window ) => { }; }; -export const setupPreloadedSafeAuthApis = ( passedStore, win = window ) => { - setupSafeAPIs( passedStore, win ); - window[pkg.name] = { version: VERSION }; +export const setupPreloadedSafeAuthApis = ( passedStore : Store, win = window ) => { + win[pkg.name] = { version: VERSION }; // TODO: Abstract into extension. - if ( !window.location.protocol === PROTOCOLS.SAFE_AUTH ) { + if ( !win.location.protocol.startsWith( PROTOCOLS.SAFE_AUTH ) ) { return; } - window.safeAuthenticator = {}; + win.safeAuthenticator = {}; const safeAppGroupId = ( ( Math.random() * 1000 ) | 0 ) + Date.now(); - window.safeAppGroupId = safeAppGroupId; + win.safeAppGroupId = safeAppGroupId; authManifest.forEach( func => { - window.safeAuthenticator[func] = createRemoteCall( func, passedStore ); + win.safeAuthenticator[func] = createRemoteCall( func, passedStore ); } ); - window.safeAuthenticator.getNetworkState = () => { + win.safeAuthenticator.getNetworkState = () => { const state = passedStore.getState(); logger.info( 'getting the network state!', state.authenticator.networkState ); return { state: state.authenticator.networkState }; }; - window.safeAuthenticator.isAuthorised = () => { + win.safeAuthenticator.isAuthorised = () => { const state = passedStore.getState(); return state.authenticator.isAuthorised; }; - window.safeAuthenticator.setIsAuthorised = isAuthorised => + win.safeAuthenticator.setIsAuthorised = isAuthorised => callIPC.setIsAuthorisedState( passedStore, isAuthorised ); - window.safeAuthenticator.getAuthenticatorHandle = () => { + win.safeAuthenticator.getAuthenticatorHandle = () => { const state = passedStore.getState(); logger.info( 'window method for get auth handle being called', @@ -195,16 +196,16 @@ export const setupPreloadedSafeAuthApis = ( passedStore, win = window ) => { return state.authenticator.authenticatorHandle; }; - window.safeAuthenticator.getLibStatus = () => { + win.safeAuthenticator.getLibStatus = () => { const state = passedStore.getState(); return state.authenticator.libStatus; }; - window.safeAuthenticator.setReAuthoriseState = state => + win.safeAuthenticator.setReAuthoriseState = state => callIPC.setReAuthoriseState( state, passedStore ); // Add custom and continual listeners. - window.safeAuthenticator.setNetworkListener = cb => { + win.safeAuthenticator.setNetworkListener = cb => { const callId = Math.random().toString( 36 ); passedStore.dispatch( @@ -221,7 +222,7 @@ export const setupPreloadedSafeAuthApis = ( passedStore, win = window ) => { }; }; - window.safeAuthenticator.setAppListUpdateListener = cb => { + win.safeAuthenticator.setAppListUpdateListener = cb => { const callId = Math.random().toString( 36 ); passedStore.dispatch( @@ -238,7 +239,7 @@ export const setupPreloadedSafeAuthApis = ( passedStore, win = window ) => { }; }; - window.safeAuthenticator.setIsAuthorisedListener = cb => { + win.safeAuthenticator.setIsAuthorisedListener = cb => { const callId = Math.random().toString( 36 ); passedStore.dispatch( diff --git a/app/logger.ts b/app/logger.ts index e32847e93..7554f6eda 100644 --- a/app/logger.ts +++ b/app/logger.ts @@ -4,6 +4,7 @@ import os from 'os'; import { currentWindowId, env, + inTabProcess, isRunningUnpacked, isRunningPackaged, isRunningDebug, @@ -36,6 +37,9 @@ if ( log.transports ) { log.transports.file.file = path.resolve( os.tmpdir(), 'safe-browser.log' ); log.transports.console.format = '[{label} {h}:{i}:{s}.{ms}] › {text}'; + if ( inTabProcess ) { + log.variables.label = `A Tab: `; + } if ( currentWindowId ) { log.variables.label = `window ${currentWindowId}`; } @@ -81,19 +85,20 @@ if ( inMainProcess && !isRunningSpectronTestProcess ) { log.info( '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' ); log.info( '' ); - // process.on( 'uncaughtTypeError', err => - // { - // log.error( - // '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' - // ); - // log.error( 'whoops! there was an uncaught type error:' ); - // log.error( err ); - // log.error( err.file ); - // log.error( err.line ); - // log.error( - // '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' - // ); - // } ); + process.on( 'uncaughtTypeError', error => + { + log.error( + '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' + ); + log.error( 'whoops! there was an uncaught type error:' ); + console.log('HER EI AM',error) + log.error( error ); + log.error( error.file ); + log.error( error.line ); + log.error( + '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' + ); + } ); process.on( 'uncaughtException', ( err: NodeError ) => { log.error( '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>' ); diff --git a/app/main.dev.ts b/app/main.dev.ts index 3a5ce3ca3..ad7e9105b 100644 --- a/app/main.dev.ts +++ b/app/main.dev.ts @@ -15,7 +15,7 @@ import os from 'os'; import path from 'path'; import fs from 'fs'; -import { app, protocol, ipcMain, shell } from 'electron'; +import { app, ipcMain, BrowserWindow } from 'electron'; import { logger } from '$Logger'; import { @@ -30,8 +30,6 @@ import { CONFIG } from '$Constants'; -import pkg from '$Package'; - import setupBackground from './setupBackground'; import openWindow from './openWindow'; @@ -69,7 +67,7 @@ ipcMain.on( 'open', ( event, data ) => { open( data ); } ); -let mainWindow = null; +export let mainWindow: BrowserWindow; // Do any pre app extension work preAppLoad(); @@ -85,8 +83,6 @@ if ( process.argv.includes( '--preload' ) ) { } } -protocol.registerStandardSchemes( pkg.build.protocols.schemes, { secure: true } ); - if ( isRunningPackaged ) { const sourceMapSupport = require( 'source-map-support' ); sourceMapSupport.install(); @@ -111,55 +107,30 @@ const installExtensions = async () => { const extensions = ['REACT_DEVELOPER_TOOLS', 'REDUX_DEVTOOLS']; return Promise.all( - extensions.map( name => installer.default( installer[name], forceDownload ) ) + extensions.map( ( name ) => installer.default( installer[name], forceDownload ) ) ).catch( console.log ); }; -const shouldQuit = app.makeSingleInstance( commandLine => { - // We expect the URI to be the last argument - const uri = commandLine[commandLine.length - 1]; +app.on( 'ready', async () => { + const obtainedInstanceLock = app.requestSingleInstanceLock(); - if ( commandLine.length >= 2 && uri ) { - onReceiveUrl( store, uri ); - } + if ( !obtainedInstanceLock ) { + console.error( 'Unable to obtain instance lock. Quitting...' ); + app.quit(); + } else { + app.on( 'second-instance', ( event, commandLine ) => { + const uri = commandLine[commandLine.length - 1]; - // Someone tried to run a second instance, we should focus our window - if ( mainWindow ) { - if ( mainWindow.isMinimized() ) mainWindow.restore(); - mainWindow.focus(); - } -} ); + if ( commandLine.length >= 2 && uri ) { + onReceiveUrl( store, uri ); + } -app.on( 'ready', async () => { - // For electron upgrade: - // const gotTheLock = app.requestSingleInstanceLock() - // - // if (!gotTheLock) { - // console.error('Not got the lock. This is so sad') - // app.quit() - // } else { - // app.on('second-instance', (event, commandLine, workingDirectory) => { - // // We expect the URI to be the last argument - // const uri = commandLine[commandLine.length - 1]; - // - // if ( commandLine.length >= 2 && uri ) - // { - // onReceiveUrl( store, uri ); - // } - // - // // Someone tried to run a second instance, we should focus our window. - // if ( mainWindow ) - // { - // if ( mainWindow.isMinimized() ) mainWindow.restore(); - // mainWindow.focus(); - // } - // }) - // } - - if ( shouldQuit ) { - console.info( 'This instance should quit. Ciao!' ); - app.exit(); - return; + // Someone tried to run a second instance, we should focus our window + if ( mainWindow ) { + if ( mainWindow.isMinimized() ) mainWindow.restore(); + mainWindow.focus(); + } + } ); } logger.info( 'App Ready' ); @@ -170,9 +141,9 @@ app.on( 'ready', async () => { } if ( process.platform === 'linux' || process.platform === 'win32' ) { - const uriArg = process.argv[process.argv.length - 1]; - if ( process.argv.length >= 2 && uriArg && uriArg.indexOf( 'safe' ) === 0 ) { - onReceiveUrl( store, uriArg ); + const uriArgument = process.argv[process.argv.length - 1]; + if ( process.argv.length >= 2 && uriArgument && uriArgument.indexOf( 'safe' ) === 0 ) { + onReceiveUrl( store, uriArgument ); if ( mainWindow ) { mainWindow.show(); diff --git a/app/openWindow.ts b/app/openWindow.ts index 64aac61c6..27f862fa2 100644 --- a/app/openWindow.ts +++ b/app/openWindow.ts @@ -37,7 +37,7 @@ function getNewWindowPosition( mainWindowState ) { return newWindowPosition; } -const openWindow = store => { +const openWindow = ( store ) => { const mainWindowState = windowStateKeeper( { defaultWidth: 2048, defaultHeight: 1024 @@ -59,10 +59,10 @@ const openWindow = store => { titleBarStyle: 'hiddenInset', icon: appIcon, webPreferences: { - partition: 'persist:safe-tab' - // preload : path.join( __dirname, 'browserPreload.js' ) - // isRunningUnpacked ? - // `http://localhost:${devPort}/webPreload.js` : `file://${ __dirname }/browserPreload.js`; + partition: 'persist:safe-tab', + webviewTag: true, + nodeIntegration: true, + backgroundThrottling: false } }; @@ -72,8 +72,11 @@ const openWindow = store => { mainWindow.loadURL( `file://${__dirname}/app.html` ); - // @TODO: Use 'ready-to-show' event - // https://github.com/electron/electron/blob/master/docs/api/browser-window.md#using-ready-to-show-event + mainWindow.webContents.once( 'ready-to-show', async () => { + // before show let state load + mainWindow.show(); + mainWindow.focus(); + } ); mainWindow.webContents.on( 'did-finish-load', async () => { if ( !mainWindow ) { @@ -82,10 +85,6 @@ const openWindow = store => { await onOpenLoadExtensions( store ); - // before show lets load state - mainWindow.show(); - mainWindow.focus(); - if ( isRunningDebug && !isRunningSpectronTestProcess ) { mainWindow.openDevTools( { mode: 'undocked' } ); } @@ -93,8 +92,8 @@ const openWindow = store => { const webContentsId = mainWindow.webContents.id; if ( browserWindowArray.length === 1 ) { const allTabs = store.getState().tabs; - const orphanedTabs = allTabs.filter( tab => !tab.windowId ); - orphanedTabs.forEach( orphan => { + const orphanedTabs = allTabs.filter( ( tab ) => !tab.windowId ); + orphanedTabs.forEach( ( orphan ) => { store.dispatch( updateTab( { index: orphan.index, windowId: webContentsId } ) ); diff --git a/app/store/configureStore.dev.ts b/app/store/configureStore.dev.ts index 4f9819281..14477c687 100644 --- a/app/store/configureStore.dev.ts +++ b/app/store/configureStore.dev.ts @@ -6,10 +6,10 @@ import { Reducer, StoreEnhancer } from 'redux'; -import { createHashHistory, History } from 'history'; +import { createBrowserHistory, History } from 'history'; import { routerMiddleware, routerActions } from 'connected-react-router'; import { createLogger } from 'redux-logger'; - +import { logger } from '$Logger'; import { inRendererProcess, isRunningSpectronTestProcess } from '$Constants'; import { addMiddlewares } from '$Store/addMiddlewares'; @@ -30,7 +30,7 @@ const initialStateFromMain: {} = inRendererProcess let ourHistory: History; if ( inRendererProcess ) { - ourHistory = createHashHistory(); + ourHistory = createBrowserHistory(); } const rootReducer: Reducer = createRootReducer( ourHistory ); diff --git a/app/store/configureStore.prod.ts b/app/store/configureStore.prod.ts index 4f9819281..5e5bb1fed 100644 --- a/app/store/configureStore.prod.ts +++ b/app/store/configureStore.prod.ts @@ -6,7 +6,7 @@ import { Reducer, StoreEnhancer } from 'redux'; -import { createHashHistory, History } from 'history'; +import { createBrowserHistory, History } from 'history'; import { routerMiddleware, routerActions } from 'connected-react-router'; import { createLogger } from 'redux-logger'; @@ -30,7 +30,7 @@ const initialStateFromMain: {} = inRendererProcess let ourHistory: History; if ( inRendererProcess ) { - ourHistory = createHashHistory(); + ourHistory = createBrowserHistory(); } const rootReducer: Reducer = createRootReducer( ourHistory ); diff --git a/app/webPreload.ts b/app/webPreload.ts index 9361b4bea..5efbb0ccb 100644 --- a/app/webPreload.ts +++ b/app/webPreload.ts @@ -25,7 +25,7 @@ store.subscribe( async () => { const state = store.getState(); const calls = state.remoteCalls; - calls.forEach( theCall => { + calls.forEach( ( theCall ) => { if ( theCall === pendingCalls[theCall.id] ) { return; } @@ -39,15 +39,15 @@ store.subscribe( async () => { if ( theCall.done && callPromises.resolve ) { pendingCalls[theCall.id] = theCall; - let callbackArgs = theCall.response; + let callbackArguments = theCall.response; - callbackArgs = [theCall.response]; + callbackArguments = [theCall.response]; if ( theCall.isListener ) { // error first - callPromises.resolve( null, ...callbackArgs ); + callPromises.resolve( null, ...callbackArguments ); } - callPromises.resolve( ...callbackArgs ); + callPromises.resolve( ...callbackArguments ); store.dispatch( removeRemoteCall( theCall ) ); delete pendingCalls[theCall.id]; diff --git a/configs/webpack.config.browser-preload.prod.babel.js b/configs/webpack.config.browser-preload.prod.babel.js deleted file mode 100644 index e11f680f1..000000000 --- a/configs/webpack.config.browser-preload.prod.babel.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Webpack config for production electron main process - */ - -import path from 'path'; -import webpack from 'webpack'; -import merge from 'webpack-merge'; -import TerserPlugin from 'terser-webpack-plugin'; -import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; -import baseConfig from './webpack.config.base'; -import CheckNodeEnv from '../internals/scripts/CheckNodeEnv'; - -CheckNodeEnv( 'production' ); - -export default merge.smart( baseConfig, { - devtool: 'source-map', - - mode: 'production', - - target: 'electron-renderer', - - entry: './app/browserPreload.ts', - - output: { - path: path.join( __dirname, '..' ), - filename: './app/browserPreload.prod.js' - }, - - optimization: { - minimizer: process.env.E2E_BUILD - ? [] - : [ - new TerserPlugin( { - parallel: true, - sourceMap: true, - cache: true - } ) - ] - }, - - plugins: [ - new BundleAnalyzerPlugin( { - analyzerMode: - process.env.OPEN_ANALYZER === 'true' ? 'server' : 'disabled', - openAnalyzer: process.env.OPEN_ANALYZER === 'true' - } ), - - /** - * Create global constants which can be configured at compile time. - * - * Useful for allowing different behaviour between development builds and - * release builds - * - * NODE_ENV should be production so that modules do not perform certain - * development checks - */ - new webpack.EnvironmentPlugin( { - NODE_ENV: 'production', - DEBUG_PROD: false, - START_MINIMIZED: false - } ) - ], - - /** - * Disables webpack processing of __dirname and __filename. - * If you run the bundle in node.js it falls back to these values of node.js. - * https://github.com/webpack/webpack/issues/2010 - */ - node: { - __dirname: false, - __filename: false - } -} ); diff --git a/package.json b/package.json index ecb9e2b1a..0cbe9bac3 100644 --- a/package.json +++ b/package.json @@ -6,12 +6,11 @@ "vendor": "MaidSafe.net Ltd", "description": "Electron web browser. React/redux powered with an aim of extensiblity.", "scripts": { - "build": "concurrently \"yarn run build-main\" \"yarn run build-renderer\" \"yarn run build-webPreload\" \"yarn run build-browserPreload\" \"yarn run build-bg\" \"yarn run build-auth-app\"", + "build": "concurrently \"yarn run build-main\" \"yarn run build-renderer\" \"yarn run build-webPreload\" \"yarn run build-bg\" \"yarn run build-auth-app\"", "build-dll": "cross-env NODE_ENV=development webpack --config ./configs/webpack.config.renderer.dev.dll.babel.js --colors", "build-e2e": "cross-env E2E_BUILD=true yarn build", "build-main": "cross-env NODE_ENV=production webpack --config ./configs/webpack.config.main.prod.babel.js --colors", "build-auth-app": "cross-env NODE_ENV=production webpack --config app/extensions/safe/auth-web-app/webpack.config.babel.js --progress --profile --colors", - "build-browserPreload": "cross-env NODE_ENV=production webpack --config ./configs/webpack.config.browser-preload.prod.babel.js --colors", "build-bg": "cross-env NODE_ENV=production webpack --config ./configs/webpack.config.background.prod.babel.js --colors", "build-webPreload": "cross-env NODE_ENV=production webpack --config ./configs/webpack.config.web-preload.prod.babel.js --colors", "build-renderer": "cross-env NODE_ENV=production webpack --config ./configs/webpack.config.renderer.prod.babel.js --colors", @@ -42,7 +41,7 @@ "postinstall": "electron-builder install-app-deps package.json && yarn build-dll && yarn build-e2e && opencollective-postinstall && yarn run install-prod && node app/extensions/safe/install-dev-libs.js", "precommit": "lint-staged", "prestart": "yarn build", - "rebuild": "npm rebuild --runtime=electron --target=2.0.18 --disturl=https://atom.io/download/atom-shell --build-from-source", + "rebuild": "npm rebuild --runtime=electron --target=5.0.0 --disturl=https://atom.io/download/atom-shell --build-from-source", "start": "cross-env NODE_ENV=production electron ./app/main.prod.js", "start-main-dev": "cross-env HOT=1 IS_UNPACKED=true electron -r babel-register-ts ./app/main.dev.ts", "start-renderer-dev": "cross-env webpack-dev-server --config configs/webpack.config.renderer.dev.babel.js", @@ -224,15 +223,15 @@ "@babel/preset-env": "^7.4.1", "@babel/preset-react": "^7.0.0", "@babel/register": "^7.4.0", - "@commitlint/cli": "7.5.0", + "@commitlint/cli": "7.5.2", "@commitlint/config-conventional": "7.5.0", "@types/jest": "24.0.11", - "@types/node": "11.11.4", - "@types/react": "16.8.8", + "@types/node": "11.13.4", + "@types/react": "16.8.13", "@types/react-router-dom": "4.3.1", "@types/webpack-env": "1.13.9", "@types/window-or-global": "1.0.0", - "@typescript-eslint/eslint-plugin": "1.4.2", + "@typescript-eslint/eslint-plugin": "1.6.0", "@typescript-eslint/parser": "1.6.0", "babel-core": "7.0.0-bridge.0", "babel-eslint": "10.0.1", @@ -249,21 +248,21 @@ "classnames": "^2.2.6", "concurrently": "^4.1.0", "connected-react-router": "^5.0.1", - "copy-webpack-plugin": "4.6.0", - "core-js": "3.0.0", + "copy-webpack-plugin": "5.0.2", + "core-js": "3.0.1", "cross-env": "^5.2.0", "cross-spawn": "^6.0.5", "css-loader": "^2.1.0", "deps_downloader": "https://s3.eu-west-2.amazonaws.com/deps-downloader/deps_downloader-0.1.0.tgz", "devtron": "^1.4.0", - "electron": "2.0.18", - "electron-builder": "20.38.5", + "electron": "5.0.0", + "electron-builder": "20.39.0", "electron-devtools-installer": "^2.2.4", - "electron-window-state": "^4.1.1", + "electron-window-state": "^5.0.3", "enzyme": "^3.7.0", "enzyme-adapter-react-16": "^1.7.0", "enzyme-to-json": "^3.3.4", - "eslint": "5.15.3", + "eslint": "5.16.0", "eslint-config-airbnb": "^17.1.0", "eslint-config-airbnb-typescript": "1.1.0", "eslint-config-prettier": "^4.1.0", @@ -289,7 +288,7 @@ "less": "3.9.0", "less-loader": "4.1.0", "lint-staged": "^8.1.5", - "mini-css-extract-plugin": "^0.5.0", + "mini-css-extract-plugin": "^0.6.0", "node-sass": "^4.10.0", "opencollective-postinstall": "^2.0.1", "opensans-npm-webfont": "1.0.0", @@ -299,29 +298,29 @@ "postcss-scss": "^2.0.0", "precss": "^4.0.0", "prettier": "^1.15.2", - "query-string": "6.2.0", + "query-string": "6.4.2", "raf": "3.4.1", "react-test-renderer": "^16.6.3", "redux-logger": "^3.0.6", "redux-mock-store": "1.5.3", "redux-promise-middleware": "5.1.1", - "resolve-url-loader": "3.0.0", + "resolve-url-loader": "3.1.0", "rimraf": "^2.6.2", "sass-loader": "^7.1.0", - "should": "13.1.3", + "should": "13.2.3", "sinon": "^7.1.1", - "spectron": "4", + "spectron": "5.0.0", "standard-version": "5.0.2", "style-loader": "^0.23.1", "stylelint": "^9.8.0", "stylelint-config-prettier": "^5.0.0", "stylelint-config-standard": "^18.2.0", "terser-webpack-plugin": "^1.1.0", - "testcafe": "1.1.0", + "testcafe": "1.1.2", "testcafe-browser-provider-electron": "https://github.com/joshuef/testcafe-browser-provider-electron.git#OSXFixed", "testcafe-live": "^0.1.4", "testcafe-react-selectors": "3.1.0", - "typescript": "3.3.4000", + "typescript": "3.4.3", "url-loader": "^1.1.2", "webpack": "^4.26.0", "webpack-bundle-analyzer": "^3.0.3", @@ -333,24 +332,23 @@ }, "dependencies": { "@babel/plugin-proposal-object-rest-spread": "7.4.3", - "@babel/preset-typescript": "7.1.0", + "@babel/preset-typescript": "7.3.3", "@fortawesome/fontawesome-free": "^5.5.0", - "@maidsafe/safe-node-app": "0.11.0", + "@maidsafe/safe-node-app": "https://github.com/joshuef/safe_app_nodejs#NAPI", "@types/redux": "3.6.0", "antd": "3.16.2", - "archiver": "2.1.0", "chalk": "^2.4.1", "detect-port": "^1.3.0", - "electron-context-menu": "0.11.0", - "electron-debug": "^2.1.0", - "electron-log": "3.0.1", + "electron-context-menu": "0.12.0", + "electron-debug": "^2.2.0", + "electron-log": "3.0.5", "electron-redux": "1.3.1", "electron-updater": "4.0.6", "enum": "2.5.0", - "ffi": "2.3.0", + "ffi-napi": "2.4.5", "fs-extra": "7.0.1", - "get-port": "4.1.0", - "history": "^4.7.2", + "get-port": "5.0.0", + "history": "4.9.0", "i18n": "0.8.3", "jest-tobetype": "git+https://github.com/joshuef/jest-tobetype.git#master", "lodash": ">=4.17.11", @@ -358,8 +356,7 @@ "open": "^6.1.0", "react": "^16.6.3", "react-dom": "^16.6.3", - "react-hot-loader": "^4.3.12", - "react-icons": "2.2.7", + "react-hot-loader": "^4.8.4", "react-redux": "^5.1.1", "react-redux-i18n": "1.9.3", "react-router": "^4.3.1", @@ -369,8 +366,8 @@ "redux-actions": "2.6.5", "redux-promise": "0.6.0", "redux-thunk": "^2.3.0", - "ref": "1.3.5", "ref-array": "1.2.0", + "ref-napi": "1.4.1", "ref-struct": "1.1.0", "source-map-support": "^0.5.10", "tslint": "5.15.0", diff --git a/yarn.lock b/yarn.lock index 07292a068..fc48d3be5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -853,7 +853,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-transform-typescript@^7.1.0": +"@babel/plugin-transform-typescript@^7.3.2": version "7.4.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.4.0.tgz#0389ec53a34e80f99f708c4ca311181449a68eb1" integrity sha512-U7/+zKnRZg04ggM/Bm+xmu2B/PrwyDQTT/V89FXWYWNMxBDwSx56u6jtk9SEbfLFbZaEI72L+5LPvQjeZgFCrQ== @@ -935,13 +935,13 @@ "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" -"@babel/preset-typescript@7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.1.0.tgz#49ad6e2084ff0bfb5f1f7fb3b5e76c434d442c7f" - integrity sha512-LYveByuF9AOM8WrsNne5+N79k1YxjNB6gmpCQsnuSBAcV8QUeB+ZUxQzL7Rz7HksPbahymKkq2qBR+o36ggFZA== +"@babel/preset-typescript@7.3.3": + version "7.3.3" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.3.3.tgz#88669911053fa16b2b276ea2ede2ca603b3f307a" + integrity sha512-mzMVuIP4lqtn4du2ynEfdO0+RYcslwrZiJHXu4MGaC1ctJiW2fyaeDrtjJGs7R/KebZ1sgowcIoWf4uRpEfKEg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.1.0" + "@babel/plugin-transform-typescript" "^7.3.2" "@babel/register@^7.4.0": version "7.4.0" @@ -1010,13 +1010,13 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@commitlint/cli@7.5.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-7.5.0.tgz#6967633e45239daa09f1ff080cbd66e6e9ac11bc" - integrity sha512-ts5b7eCF5B2qhUtgXuFFVkhlgnkSqKVyrq9Eu197bCyT1KyxCmAGTVCvPznaK8VhG3ts7rTt7byE+lyDXpuvSg== +"@commitlint/cli@7.5.2": + version "7.5.2" + resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-7.5.2.tgz#2475cd8f7ed3b2f9c2ab96c06bc24d61d23f8716" + integrity sha512-UQdW/wNb+XeANoYYLyuKEDIfWKSzdhJkPQZ8ie/IjfMNnsP+B23bkX4Ati+6U8zgz0yyngoxWl+3lfExiIL4hQ== dependencies: "@commitlint/format" "^7.5.0" - "@commitlint/lint" "^7.5.0" + "@commitlint/lint" "^7.5.2" "@commitlint/load" "^7.5.0" "@commitlint/read" "^7.5.0" babel-polyfill "6.26.0" @@ -1061,7 +1061,7 @@ dependencies: semver "5.6.0" -"@commitlint/lint@^7.5.0": +"@commitlint/lint@^7.5.2": version "7.5.2" resolved "https://registry.yarnpkg.com/@commitlint/lint/-/lint-7.5.2.tgz#26cb819c74f8770413c4f6ef1e7abf1b739eda77" integrity sha512-DY/UfGFDquMno+5c6+tE50rMxpjdQK3CRG+nktgYlVz1UAqeUD+bRc3pvX5HwAsuGvyDrWAjtszHtEDeYJKcjw== @@ -1156,41 +1156,41 @@ resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.8.1.tgz#cbafbfe8894c4e3e3c3a9da6774e249ac1f2da8b" integrity sha512-GJtx6e55qLEOy2gPOsok2lohjpdWNGrYGtQx0FFT/++K4SYx+Z8LlPHdQBaFzKEwH5IbBB4fNgb//uyZjgYXoA== -"@jest/console@^24.6.0": - version "24.6.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.6.0.tgz#63225e6889f3865ab5b7a0d8797e8aed417c4e0b" - integrity sha512-nNZbwtZwW6dr7bvZpRBCdBNvZYi+jr6lfnubSOCELk/Km/5csDmGdqeS4qKwGKIVlHTyZ95MYExYevpdh26tDA== +"@jest/console@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" + integrity sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg== dependencies: "@jest/source-map" "^24.3.0" chalk "^2.0.1" slash "^2.0.0" -"@jest/core@^24.7.0": - version "24.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.7.0.tgz#7fd599fa89e7fcd0109a9f6d33fcce2da17a7f98" - integrity sha512-Ub8+TYkhYSTeQTUrrlDgfidpkVPjN8oZawagHlyJRrtITtR+FivmpqlfqmWziBgeJ3EuaWxF9Ctb55WvA95loA== +"@jest/core@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.7.1.tgz#6707f50db238d0c5988860680e2e414df0032024" + integrity sha512-ivlZ8HX/FOASfHcb5DJpSPFps8ydfUYzLZfgFFqjkLijYysnIEOieg72YRhO4ZUB32xu40hsSMmaw+IGYeKONA== dependencies: - "@jest/console" "^24.6.0" - "@jest/reporters" "^24.7.0" - "@jest/test-result" "^24.7.0" - "@jest/transform" "^24.7.0" + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.7.1" + "@jest/test-result" "^24.7.1" + "@jest/transform" "^24.7.1" "@jest/types" "^24.7.0" ansi-escapes "^3.0.0" chalk "^2.0.1" exit "^0.1.2" graceful-fs "^4.1.15" jest-changed-files "^24.7.0" - jest-config "^24.7.0" - jest-haste-map "^24.7.0" - jest-message-util "^24.7.0" + jest-config "^24.7.1" + jest-haste-map "^24.7.1" + jest-message-util "^24.7.1" jest-regex-util "^24.3.0" - jest-resolve-dependencies "^24.7.0" - jest-runner "^24.7.0" - jest-runtime "^24.7.0" - jest-snapshot "^24.7.0" - jest-util "^24.7.0" + jest-resolve-dependencies "^24.7.1" + jest-runner "^24.7.1" + jest-runtime "^24.7.1" + jest-snapshot "^24.7.1" + jest-util "^24.7.1" jest-validate "^24.7.0" - jest-watcher "^24.7.0" + jest-watcher "^24.7.1" micromatch "^3.1.10" p-each-series "^1.0.0" pirates "^4.0.1" @@ -1198,33 +1198,33 @@ rimraf "^2.5.4" strip-ansi "^5.0.0" -"@jest/environment@^24.7.0": - version "24.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.7.0.tgz#5ff0099e1c184e2bd3a0517f60135baf28836b2e" - integrity sha512-Vfv5vTPcE5Rp5TYK/hpUI07LV+OH6HOIpDNZ5lWLQ88HkPsDi9ILcSDLJs4tBZLcYltotlGapb5XUTjAfaRWow== +"@jest/environment@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.7.1.tgz#9b9196bc737561f67ac07817d4c5ece772e33135" + integrity sha512-wmcTTYc4/KqA+U5h1zQd5FXXynfa7VGP2NfF+c6QeGJ7c+2nStgh65RQWNX62SC716dTtqheTRrZl0j+54oGHw== dependencies: - "@jest/fake-timers" "^24.7.0" - "@jest/transform" "^24.7.0" + "@jest/fake-timers" "^24.7.1" + "@jest/transform" "^24.7.1" "@jest/types" "^24.7.0" jest-mock "^24.7.0" -"@jest/fake-timers@^24.7.0": - version "24.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.7.0.tgz#6735c6d88ee096a6303f369fa5fddef12f79779c" - integrity sha512-wwq54UIqxC0JsKNQcwJyD4JjSkUYV9rZ1qz2lGGG1iMrFgn6ls37GBo/Cay2qCcnmdyVy+kQ5RE1+7Un7Kw4ew== +"@jest/fake-timers@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.7.1.tgz#56e5d09bdec09ee81050eaff2794b26c71d19db2" + integrity sha512-4vSQJDKfR2jScOe12L9282uiwuwQv9Lk7mgrCSZHA9evB9efB/qx8i0KJxsAKtp8fgJYBJdYY7ZU6u3F4/pyjA== dependencies: "@jest/types" "^24.7.0" - jest-message-util "^24.7.0" + jest-message-util "^24.7.1" jest-mock "^24.7.0" -"@jest/reporters@^24.7.0": - version "24.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.7.0.tgz#f780e0811bd1de46ed78270eb622097387cbb442" - integrity sha512-iOLYOXtRJEkY//aI6b95U5T1JzcRrvfKAlk7zj5ab+4w/Drko9x0PaP0eRBMRvSolzwiXaF8f1zWId397N6Vyg== +"@jest/reporters@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.7.1.tgz#38ac0b096cd691bbbe3051ddc25988d42e37773a" + integrity sha512-bO+WYNwHLNhrjB9EbPL4kX/mCCG4ZhhfWmO3m4FSpbgr7N83MFejayz30kKjgqr7smLyeaRFCBQMbXpUgnhAJw== dependencies: - "@jest/environment" "^24.7.0" - "@jest/test-result" "^24.7.0" - "@jest/transform" "^24.7.0" + "@jest/environment" "^24.7.1" + "@jest/test-result" "^24.7.1" + "@jest/transform" "^24.7.1" "@jest/types" "^24.7.0" chalk "^2.0.1" exit "^0.1.2" @@ -1233,10 +1233,10 @@ istanbul-lib-coverage "^2.0.2" istanbul-lib-instrument "^3.0.1" istanbul-lib-source-maps "^3.0.1" - jest-haste-map "^24.7.0" - jest-resolve "^24.7.0" - jest-runtime "^24.7.0" - jest-util "^24.7.0" + jest-haste-map "^24.7.1" + jest-resolve "^24.7.1" + jest-runtime "^24.7.1" + jest-util "^24.7.1" jest-worker "^24.6.0" node-notifier "^5.2.1" slash "^2.0.0" @@ -1252,29 +1252,29 @@ graceful-fs "^4.1.15" source-map "^0.6.0" -"@jest/test-result@^24.7.0": - version "24.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.7.0.tgz#062631a3b1727ef4cc6521df152b9142a68f081f" - integrity sha512-bl7HcDnMYEemy/myEmc9AaO9YXxANADNYtXJRC9haolx8btNHY6q78YdL+jb/KC4vBmEEoK+OSgMae90C1tZMQ== +"@jest/test-result@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.7.1.tgz#19eacdb29a114300aed24db651e5d975f08b6bbe" + integrity sha512-3U7wITxstdEc2HMfBX7Yx3JZgiNBubwDqQMh+BXmZXHa3G13YWF3p6cK+5g0hGkN3iufg/vGPl3hLxQXD74Npg== dependencies: - "@jest/console" "^24.6.0" + "@jest/console" "^24.7.1" "@jest/types" "^24.7.0" "@types/istanbul-lib-coverage" "^2.0.0" -"@jest/test-sequencer@^24.7.0": - version "24.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.7.0.tgz#05a53b29a78269143489d9653da3b31f6e32c702" - integrity sha512-+i7aeDimhwDVzk6pt5r7ZPNMMJ6/p9jaIu6nVumXQjDR2UmuH+/QOnQcKml7+9/U/TEX9Fl61n+OoH+Ds0PTxw== +"@jest/test-sequencer@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.7.1.tgz#9c18e428e1ad945fa74f6233a9d35745ca0e63e0" + integrity sha512-84HQkCpVZI/G1zq53gHJvSmhUer4aMYp9tTaffW28Ih5OxfCg8hGr3nTSbL1OhVDRrFZwvF+/R9gY6JRkDUpUA== dependencies: - "@jest/test-result" "^24.7.0" - jest-haste-map "^24.7.0" - jest-runner "^24.7.0" - jest-runtime "^24.7.0" + "@jest/test-result" "^24.7.1" + jest-haste-map "^24.7.1" + jest-runner "^24.7.1" + jest-runtime "^24.7.1" -"@jest/transform@^24.7.0": - version "24.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.7.0.tgz#c74a1ee5c02f532c22bfc3cddf2685cc3ee5a9b4" - integrity sha512-jwgjrNaZjUuYAf9OZFgyChqEN9p/LS8YkK6D0vuORLXoxiBSZy76tX0/RkCkSkOjgI8IsFwccOJ6RcYBw45R6Q== +"@jest/transform@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.7.1.tgz#872318f125bcfab2de11f53b465ab1aa780789c2" + integrity sha512-EsOUqP9ULuJ66IkZQhI5LufCHlTbi7hrcllRMUEV/tOgqBVQi93+9qEvkX0n8mYpVXQ8VjwmICeRgg58mrtIEw== dependencies: "@babel/core" "^7.1.0" "@jest/types" "^24.7.0" @@ -1283,9 +1283,9 @@ convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.1.15" - jest-haste-map "^24.7.0" + jest-haste-map "^24.7.1" jest-regex-util "^24.3.0" - jest-util "^24.7.0" + jest-util "^24.7.1" micromatch "^3.1.10" realpath-native "^1.1.0" slash "^2.0.0" @@ -1300,23 +1300,22 @@ "@types/istanbul-lib-coverage" "^2.0.0" "@types/yargs" "^12.0.9" -"@maidsafe/safe-node-app@0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@maidsafe/safe-node-app/-/safe-node-app-0.11.0.tgz#a25c2c02e1ac58ea370053ac19ca619bf94ff971" - integrity sha512-7nHALH/+p4kyKJrdqWLgZRehMXLnZizgraLsy1Zed8KmRg2/apWZENMA3ct5Q+D0YagnR4me8nZFVoOqhbgdTA== +"@maidsafe/safe-node-app@https://github.com/joshuef/safe_app_nodejs#NAPI": + version "0.11.1" + resolved "https://github.com/joshuef/safe_app_nodejs#6cd9e4afa66aa9a27a461b58bf20827bf2215646" dependencies: cids bochaco/js-cid#temp-use-bochaco-multicodec cross-env "5.1.3" deps_downloader "https://s3.eu-west-2.amazonaws.com/deps-downloader/deps_downloader-0.3.0.tgz" enum "^2.3.0" - ffi "^2.3.0" + ffi-napi "2.4.5" mime "^2.0.3" multihashes "^0.4.14" rdflib "^0.19.1" - ref "^1.3.3" ref-array "^1.2.0" + ref-napi "1.4.1" ref-struct "^1.1.0" - weak "^1.0.1" + weak-napi "1.0.3" "@marionebl/sander@^0.6.0": version "0.6.1" @@ -1426,9 +1425,9 @@ text-encoding "^0.6.1" "@types/babel__core@^7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.0.tgz#710f2487dda4dcfd010ca6abb2b4dc7394365c51" - integrity sha512-wJTeJRt7BToFx3USrCDs2BhEi4ijBInTQjOIukj6a/5tEkwpFMVZ+1ppgmE+Q/FQyc5P/VWUbx7I9NELrKruHA== + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.1.tgz#ce9a9e5d92b7031421e1d0d74ae59f572ba48be6" + integrity sha512-+hjBtgcFPYyCTo0A15+nxrCVJL7aC6Acg87TXd5OW3QhHswdrOLoles+ldL2Uk8q++7yIfl4tURtztccdeeyOw== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -1463,6 +1462,11 @@ resolved "https://registry.yarnpkg.com/@types/error-stack-parser/-/error-stack-parser-1.3.18.tgz#e01c9f8c85ca83b610320c62258b0c9026ade0f7" integrity sha1-4ByfjIXKg7YQMgxiJYsMkCat4Pc= +"@types/estree@^0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -1514,21 +1518,16 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.0.tgz#b0df8d6ef9b5001b2be3a94d909ce3c29a80f9e1" integrity sha512-rx29MMkRdVmzunmiA4lzBYJNnXsW/PhG4kMBy2ATsYaDjGGR75dCFEVVROKpNwlVdcUX3xxlghKQOeDPBJobng== -"@types/node@11.11.4": - version "11.11.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.4.tgz#8808bd5a82bbf6f5d412eff1c228d178e7c24bb3" - integrity sha512-02tIL+QIi/RW4E5xILdoAMjeJ9kYq5t5S2vciUdFPXv/ikFTb0zK8q9vXkg4+WAJuYXGiVT1H28AkD2C+IkXVw== +"@types/node@11.13.4": + version "11.13.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.4.tgz#f83ec3c3e05b174b7241fadeb6688267fe5b22ca" + integrity sha512-+rabAZZ3Yn7tF/XPGHupKIL5EcAbrLxnTr/hgQICxbeuAfWtT0UZSfULE+ndusckBItcv4o6ZeOJplQikVcLvQ== -"@types/node@^10.12.19": +"@types/node@^10.12.18", "@types/node@^10.12.19": version "10.14.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.4.tgz#1c586b991457cbb58fef51bc4e0cfcfa347714b5" integrity sha512-DT25xX/YgyPKiHFOpNuANIQIVvYEwCWXgK2jYYwqgaMrYE6+tq+DtmMwlD3drl6DJbUwtlIDnn0d7tIn/EbXBg== -"@types/node@^8.0.24": - version "8.10.45" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.45.tgz#4c49ba34106bc7dced77ff6bae8eb6543cde8351" - integrity sha512-tGVTbA+i3qfXsLbq9rEq/hezaHY55QxQLeXQL2ejNgFAxxrgu8eMmYIOsRcl7hN1uTLVsKOOYacV/rcJM3sfgQ== - "@types/prop-types@*": version "15.7.0" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.0.tgz#4c48fed958d6dcf9487195a0ef6456d5f6e0163a" @@ -1571,10 +1570,10 @@ "@types/prop-types" "*" csstype "^2.2.0" -"@types/react@16.8.8": - version "16.8.8" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.8.tgz#4b60a469fd2469f7aa6eaa0f8cfbc51f6d76e662" - integrity sha512-xwEvyet96u7WnB96kqY0yY7qxx/pEpU51QeACkKFtrgjjXITQn0oO1iwPEraXVgh10ZFPix7gs1R4OJXF7P5sg== +"@types/react@16.8.13": + version "16.8.13" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.13.tgz#a82b15aad9ab91c40edca0d6889b7745ae24f053" + integrity sha512-otJ4ntMuHGrvm67CdDJMAls4WqotmAmW0g3HmWi9LCjSWXrxoXY/nHXrtmMfvPEEmGFNm6NdgMsJmnfH820Qaw== dependencies: "@types/prop-types" "*" csstype "^2.2.0" @@ -1624,29 +1623,20 @@ integrity sha1-tLyEgMN/5LrCNV96ksn/zYSCLJQ= "@types/yargs@^12.0.2", "@types/yargs@^12.0.9": - version "12.0.11" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.11.tgz#a090d88e1f40a910e6443c95493c1c035c76ebdc" - integrity sha512-IsU1TD+8cQCyG76ZqxP0cVFnofvfzT8p/wO8ENT4jbN/KKN3grsHFgHNl/U+08s33ayX4LwI85cEhYXCOlOkMw== + version "12.0.12" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916" + integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw== -"@typescript-eslint/eslint-plugin@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.4.2.tgz#370bc32022d1cc884a5dcf62624ef2024182769d" - integrity sha512-6WInypy/cK4rM1dirKbD5p7iFW28DbSRKT/+PGn+DYzBWEvHq5KnZAqQ5cX25JBc0qMkFxJNxNfBbFXJyyzVcw== +"@typescript-eslint/eslint-plugin@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.6.0.tgz#a5ff3128c692393fb16efa403ec7c8a5593dab0f" + integrity sha512-U224c29E2lo861TQZs6GSmyC0OYeRNg6bE9UVIiFBxN2MlA0nq2dCrgIVyyRbC05UOcrgf2Wk/CF2gGOPQKUSQ== dependencies: - "@typescript-eslint/parser" "1.4.2" - "@typescript-eslint/typescript-estree" "1.4.2" + "@typescript-eslint/parser" "1.6.0" + "@typescript-eslint/typescript-estree" "1.6.0" requireindex "^1.2.0" tsutils "^3.7.0" -"@typescript-eslint/parser@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.4.2.tgz#acfdee2019958a41d308d768e53ded975ef90ce8" - integrity sha512-OqLkY9295DXXaWToItUv3olO2//rmzh6Th6Sc7YjFFEpEuennsm5zhygLLvHZjPxPlzrQgE8UDaOPurDylaUuw== - dependencies: - "@typescript-eslint/typescript-estree" "1.4.2" - eslint-scope "^4.0.0" - eslint-visitor-keys "^1.0.0" - "@typescript-eslint/parser@1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.6.0.tgz#f01189c8b90848e3b8e45a6cdad27870529d1804" @@ -1656,14 +1646,6 @@ eslint-scope "^4.0.0" eslint-visitor-keys "^1.0.0" -"@typescript-eslint/typescript-estree@1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.4.2.tgz#b16bc36c9a4748a7fca92cba4c2d73c5325c8a85" - integrity sha512-wKgi/w6k1v3R4b6oDc20cRWro2gBzp0wn6CAeYC8ExJMfvXMfiaXzw2tT9ilxdONaVWMCk7B9fMdjos7bF/CWw== - dependencies: - lodash.unescape "4.0.1" - semver "5.5.0" - "@typescript-eslint/typescript-estree@1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.6.0.tgz#6cf43a07fee08b8eb52e4513b428c8cdc9751ef0" @@ -1828,7 +1810,7 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -JSONStream@^1.0.4, JSONStream@^1.3.4, JSONStream@^1.3.5: +JSONStream@^1.0.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== @@ -1841,7 +1823,7 @@ abab@^2.0.0: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== -abbrev@1, abbrev@~1.1.1: +abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== @@ -1872,10 +1854,12 @@ acorn-globals@^4.1.0: acorn "^6.0.1" acorn-walk "^6.0.1" -acorn-hammerhead@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/acorn-hammerhead/-/acorn-hammerhead-0.1.2.tgz#f9e5d5ce6e700c02adb04dad5eeb8e87fc50b26e" - integrity sha512-Jb0MFSnuyVE3mdVf/Hg8ol5XTmL2D0QWzVB2O3MQo+NkxJP2CmHOerZ9g5qThwCSusVFezUiGBZ4EKJZ1mZSLw== +acorn-hammerhead@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/acorn-hammerhead/-/acorn-hammerhead-0.2.0.tgz#46b3baf430bfb3c62436d663e4f33a9e1dad7794" + integrity sha512-kbX1s/0ZikW0WEBY6IrooFgX3AP2D9ycTg0OhxRYLF0Tew/bDK2+8lTxFR4cDdoCZm6Ax8eVf8EV6gbTtr8EYQ== + dependencies: + "@types/estree" "^0.0.39" acorn-jsx@^5.0.0: version "5.0.1" @@ -1909,44 +1893,44 @@ address@^1.0.1: resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" integrity sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg== -adjust-sourcemap-loader@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.2.0.tgz#e33fde95e50db9f2a802e3647e311d2fc5000c69" - integrity sha512-958oaHHVEXMvsY7v7cC5gEkNIcoaAVIhZ4mBReYVZJOTP9IgKmzLjIOhTtzpLMu+qriXvLsVjJ155EeInp45IQ== - dependencies: - assert "^1.3.0" - camelcase "^1.2.1" - loader-utils "^1.1.0" - lodash.assign "^4.0.1" - lodash.defaults "^3.1.2" - object-path "^0.9.2" - regex-parser "^2.2.9" - -agent-base@4, agent-base@^4.1.0, agent-base@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" - integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== +adjust-sourcemap-loader@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" + integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== dependencies: - es6-promisify "^5.0.0" + assert "1.4.1" + camelcase "5.0.0" + loader-utils "1.2.3" + object-path "0.11.4" + regex-parser "2.2.10" -agentkeepalive@^3.4.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" - integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== +airbnb-prop-types@^2.12.0: + version "2.13.2" + resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.13.2.tgz#43147a5062dd2a4a5600e748a47b64004cc5f7fc" + integrity sha512-2FN6DlHr6JCSxPPi25EnqGaXC4OC3/B3k1lCd6MMYrZ51/Gf/1qDfaR+JElzWa+Tl7cY2aYOlsYJGFeQyVHIeQ== dependencies: - humanize-ms "^1.2.1" + array.prototype.find "^2.0.4" + function.prototype.name "^1.1.0" + has "^1.0.3" + is-regex "^1.0.4" + object-is "^1.0.1" + object.assign "^4.1.0" + object.entries "^1.1.0" + prop-types "^15.7.2" + prop-types-exact "^1.2.0" + react-is "^16.8.6" ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.1.0, ajv-keywords@^3.2.0: +ajv-keywords@^3.1.0, ajv-keywords@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== -ajv@^6.1.0, ajv@^6.5.5, ajv@^6.7.0, ajv@^6.9.1: +ajv@^6.1.0, ajv@^6.5.5, ajv@^6.9.1, ajv@^6.9.2: version "6.10.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== @@ -2061,16 +2045,6 @@ ansi-wrap@0.1.0, ansi-wrap@^0.1.0: resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= -ansicolors@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" - integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= - -ansistyles@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" - integrity sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk= - ant-design-palettes@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/ant-design-palettes/-/ant-design-palettes-1.1.3.tgz#84119b1a4d86363adc52a38d587e65336a0a27dd" @@ -2149,37 +2123,42 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -app-builder-bin@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-2.6.3.tgz#428557e8fd517ef6272b3d85593ebb288c2aed90" - integrity sha512-JL8C41e6yGIchFsHP/q15aGNedAaUakLhkV6ER0Yxafx08sRnlDnlkAkEIKjX7edg/4i7swpGa6CBv1zX9GgCA== +app-builder-bin@2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-2.6.4.tgz#011cd9e7e144d52b43fffa15aff8039804d3078a" + integrity sha512-wC9HYqiC1XqpunT/9y2VuF90KbarnIHL90Tv8BD3TITTgbVIdRTXAsvWvmaR/ImvAX0+l5Z3jZtXjdJ7Pw3bLQ== -app-builder-lib@20.38.5, app-builder-lib@~20.38.5: - version "20.38.5" - resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-20.38.5.tgz#bdfbbc35e10571c6cf1f62daae95991d27686a03" - integrity sha512-vVgM9d9twwlhr+8vNAJOAD9dyVBRk7reuVa1BE1OmvaHb1M+fS8KpvcDKVdBqX9KDHy7zSc57mnIcHgax4/XMA== +app-builder-bin@2.6.6: + version "2.6.6" + resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-2.6.6.tgz#904b0576a510047d03f63c8a02c38eef47871180" + integrity sha512-G0Ee6xkbxV+fvM/7xXWIgSDjWAD4E/d/aNbxerq/TVsCyBIau/0VPmrEqBMyZv0NbTwLDW5aF/yHG+0ZEY77kA== + +app-builder-lib@20.39.0, app-builder-lib@~20.39.0: + version "20.39.0" + resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-20.39.0.tgz#197faba9cd7c32005d3882e6add051c4e182fdc3" + integrity sha512-lkxGyBrQwueYb3ViqHt5WjyzVVBQqXMXc7TF+JqkuuUWp5DF7SXAYZYd+rsR3gmCbdNxw4SPIEmWmm+I9LK2gw== dependencies: "7zip-bin" "~4.1.0" - app-builder-bin "2.6.3" + app-builder-bin "2.6.4" async-exit-hook "^2.0.1" - bluebird-lst "^1.0.6" - builder-util "9.6.2" - builder-util-runtime "8.1.1" + bluebird-lst "^1.0.7" + builder-util "9.7.0" + builder-util-runtime "8.2.0" chromium-pickle-js "^0.2.0" debug "^4.1.1" ejs "^2.6.1" electron-osx-sign "0.4.11" - electron-publish "20.38.5" - fs-extra-p "^7.0.0" + electron-publish "20.39.0" + fs-extra-p "^7.0.1" hosted-git-info "^2.7.1" is-ci "^2.0.0" isbinaryfile "^4.0.0" js-yaml "^3.12.1" - lazy-val "^1.0.3" + lazy-val "^1.0.4" minimatch "^3.0.4" - normalize-package-data "^2.4.0" + normalize-package-data "^2.5.0" plist "^3.0.1" - read-config-file "3.2.1" + read-config-file "3.2.2" sanitize-filename "^1.6.1" semver "^5.6.0" temp-file "^3.3.2" @@ -2191,16 +2170,11 @@ append-transform@^1.0.0: dependencies: default-require-extensions "^2.0.0" -aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2: +aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -"aproba@^1.1.2 || 2", aproba@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - archiver-utils@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" @@ -2213,20 +2187,6 @@ archiver-utils@^1.3.0: normalize-path "^2.0.0" readable-stream "^2.0.0" -archiver@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-2.1.0.tgz#d2df2e8d5773a82c1dcce925ccc41450ea999afd" - integrity sha1-0t8ujVdzqCwdzOklzMQUUOqZmv0= - dependencies: - archiver-utils "^1.3.0" - async "^2.0.0" - buffer-crc32 "^0.2.1" - glob "^7.0.0" - lodash "^4.8.0" - readable-stream "^2.0.0" - tar-stream "^1.5.0" - zip-stream "^1.2.0" - archiver@~2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/archiver/-/archiver-2.1.1.tgz#ff662b4a78201494a3ee544d3a33fe7496509ebc" @@ -2241,11 +2201,6 @@ archiver@~2.1.0: tar-stream "^1.5.0" zip-stream "^1.2.0" -archy@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= - are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" @@ -2385,6 +2340,14 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.find@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90" + integrity sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + array.prototype.flat@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz#812db8f02cad24d3fab65dd67eabe3b8903494a4" @@ -2399,7 +2362,7 @@ arrify@^1.0.0, arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asap@^2.0.0, asap@~2.0.3: +asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -2439,7 +2402,7 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert@^1.1.1, assert@^1.3.0: +assert@1.4.1, assert@^1.1.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= @@ -2766,12 +2729,12 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-jest@^24.5.0, babel-jest@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.7.0.tgz#9dfc6245a5a9b3757c1f1e3c19705cca0941d55d" - integrity sha512-7WRraf28jlluyVLPyDY4+DXzCptiWor44caqRzefo+3btgHUb7FXEFXeqxwH2UuNCMnNY3plh/7hQ9bsLVwmUQ== +babel-jest@^24.5.0, babel-jest@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.7.1.tgz#73902c9ff15a7dfbdc9994b0b17fcefd96042178" + integrity sha512-GPnLqfk8Mtt0i4OemjWkChi73A3ALs4w2/QbG64uAj8b5mmwzxc7jbJVRZt8NJkxi6FopVHog9S3xX6UJKb2qg== dependencies: - "@jest/transform" "^24.7.0" + "@jest/transform" "^24.7.1" "@jest/types" "^24.7.0" "@types/babel__core" "^7.1.0" babel-plugin-istanbul "^5.1.0" @@ -3448,17 +3411,6 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -bin-links@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.2.tgz#fb74bd54bae6b7befc6c6221f25322ac830d9757" - integrity sha512-8eEHVgYP03nILphilltWjeIjMbKyJo3wvp9K816pHbhP301ismzw15mxAAEVQ/USUwcP++1uNrbERbp8lOA6Fg== - dependencies: - bluebird "^3.5.0" - cmd-shim "^2.0.2" - gentle-fs "^2.0.0" - graceful-fs "^4.1.11" - write-file-atomic "^2.3.0" - bin-v8-flags-filter@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/bin-v8-flags-filter/-/bin-v8-flags-filter-1.2.0.tgz#023fc4ee22999b2b1f6dd1b7253621366841537e" @@ -3477,18 +3429,13 @@ binary-extensions@^1.0.0: buffers "~0.1.1" chainsaw "~0.1.0" -bindings@1, bindings@^1.2.1: +bindings@1, bindings@^1.2.1, bindings@^1.3.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: file-uri-to-path "1.0.0" -bindings@~1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" - integrity sha1-FK1hE4EtLTfXLme0ystLtyZQXxE= - bl@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" @@ -3786,7 +3733,27 @@ buffers@~0.1.1: resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= -builder-util-runtime@8.1.1, builder-util-runtime@~8.1.0: +builder-util-runtime@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.2.0.tgz#e64c311b4f3643c8ccd8b8e5ba5bfb10801a6826" + integrity sha512-2Q3YrxANTrDs2NjSG5mbNGLPuUhPnSNYF9w5i4jWfHcNfQ3TgRrGXq4UfnkCiZVX8Axp4eAOSscaLLScKp/XLg== + dependencies: + bluebird-lst "^1.0.7" + debug "^4.1.1" + fs-extra-p "^7.0.1" + sax "^1.2.4" + +builder-util-runtime@^8.2.0, builder-util-runtime@^8.2.1: + version "8.2.1" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.2.1.tgz#2d16be6cb040b3654d84b76487256158e60b6e3b" + integrity sha512-2TkeTcI9bDlK5azRZSJJNxhAgW1DK+JY3jHK0UWPxgJcan4GZSVDNNO3sXntNxrp+JAdPHMF14rzNd/G53lvqw== + dependencies: + bluebird-lst "^1.0.7" + debug "^4.1.1" + fs-extra-p "^7.0.1" + sax "^1.2.4" + +builder-util-runtime@~8.1.0: version "8.1.1" resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.1.1.tgz#f2f6fc43e33d26892bd491667fc746ad69bccc50" integrity sha512-+ieS4PMB33vVE2S3ZNWBEQJ1zKmAs/agrBdh7XadE1lKLjrH4aXYuOh9OOGdxqIRldhlhNBaF+yKMMEFOdNVig== @@ -3796,32 +3763,40 @@ builder-util-runtime@8.1.1, builder-util-runtime@~8.1.0: fs-extra-p "^7.0.0" sax "^1.2.4" -builder-util-runtime@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.2.0.tgz#e64c311b4f3643c8ccd8b8e5ba5bfb10801a6826" - integrity sha512-2Q3YrxANTrDs2NjSG5mbNGLPuUhPnSNYF9w5i4jWfHcNfQ3TgRrGXq4UfnkCiZVX8Axp4eAOSscaLLScKp/XLg== +builder-util@9.7.0: + version "9.7.0" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-9.7.0.tgz#7aabec1136bf646023f2ebe231a26e82bb9d42cf" + integrity sha512-QA2RxbaSKvaFVNGcYsjmlkTn03tcdPxgIxHCOgw38G7NK91QWc76RBY9+T1sU8BLVEZJ4qNRWx+pd5rG9tTi+Q== dependencies: + "7zip-bin" "~4.1.0" + app-builder-bin "2.6.4" bluebird-lst "^1.0.7" + builder-util-runtime "^8.2.0" + chalk "^2.4.2" debug "^4.1.1" fs-extra-p "^7.0.1" - sax "^1.2.4" + is-ci "^2.0.0" + js-yaml "^3.12.1" + source-map-support "^0.5.10" + stat-mode "^0.2.2" + temp-file "^3.3.2" -builder-util@9.6.2, builder-util@~9.6.2: - version "9.6.2" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-9.6.2.tgz#3366aefea1b5ce292840be727a094e96fa25802f" - integrity sha512-cWl/0/Q851lesMmXp1IjreeAX1QAWA9e+iU2IT61oh+CvMYJnDwao2m9ZCHammdw2zllrwWu4fOC3gvsb/yOCw== +builder-util@~9.7.0: + version "9.7.1" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-9.7.1.tgz#31234b48ac574eb1cd4b4eaa982c0480571eae7a" + integrity sha512-txpzYIeuHFjrOQWPTJDvhJYisIVGJdSG9ppccE+y7agT0YNhBlVHGnd8+HgFTajYE34xzB5zf1/zxiiDqSKSpA== dependencies: "7zip-bin" "~4.1.0" - app-builder-bin "2.6.3" - bluebird-lst "^1.0.6" - builder-util-runtime "^8.1.1" + app-builder-bin "2.6.6" + bluebird-lst "^1.0.7" + builder-util-runtime "^8.2.1" chalk "^2.4.2" debug "^4.1.1" - fs-extra-p "^7.0.0" + fs-extra-p "^7.0.1" is-ci "^2.0.0" - js-yaml "^3.12.1" - source-map-support "^0.5.10" - stat-mode "^0.2.2" + js-yaml "^3.13.0" + source-map-support "^0.5.11" + stat-mode "^0.3.0" temp-file "^3.3.2" builtin-modules@^1.1.1: @@ -3834,46 +3809,12 @@ builtin-status-codes@^3.0.0: resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= - -byline@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" - integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= - -byte-size@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191" - integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw== - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -cacache@^10.0.4: - version "10.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" - integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== - dependencies: - bluebird "^3.5.1" - chownr "^1.0.1" - glob "^7.1.2" - graceful-fs "^4.1.11" - lru-cache "^4.1.1" - mississippi "^2.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.2" - ssri "^5.2.4" - unique-filename "^1.1.0" - y18n "^4.0.0" - -cacache@^11.0.1, cacache@^11.0.2, cacache@^11.3.2: +cacache@^11.0.2, cacache@^11.3.1: version "11.3.2" resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg== @@ -3908,11 +3849,6 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -call-limit@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.0.tgz#6fd61b03f3da42a2cd0ec2b60f02bd0e71991fea" - integrity sha1-b9YbA/PaQqLNDsK2DwK9DnGZH+o= - call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -3957,9 +3893,9 @@ callsites@^2.0.0: integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= callsites@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" - integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw== + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase-keys@^2.0.0: version "2.1.0" @@ -3978,10 +3914,10 @@ camelcase-keys@^4.0.0: map-obj "^2.0.0" quick-lru "^1.0.0" -camelcase@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== camelcase@^2.0.0: version "2.1.1" @@ -4145,7 +4081,7 @@ cheerio@^1.0.0-rc.2: lodash "^4.15.0" parse5 "^3.0.1" -chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: +chokidar@^2.0.2, chokidar@^2.0.4, chokidar@^2.1.5: version "2.1.5" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d" integrity sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A== @@ -4164,7 +4100,7 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: optionalDependencies: fsevents "^1.2.7" -chownr@^1.0.1, chownr@^1.1.1: +chownr@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== @@ -4212,13 +4148,6 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -cidr-regex@^2.0.10: - version "2.0.10" - resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-2.0.10.tgz#af13878bd4ad704de77d6dc800799358b3afa70d" - integrity sha512-sB3ogMQXWvreNPbJUZMRApxuRYd+KoIo4RGQ81VatjmMW6WJPo+IJZ2846FGItr9VzKo5w7DXzijPLGtSd0N3Q== - dependencies: - ip-regex "^2.1.0" - cids@bochaco/js-cid#temp-use-bochaco-multicodec: version "0.5.3" resolved "https://codeload.github.com/bochaco/js-cid/tar.gz/fdd908ad57edd5359008adffde1ce32e3e970b15" @@ -4267,14 +4196,6 @@ cli-boxes@^1.0.0: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= -cli-columns@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-3.1.2.tgz#6732d972979efc2ae444a1f08e08fa139c96a18e" - integrity sha1-ZzLZcpee/CrkRKHwjgj6E5yWoY4= - dependencies: - string-width "^2.0.0" - strip-ansi "^3.0.1" - cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -4282,16 +4203,6 @@ cli-cursor@^2.0.0, cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cli-table3@^0.5.0, cli-table3@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== - dependencies: - object-assign "^4.1.0" - string-width "^2.1.1" - optionalDependencies: - colors "^1.1.2" - cli-truncate@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" @@ -4341,24 +4252,11 @@ clone-regexp@^1.0.0: is-regexp "^1.0.0" is-supported-regexp-flag "^1.0.0" -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - clone@^2.1.1, clone@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= -cmd-shim@^2.0.2, cmd-shim@~2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" - integrity sha1-b8vamUg6j9FdfTChlspp1oii79s= - dependencies: - graceful-fs "^4.1.2" - mkdirp "~0.5.0" - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -4439,19 +4337,6 @@ color@^3.0.0: color-convert "^1.9.1" color-string "^1.5.2" -colors@^1.1.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== - -columnify@~1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" - integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= - dependencies: - strip-ansi "^3.0.0" - wcwidth "^1.0.0" - combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" @@ -4464,16 +4349,11 @@ commander@2.11.x: resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== -commander@^2.11.0, commander@^2.12.1, commander@^2.14.1, commander@^2.18.0, commander@^2.19.0, commander@^2.8.1, commander@^2.9.0: +commander@^2.11.0, commander@^2.12.1, commander@^2.14.1, commander@^2.18.0, commander@^2.19.0, commander@^2.8.1, commander@^2.9.0, commander@~2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -4514,7 +4394,7 @@ component-indexof@0.0.3: resolved "https://registry.yarnpkg.com/component-indexof/-/component-indexof-0.0.3.tgz#11d091312239eb8f32c8f25ae9cb002ffe8d3c24" integrity sha1-EdCRMSI5648yyPJa6csAL/6NPCQ= -compose-function@^3.0.3: +compose-function@3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= @@ -4538,7 +4418,7 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.38.0 < 2" -compression@^1.5.2: +compression@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -4581,14 +4461,6 @@ concurrently@^4.1.0: tree-kill "^1.1.0" yargs "^12.0.1" -config-chain@^1.1.12: - version "1.1.12" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - configstore@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" @@ -4601,7 +4473,7 @@ configstore@^3.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" -connect-history-api-fallback@^1.3.0: +connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== @@ -4626,7 +4498,7 @@ console-browserify@^1.1.0: dependencies: date-now "^0.1.4" -console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: +console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= @@ -4821,18 +4693,18 @@ conventional-recommended-bump@^4.0.4: meow "^4.0.0" q "^1.5.1" -convert-source-map@^0.3.3: - version "0.3.5" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" - integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= - -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1: +convert-source-map@1.6.0, convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== dependencies: safe-buffer "~5.1.1" +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -4867,19 +4739,22 @@ copy-to-clipboard@^3.0.8: dependencies: toggle-selection "^1.0.3" -copy-webpack-plugin@4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz#e7f40dd8a68477d405dd1b7a854aae324b158bae" - integrity sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA== +copy-webpack-plugin@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.0.2.tgz#56186dfddbf9aa1b29c97fa4c796c1be98870da4" + integrity sha512-7nC7EynPrnBTtBwwbG1aTqrfNS1aTb9eEjSmQDqFtKAsJrR3uDb+pCDIFT2LzhW+SgGJxQcYzThrmXzzZ720uw== dependencies: - cacache "^10.0.4" - find-cache-dir "^1.0.0" + cacache "^11.3.1" + find-cache-dir "^2.0.0" + glob-parent "^3.1.0" globby "^7.1.1" is-glob "^4.0.0" loader-utils "^1.1.0" minimatch "^3.0.4" - p-limit "^1.0.0" + normalize-path "^3.0.0" + p-limit "^2.1.0" serialize-javascript "^1.4.0" + webpack-log "^2.0.0" core-js-compat@^3.0.0: version "3.0.0" @@ -4901,6 +4776,11 @@ core-js@3.0.0, core-js@^3.0.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.0.tgz#a8dbfa978d29bfc263bfb66c556d0ca924c28957" integrity sha512-WBmxlgH2122EzEJ6GH8o9L/FeoUKxxxZ6q6VUxoTlsE4EvbTWKJb447eyVxTEuq0LpXjlq/kCB2qgBvsYRkLvQ== +core-js@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.1.tgz#1343182634298f7f38622f95e73f54e48ddf4738" + integrity sha512-sco40rF+2KlE0ROMvydjkrVMMG1vYilP2ALoRXcYR4obqbYIuV3Bg+51GEDW+HF8n7NRA+iaA4qD0nD9lo9mew== + core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" @@ -5411,20 +5291,13 @@ debug@*, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" -debug@2, debug@2.6.9, debug@^2.1.2, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: +debug@2, debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - debug@^3.0.0, debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -5432,11 +5305,6 @@ debug@^3.0.0, debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: dependencies: ms "^2.1.1" -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= - decamelize-keys@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" @@ -5450,13 +5318,6 @@ decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decamelize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" - integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== - dependencies: - xregexp "4.0.0" - decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -5509,7 +5370,7 @@ deepmerge@~2.0.1: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.0.1.tgz#25c1c24f110fb914f80001b925264dd77f3f4312" integrity sha512-VIPwiMJqJ13ZQfaCsIFnp5Me9tnjURiaIFxfz7EH0Ci0dTSQpZtSLrqOicXqEd/z2r+z+Klk9GzmnRsgpgbOsQ== -default-gateway@^4.0.1: +default-gateway@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== @@ -5524,13 +5385,6 @@ default-require-extensions@^2.0.0: dependencies: strip-bom "^3.0.0" -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -5572,6 +5426,18 @@ del@^3.0.0: pify "^3.0.0" rimraf "^2.2.8" +del@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.0.tgz#049543b8290e1a9293e2bd150ab3a06f637322b8" + integrity sha512-C4kvKNlYrwXhKxz97BuohF8YoGgQ23Xm9lvoHmgT7JaPGprSEjk3+XFled74Yt/x0ZABUHg2D67covzAPUKx5Q== + dependencies: + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -5637,7 +5503,7 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -detect-indent@^5.0.0, detect-indent@~5.0.0: +detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= @@ -5679,14 +5545,6 @@ devtron@^1.4.0: highlight.js "^9.3.0" humanize-plus "^1.8.1" -dezalgo@^1.0.0, dezalgo@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" - integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= - dependencies: - asap "^2.0.0" - wrappy "1" - diff-sequences@^24.3.0: version "24.3.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975" @@ -5718,15 +5576,15 @@ discontinuous-range@1.0.0: resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= -dmg-builder@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-6.5.4.tgz#18c573a5e777cbb39d84d7eaa84d965e1bb5b01f" - integrity sha512-EaEkF8weXez3iAwgYffjcYfumauUh5x+BggMgn/IuihNIA5/WfzRAUR4wMq9aII2zwArlw+rIrX6ZHKbmtkQmA== +dmg-builder@6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-6.6.0.tgz#301ae1239d3328864ae1419c1ff744b599a208d3" + integrity sha512-voodd3qdpdRiaciFZTfrFq/e82UPmUqSJq6R3Wc2Ql6XqXYLQcKo1h9rSZiivwls8PqE4Mk1IHTIOwmvJaq+MA== dependencies: - app-builder-lib "~20.38.5" - bluebird-lst "^1.0.6" - builder-util "~9.6.2" - fs-extra-p "^7.0.0" + app-builder-lib "~20.39.0" + bluebird-lst "^1.0.7" + builder-util "~9.7.0" + fs-extra-p "^7.0.1" iconv-lite "^0.4.24" js-yaml "^3.12.1" parse-color "^1.0.0" @@ -5868,11 +5726,6 @@ dotenv-expand@^4.2.0: resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275" integrity sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU= -dotenv@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" - integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== - dotenv@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" @@ -5948,11 +5801,6 @@ editions@^2.1.0, editions@^2.1.2: errlop "^1.1.1" semver "^5.6.0" -editor@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" - integrity sha1-YMf4e9YrzGqJT6jM1q+3gjok90I= - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -5968,48 +5816,48 @@ ejs@~2.5.6: resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.9.tgz#7ba254582a560d267437109a68354112475b0ce5" integrity sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ== -electron-builder@20.38.5: - version "20.38.5" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-20.38.5.tgz#31b3913a68b4911afd4cfc7bcd2522c5808040cd" - integrity sha512-p88IDHhH2J4hA6KwRBJY+OfVZuFtFIShY3Uh/TwYAfbX0v1RhKZytuGdO8sty2zcWxDYX74xDBv+X9oN6qEIRQ== +electron-builder@20.39.0: + version "20.39.0" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-20.39.0.tgz#ab2f5b556f36dea3947eb43ef312a955ba7f9d16" + integrity sha512-50SNZ/G+iE9MpTwxzeHt1Cqg8jZKeFLuJ9wubR4e/8VIzAe0ERUmwAQw+77UrlwXZD/PKKoYblc0Sr08Vm4exg== dependencies: - app-builder-lib "20.38.5" - bluebird-lst "^1.0.6" - builder-util "9.6.2" - builder-util-runtime "8.1.1" + app-builder-lib "20.39.0" + bluebird-lst "^1.0.7" + builder-util "9.7.0" + builder-util-runtime "8.2.0" chalk "^2.4.2" - dmg-builder "6.5.4" - fs-extra-p "^7.0.0" + dmg-builder "6.6.0" + fs-extra-p "^7.0.1" is-ci "^2.0.0" - lazy-val "^1.0.3" - read-config-file "3.2.1" + lazy-val "^1.0.4" + read-config-file "3.2.2" sanitize-filename "^1.6.1" update-notifier "^2.5.0" - yargs "^12.0.5" + yargs "^13.2.1" -electron-chromedriver@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/electron-chromedriver/-/electron-chromedriver-2.0.0.tgz#e63d7f53716e15a5861d691ace522b5c82c186b0" - integrity sha512-kERk/Wzhc9RzW9jUKXA5kJc4m8BlL6c9p5QH+CrIlst0saeqZL1Up7vzD4ZOnuBDpAVBBYJ4jhkAKIssf8ZlXg== +electron-chromedriver@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/electron-chromedriver/-/electron-chromedriver-3.0.0.tgz#ec0a17badb6c3529813c660bf91a43fb91407674" + integrity sha512-xWivZRiPTtDFJt+qXv7Ax/Dmhxj0iqESOxoLZ2szu3fv6k1vYDUDJUMHfdfVAke9D2gBRIgChuGb5j3YEt6hxQ== dependencies: electron-download "^4.1.0" extract-zip "^1.6.5" -electron-context-menu@0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/electron-context-menu/-/electron-context-menu-0.11.0.tgz#3ecefb0231151add474c9b0df2fb66fde3ad5731" - integrity sha512-sgDIGqjgazUQ5fbfz0ObRkmODAsw00eylQprp5q4jyuL6dskd27yslhoJTrjLbFGErfVVYzRXPW2rQPJxARKmg== +electron-context-menu@0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/electron-context-menu/-/electron-context-menu-0.12.0.tgz#ee882a3e9bf219df0e0b9473ca041ef40940fccd" + integrity sha512-kZEPG3a864UQOZDJnfsVUiWjhonIpfPPtH8Z7luvPUf7sra/Sz1x2n3aRnyzGN8jQhgRvQomJg/QKXHNbZZ/+g== dependencies: electron-dl "^1.2.0" electron-is-dev "^1.0.1" -electron-debug@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/electron-debug/-/electron-debug-2.1.0.tgz#8a926a37a7b2db77d35063ba1362c05e0fb78bda" - integrity sha512-IJkEfMRhU0FxTc9khmAXkRw1AmQVLBiKaUqpDSQPLvZkxBnYsPVCy8tTvriA7eLb5p4oCmu2HmdDCx7laXy7+g== +electron-debug@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/electron-debug/-/electron-debug-2.2.0.tgz#408672aaf17436818287409c48ab2451e6e76394" + integrity sha512-bjZ+4wLzV0jvYRUv+cpESJIv8wB3v5u2WIIy5gMQMqzWlBI6ck1OQJ4goQXgJYHLpuIbu6ddswzv1LSHZ8Ho3A== dependencies: electron-is-dev "^0.3.0" - electron-localshortcut "^3.0.0" + electron-localshortcut "^3.1.0" electron-devtools-installer@^2.2.4: version "2.2.4" @@ -6044,21 +5892,6 @@ electron-dl@^1.2.0: semver "^5.3.0" sumchecker "^2.0.1" -electron-download@^3.0.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/electron-download/-/electron-download-3.3.0.tgz#2cfd54d6966c019c4d49ad65fbe65cc9cdef68c8" - integrity sha1-LP1U1pZsAZxNSa1l++Zcyc3vaMg= - dependencies: - debug "^2.2.0" - fs-extra "^0.30.0" - home-path "^1.0.1" - minimist "^1.2.0" - nugget "^2.0.0" - path-exists "^2.1.0" - rc "^1.1.2" - semver "^5.3.0" - sumchecker "^1.2.0" - electron-download@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/electron-download/-/electron-download-4.1.1.tgz#02e69556705cc456e520f9e035556ed5a015ebe8" @@ -6089,7 +5922,7 @@ electron-is-dev@^1.0.1: resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-1.0.1.tgz#6e0a184736fe7aea77d18210b0b0f6a02402c4bc" integrity sha512-iwM3EotA9HTXqMGpQRkR/kT8OZqBbdfHTnlwcxsjSLYqY8svvsq0MuujsWCn3/vtgRmDv/PC/gKUUpoZvi5C1w== -electron-localshortcut@^3.0.0: +electron-localshortcut@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/electron-localshortcut/-/electron-localshortcut-3.1.0.tgz#10c1ffd537b8d39170aaf6e1551341f7780dd2ce" integrity sha512-MgL/j5jdjW7iA0R6cI7S045B0GlKXWM1FjjujVPjlrmyXRa6yH0bGSaIAfxXAF9tpJm3pLEiQzerYHkRh9JG/A== @@ -6099,10 +5932,10 @@ electron-localshortcut@^3.0.0: keyboardevent-from-electron-accelerator "^1.1.0" keyboardevents-areequal "^0.2.1" -electron-log@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-3.0.1.tgz#5c60913e8ae1a8645560eea8b3c47c60d101e797" - integrity sha512-bomFcrYvkEXj0H00T5GjBee50TBA/VwdoDFpPQ2jz3LDGi+4wKF3xrB+N1qXiZYoqDeaK5lNRAkNsHKmXeCPfg== +electron-log@3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-3.0.5.tgz#9bdd307f1f1aec85c0873babd6bdfffb1a661436" + integrity sha512-wWOPNBVGh7NJx/OLXdgtuYrqxoG9ZWO+kZYloIHi66B5W9EgXZw71jdZ1ddeWNg4CkABypa8tkrRGqCKF+9tYg== electron-osx-sign@0.4.11: version "0.4.11" @@ -6116,17 +5949,17 @@ electron-osx-sign@0.4.11: minimist "^1.2.0" plist "^3.0.1" -electron-publish@20.38.5: - version "20.38.5" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-20.38.5.tgz#c6ed7ea12bc80796b1f36489995f4651f730b1df" - integrity sha512-EhdPm6t0nKDfa0r3KjV1kSFcz03VrzgJRv7v5nHkkpQZB6OSmDNlHq7k66NBwQhPK3i4CK+uvehljZAP28vbCA== +electron-publish@20.39.0: + version "20.39.0" + resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-20.39.0.tgz#a945d871b469b4160933d4e027612710b653f006" + integrity sha512-PWrGUru994CSmtsA56GnjyLB3EnIS3zyEmrW0hDXtwuctZLGMnrxjK/7WEORYkgTQ/GufD5b/8T05Q2Kr42nqQ== dependencies: - bluebird-lst "^1.0.6" - builder-util "~9.6.2" - builder-util-runtime "^8.1.1" + bluebird-lst "^1.0.7" + builder-util "~9.7.0" + builder-util-runtime "^8.2.0" chalk "^2.4.2" - fs-extra-p "^7.0.0" - lazy-val "^1.0.3" + fs-extra-p "^7.0.1" + lazy-val "^1.0.4" mime "^2.4.0" electron-redux@1.3.1: @@ -6138,7 +5971,12 @@ electron-redux@1.3.1: flux-standard-action "^1.0.0" redux "^3.4.0" -electron-to-chromium@^1.3.122, electron-to-chromium@^1.3.47: +electron-to-chromium@^1.3.122: + version "1.3.124" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.124.tgz#861fc0148748a11b3e5ccebdf8b795ff513fa11f" + integrity sha512-glecGr/kFdfeXUHOHAWvGcXrxNU+1wSO/t5B23tT1dtlvYB26GY8aHzZSWD7HqhqC800Lr+w/hQul6C5AF542w== + +electron-to-chromium@^1.3.47: version "1.3.122" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.122.tgz#b32a0805f48557bd3c3b8104eadc7fa511b14a9a" integrity sha512-3RKoIyCN4DhP2dsmleuFvpJAIDOseWH88wFYBzb22CSwoFDSWRc4UAMfrtc9h8nBdJjTNIN3rogChgOy6eFInw== @@ -6158,22 +5996,21 @@ electron-updater@4.0.6: semver "^5.6.0" source-map-support "^0.5.9" -electron-window-state@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/electron-window-state/-/electron-window-state-4.1.1.tgz#6b34fdc31b38514dfec8b7c8f7b5d4addb67632d" - integrity sha1-azT9wxs4UU3+yLfI97XUrdtnYy0= +electron-window-state@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/electron-window-state/-/electron-window-state-5.0.3.tgz#4f36d09e3f953d87aff103bf010f460056050aa8" + integrity sha512-1mNTwCfkolXl3kMf50yW3vE2lZj0y92P/HYWFBrb+v2S/pCka5mdwN3cagKm458A7NjndSwijynXgcLWRodsVg== dependencies: - deep-equal "^1.0.1" - jsonfile "^2.2.3" + jsonfile "^4.0.0" mkdirp "^0.5.1" -electron@2.0.18: - version "2.0.18" - resolved "https://registry.yarnpkg.com/electron/-/electron-2.0.18.tgz#52f1b248c3cc013b5a870094de3b6ba5de313a0f" - integrity sha512-PQRHtFvLxHdJzMMIwTddUtkS+Te/fZIs+PHO+zPmTUTBE76V3Od3WRGzMQwiJHxN679licmCKhJpMyxZfDEVWQ== +electron@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/electron/-/electron-5.0.0.tgz#d8352e2c9625b3be0112ce0c1bf5c9b6f692557e" + integrity sha512-++emIe4vLihiYiAVL+E8DT5vSNVFEIuQCRxA+VfpDRVBcog85UB28vi4ogRmMOK3UffzKdWV6e1jqp3T0KpBoA== dependencies: - "@types/node" "^8.0.24" - electron-download "^3.0.1" + "@types/node" "^10.12.18" + electron-download "^4.1.0" extract-zip "^1.0.3" elegant-spinner@^1.0.1: @@ -6277,23 +6114,24 @@ env-paths@^1.0.0: integrity sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA= enzyme-adapter-react-16@^1.7.0: - version "1.11.2" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.11.2.tgz#8efeafb27e96873a5492fdef3f423693182eb9d4" - integrity sha512-2ruTTCPRb0lPuw/vKTXGVZVBZqh83MNDnakMhzxhpJcIbneEwNy2Cv0KvL97pl57/GOazJHflWNLjwWhex5AAA== + version "1.12.1" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.12.1.tgz#6a2d74c80559d35ac0a91ca162fa45f4186290cf" + integrity sha512-GB61gvY97XvrA6qljExGY+lgI6BBwz+ASLaRKct9VQ3ozu0EraqcNn3CcrUckSGIqFGa1+CxO5gj5is5t3lwrw== dependencies: - enzyme-adapter-utils "^1.10.1" + enzyme-adapter-utils "^1.11.0" object.assign "^4.1.0" object.values "^1.1.0" prop-types "^15.7.2" - react-is "^16.8.4" + react-is "^16.8.6" react-test-renderer "^16.0.0-0" semver "^5.6.0" -enzyme-adapter-utils@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.10.1.tgz#58264efa19a7befdbf964fb7981a108a5452ac96" - integrity sha512-oasinhhLoBuZsIkTe8mx0HiudtfErUtG0Ooe1FOplu/t4c9rOmyG5gtrBASK6u4whHIRWvv0cbZMElzNTR21SA== +enzyme-adapter-utils@^1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.11.0.tgz#6ffff782b1b57dd46c72a845a91fc4103956a117" + integrity sha512-0VZeoE9MNx+QjTfsjmO1Mo+lMfunucYB4wt5ficU85WB/LoetTJrbuujmHP3PJx6pSoaAuLA+Mq877x4LoxdNg== dependencies: + airbnb-prop-types "^2.12.0" function.prototype.name "^1.1.0" object.assign "^4.1.0" object.fromentries "^2.0.0" @@ -6334,11 +6172,6 @@ enzyme@^3.7.0: rst-selector-parser "^2.2.3" string.prototype.trim "^1.1.2" -err-code@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= - errlop@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/errlop/-/errlop-1.1.1.tgz#d9ae4c76c3e64956c5d79e6e035d6343bfd62250" @@ -6397,7 +6230,7 @@ es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: es6-symbol "~3.1.1" next-tick "^1.0.0" -es6-iterator@^2.0.3, es6-iterator@~2.0.3: +es6-iterator@2.0.3, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= @@ -6411,18 +6244,6 @@ es6-promise@^2.0.0: resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-2.3.0.tgz#96edb9f2fdb01995822b263dd8aadab6748181bc" integrity sha1-lu258v2wGZWCKyY92KratnSBgbw= -es6-promise@^4.0.3, es6-promise@^4.0.5: - version "4.2.6" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.6.tgz#b685edd8258886365ea62b57d30de28fadcd974f" - integrity sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - es6-symbol@^3.0.2, es6-symbol@^3.1.1, es6-symbol@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" @@ -6677,10 +6498,10 @@ eslint-visitor-keys@^1.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== -eslint@5.15.3: - version "5.15.3" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.15.3.tgz#c79c3909dc8a7fa3714fb340c11e30fd2526b8b5" - integrity sha512-vMGi0PjCHSokZxE0NLp2VneGw5sio7SSiDNgIUn2tC0XkWJRNOIoHIg3CliLVfXnJsiHxGAYrkw0PieAu8+KYQ== +eslint@5.16.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" + integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== dependencies: "@babel/code-frame" "^7.0.0" ajv "^6.9.1" @@ -6702,7 +6523,7 @@ eslint@5.15.3: import-fresh "^3.0.0" imurmurhash "^0.1.4" inquirer "^6.2.2" - js-yaml "^3.12.0" + js-yaml "^3.13.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" lodash "^4.17.11" @@ -6719,10 +6540,12 @@ eslint@5.15.3: table "^5.2.3" text-table "^0.2.0" -esotope-hammerhead@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/esotope-hammerhead/-/esotope-hammerhead-0.1.0.tgz#9d812a463753efe745846fc2a7ee7f0966eab37e" - integrity sha512-vOruOE2tIa6C6iDzz4A3bo8e2DQPEJY3ieTcMXykze8I9pL8Ae8/0XnVGfWImhuFMTpXdteBM/z7pCCeE/ygow== +esotope-hammerhead@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/esotope-hammerhead/-/esotope-hammerhead-0.2.0.tgz#0748de6926f9fa9ede30270f9e3eb2e27708fa4c" + integrity sha512-oe6l4c5tUjPDPxA0lWPjTsULJtkzwmQceQ6BXpwutZ1JqgLXSatFCZYnY34fD5OnWZDkXa1N9XNm3VJDZ+AbGg== + dependencies: + "@types/estree" "^0.0.39" espree@^5.0.1: version "5.0.1" @@ -6870,16 +6693,16 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.7.0.tgz#80f7bffd700414df2e0b35f28d9ae4514d971ced" - integrity sha512-sVRlM83O5tH2G7VUZuClY01k1UGqw7jJcI9rCNn0zaPkbcn+nOOj8MLzhHxF7rI4Ak2vblW/KzCDwSXPhXHlOg== +expect@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.7.1.tgz#d91defbab4e627470a152feaf35b3c31aa1c7c14" + integrity sha512-mGfvMTPduksV3xoI0xur56pQsg2vJjNf5+a+bXOjqCkiCBbmCayrBbHS/75y9K430cfqyocPr2ZjiNiRx4SRKw== dependencies: "@jest/types" "^24.7.0" ansi-styles "^3.2.0" jest-get-type "^24.3.0" jest-matcher-utils "^24.7.0" - jest-message-util "^24.7.0" + jest-message-util "^24.7.1" jest-regex-util "^24.3.0" express@4.16.3: @@ -6918,7 +6741,7 @@ express@4.16.3: utils-merge "1.0.1" vary "~1.1.2" -express@^4.16.2, express@^4.16.3: +express@^4.16.3, express@^4.16.4: version "4.16.4" resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== @@ -7161,18 +6984,19 @@ fd-slicer@~1.0.1: dependencies: pend "~1.2.0" -ffi@2.3.0, ffi@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/ffi/-/ffi-2.3.0.tgz#fa1a7b3d85c0fa8c83d96947a64b5192bc47f858" - integrity sha512-vkPA9Hf9CVuQ5HeMZykYvrZF2QNJ/iKGLkyDkisBnoOOFeFXZQhUPxBARPBIZMJVulvBI2R+jgofW03gyPpJcQ== +ffi-napi@2.4.5: + version "2.4.5" + resolved "https://registry.yarnpkg.com/ffi-napi/-/ffi-napi-2.4.5.tgz#12e807f238f8c68fc094fc46c1ce5193c2ab64f8" + integrity sha512-24Et/c5/sRvZvpOZ9nvkK0Be1S8A1Vkt6aJSKGaohOGb5FwV4+EmecaTtNhN4TCLJDjYC8z/k4X8W1SC5IK/fw== dependencies: - bindings "~1.2.0" - debug "2" - nan "2" - ref "1" - ref-struct "1" + bindings "^1.3.0" + debug "^3.1.0" + get-uv-event-loop-napi-h "^1.0.5" + node-addon-api "1.5.0" + ref-napi "^1.4.0" + ref-struct-di "^1.1.0" -figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: +figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== @@ -7271,15 +7095,6 @@ find-babel-config@^1.1.0: json5 "^0.5.1" path-exists "^3.0.0" -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" - find-cache-dir@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" @@ -7289,11 +7104,6 @@ find-cache-dir@^2.0.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-npm-prefix@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf" - integrity sha512-KEftzJ+H90x6pcKtdXZEPsQse8/y/UnvzRKrOSQFprnrGaFuJ62fVkP34Iu2IYuMvyauCyoLTNkJZgrrGA2wkA== - find-parent-dir@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" @@ -7437,14 +7247,6 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -from2@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-1.3.0.tgz#88413baaa5f9a597cfde9221d86986cd3c061dfd" - integrity sha1-iEE7qqX5pZfP3pIh2GmGzTwGHf0= - dependencies: - inherits "~2.0.1" - readable-stream "~1.1.10" - from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" @@ -7482,17 +7284,6 @@ fs-extra@7.0.1, fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - fs-extra@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35" @@ -7517,16 +7308,7 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" -fs-vacuum@^1.2.10, fs-vacuum@~1.2.10: - version "1.2.10" - resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36" - integrity sha1-t2Kb7AekAxolSP35n17PHMizHjY= - dependencies: - graceful-fs "^4.1.2" - path-is-inside "^1.0.1" - rimraf "^2.5.2" - -fs-write-stream-atomic@^1.0.8, fs-write-stream-atomic@~1.0.10: +fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= @@ -7618,30 +7400,16 @@ gaze@^1.0.0, gaze@~1.1.2: dependencies: globule "^1.0.0" -genfun@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" - integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== - -gentle-fs@^2.0.0, gentle-fs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.0.1.tgz#585cfd612bfc5cd52471fdb42537f016a5ce3687" - integrity sha512-cEng5+3fuARewXktTEGbwsktcldA+YsnUEaXZwcK/3pjSE1X9ObnTs+/8rYf8s+RnIcQm2D5x3rwpN7Zom8Bew== - dependencies: - aproba "^1.1.2" - fs-vacuum "^1.2.10" - graceful-fs "^4.1.11" - iferr "^0.1.5" - mkdirp "^0.5.1" - path-is-inside "^1.0.2" - read-cmd-shim "^1.0.1" - slide "^1.1.6" - get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-func-name@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" @@ -7663,10 +7431,12 @@ get-pkg-repo@^1.0.0: parse-github-repo-url "^1.3.0" through2 "^2.0.0" -get-port@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.1.0.tgz#93eb3d5552c197497d76e9c389a6ac9920e20192" - integrity sha512-4/fqAYrzrzOiqDrdeZRKXGdTGgbkfTEumGlNQPeP6Jy8w0PzN9mzeNQ3XgHaTNie8pQ3hOUkrwlZt2Fzk5H9mA== +get-port@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.0.0.tgz#aa22b6b86fd926dd7884de3e23332c9f70c031a6" + integrity sha512-imzMU0FjsZqNa6BqOjbbW6w5BivHIuQKopjpPqcnx0AVHJQKCxK1O+Ab3OrVXhrekqfVMjwA9ZYu062R+KcIsQ== + dependencies: + type-fest "^0.3.0" get-stdin@5.0.1: version "5.0.1" @@ -7688,13 +7458,25 @@ get-stream@^3.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= -get-stream@^4.0.0, get-stream@^4.1.0: +get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" +get-symbol-from-current-process-h@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-symbol-from-current-process-h/-/get-symbol-from-current-process-h-1.0.1.tgz#7e4809087e7d2f3a78a785b36f787e2183ba4c5d" + integrity sha512-QvP1+tCDjgTiu+akjdEYd8eK8MFYy6nRCRNjfiCeQB9RJEHQZpN+WE+CVqPRNqjIVMwSqd0WiD008B+b7iIdaA== + +get-uv-event-loop-napi-h@^1.0.2, get-uv-event-loop-napi-h@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/get-uv-event-loop-napi-h/-/get-uv-event-loop-napi-h-1.0.5.tgz#1904a1dc1fa6df7487c9e8eaf87302bcc9e33e47" + integrity sha512-uWDHId313vRTyqeLhlLWJS0CJOP8QXY5en/9Pv14dnPvAlRfKBfD6h2EDtoy7jxxOIWB9QgzYK16VCN3pCZOBg== + dependencies: + get-symbol-from-current-process-h "^1.0.1" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -7947,7 +7729,7 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@*, graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: +graceful-fs@*, graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== @@ -8064,7 +7846,7 @@ has-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= -has-unicode@^2.0.0, has-unicode@~2.0.1: +has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= @@ -8142,7 +7924,7 @@ highlight.js@^9.3.0: resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.15.6.tgz#72d4d8d779ec066af9a17cb14360c3def0aa57c4" integrity sha512-zozTAWM1D6sozHo8kqhfYgsac+B+q0PmsjXeyDrYIHHcBN0zTVT66+s2GW1GZv7DbyaROdLXKdabwS/WqPyIdQ== -history@^4.7.2: +history@4.9.0, history@^4.7.2: version "4.9.0" resolved "https://registry.yarnpkg.com/history/-/history-4.9.0.tgz#84587c2068039ead8af769e9d6a6860a14fa1bca" integrity sha512-H2DkjCjXf0Op9OAr6nJ56fcRkTSNrUiv41vNJ6IswJjif6wlpZK0BTfFbi7qK9dXLSYZxkq5lBsj3vUjlYBYZA== @@ -8183,11 +7965,6 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -home-path@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/home-path/-/home-path-1.0.6.tgz#d549dc2465388a7f8667242c5b31588d29af29fc" - integrity sha512-wo+yjrdAtoXt43Vy92a+0IPCYViiyLAHyp0QVS4xL/tfvVz5sXIW1ubLZk3nhVkD92fQpUMKX+fzMjr5F489vw== - homedir-polyfill@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" @@ -8200,7 +7977,7 @@ hoopy@^0.1.2: resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== -hosted-git-info@^2.1.4, hosted-git-info@^2.6.0, hosted-git-info@^2.7.1: +hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== @@ -8244,7 +8021,7 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" -html-entities@^1.2.0: +html-entities@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= @@ -8266,11 +8043,6 @@ htmlparser2@^3.10.0, htmlparser2@^3.9.1: inherits "^2.0.1" readable-stream "^3.1.1" -http-cache-semantics@^3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" - integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== - http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" @@ -8301,14 +8073,6 @@ http-parser-js@>=0.4.0: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== -http-proxy-agent@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" - integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== - dependencies: - agent-base "4" - debug "3.1.0" - http-proxy-middleware@^0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" @@ -8342,21 +8106,6 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" - integrity sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ== - dependencies: - agent-base "^4.1.0" - debug "^3.1.0" - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= - dependencies: - ms "^2.0.0" - humanize-plus@^1.8.1: version "1.8.2" resolved "https://registry.yarnpkg.com/humanize-plus/-/humanize-plus-1.8.2.tgz#a65b34459ad6367adbb3707a82a3c9f916167030" @@ -8443,11 +8192,6 @@ iferr@^0.1.5: resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= -iferr@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-1.0.2.tgz#e9fde49a9da06dc4a4194c6c9ed6d08305037a6d" - integrity sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg== - ignore-walk@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" @@ -8592,7 +8336,7 @@ indexof@0.0.1: resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= -inflight@^1.0.4, inflight@~1.0.6: +inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= @@ -8615,20 +8359,6 @@ ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -init-package-json@^1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" - integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== - dependencies: - glob "^7.1.1" - npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" - promzard "^0.3.0" - read "~1.0.1" - read-package-json "1 || 2" - semver "2.x || 3.x || 4 || 5" - validate-npm-package-license "^3.0.1" - validate-npm-package-name "^3.0.0" - inquirer@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406" @@ -8669,11 +8399,11 @@ inquirer@~3.3.0: through "^2.3.6" internal-ip@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.2.0.tgz#46e81b638d84c338e5c67e42b1a17db67d0814fa" - integrity sha512-ZY8Rk+hlvFeuMmG5uH1MXhhdeMntmIaxaInvAmzMq/SHV8rv4Kh+6GiQNNDQd0wZFrcO+FiTBo8lui/osKOyJw== + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== dependencies: - default-gateway "^4.0.1" + default-gateway "^4.2.0" ipaddr.js "^1.9.0" interpret@^1.0.0, interpret@^1.1.0: @@ -8816,13 +8546,6 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-cidr@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.0.0.tgz#1acf35c9e881063cd5f696d48959b30fed3eed56" - integrity sha512-8Xnnbjsb0x462VoYiGlhEi+drY8SFwrHiSYuzc/CEwco55vkehTaxAyIjEdpi3EMvLPPJAJi9FlzP+h+03gp0Q== - dependencies: - cidr-regex "^2.0.10" - is-color-stop@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" @@ -8882,6 +8605,11 @@ is-directory@^0.3.1: resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= +is-docker@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-1.1.0.tgz#f04374d4eee5310e9a8e113bf1495411e46176a1" + integrity sha1-8EN01O7lMQ6ajhE78UlUEeRhdqE= + is-es2016-keyword@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-es2016-keyword/-/is-es2016-keyword-1.0.0.tgz#f6e54e110c5e4f8d265e69d2ed0eaf8cf5f47718" @@ -8929,9 +8657,9 @@ is-fullwidth-code-point@^2.0.0: integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-generator-fn@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.0.0.tgz#038c31b774709641bda678b1f06a4e3227c10b3e" - integrity sha512-elzyIdM7iKoFHzcrndIqjYomImhxrFRnGP3galODoII4TB9gI7mZ+FnlLQmmjf27SxHS2gKEeyhX5/+YRS6H9g== + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-glob@^2.0.1: version "2.0.1" @@ -9011,6 +8739,11 @@ is-path-cwd@^1.0.0: resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= +is-path-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.0.0.tgz#d4777a8e227a00096a31f030db3770f84b116c02" + integrity sha512-m5dHHzpOXEiv18JEORttBO64UgTEypx99vCxQLjbBvGhOJxnTNglYoFXxwo6AbsQb79sqqycQEHv2hWkHZAijA== + is-path-in-cwd@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" @@ -9018,6 +8751,13 @@ is-path-in-cwd@^1.0.0: dependencies: is-path-inside "^1.0.0" +is-path-in-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.0.0.tgz#68e452a6eec260500cec21e029c0a44cc0dcd2ea" + integrity sha512-6Vz5Gc9s/sDA3JBVu0FzWufm8xaBsqy1zn8Q6gmvGP6nSDMw78aS4poBNeatWjaRpTpxxLn1WOndAiOlk+qY8A== + dependencies: + is-path-inside "^1.0.0" + is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" @@ -9277,43 +9017,43 @@ jest-changed-files@^24.7.0: execa "^1.0.0" throat "^4.0.0" -jest-cli@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.7.0.tgz#b4f399662747f04b92b66e4844c77fa8c817034a" - integrity sha512-/JNCbQGRTc2+HE+Qq1vCExOyyHvAFIdhBvdsEjQvH+UmghJBvA4UdOl6ok4fsPQnysa/p3gez3KosCWJdt0l6w== +jest-cli@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.7.1.tgz#6093a539073b6f4953145abeeb9709cd621044f1" + integrity sha512-32OBoSCVPzcTslGFl6yVCMzB2SqX3IrWwZCY5mZYkb0D2WsogmU3eV2o8z7+gRQa4o4sZPX/k7GU+II7CxM6WQ== dependencies: - "@jest/core" "^24.7.0" - "@jest/test-result" "^24.7.0" + "@jest/core" "^24.7.1" + "@jest/test-result" "^24.7.1" "@jest/types" "^24.7.0" chalk "^2.0.1" exit "^0.1.2" import-local "^2.0.0" is-ci "^2.0.0" - jest-config "^24.7.0" - jest-util "^24.7.0" + jest-config "^24.7.1" + jest-util "^24.7.1" jest-validate "^24.7.0" prompts "^2.0.1" realpath-native "^1.1.0" yargs "^12.0.2" -jest-config@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.7.0.tgz#42d64ced31a144aeca4c681de42850e703549a28" - integrity sha512-OsE0l9+QrXCLPQ8yJOWX/hQiH8OBf10/5pmBN6OTttU80KE0nF17gs3sUJ4ZikNsQLkbjQs1hW7g9Wg7u0eTpw== +jest-config@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.7.1.tgz#6c1dd4db82a89710a3cf66bdba97827c9a1cf052" + integrity sha512-8FlJNLI+X+MU37j7j8RE4DnJkvAghXmBWdArVzypW6WxfGuxiL/CCkzBg0gHtXhD2rxla3IMOSUAHylSKYJ83g== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.7.0" + "@jest/test-sequencer" "^24.7.1" "@jest/types" "^24.7.0" - babel-jest "^24.7.0" + babel-jest "^24.7.1" chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^24.7.0" - jest-environment-node "^24.7.0" + jest-environment-jsdom "^24.7.1" + jest-environment-node "^24.7.1" jest-get-type "^24.3.0" - jest-jasmine2 "^24.7.0" + jest-jasmine2 "^24.7.1" jest-regex-util "^24.3.0" - jest-resolve "^24.7.0" - jest-util "^24.7.0" + jest-resolve "^24.7.1" + jest-util "^24.7.1" jest-validate "^24.7.0" micromatch "^3.1.10" pretty-format "^24.7.0" @@ -9336,39 +9076,39 @@ jest-docblock@^24.3.0: dependencies: detect-newline "^2.1.0" -jest-each@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.7.0.tgz#7850862106bc9ecb875ffb8eb5e3d3fd9885208f" - integrity sha512-QIva7rgK9R+23uQUnqgSRlZJ5MwJIVanoQNzRZl0zbhv9M05TDqoneVOhpQyDM5ZUJjqCLzwu0PoG6L8U7i8qA== +jest-each@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.7.1.tgz#fcc7dda4147c28430ad9fb6dc7211cd17ab54e74" + integrity sha512-4fsS8fEfLa3lfnI1Jw6NxjhyRTgfpuOVTeUZZFyVYqeTa4hPhr2YkToUhouuLTrL2eMGOfpbdMyRx0GQ/VooKA== dependencies: "@jest/types" "^24.7.0" chalk "^2.0.1" jest-get-type "^24.3.0" - jest-util "^24.7.0" + jest-util "^24.7.1" pretty-format "^24.7.0" -jest-environment-jsdom@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.7.0.tgz#e263adb59edb79194caae10e20f39d324e35dffb" - integrity sha512-U3IscwOkfZLUfv0sgeHX2DP7gxZNREXBwulNyP2+SYtLKdGYYjD7pLY4DcUq0y7cc0+VXfrok2QXeGF8qDbixw== +jest-environment-jsdom@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.7.1.tgz#a40e004b4458ebeb8a98082df135fd501b9fbbd6" + integrity sha512-Gnhb+RqE2JuQGb3kJsLF8vfqjt3PHKSstq4Xc8ic+ax7QKo4Z0RWGucU3YV+DwKR3T9SYc+3YCUQEJs8r7+Jxg== dependencies: - "@jest/environment" "^24.7.0" - "@jest/fake-timers" "^24.7.0" + "@jest/environment" "^24.7.1" + "@jest/fake-timers" "^24.7.1" "@jest/types" "^24.7.0" jest-mock "^24.7.0" - jest-util "^24.7.0" + jest-util "^24.7.1" jsdom "^11.5.1" -jest-environment-node@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.7.0.tgz#d18cf65f4417e665df118b966149a990b7b3bd20" - integrity sha512-XECuhDfrdHuw/+5JrjS+D9tuBsv2M0MpSzJmSTGqBeCmgekaCbLB4wcU5XYWsyFUAlhDTU2Vn6UqReQceiHtKQ== +jest-environment-node@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.7.1.tgz#fa2c047a31522a48038d26ee4f7c8fd9c1ecfe12" + integrity sha512-GJJQt1p9/C6aj6yNZMvovZuxTUd+BEJprETdvTKSb4kHcw4mFj8777USQV0FJoJ4V3djpOwA5eWyPwfq//PFBA== dependencies: - "@jest/environment" "^24.7.0" - "@jest/fake-timers" "^24.7.0" + "@jest/environment" "^24.7.1" + "@jest/fake-timers" "^24.7.1" "@jest/types" "^24.7.0" jest-mock "^24.7.0" - jest-util "^24.7.0" + jest-util "^24.7.1" jest-get-type@^21.2.0: version "21.2.0" @@ -9380,10 +9120,10 @@ jest-get-type@^24.3.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.3.0.tgz#582cfd1a4f91b5cdad1d43d2932f816d543c65da" integrity sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow== -jest-haste-map@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.7.0.tgz#3b05c832e3fc41f45f8c061cbca0ed4c604787a4" - integrity sha512-f84QcZoA/PbAjGbPnisNJfj73x3noM/wgPhRO5kT1l18pi46Lcs+QsN3WW+bGNdzIUUDzjaJqZtRTJxT71sHCA== +jest-haste-map@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.7.1.tgz#772e215cd84080d4bbcb759cfb668ad649a21471" + integrity sha512-g0tWkzjpHD2qa03mTKhlydbmmYiA2KdcJe762SbfFo/7NIMgBWAA0XqQlApPwkWOF7Cxoi/gUqL0i6DIoLpMBw== dependencies: "@jest/types" "^24.7.0" anymatch "^2.0.0" @@ -9391,7 +9131,7 @@ jest-haste-map@^24.7.0: graceful-fs "^4.1.15" invariant "^2.2.4" jest-serializer "^24.4.0" - jest-util "^24.7.0" + jest-util "^24.7.1" jest-worker "^24.6.0" micromatch "^3.1.10" sane "^4.0.3" @@ -9399,25 +9139,25 @@ jest-haste-map@^24.7.0: optionalDependencies: fsevents "^1.2.7" -jest-jasmine2@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.7.0.tgz#53ec46f1e7de94e17d1c5a702744f8d30f37583c" - integrity sha512-bPlCXEl3YXeCLAXa0tegW8WWa94RQkXf4K4FaoMXS8F5iNic6qdj0CaPNQjMkz8s3qdnSN8GMgwF5RK8Vu5krQ== +jest-jasmine2@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.7.1.tgz#01398686dabe46553716303993f3be62e5d9d818" + integrity sha512-Y/9AOJDV1XS44wNwCaThq4Pw3gBPiOv/s6NcbOAkVRRUEPu+36L2xoPsqQXsDrxoBerqeyslpn2TpCI8Zr6J2w== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.7.0" - "@jest/test-result" "^24.7.0" + "@jest/environment" "^24.7.1" + "@jest/test-result" "^24.7.1" "@jest/types" "^24.7.0" chalk "^2.0.1" co "^4.6.0" - expect "^24.7.0" + expect "^24.7.1" is-generator-fn "^2.0.0" - jest-each "^24.7.0" + jest-each "^24.7.1" jest-matcher-utils "^24.7.0" - jest-message-util "^24.7.0" - jest-runtime "^24.7.0" - jest-snapshot "^24.7.0" - jest-util "^24.7.0" + jest-message-util "^24.7.1" + jest-runtime "^24.7.1" + jest-snapshot "^24.7.1" + jest-util "^24.7.1" pretty-format "^24.7.0" throat "^4.0.0" @@ -9447,13 +9187,13 @@ jest-matcher-utils@^24.7.0: jest-get-type "^24.3.0" pretty-format "^24.7.0" -jest-message-util@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.7.0.tgz#9d80f14eff66004ec82707e46d58387586df7335" - integrity sha512-hzuxx/g7t3uWxC2A12cZbVQI0XDyaXbvcvjNqX/XYijRDJa73/7PDl8ZdCRicbE5L7/jLK9kfzwDd/AimuUWbQ== +jest-message-util@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.7.1.tgz#f1dc3a6c195647096a99d0f1dadbc447ae547018" + integrity sha512-dk0gqVtyqezCHbcbk60CdIf+8UHgD+lmRHifeH3JRcnAqh4nEyPytSc9/L1+cQyxC+ceaeP696N4ATe7L+omcg== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.7.0" + "@jest/test-result" "^24.7.1" "@jest/types" "^24.7.0" "@types/stack-utils" "^1.0.1" chalk "^2.0.1" @@ -9478,19 +9218,19 @@ jest-regex-util@^24.3.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg== -jest-resolve-dependencies@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.7.0.tgz#f7d232e4be4f4b8a4fde09ac2341ea8979a18cf4" - integrity sha512-R0nllgRNorl/Z1SPp669f3ELTLPTIQ1ZbLyHZW9KYCLgUhbUVESwbOsXjcWmtrhKKxtTaaLtQbDkynOIj53gJQ== +jest-resolve-dependencies@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.7.1.tgz#cf93bbef26999488a96a2b2012f9fe7375aa378f" + integrity sha512-2Eyh5LJB2liNzfk4eo7bD1ZyBbqEJIyyrFtZG555cSWW9xVHxII2NuOkSl1yUYTAYCAmM2f2aIT5A7HzNmubyg== dependencies: "@jest/types" "^24.7.0" jest-regex-util "^24.3.0" - jest-snapshot "^24.7.0" + jest-snapshot "^24.7.1" -jest-resolve@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.7.0.tgz#0b13604676131a64e4d90cd1d34296b052ebc08e" - integrity sha512-1coBnLJHuz3VEe1x/I1tFaAgPsp42KVIZKNaVSUxVUyDEwkp4OvsZ59Mwl+bF3L+2OFEdCWj3DFU398NUrANsg== +jest-resolve@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.7.1.tgz#e4150198299298380a75a9fd55043fa3b9b17fde" + integrity sha512-Bgrc+/UUZpGJ4323sQyj85hV9d+ANyPNu6XfRDUcyFNX1QrZpSoM0kE4Mb2vZMAYTJZsBFzYe8X1UaOkOELSbw== dependencies: "@jest/types" "^24.7.0" browser-resolve "^1.11.3" @@ -9498,54 +9238,54 @@ jest-resolve@^24.7.0: jest-pnp-resolver "^1.2.1" realpath-native "^1.1.0" -jest-runner@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.7.0.tgz#ba0141f1b3a93dc1c26e4db57655163f6cb62975" - integrity sha512-1ClbQ5CoRjyjmIOR5k5O0EhrVi0N0p7Q7eD9AKlWLMhrYwQOJrVclI/II0g5W4kPsKHZIdoL7KhwcUEiXNmckg== +jest-runner@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.7.1.tgz#41c8a02a06aa23ea82d8bffd69d7fa98d32f85bf" + integrity sha512-aNFc9liWU/xt+G9pobdKZ4qTeG/wnJrJna3VqunziDNsWT3EBpmxXZRBMKCsNMyfy+A/XHiV+tsMLufdsNdgCw== dependencies: - "@jest/console" "^24.6.0" - "@jest/environment" "^24.7.0" - "@jest/test-result" "^24.7.0" + "@jest/console" "^24.7.1" + "@jest/environment" "^24.7.1" + "@jest/test-result" "^24.7.1" "@jest/types" "^24.7.0" chalk "^2.4.2" exit "^0.1.2" graceful-fs "^4.1.15" - jest-config "^24.7.0" + jest-config "^24.7.1" jest-docblock "^24.3.0" - jest-haste-map "^24.7.0" - jest-jasmine2 "^24.7.0" + jest-haste-map "^24.7.1" + jest-jasmine2 "^24.7.1" jest-leak-detector "^24.7.0" - jest-message-util "^24.7.0" - jest-resolve "^24.7.0" - jest-runtime "^24.7.0" - jest-util "^24.7.0" + jest-message-util "^24.7.1" + jest-resolve "^24.7.1" + jest-runtime "^24.7.1" + jest-util "^24.7.1" jest-worker "^24.6.0" source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.7.0.tgz#80c393970e81d0a86aa79fdf987470afa515ebf6" - integrity sha512-UHrBjGhXM8zjhxgaYqHD9GqN/nr14dHNJSltQY2GKFIYFup2PpGYPs/UgaioAdmWpgmAHxrrZD2T2o8JaBiKMg== +jest-runtime@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.7.1.tgz#2ffd70b22dd03a5988c0ab9465c85cdf5d25c597" + integrity sha512-0VAbyBy7tll3R+82IPJpf6QZkokzXPIS71aDeqh+WzPRXRCNz6StQ45otFariPdJ4FmXpDiArdhZrzNAC3sj6A== dependencies: - "@jest/console" "^24.6.0" - "@jest/environment" "^24.7.0" + "@jest/console" "^24.7.1" + "@jest/environment" "^24.7.1" "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.7.0" + "@jest/transform" "^24.7.1" "@jest/types" "^24.7.0" "@types/yargs" "^12.0.2" chalk "^2.0.1" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.1.15" - jest-config "^24.7.0" - jest-haste-map "^24.7.0" - jest-message-util "^24.7.0" + jest-config "^24.7.1" + jest-haste-map "^24.7.1" + jest-message-util "^24.7.1" jest-mock "^24.7.0" jest-regex-util "^24.3.0" - jest-resolve "^24.7.0" - jest-snapshot "^24.7.0" - jest-util "^24.7.0" + jest-resolve "^24.7.1" + jest-snapshot "^24.7.1" + jest-util "^24.7.1" jest-validate "^24.7.0" realpath-native "^1.1.0" slash "^2.0.0" @@ -9557,19 +9297,19 @@ jest-serializer@^24.4.0: resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3" integrity sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q== -jest-snapshot@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.7.0.tgz#2d279f756f2b771ef0a72a96055a36f71d44dfe0" - integrity sha512-2TsxHzf4LZ8Wp1a4ORNnM+aL3lN30nOn4V5rNInGQ5an56u3k4lzOQ45AbzFArvcxPpujY6GzNCmstNJ5p/LYA== +jest-snapshot@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.7.1.tgz#bd5a35f74aedff070975e9e9c90024f082099568" + integrity sha512-8Xk5O4p+JsZZn4RCNUS3pxA+ORKpEKepE+a5ejIKrId9CwrVN0NY+vkqEkXqlstA5NMBkNahXkR/4qEBy0t5yA== dependencies: "@babel/types" "^7.0.0" "@jest/types" "^24.7.0" chalk "^2.0.1" - expect "^24.7.0" + expect "^24.7.1" jest-diff "^24.7.0" jest-matcher-utils "^24.7.0" - jest-message-util "^24.7.0" - jest-resolve "^24.7.0" + jest-message-util "^24.7.1" + jest-resolve "^24.7.1" mkdirp "^0.5.1" natural-compare "^1.4.0" pretty-format "^24.7.0" @@ -9582,15 +9322,15 @@ jest-snapshot@^24.7.0: jest-get-type "^21.2.0" jest-matcher-utils "^21.2.1" -jest-util@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.7.0.tgz#1526be657e7b6a21b6af0cc64f74af44513f3a35" - integrity sha512-rgkYsdFksdXiLT74l282VJC0AEqcJ/xNwfnX7kNdIwCD5CA7j6D3kk3MlnVYdE0EVYTqSN7Q8tOFp5n2HQU2PQ== +jest-util@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.7.1.tgz#b4043df57b32a23be27c75a2763d8faf242038ff" + integrity sha512-/KilOue2n2rZ5AnEBYoxOXkeTu6vi7cjgQ8MXEkih0oeAXT6JkS3fr7/j8+engCjciOU1Nq5loMSKe0A1oeX0A== dependencies: - "@jest/console" "^24.6.0" - "@jest/fake-timers" "^24.7.0" + "@jest/console" "^24.7.1" + "@jest/fake-timers" "^24.7.1" "@jest/source-map" "^24.3.0" - "@jest/test-result" "^24.7.0" + "@jest/test-result" "^24.7.1" "@jest/types" "^24.7.0" callsites "^3.0.0" chalk "^2.0.1" @@ -9612,17 +9352,17 @@ jest-validate@^24.7.0: leven "^2.1.0" pretty-format "^24.7.0" -jest-watcher@^24.7.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.7.0.tgz#c0229f166bfe1561f939f7b0d83f12fb512f2a2c" - integrity sha512-BBDn/6iG1dSM7fR7FBu5o6R+ZwBJBhKmM2tAqpp3yOzZD/1Aerhdx7laLFs2gajWpBzC7OEHr6yMddDX+6n0Mw== +jest-watcher@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.7.1.tgz#e161363d7f3f4e1ef3d389b7b3a0aad247b673f5" + integrity sha512-Wd6TepHLRHVKLNPacEsBwlp9raeBIO+01xrN24Dek4ggTS8HHnOzYSFnvp+6MtkkJ3KfMzy220KTi95e2rRkrw== dependencies: - "@jest/test-result" "^24.7.0" + "@jest/test-result" "^24.7.1" "@jest/types" "^24.7.0" "@types/yargs" "^12.0.9" ansi-escapes "^3.0.0" chalk "^2.0.1" - jest-util "^24.7.0" + jest-util "^24.7.1" string-length "^2.0.0" jest-worker@^24.6.0: @@ -9634,12 +9374,12 @@ jest-worker@^24.6.0: supports-color "^6.1.0" jest@^24.1.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.7.0.tgz#5fa8dee8b81d734d80af14a2606cbb90c682664d" - integrity sha512-1bb9H06UeqTgiyZ9Lm81No06YdWq7f4ahLdQZJnQ0n2wuyA+ODrRfbqM8emmSS85IDw54LodW0tlud/b2F+4dQ== + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.7.1.tgz#0d94331cf510c75893ee32f87d7321d5bf8f2501" + integrity sha512-AbvRar5r++izmqo5gdbAjTeA6uNRGoNRuj5vHB0OnDXo2DXWZJVuaObiGgtlvhKb+cWy2oYbQSfxv7Q7GjnAtA== dependencies: import-local "^2.0.0" - jest-cli "^24.7.0" + jest-cli "^24.7.1" js-base64@^2.1.8, js-base64@^2.1.9: version "2.5.1" @@ -9673,7 +9413,15 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.12.0, js-yaml@^3.12.1, js-yaml@^3.13.0, js-yaml@^3.9.0: +js-yaml@^3.12.0: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^3.12.1, js-yaml@^3.13.0, js-yaml@^3.9.0: version "3.13.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.0.tgz#38ee7178ac0eea2c97ff6d96fff4b18c7d8cf98e" integrity sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ== @@ -9733,17 +9481,12 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-hammerhead@^0.1.0: - version "0.1.3" - resolved "https://registry.yarnpkg.com/json-hammerhead/-/json-hammerhead-0.1.3.tgz#64c3139a704655d686b7504feedaff8c37cb7efb" - integrity sha512-qaUpqxn4W8kTnJQqlP89dnR75KJd5NIUvjhadiqshvoBPGI75AK7M9htZ3SsbLnSeYdLCJuHemyDJ+MR3AkVdg== - json-loader@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== -json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -9799,7 +9542,7 @@ json5@^2.1.0: dependencies: minimist "^1.2.0" -jsonfile@^2.1.0, jsonfile@^2.2.3: +jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= @@ -9870,7 +9613,7 @@ keypress@^0.2.1: resolved "https://registry.yarnpkg.com/keypress/-/keypress-0.2.1.tgz#1e80454250018dbad4c3fe94497d6e67b6269c77" integrity sha1-HoBFQlABjbrUw/6USX1uZ7YmnHc= -killable@^1.0.0: +killable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== @@ -9904,17 +9647,10 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= - optionalDependencies: - graceful-fs "^4.1.9" - kleur@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.2.tgz#83c7ec858a41098b613d5998a7b653962b504f68" - integrity sha512-3h7B2WRT5LNXOtQiAaWonilegHcPSf9nLVXlSTci8lu1dZUuui61+EsPEZqSVxY7rXYmB2DVKMQILxaO5WL61Q== + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== known-css-properties@^0.11.0: version "0.11.0" @@ -9936,12 +9672,7 @@ latest-version@^3.0.0: dependencies: package-json "^4.0.0" -lazy-property@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147" - integrity sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc= - -lazy-val@^1.0.3: +lazy-val@^1.0.3, lazy-val@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.4.tgz#882636a7245c2cfe6e0a4e3ba6c5d68a137e5c65" integrity sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q== @@ -10010,140 +9741,6 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -libcipm@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-3.0.3.tgz#2e764effe0b90d458790dab3165794c804075ed3" - integrity sha512-71V5CpTI+zFydTc5IjJ/tx8JHbXEJvmYF2zaSVW1V3X1rRnRjXqh44iuiyry1xgi3ProUQ1vX1uwFiWs00+2og== - dependencies: - bin-links "^1.1.2" - bluebird "^3.5.1" - figgy-pudding "^3.5.1" - find-npm-prefix "^1.0.2" - graceful-fs "^4.1.11" - ini "^1.3.5" - lock-verify "^2.0.2" - mkdirp "^0.5.1" - npm-lifecycle "^2.0.3" - npm-logical-tree "^1.2.1" - npm-package-arg "^6.1.0" - pacote "^9.1.0" - read-package-json "^2.0.13" - rimraf "^2.6.2" - worker-farm "^1.6.0" - -libnpm@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/libnpm/-/libnpm-2.0.1.tgz#a48fcdee3c25e13c77eb7c60a0efe561d7fb0d8f" - integrity sha512-qTKoxyJvpBxHZQB6k0AhSLajyXq9ZE/lUsZzuHAplr2Bpv9G+k4YuYlExYdUCeVRRGqcJt8hvkPh4tBwKoV98w== - dependencies: - bin-links "^1.1.2" - bluebird "^3.5.3" - find-npm-prefix "^1.0.2" - libnpmaccess "^3.0.1" - libnpmconfig "^1.2.1" - libnpmhook "^5.0.2" - libnpmorg "^1.0.0" - libnpmpublish "^1.1.0" - libnpmsearch "^2.0.0" - libnpmteam "^1.0.1" - lock-verify "^2.0.2" - npm-lifecycle "^2.1.0" - npm-logical-tree "^1.2.1" - npm-package-arg "^6.1.0" - npm-profile "^4.0.1" - npm-registry-fetch "^3.8.0" - npmlog "^4.1.2" - pacote "^9.2.3" - read-package-json "^2.0.13" - stringify-package "^1.0.0" - -libnpmaccess@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.1.tgz#5b3a9de621f293d425191aa2e779102f84167fa8" - integrity sha512-RlZ7PNarCBt+XbnP7R6PoVgOq9t+kou5rvhaInoNibhPO7eMlRfS0B8yjatgn2yaHIwWNyoJDolC/6Lc5L/IQA== - dependencies: - aproba "^2.0.0" - get-stream "^4.0.0" - npm-package-arg "^6.1.0" - npm-registry-fetch "^3.8.0" - -libnpmconfig@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0" - integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA== - dependencies: - figgy-pudding "^3.5.1" - find-up "^3.0.0" - ini "^1.3.5" - -libnpmhook@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-5.0.2.tgz#d12817b0fb893f36f1d5be20017f2aea25825d94" - integrity sha512-vLenmdFWhRfnnZiNFPNMog6CK7Ujofy2TWiM2CrpZUjBRIhHkJeDaAbJdYCT6W4lcHtyrJR8yXW8KFyq6UAp1g== - dependencies: - aproba "^2.0.0" - figgy-pudding "^3.4.1" - get-stream "^4.0.0" - npm-registry-fetch "^3.8.0" - -libnpmorg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-1.0.0.tgz#979b868c48ba28c5820e3bb9d9e73c883c16a232" - integrity sha512-o+4eVJBoDGMgRwh2lJY0a8pRV2c/tQM/SxlqXezjcAg26Qe9jigYVs+Xk0vvlYDWCDhP0g74J8UwWeAgsB7gGw== - dependencies: - aproba "^2.0.0" - figgy-pudding "^3.4.1" - get-stream "^4.0.0" - npm-registry-fetch "^3.8.0" - -libnpmpublish@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.1.tgz#ff0c6bb0b4ad2bda2ad1f5fba6760a4af37125f0" - integrity sha512-nefbvJd/wY38zdt+b9SHL6171vqBrMtZ56Gsgfd0duEKb/pB8rDT4/ObUQLrHz1tOfht1flt2zM+UGaemzAG5g== - dependencies: - aproba "^2.0.0" - figgy-pudding "^3.5.1" - get-stream "^4.0.0" - lodash.clonedeep "^4.5.0" - normalize-package-data "^2.4.0" - npm-package-arg "^6.1.0" - npm-registry-fetch "^3.8.0" - semver "^5.5.1" - ssri "^6.0.1" - -libnpmsearch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-2.0.0.tgz#de05af47ada81554a5f64276a69599070d4a5685" - integrity sha512-vd+JWbTGzOSfiOc+72MU6y7WqmBXn49egCCrIXp27iE/88bX8EpG64ST1blWQI1bSMUr9l1AKPMVsqa2tS5KWA== - dependencies: - figgy-pudding "^3.5.1" - get-stream "^4.0.0" - npm-registry-fetch "^3.8.0" - -libnpmteam@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-1.0.1.tgz#ff704b1b6c06ea674b3b1101ac3e305f5114f213" - integrity sha512-gDdrflKFCX7TNwOMX1snWojCoDE5LoRWcfOC0C/fqF7mBq8Uz9zWAX4B2RllYETNO7pBupBaSyBDkTAC15cAMg== - dependencies: - aproba "^2.0.0" - figgy-pudding "^3.4.1" - get-stream "^4.0.0" - npm-registry-fetch "^3.8.0" - -libnpx@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/libnpx/-/libnpx-10.2.0.tgz#1bf4a1c9f36081f64935eb014041da10855e3102" - integrity sha512-X28coei8/XRCt15cYStbLBph+KGhFra4VQhRBPuH/HHMkC5dxM8v24RVgUsvODKCrUZ0eTgiTqJp6zbl0sskQQ== - dependencies: - dotenv "^5.0.1" - npm-package-arg "^6.0.0" - rimraf "^2.6.2" - safe-buffer "^5.1.0" - update-notifier "^2.3.0" - which "^1.3.0" - y18n "^4.0.0" - yargs "^11.0.0" - lint-staged@^8.1.5: version "8.1.5" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.1.5.tgz#372476fe1a58b8834eb562ed4c99126bd60bdd79" @@ -10262,7 +9859,7 @@ loader-runner@^2.3.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@1.2.3, loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== @@ -10287,96 +9884,22 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -lock-verify@^2.0.2, lock-verify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.1.0.tgz#fff4c918b8db9497af0c5fa7f6d71555de3ceb47" - integrity sha512-vcLpxnGvrqisKvLQ2C2v0/u7LVly17ak2YSgoK4PrdsYBXQIax19vhKiLfvKNFx7FRrpTnitrpzF/uuCMuorIg== - dependencies: - npm-package-arg "^6.1.0" - semver "^5.4.1" - -lockfile@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" - integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA== - dependencies: - signal-exit "^3.0.2" - lodash-es@^4.2.1: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.11.tgz#145ab4a7ac5c5e52a3531fb4f310255a152b4be0" integrity sha512-DHb1ub+rMjjrxqlB3H56/6MXtm1lSksDp2rA2cNWjG8mlDUYFhUj3Di2Zn5IwSU87xLv8tNIQ7sSwE/YOX/D/Q== -lodash._baseassign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - integrity sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4= - dependencies: - lodash._basecopy "^3.0.0" - lodash.keys "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= - -lodash._baseuniq@~4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" - integrity sha1-DrtE5FaBSveQXGIS+iybLVG4Qeg= - dependencies: - lodash._createset "~4.0.0" - lodash._root "~3.0.0" - -lodash._bindcallback@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" - integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= - -lodash._createassigner@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11" - integrity sha1-g4pbri/aymOsIt7o4Z+k5taXCxE= - dependencies: - lodash._bindcallback "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash.restparam "^3.0.0" - -lodash._createset@~4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" - integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY= - lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= - lodash._reinterpolate@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= -lodash._root@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" - integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= - -lodash.assign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa" - integrity sha1-POnwI0tLIiPilrj6CsH+6OvKZPo= - dependencies: - lodash._baseassign "^3.0.0" - lodash._createassigner "^3.0.0" - lodash.keys "^3.0.0" - -lodash.assign@^4.0.1, lodash.assign@^4.2.0: +lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= @@ -10386,7 +9909,7 @@ lodash.camelcase@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= -lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.5.0, lodash.clonedeep@~4.5.0: +lodash.clonedeep@^4.3.2: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= @@ -10396,19 +9919,6 @@ lodash.debounce@^4.0.0, lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= -lodash.defaults@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c" - integrity sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw= - dependencies: - lodash.assign "^3.0.0" - lodash.restparam "^3.0.0" - -lodash.defaults@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= - lodash.defaultsdeep@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.0.tgz#bec1024f85b1bd96cbea405b23c14ad6443a6f81" @@ -10454,7 +9964,7 @@ lodash.kebabcase@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= -lodash.keys@^3.0.0, lodash.keys@^3.1.2: +lodash.keys@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= @@ -10473,11 +9983,6 @@ lodash.mergewith@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927" integrity sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ== -lodash.restparam@^3.0.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" - integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= - lodash.snakecase@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" @@ -10523,12 +10028,7 @@ lodash.unescape@4.0.1: resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= -lodash.union@~4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" - integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= - -lodash.uniq@^4.5.0, lodash.uniq@~4.5.0: +lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= @@ -10538,11 +10038,6 @@ lodash.upperfirst@^4.2.0: resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" integrity sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984= -lodash.without@~4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" - integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= - lodash.zip@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020" @@ -10586,7 +10081,7 @@ log-update@^2.3.0: cli-cursor "^2.0.0" wrap-ansi "^3.0.1" -loglevel@^1.4.1: +loglevel@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= @@ -10631,7 +10126,7 @@ lru-cache@2.6.3: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.6.3.tgz#51ccd0b4fc0c843587d7a5709ce4d3b7629bedc5" integrity sha1-UczQtPwMhDWH16VwnOTTt2Kb7cU= -lru-cache@4.1.x, lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3, lru-cache@^4.1.5: +lru-cache@4.1.x, lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -10661,23 +10156,6 @@ make-dir@^2.0.0: pify "^4.0.1" semver "^5.6.0" -make-fetch-happen@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz#141497cb878f243ba93136c83d8aba12c216c083" - integrity sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ== - dependencies: - agentkeepalive "^3.4.1" - cacache "^11.0.1" - http-cache-semantics "^3.8.1" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - lru-cache "^4.1.2" - mississippi "^3.0.0" - node-fetch-npm "^2.0.2" - promise-retry "^1.1.1" - socks-proxy-agent "^4.0.0" - ssri "^6.0.0" - make-plural@^3.0.3, make-plural@~3.0.3: version "3.0.6" resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-3.0.6.tgz#2033a03bac290b8f3bb91258f65b9df7e8b01ca7" @@ -10803,23 +10281,11 @@ mdn-data@~1.1.0: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== -meant@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.1.tgz#66044fea2f23230ec806fb515efea29c44d2115d" - integrity sha512-UakVLFjKkbbUwNWJ2frVLnnAtbb7D7DsloxRd3s/gDpI8rdv8W5Hp3NaDb+POBI1fQdeussER6NB8vpcRURvlg== - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= - dependencies: - mimic-fn "^1.0.0" - mem@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" @@ -10948,7 +10414,12 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.38.0 < 2", mime-db@^1.28.0, mime-db@~1.38.0: +"mime-db@>= 1.38.0 < 2": + version "1.39.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.39.0.tgz#f95a20275742f7d2ad0429acfe40f4233543780e" + integrity sha512-DTsrw/iWVvwHH+9Otxccdyy0Tgiil6TWK/xhfARJZF/QFhwOgZgOIvA2/VIGpM8U7Q8z5nDmdDWC6tuVMJNibw== + +mime-db@^1.28.0, mime-db@~1.38.0: version "1.38.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad" integrity sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg== @@ -10970,11 +10441,16 @@ mime@^1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.0.3, mime@^2.3.1, mime@^2.4.0: +mime@^2.0.3, mime@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.1.tgz#19eb7357bebbda37df585b14038347721558c715" integrity sha512-VRUfmQO0rCd3hKwBymAn3kxYzBHr3I/wdVMywgG3HhXOwrCQgN84ZagpdTm2tZ4TNtwsSmyJWYO88mb5XvzGqQ== +mime@^2.3.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.2.tgz#ce5229a5e99ffc313abac806b482c10e7ba6ac78" + integrity sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg== + mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" @@ -10992,12 +10468,13 @@ min-document@^2.19.0: dependencies: dom-walk "^0.1.0" -mini-css-extract-plugin@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz#ac0059b02b9692515a637115b0cc9fed3a35c7b0" - integrity sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw== +mini-css-extract-plugin@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz#a3f13372d6fcde912f3ee4cd039665704801e3b9" + integrity sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw== dependencies: loader-utils "^1.1.0" + normalize-url "^2.0.1" schema-utils "^1.0.0" webpack-sources "^1.1.0" @@ -11061,7 +10538,7 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.2.1, minipass@^2.3.4, minipass@^2.3.5: +minipass@^2.2.1, minipass@^2.3.4: version "2.3.5" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== @@ -11076,22 +10553,6 @@ minizlib@^1.1.1: dependencies: minipass "^2.2.1" -mississippi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" - integrity sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^2.0.1" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -11178,7 +10639,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.0.0, ms@^2.1.1: +ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== @@ -11237,11 +10698,6 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -mute-stream@~0.0.4: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - n3@^0.4.1: version "0.4.5" resolved "https://registry.yarnpkg.com/n3/-/n3-0.4.5.tgz#5b70d3ab6a21c9e8d4c9bda2a3d4d90909beb508" @@ -11301,11 +10757,11 @@ nearley@^2.7.10: semver "^5.4.1" needle@^2.2.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" - integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.0.tgz#ce3fea21197267bacb310705a7bbe24f2a3a3492" + integrity sha512-QBZu7aAFR0522EyaXZM0FZ9GLpq6lvQ3uq8gteiDUp7wKdy0lSd2hPlgFwVuW1CBkfEs9PfDQsQzZghLs/psdg== dependencies: - debug "^2.1.2" + debug "^4.1.0" iconv-lite "^0.4.4" sax "^1.2.4" @@ -11345,14 +10801,15 @@ nise@^1.4.10: lolex "^2.3.2" path-to-regexp "^1.7.0" -node-fetch-npm@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" - integrity sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw== - dependencies: - encoding "^0.1.11" - json-parse-better-errors "^1.0.0" - safe-buffer "^5.1.1" +node-addon-api@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.5.0.tgz#55be6b3da36e746f4b1f2af16c2adf67647d1ff8" + integrity sha512-YsL/8dpBWxCFj3wAVAa/ceN4TlT8lACK8EgpuN0q/4ecflWHDuKpodb+tt7Rx22r/6FJ2f+IT25XSsXnZGwYgA== + +node-addon-api@^1.1.0, node-addon-api@^1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.6.3.tgz#3998d4593e2dca2ea82114670a4eb003386a9fe1" + integrity sha512-FXWH6mqjWgU8ewuahp4spec8LkroFZK2NicOv6bNwZC3kcwZUI8LeZdG80UzTSLLhK4T7MsgNwlYDVRlDdfTDg== node-fetch@^1.0.1: version "1.7.3" @@ -11466,9 +10923,9 @@ node-pre-gyp@^0.10.0: tar "^4" node-releases@^1.1.13: - version "1.1.13" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.13.tgz#8c03296b5ae60c08e2ff4f8f22ae45bd2f210083" - integrity sha512-fKZGviSXR6YvVPyc011NHuJDSD8gFQvLPmc2d2V3BS4gr52ycyQ1Xzs7a8B+Ax3Ni/W+5h1h4SqmzeoA8WZRmA== + version "1.1.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.14.tgz#f1f41c83cac82caebd6739e6313d56b3b09c9189" + integrity sha512-d58EpVZRhQE60kWiWUaaPlK9dyC4zg3ZoMcHcky2d4hDksyQj0rUozwInOl0C66mBsqo01Tuns8AvxnL5S7PKg== dependencies: semver "^5.3.0" @@ -11516,7 +10973,7 @@ node-version@^1.0.0: dependencies: abbrev "1" -nopt@^4.0.1, nopt@~4.0.1: +nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= @@ -11524,7 +10981,7 @@ nopt@^4.0.1, nopt@~4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: +normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -11556,71 +11013,31 @@ normalize-selector@^0.2.0: resolved "https://registry.yarnpkg.com/normalize-selector/-/normalize-selector-0.2.0.tgz#d0b145eb691189c63a78d201dc4fdb1293ef0c03" integrity sha1-0LFF62kRicY6eNIB3E/bEpPvDAM= +normalize-url@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + normalize-url@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== -npm-audit-report@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.2.tgz#303bc78cd9e4c226415076a4f7e528c89fc77018" - integrity sha512-abeqS5ONyXNaZJPGAf6TOUMNdSe1Y6cpc9MLBRn+CuUoYbfdca6AxOyXVlfIv9OgKX+cacblbG5w7A6ccwoTPw== - dependencies: - cli-table3 "^0.5.0" - console-control-strings "^1.1.0" - npm-bundled@^1.0.1: version "1.0.6" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== -npm-cache-filename@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" - integrity sha1-3tMGxbC/yHCp6fr4I7xfKD4FrhE= - -npm-install-checks@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.0.tgz#d4aecdfd51a53e3723b7b2f93b2ee28e307bc0d7" - integrity sha1-1K7N/VGlPjcjt7L5Oy7ijjB7wNc= - dependencies: - semver "^2.3.0 || 3.x || 4 || 5" - npm-install-package@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/npm-install-package/-/npm-install-package-2.1.0.tgz#d7efe3cfcd7ab00614b896ea53119dc9ab259125" integrity sha1-1+/jz816sAYUuJbqUxGdyaslkSU= -npm-lifecycle@^2.0.3, npm-lifecycle@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-2.1.0.tgz#1eda2eedb82db929e3a0c50341ab0aad140ed569" - integrity sha512-QbBfLlGBKsktwBZLj6AviHC6Q9Y3R/AY4a2PYSIRhSKSS0/CxRyD/PfxEX6tPeOCXQgMSNdwGeECacstgptc+g== - dependencies: - byline "^5.0.0" - graceful-fs "^4.1.11" - node-gyp "^3.8.0" - resolve-from "^4.0.0" - slide "^1.1.6" - uid-number "0.0.6" - umask "^1.1.0" - which "^1.3.1" - -npm-logical-tree@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz#44610141ca24664cad35d1e607176193fd8f5b88" - integrity sha512-AJI/qxDB2PWI4LG1CYN579AY1vCiNyWfkiquCsJWqntRu/WwimVrC8yXeILBFHDwxfOejxewlmnvW9XXjMlYIg== - -"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" - integrity sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA== - dependencies: - hosted-git-info "^2.6.0" - osenv "^0.1.5" - semver "^5.5.0" - validate-npm-package-name "^3.0.0" - -npm-packlist@^1.1.12, npm-packlist@^1.1.6, npm-packlist@^1.4.1: +npm-packlist@^1.1.6: version "1.4.1" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== @@ -11635,36 +11052,6 @@ npm-path@^2.0.2: dependencies: which "^1.2.10" -npm-pick-manifest@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz#32111d2a9562638bb2c8f2bf27f7f3092c8fae40" - integrity sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA== - dependencies: - figgy-pudding "^3.5.1" - npm-package-arg "^6.0.0" - semver "^5.4.1" - -npm-profile@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.1.tgz#d350f7a5e6b60691c7168fbb8392c3603583f5aa" - integrity sha512-NQ1I/1Q7YRtHZXkcuU1/IyHeLy6pd+ScKg4+DQHdfsm769TGq6HPrkbuNJVJS4zwE+0mvvmeULzQdWn2L2EsVA== - dependencies: - aproba "^1.1.2 || 2" - figgy-pudding "^3.4.1" - npm-registry-fetch "^3.8.0" - -npm-registry-fetch@^3.8.0, npm-registry-fetch@^3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.9.0.tgz#44d841780e2833f06accb34488f8c7450d1a6856" - integrity sha512-srwmt8YhNajAoSAaDWndmZgx89lJwIZ1GWxOuckH4Coek4uHv5S+o/l9FLQe/awA+JwTnj4FJHldxhlXdZEBmw== - dependencies: - JSONStream "^1.3.4" - bluebird "^3.5.1" - figgy-pudding "^3.4.1" - lru-cache "^4.1.3" - make-fetch-happen "^4.0.1" - npm-package-arg "^6.1.0" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -11672,11 +11059,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-user-validate@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz#8ceca0f5cea04d4e93519ef72d0557a75122e951" - integrity sha1-jOyg9c6gTU6TUZ73LQVXp1Ei6VE= - npm-which@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" @@ -11686,121 +11068,7 @@ npm-which@^3.0.1: npm-path "^2.0.2" which "^1.2.10" -npm@^6.4.1: - version "6.9.0" - resolved "https://registry.yarnpkg.com/npm/-/npm-6.9.0.tgz#5296720486814a64a7fb082de00c4b5cfd11211f" - integrity sha512-91V+zB5hDxO+Jyp2sUKS7juHlIM95dGQxTeQtmZI1nAI/7kjWXFipPrtwwKjhyKmV4GsS2LzJhrxRjGWsU9z/w== - dependencies: - JSONStream "^1.3.5" - abbrev "~1.1.1" - ansicolors "~0.3.2" - ansistyles "~0.1.3" - aproba "^2.0.0" - archy "~1.0.0" - bin-links "^1.1.2" - bluebird "^3.5.3" - byte-size "^5.0.1" - cacache "^11.3.2" - call-limit "~1.1.0" - chownr "^1.1.1" - ci-info "^2.0.0" - cli-columns "^3.1.2" - cli-table3 "^0.5.1" - cmd-shim "~2.0.2" - columnify "~1.5.4" - config-chain "^1.1.12" - detect-indent "~5.0.0" - detect-newline "^2.1.0" - dezalgo "~1.0.3" - editor "~1.0.0" - figgy-pudding "^3.5.1" - find-npm-prefix "^1.0.2" - fs-vacuum "~1.2.10" - fs-write-stream-atomic "~1.0.10" - gentle-fs "^2.0.1" - glob "^7.1.3" - graceful-fs "^4.1.15" - has-unicode "~2.0.1" - hosted-git-info "^2.7.1" - iferr "^1.0.2" - inflight "~1.0.6" - inherits "~2.0.3" - ini "^1.3.5" - init-package-json "^1.10.3" - is-cidr "^3.0.0" - json-parse-better-errors "^1.0.2" - lazy-property "~1.0.0" - libcipm "^3.0.3" - libnpm "^2.0.1" - libnpmhook "^5.0.2" - libnpx "^10.2.0" - lock-verify "^2.1.0" - lockfile "^1.0.4" - lodash._baseuniq "~4.6.0" - lodash.clonedeep "~4.5.0" - lodash.union "~4.6.0" - lodash.uniq "~4.5.0" - lodash.without "~4.4.0" - lru-cache "^4.1.5" - meant "~1.0.1" - mississippi "^3.0.0" - mkdirp "~0.5.1" - move-concurrently "^1.0.1" - node-gyp "^3.8.0" - nopt "~4.0.1" - normalize-package-data "^2.5.0" - npm-audit-report "^1.3.2" - npm-cache-filename "~1.0.2" - npm-install-checks "~3.0.0" - npm-lifecycle "^2.1.0" - npm-package-arg "^6.1.0" - npm-packlist "^1.4.1" - npm-pick-manifest "^2.2.3" - npm-registry-fetch "^3.9.0" - npm-user-validate "~1.0.0" - npmlog "~4.1.2" - once "~1.4.0" - opener "^1.5.1" - osenv "^0.1.5" - pacote "^9.5.0" - path-is-inside "~1.0.2" - promise-inflight "~1.0.1" - qrcode-terminal "^0.12.0" - query-string "^6.2.0" - qw "~1.0.1" - read "~1.0.7" - read-cmd-shim "~1.0.1" - read-installed "~4.0.3" - read-package-json "^2.0.13" - read-package-tree "^5.2.2" - readable-stream "^3.1.1" - request "^2.88.0" - retry "^0.12.0" - rimraf "^2.6.3" - safe-buffer "^5.1.2" - semver "^5.6.0" - sha "~2.0.1" - slide "~1.1.6" - sorted-object "~2.0.1" - sorted-union-stream "~2.1.3" - ssri "^6.0.1" - stringify-package "^1.0.0" - tar "^4.4.8" - text-table "~0.2.0" - tiny-relative-date "^1.3.0" - uid-number "0.0.6" - umask "~1.1.0" - unique-filename "^1.1.1" - unpipe "~1.0.0" - update-notifier "^2.5.0" - uuid "^3.3.2" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "~3.0.0" - which "^1.3.1" - worker-farm "^1.6.0" - write-file-atomic "^2.4.2" - -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2, npmlog@^4.1.2, npmlog@~4.1.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -11880,19 +11148,19 @@ object-is@^1.0.1: integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= object-keys@^1.0.11, object-keys@^1.0.12: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032" - integrity sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg== + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-keys@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= -object-path@^0.9.2: - version "0.9.2" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" - integrity sha1-D9mnT8X60a45aLWGvaXGMr1sBaU= +object-path@0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" + integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= object-visit@^1.0.0: version "1.0.1" @@ -11911,7 +11179,7 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.entries@^1.0.4: +object.entries@^1.0.4, object.entries@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== @@ -11980,7 +11248,7 @@ on-headers@~1.0.2: resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.3.1, once@^1.4.0, once@~1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -12016,7 +11284,7 @@ opensans-npm-webfont@1.0.0: resolved "https://registry.yarnpkg.com/opensans-npm-webfont/-/opensans-npm-webfont-1.0.0.tgz#910c8e525887b47eb8a6795846138a0cbac15a47" integrity sha512-2ehgrX+NpoxLOil30tYGr0cDsDXSJn9gon6PfM1Ki0CxZF6ui9Mi6Dm5DGglKyK2QiX0gMb6Ch7VmRHwfc4M6Q== -opn@^5.1.0: +opn@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== @@ -12080,16 +11348,7 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-locale@^3.0.0: +os-locale@^3.0.0, os-locale@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== @@ -12103,7 +11362,7 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@0, osenv@^0.1.4, osenv@^0.1.5: +osenv@0, osenv@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -12134,18 +11393,18 @@ p-finally@^1.0.0: integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= p-is-promise@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.0.0.tgz#7554e3d572109a87e1f3f53f6a7d85d1b194f4c5" - integrity sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg== + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== -p-limit@^1.0.0, p-limit@^1.1.0: +p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: p-try "^1.0.0" -p-limit@^2.0.0: +p-limit@^2.0.0, p-limit@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== @@ -12201,39 +11460,6 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" -pacote@^9.1.0, pacote@^9.2.3, pacote@^9.5.0: - version "9.5.0" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.0.tgz#85f3013a3f6dd51c108b0ccabd3de8102ddfaeda" - integrity sha512-aUplXozRbzhaJO48FaaeClmN+2Mwt741MC6M3bevIGZwdCaP7frXzbUOfOWa91FPHoLITzG0hYaKY363lxO3bg== - dependencies: - bluebird "^3.5.3" - cacache "^11.3.2" - figgy-pudding "^3.5.1" - get-stream "^4.1.0" - glob "^7.1.3" - lru-cache "^5.1.1" - make-fetch-happen "^4.0.1" - minimatch "^3.0.4" - minipass "^2.3.5" - mississippi "^3.0.0" - mkdirp "^0.5.1" - normalize-package-data "^2.4.0" - npm-package-arg "^6.1.0" - npm-packlist "^1.1.12" - npm-pick-manifest "^2.2.3" - npm-registry-fetch "^3.8.0" - osenv "^0.1.5" - promise-inflight "^1.0.1" - promise-retry "^1.1.1" - protoduck "^5.0.1" - rimraf "^2.6.2" - safe-buffer "^5.1.2" - semver "^5.6.0" - ssri "^6.0.1" - tar "^4.4.8" - unique-filename "^1.1.1" - which "^1.3.1" - pako@^1.0.7, pako@~1.0.5: version "1.0.10" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" @@ -12358,7 +11584,7 @@ path-dirname@^1.0.0: resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= -path-exists@^2.0.0, path-exists@^2.1.0: +path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= @@ -12375,7 +11601,7 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1, path-is-inside@^1.0.2, path-is-inside@~1.0.2: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -12567,7 +11793,7 @@ pngjs@^3.3.1: resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== -portfinder@^1.0.9: +portfinder@^1.0.20: version "1.0.20" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a" integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw== @@ -13310,6 +12536,15 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" +postcss@7.0.14, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.13, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6, postcss@^7.0.7: + version "7.0.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5" + integrity sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + postcss@^5.0.5: version "5.2.18" resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" @@ -13329,15 +12564,6 @@ postcss@^6.0.21, postcss@^6.0.22, postcss@^6.0.6: source-map "^0.6.1" supports-color "^5.4.0" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.13, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.5, postcss@^7.0.6, postcss@^7.0.7: - version "7.0.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.14.tgz#4527ed6b1ca0d82c53ce5ec1a2041c2346bbd6e5" - integrity sha512-NsbD6XUUMZvBxtQAJuWDJeeC4QFsmWsfozWxCJPWf3M55K9iu2iMDaKqyoOdTJ1R4usBXuxlVFAIo8rZPQD4Bg== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - precss@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/precss/-/precss-4.0.0.tgz#518ce5c4d31eac9bd268c538ae6fb462f3bf57b3" @@ -13361,6 +12587,11 @@ prepend-http@^1.0.1: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -13432,19 +12663,11 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise-inflight@^1.0.1, promise-inflight@~1.0.1: +promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -promise-retry@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" - integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= - dependencies: - err-code "^1.0.0" - retry "^0.10.0" - promise@^7.1.1: version "7.3.1" resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" @@ -13467,12 +12690,14 @@ prompts@^2.0.1: kleur "^3.0.2" sisteransi "^1.0.0" -promzard@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" - integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= +prop-types-exact@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" + integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== dependencies: - read "1" + has "^1.0.3" + object.assign "^4.1.0" + reflect.ownkeys "^0.2.0" prop-types@15.x, prop-types@^15.5.0, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.7, prop-types@^15.5.8, prop-types@^15.5.9, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" @@ -13488,18 +12713,6 @@ property-expr@^1.5.0: resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-1.5.1.tgz#22e8706894a0c8e28d58735804f6ba3a3673314f" integrity sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g== -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= - -protoduck@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" - integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== - dependencies: - genfun "^5.0.0" - proxy-addr@~2.0.3, proxy-addr@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" @@ -13561,7 +12774,7 @@ public-encrypt@^4.0.0: setimmediate ">= 1.0.2 < 2" slice-stream ">= 1.0.0 < 2" -pump@^2.0.0, pump@^2.0.1: +pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== @@ -13616,11 +12829,6 @@ qrcode-terminal@^0.10.0: resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.10.0.tgz#a76a48e2610a18f97fa3a2bd532b682acff86c53" integrity sha1-p2pI4mEKGPl/o6K9UytoKs/4bFM= -qrcode-terminal@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" - integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ== - qs@6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" @@ -13631,15 +12839,7 @@ qs@6.5.2, qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -query-string@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.2.0.tgz#468edeb542b7e0538f9f9b1aeb26f034f19c86e1" - integrity sha512-5wupExkIt8RYL4h/FE+WTg3JHk62e6fFPWtAZA9J5IWK1PfTfKkMS93HBUHcFpeYi9KsY5pFbh+ldvEyaz5MyA== - dependencies: - decode-uri-component "^0.2.0" - strict-uri-encode "^2.0.0" - -query-string@^6.2.0: +query-string@6.4.2: version "6.4.2" resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.4.2.tgz#8be1dbd105306aebf86022144f575a29d516b713" integrity sha512-DfJqAen17LfLA3rQ+H5S4uXphrF+ANU1lT2ijds4V/Tj4gZxA3gx5/tg1bz7kYCmwna7LyJNCYqO7jNRzo3aLw== @@ -13648,6 +12848,15 @@ query-string@^6.2.0: split-on-first "^1.0.0" strict-uri-encode "^2.0.0" +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -13668,11 +12877,6 @@ quick-lru@^1.0.0: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= -qw@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/qw/-/qw-1.0.1.tgz#efbfdc740f9ad054304426acb183412cc8b996d4" - integrity sha1-77/cdA+a0FQwRCassYNBLMi5ltQ= - raf@3.4.1, raf@^3.4.0, raf@^3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" @@ -14169,10 +13373,10 @@ react-dom@^16.6.3: prop-types "^15.6.2" scheduler "^0.13.6" -react-hot-loader@^4.3.12: - version "4.8.2" - resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.8.2.tgz#21a00cfca7fc848c53d78c34f6081f5ae3737dda" - integrity sha512-W5I8ps/32q5zL0mKfGGdPgsZfgljs/tdCTYxM6P1N8GV4+rUAu4g6ysy//5/jJpAFM0Bpgr6HrVLWK9h0jMdrA== +react-hot-loader@^4.8.4: + version "4.8.4" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.8.4.tgz#357ba342e367fd42d6a870a9c0601c23fa0730c6" + integrity sha512-O98btZXcm24ZgP+aPBD0W9N+GEnkOg6vlLEy/IMZ53u3K/dGqO0I/RU4qrmQzE+wMDLpwNo5TwxaAjVw9Y+IBA== dependencies: fast-levenshtein "^2.0.6" global "^4.3.0" @@ -14193,18 +13397,6 @@ react-i18nify@^1.11.8: moment "^2.22.1" prop-types "^15.6.1" -react-icon-base@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/react-icon-base/-/react-icon-base-2.1.0.tgz#a196e33fdf1e7aaa1fda3aefbb68bdad9e82a79d" - integrity sha1-oZbjP98eeqof2jrvu2i9rZ6Cp50= - -react-icons@2.2.7: - version "2.2.7" - resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-2.2.7.tgz#d7860826b258557510dac10680abea5ca23cf650" - integrity sha512-0n4lcGqzJFcIQLoQytLdJCE0DKSA9dkwEZRYoGrIDJZFvIT6Hbajx5mv9geqhqFiNjUgtxg8kPyDfjlhymbGFg== - dependencies: - react-icon-base "2.1.0" - react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6: version "16.8.6" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" @@ -14307,27 +13499,20 @@ react@^16.6.3: prop-types "^15.6.2" scheduler "^0.13.6" -read-cmd-shim@^1.0.1, read-cmd-shim@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" - integrity sha1-LV0Vd4ajfAVdIgd8MsU/gynpHHs= - dependencies: - graceful-fs "^4.1.2" - -read-config-file@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-3.2.1.tgz#112dc8636121fa71fd524e1a8a5b4470ef7a2732" - integrity sha512-yW4hZZXdNN+Paij5JVAiTv1lUsAN5QRBU5NqotQqwYdVkUczSmDzm66VLu0eojiZt2zFeYptTFDAYlalDGuHdA== +read-config-file@3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-3.2.2.tgz#57bbff7dd97caf237d0d625bd541c6d0efb4d067" + integrity sha512-PuFpMgZF01VB0ydH1dfitAxCP/fh+qnfbA9cYNIPoxPbz0SMngsrafCtaHDWfER7MwlDz4fmrNBhPkakxxFpTg== dependencies: - ajv "^6.7.0" - ajv-keywords "^3.2.0" - bluebird-lst "^1.0.6" + ajv "^6.9.2" + ajv-keywords "^3.4.0" + bluebird-lst "^1.0.7" dotenv "^6.2.0" dotenv-expand "^4.2.0" - fs-extra-p "^7.0.0" + fs-extra-p "^7.0.1" js-yaml "^3.12.1" json5 "^2.1.0" - lazy-val "^1.0.3" + lazy-val "^1.0.4" read-file-relative@^1.2.0: version "1.2.0" @@ -14336,43 +13521,6 @@ read-file-relative@^1.2.0: dependencies: callsite "^1.0.0" -read-installed@~4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" - integrity sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc= - dependencies: - debuglog "^1.0.1" - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - semver "2 || 3 || 4 || 5" - slide "~1.1.3" - util-extend "^1.0.1" - optionalDependencies: - graceful-fs "^4.1.2" - -"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: - version "2.0.13" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a" - integrity sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg== - dependencies: - glob "^7.1.1" - json-parse-better-errors "^1.0.1" - normalize-package-data "^2.0.0" - slash "^1.0.0" - optionalDependencies: - graceful-fs "^4.1.2" - -read-package-tree@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.2.2.tgz#4b6a0ef2d943c1ea36a578214c9a7f6b7424f7a8" - integrity sha512-rW3XWUUkhdKmN2JKB4FL563YAgtINifso5KShykufR03nJ5loGFlkUMe1g/yxmqX073SoYYTsgXu7XdDinKZuA== - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - once "^1.3.0" - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -14441,13 +13589,6 @@ read-pkg@^4.0.1: parse-json "^4.0.0" pify "^3.0.0" -read@1, read@~1.0.1, read@~1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= - dependencies: - mute-stream "~0.0.4" - "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -14480,7 +13621,7 @@ readable-stream@~1.0.0, readable-stream@~1.0.31: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@~1.1.10, readable-stream@~1.1.9: +readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= @@ -14490,16 +13631,6 @@ readable-stream@~1.1.10, readable-stream@~1.1.9: isarray "0.0.1" string_decoder "~0.10.x" -readdir-scoped-modules@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747" - integrity sha1-n6+jfShr5dksuuve4DDcm19AZ0c= - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" - readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -14607,7 +13738,23 @@ ref-array@1.2.0, ref-array@^1.2.0: debug "2" ref "1" -ref-struct@1, ref-struct@1.1.0, ref-struct@^1.1.0: +ref-napi@1.4.1, ref-napi@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/ref-napi/-/ref-napi-1.4.1.tgz#ab129c5d4c2b4ccbb50503c09c315334a5a3a77b" + integrity sha512-7AK1YNzEO2z8DLFPTf+AvOViCUgLK0stM4hnR0HWLb71Bo10UJWIpMDN3Tz7BNnUJhsj2pHWfjxugcaRvCF7zA== + dependencies: + bindings "^1.3.0" + debug "^3.1.0" + node-addon-api "^1.6.2" + +ref-struct-di@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ref-struct-di/-/ref-struct-di-1.1.0.tgz#d252144eb449608ccf2e5c12fda35f8153bd3760" + integrity sha512-gghZITj/iQwdwFDduZ6T8kL2B2ogInlOz7AOB0ggFoEc7akAKMcDrbzh3OIPk13Kxy8U2bHPvN6nejcBh4jN7A== + dependencies: + debug "^3.1.0" + +ref-struct@1.1.0, ref-struct@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ref-struct/-/ref-struct-1.1.0.tgz#5d5ee65ad41cefc3a5c5feb40587261e479edc13" integrity sha1-XV7mWtQc78Olxf60BYcmHkee3BM= @@ -14615,7 +13762,7 @@ ref-struct@1, ref-struct@1.1.0, ref-struct@^1.1.0: debug "2" ref "1" -ref@1, ref@1.3.5, ref@^1.3.3: +ref@1: version "1.3.5" resolved "https://registry.yarnpkg.com/ref/-/ref-1.3.5.tgz#0e33f080cdb94a3d95312b2b3b1fd0f82044ca0f" integrity sha512-2cBCniTtxcGUjDpvFfVpw323a83/0RLSGJJY5l5lcomZWhYpU2cuLdsvYqMixvsdLJ9+sTdzEkju8J8ZHDM2nA== @@ -14624,6 +13771,11 @@ ref@1, ref@1.3.5, ref@^1.3.3: debug "2" nan "2" +reflect.ownkeys@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" + integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= + regenerate-unicode-properties@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz#7b38faa296252376d363558cfbda90c9ce709662" @@ -14680,7 +13832,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regex-parser@^2.2.9: +regex-parser@2.2.10: version "2.2.10" resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== @@ -14901,6 +14053,11 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + requireindex@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" @@ -14975,22 +14132,21 @@ resolve-pathname@^2.2.0: resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" integrity sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg== -resolve-url-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.0.0.tgz#c47eeca1fc8d62b08dc2eef12b3af5af3e775c74" - integrity sha512-ZzRUnpu+pLkrN2ZBsEEifOD6W+9ZNtdIu+kY3vs+11PwuZ2WykxbAY9qO+S9SmasSDRllxNdSm9IhN8HU4xGKg== - dependencies: - adjust-sourcemap-loader "^1.1.0" - camelcase "^4.1.0" - compose-function "^3.0.3" - convert-source-map "^1.5.1" - es6-iterator "^2.0.3" - loader-utils "^1.1.0" - lodash.defaults "^4.0.0" - postcss "^7.0.0" - rework "^1.0.1" - rework-visit "^1.0.0" - source-map "^0.5.7" +resolve-url-loader@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.0.tgz#54d8181d33cd1b66a59544d05cadf8e4aa7d37cc" + integrity sha512-2QcrA+2QgVqsMJ1Hn5NnJXIGCX1clQ1F6QJTqOeiaDw9ACo1G2k+8/shq3mtqne03HOFyskAClqfxKyFBriXZg== + dependencies: + adjust-sourcemap-loader "2.0.0" + camelcase "5.0.0" + compose-function "3.0.3" + convert-source-map "1.6.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.14" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" resolve-url@^0.2.1: version "0.2.1" @@ -15022,22 +14178,12 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -retry@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" - integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -rework-visit@^1.0.0: +rework-visit@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= -rework@^1.0.1: +rework@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= @@ -15263,7 +14409,7 @@ select-hose@^2.0.0: resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= -selfsigned@^1.9.1: +selfsigned@^1.10.4: version "1.10.4" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw== @@ -15282,7 +14428,7 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.2.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.2.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.7.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== @@ -15297,6 +14443,11 @@ semver@5.6.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== +semver@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65" + integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ== + semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -15326,7 +14477,7 @@ serialize-javascript@^1.4.0: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.6.1.tgz#4d1f697ec49429a847ca6f442a2a755126c4d879" integrity sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw== -serve-index@^1.7.2: +serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= @@ -15374,6 +14525,13 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" +setimmediate-napi@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setimmediate-napi/-/setimmediate-napi-1.0.3.tgz#f5ef99da0d9b7a1036dd375b35a687cfb483c172" + integrity sha512-ah02BktAAJJ1eHANtD93ZdvKZrCXJwSHXww5arS1YcihOlpJlwsVkns4BXh6sRJNAyWTLl6TkjVx8CjKV9qwcQ== + dependencies: + get-uv-event-loop-napi-h "^1.0.2" + "setimmediate@>= 1.0.1 < 2", "setimmediate@>= 1.0.2 < 2", setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -15397,14 +14555,6 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -sha@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/sha/-/sha-2.0.1.tgz#6030822fbd2c9823949f8f72ed6411ee5cf25aae" - integrity sha1-YDCCL70smCOUn49y7WQR7lzyWq4= - dependencies: - graceful-fs "^4.1.2" - readable-stream "^2.0.2" - shallow-clone@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571" @@ -15481,10 +14631,10 @@ should-util@^1.0.0: resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.0.tgz#c98cda374aa6b190df8ba87c9889c2b4db620063" integrity sha1-yYzaN0qmsZDfi6h8mInCtNtiAGM= -should@13.1.3: - version "13.1.3" - resolved "https://registry.yarnpkg.com/should/-/should-13.1.3.tgz#a089bdf7979392a8272a712c8b63acbaafb7948f" - integrity sha512-1m8FHuNTrJ37pXfjfhjmv1/jBw2eYZIWibQ1pH2EGYhn8TcPOSK6zjNbhF20sZ4Gc0XSIlSaSGupnYRKkk1pKQ== +should@13.2.3: + version "13.2.3" + resolved "https://registry.yarnpkg.com/should/-/should-13.2.3.tgz#96d8e5acf3e97b49d89b51feaa5ae8d07ef58f10" + integrity sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ== dependencies: should-equal "^2.0.0" should-format "^3.0.3" @@ -15567,16 +14717,6 @@ slice-ansi@^2.1.0: dependencies: readable-stream "~1.0.31" -slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= - -smart-buffer@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.2.tgz#5207858c3815cc69110703c6b94e46c15634395d" - integrity sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw== - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -15627,22 +14767,6 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" -socks-proxy-agent@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz#3c8991f3145b2799e70e11bd5fbc8b1963116386" - integrity sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg== - dependencies: - agent-base "~4.2.1" - socks "~2.3.2" - -socks@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.3.2.tgz#ade388e9e6d87fdb11649c15746c578922a5883e" - integrity sha512-pCpjxQgOByDHLlNqlnh/mNSAxIUkyBBuwwhTcV+enZGbDaClPvHdvm6uvOwZfFJkam7cGhBNbb4JxiP8UZkRvQ== - dependencies: - ip "^1.1.5" - smart-buffer "4.0.2" - solid-auth-client@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/solid-auth-client/-/solid-auth-client-2.3.0.tgz#4bac06984b61981ad9d06f285b8ead6200f21aaa" @@ -15668,18 +14792,12 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" -sorted-object@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc" - integrity sha1-fWMfS9OnmKJK8d/8+/6DM3pd9fw= - -sorted-union-stream@~2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/sorted-union-stream/-/sorted-union-stream-2.1.3.tgz#c7794c7e077880052ff71a8d4a2dbb4a9a638ac7" - integrity sha1-x3lMfgd4gAUv9xqNSi27Sppjisc= +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= dependencies: - from2 "^1.3.0" - stream-iterate "^1.1.0" + is-plain-obj "^1.0.0" source-list-map@^2.0.0: version "2.0.1" @@ -15704,7 +14822,15 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.10, source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@^0.5.9, source-map-support@~0.5.10: +source-map-support@^0.5.10, source-map-support@^0.5.11, source-map-support@^0.5.6: + version "0.5.12" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" + integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@^0.5.5, source-map-support@^0.5.9, source-map-support@~0.5.10: version "0.5.11" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.11.tgz#efac2ce0800355d026326a0ca23e162aeac9a4e2" integrity sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ== @@ -15717,6 +14843,11 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + source-map@^0.1.38: version "0.1.43" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" @@ -15736,11 +14867,6 @@ source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - source-map@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" @@ -15773,9 +14899,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e" - integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g== + version "3.0.4" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" + integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== spdy-transport@^3.0.0: version "3.0.0" @@ -15805,17 +14931,16 @@ specificity@^0.4.1: resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" integrity sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg== -spectron@4: - version "4.0.0" - resolved "https://registry.yarnpkg.com/spectron/-/spectron-4.0.0.tgz#640bcc5d96e1295971e28d585e301b76e0a93033" - integrity sha512-y974/xQJGafAnoSLG6TdqddBTow280OzCJk9z9aYxTc5y0QXipvCk1NxChjRb76E2kXtvLZvUHPs60ilrLjubQ== +spectron@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/spectron/-/spectron-5.0.0.tgz#602440da0c892f8d73471652ae68000b98d7769c" + integrity sha512-wJrFe8EZ7xvarYawBPd1pDegmSz81U1jG0rSCx+yXqD1TISUH9ASB21KysLXkPylAnc2vhbpGiWQxrqVFtsiJg== dependencies: dev-null "^0.1.1" - electron-chromedriver "~2.0.0" - npm "^6.4.1" + electron-chromedriver "~3.0.0" request "^2.87.0" split "^1.0.0" - webdriverio "^4.12.0" + webdriverio "^4.13.0" speedometer@~0.1.2: version "0.1.4" @@ -15873,14 +14998,7 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -ssri@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" - integrity sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ== - dependencies: - safe-buffer "^5.1.1" - -ssri@^6.0.0, ssri@^6.0.1: +ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== @@ -15942,6 +15060,11 @@ stat-mode@^0.2.2: resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" integrity sha1-5sgLYjEj19gM8TLOU480YokHJQI= +stat-mode@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.3.0.tgz#69283b081f851582b328d2a4ace5f591ce52f54b" + integrity sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng== + state-toggle@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.1.tgz#c3cb0974f40a6a0f8e905b96789eb41afa1cde3a" @@ -16004,19 +15127,16 @@ stream-http@^2.7.2: to-arraybuffer "^1.0.0" xtend "^4.0.0" -stream-iterate@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/stream-iterate/-/stream-iterate-1.2.0.tgz#2bd7c77296c1702a46488b8ad41f79865eecd4e1" - integrity sha1-K9fHcpbBcCpGSIuK1B95hl7s1OE= - dependencies: - readable-stream "^2.1.5" - stream-shift "^1.0.0" - stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -16272,14 +15392,6 @@ sugarss@^2.0.0: dependencies: postcss "^7.0.2" -sumchecker@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-1.3.1.tgz#79bb3b4456dd04f18ebdbc0d703a1d1daec5105d" - integrity sha1-ebs7RFbdBPGOvbwNcDodHa7FEF0= - dependencies: - debug "^2.2.0" - es6-promise "^4.0.5" - sumchecker@^2.0.1, sumchecker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-2.0.2.tgz#0f42c10e5d05da5d42eea3e56c3399a37d6c5b3e" @@ -16424,7 +15536,7 @@ tar@^2.0.0: fstream "^1.0.2" inherits "2" -tar@^4, tar@^4.4.8: +tar@^4: version "4.4.8" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== @@ -16516,10 +15628,10 @@ test-exclude@^5.0.0: promisify-event "^1.0.0" proxyquire "^1.7.10" -testcafe-browser-tools@1.6.5: - version "1.6.5" - resolved "https://registry.yarnpkg.com/testcafe-browser-tools/-/testcafe-browser-tools-1.6.5.tgz#8b41ebf844dccc810e82e7f19cc9d257f8c6ad86" - integrity sha512-VsdAxRCRo7pSUYUNO0fw6uX8w84ooOhg8ZMAUBmMkTU9xOYBKpJF/Kvh40fBs2tOB4r/q8yPYnT/Y8z8HsekcA== +testcafe-browser-tools@1.6.8: + version "1.6.8" + resolved "https://registry.yarnpkg.com/testcafe-browser-tools/-/testcafe-browser-tools-1.6.8.tgz#74ace1ee4c21a20bd6d88238f0d9bc97c596b8fb" + integrity sha512-xFgwmcAOutSJR6goqO8uUFGF5IF2xRC/Ssh4pB5QZ+bTjYsN5amnjgM+813bDBLelC+HmXKqylviz7Dzxbtbcw== dependencies: array-find "^1.0.0" babel-runtime "^5.6.15" @@ -16533,19 +15645,18 @@ testcafe-browser-tools@1.6.5: read-file-relative "^1.2.0" which-promise "^1.0.0" -testcafe-hammerhead@14.5.1: - version "14.5.1" - resolved "https://registry.yarnpkg.com/testcafe-hammerhead/-/testcafe-hammerhead-14.5.1.tgz#e92df0a26a86a5670bde3fdabb38e7cea86a868d" - integrity sha512-ZDAFpSwxcCpG0owLVBWeYokhd/cYWMBgJIRl4frpykxhmPujhrprOPHWbu3dZVZItsTi4gY3Rl3iYmlXGFRzZA== +testcafe-hammerhead@14.6.1: + version "14.6.1" + resolved "https://registry.yarnpkg.com/testcafe-hammerhead/-/testcafe-hammerhead-14.6.1.tgz#68e86cde4e1ecdb3e93500701c79fdafc455ae11" + integrity sha512-wclZC5fBWaJ/j/+8JY4HJJa8gmBr8iWkKEYybpyw8wvVxB/XMZD4C/9CNiQKRhNJNhamTyijXOhjrnvhJ7/w1w== dependencies: - acorn-hammerhead "^0.1.2" + acorn-hammerhead "^0.2.0" bowser "1.6.0" brotli "^1.3.1" crypto-md5 "^1.0.0" css "2.2.3" - esotope-hammerhead "^0.1.0" + esotope-hammerhead "^0.2.0" iconv-lite "0.4.11" - json-hammerhead "^0.1.0" lodash "4.17.11" lru-cache "2.6.3" match-url-wildcard "0.0.2" @@ -16563,10 +15674,10 @@ testcafe-hammerhead@14.5.1: tunnel-agent "0.6.0" webauth "^1.1.0" -testcafe-legacy-api@3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/testcafe-legacy-api/-/testcafe-legacy-api-3.1.10.tgz#9cd68c9c2ae3a773c1f404f98f3d228a555ef701" - integrity sha512-21CrLzYneDKZ/nC1F/nqj4HF4qhUYLsDW0q6aQZKr7jyml3LtiYdBj98LZteNNdykYJR5ra3gIlvA+i+EJk1lQ== +testcafe-legacy-api@3.1.11: + version "3.1.11" + resolved "https://registry.yarnpkg.com/testcafe-legacy-api/-/testcafe-legacy-api-3.1.11.tgz#f6a1704c0ee57bd18b32bc8c383775f2bad74819" + integrity sha512-JWv8Exc9FAEBbKw+IP97Ebd+0FzA3nzgRv9iQCNh/+JlZyUox7NWiojs9BAXqgxIltl54rdo7TxPkNslxb+Ltw== dependencies: async "0.2.6" babel-runtime "^5.8.34" @@ -16624,10 +15735,10 @@ testcafe-reporter-xunit@^2.1.0: resolved "https://registry.yarnpkg.com/testcafe-reporter-xunit/-/testcafe-reporter-xunit-2.1.0.tgz#e6d66c572ce15af266706af0fd610b2a841dd443" integrity sha1-5tZsVyzhWvJmcGrw/WELKoQd1EM= -testcafe@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/testcafe/-/testcafe-1.1.0.tgz#084f999efd54e30a4708faa418dffd1d12885857" - integrity sha512-QvpC/ovesgrC9FRh3ehIsuxOkh6DW/2dxma7ROldJQ3qY/3mRUplRwOVYv7xDo/8mAJp4xNdgMG0QvKkzechBQ== +testcafe@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/testcafe/-/testcafe-1.1.2.tgz#8645546d56412c1517bd365ec493d4235ec01cde" + integrity sha512-4DYL4cdUCt4EoGgTO2Dy1Hn98UGry/YP57W3lu5JBaQAXnO8X2k0Mz0nN1swF2OcDo/u80vhvQq0kZi2iig5Og== dependencies: "@types/node" "^10.12.19" async-exit-hook "^1.1.2" @@ -16662,6 +15773,7 @@ testcafe@1.1.0: import-lazy "^3.1.0" indent-string "^1.2.2" is-ci "^1.0.10" + is-docker "^1.1.0" is-glob "^2.0.1" is-stream "^1.1.0" json5 "^2.1.0" @@ -16689,9 +15801,9 @@ testcafe@1.1.0: sanitize-filename "^1.6.0" source-map-support "^0.5.5" strip-bom "^2.0.0" - testcafe-browser-tools "1.6.5" - testcafe-hammerhead "14.5.1" - testcafe-legacy-api "3.1.10" + testcafe-browser-tools "1.6.8" + testcafe-hammerhead "14.6.1" + testcafe-legacy-api "3.1.11" testcafe-reporter-json "^2.1.0" testcafe-reporter-list "^2.1.0" testcafe-reporter-minimal "^2.1.0" @@ -16713,7 +15825,7 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== -text-table@^0.2.0, text-table@~0.2.0: +text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= @@ -16786,11 +15898,6 @@ tiny-invariant@^1.0.2: resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.4.tgz#346b5415fd93cb696b0c4e8a96697ff590f92463" integrity sha512-lMhRd/djQJ3MoaHEBrw8e2/uM4rs9YMNk0iOr8rHQ0QdbM7D4l0gFl3szKdeixrlyfm9Zqi4dxHCM2qVG8ND5g== -tiny-relative-date@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" - integrity sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A== - tiny-warning@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.2.tgz#1dfae771ee1a04396bdfde27a3adcebc6b648b28" @@ -17055,6 +16162,11 @@ type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + type-is@~1.6.15, type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" @@ -17085,10 +16197,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@3.3.4000: - version "3.3.4000" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.4000.tgz#76b0f89cfdbf97827e1112d64f283f1151d6adf0" - integrity sha512-jjOcCZvpkl2+z7JFn0yBOoLQyLoIkNZAs/fYJkUG6VKy6zLPHJGfQJYFHzibB6GJaF/8QrcECtlQ5cpvRHSMEA== +typescript@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.3.tgz#0eb320e4ace9b10eadf5bc6103286b0f8b7c224f" + integrity sha512-FFgHdPt4T/duxx6Ndf7hwgMZZjZpB+U0nMNGVCYPq0rEzWKjEDobm4J6yb3CS7naZ0yURFqdw9Gwc7UOh/P9oQ== typescript@^3.3.3: version "3.4.1" @@ -17101,28 +16213,18 @@ ua-parser-js@^0.7.18: integrity sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ== uglify-js@^3.1.4: - version "3.5.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.5.3.tgz#d490bb5347f23025f0c1bc0dee901d98e4d6b063" - integrity sha512-rIQPT2UMDnk4jRX+w4WO84/pebU2jiLsjgIyrCktYgSvx28enOE3iYQMr+BD1rHiitWnDmpu0cY/LfIEpKcjcw== + version "3.5.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.5.4.tgz#4a64d57f590e20a898ba057f838dcdfb67a939b9" + integrity sha512-GpKo28q/7Bm5BcX9vOu4S46FwisbPbAmkkqPnGIpKvKTM96I85N6XHQV+k4I6FA2wxgLhcsSyHoNhzucwCflvA== dependencies: - commander "~2.19.0" + commander "~2.20.0" source-map "~0.6.1" -uid-number@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= - ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== -umask@^1.1.0, umask@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" - integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= - unherit@^1.0.4: version "1.1.1" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.1.tgz#132748da3e88eab767e08fabfbb89c5e9d28628c" @@ -17188,7 +16290,7 @@ uniqs@^2.0.0: resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= -unique-filename@^1.1.0, unique-filename@^1.1.1: +unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== @@ -17300,7 +16402,7 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== -update-notifier@^2.3.0, update-notifier@^2.5.0: +update-notifier@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== @@ -17425,7 +16527,7 @@ v8-compile-cache@^2.0.2: resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c" integrity sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw== -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: +validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -17433,13 +16535,6 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= - dependencies: - builtins "^1.0.3" - value-equal@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" @@ -17556,19 +16651,21 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -wcwidth@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - wdio-dot-reporter@~0.0.8: version "0.0.10" resolved "https://registry.yarnpkg.com/wdio-dot-reporter/-/wdio-dot-reporter-0.0.10.tgz#facfb7c9c5984149951f59cbc3cd0752101cf0e0" integrity sha512-A0TCk2JdZEn3M1DSG9YYbNRcGdx/YRw19lTiRpgwzH4qqWkO/oRDZRmi3Snn4L2j54KKTfPalBhlOtc8fojVgg== -weak@1.0.1, weak@^1.0.1: +weak-napi@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/weak-napi/-/weak-napi-1.0.3.tgz#ff4dfa818db1c509ba4166530b42414ef74cbba6" + integrity sha512-cyqeMaYA5qI7RoZKAKvIHwEROEKDNxK7jXj3u56nF2rGBh+HFyhYmBb1/wAN4RqzRmkYKVVKQyqHpBoJjqtGUA== + dependencies: + bindings "^1.3.0" + node-addon-api "^1.1.0" + setimmediate-napi "^1.0.3" + +weak@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/weak/-/weak-1.0.1.tgz#ab99aab30706959aa0200cb8cf545bb9cb33b99e" integrity sha1-q5mqswcGlZqgIAy4z1RbucszuZ4= @@ -17581,7 +16678,7 @@ webauth@^1.1.0: resolved "https://registry.yarnpkg.com/webauth/-/webauth-1.1.0.tgz#64704f6b8026986605bc3ca629952e6e26fdd100" integrity sha1-ZHBPa4AmmGYFvDymKZUubib90QA= -webdriverio@^4.12.0: +webdriverio@^4.13.0: version "4.14.4" resolved "https://registry.yarnpkg.com/webdriverio/-/webdriverio-4.14.4.tgz#f7a94e9a6530819796088f42b009833d83de0386" integrity sha512-Knp2vzuzP5c5ybgLu+zTwy/l1Gh0bRP4zAr8NWcrStbuomm9Krn9oRF0rZucT6AyORpXinETzmeowFwIoo7mNA== @@ -17615,9 +16712,9 @@ webidl-conversions@^4.0.2: integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== webpack-bundle-analyzer@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.1.0.tgz#2f19cbb87bb6d4f3cb4e59cb67c837bd9436e89d" - integrity sha512-nyDyWEs7C6DZlgvu1pR1zzJfIWSiGPbtaByZr8q+Fd2xp70FuM/8ngCJzj3Er1TYRLSFmp1F1OInbEm4DZH8NA== + version "3.3.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.3.0.tgz#2c18aca01fa03f11dccb3f627fb40b9f38bd7225" + integrity sha512-xNz1oC5pFiVLyDHDz2qZs3ydAuIWv96zokdBZAz+xdhD8BX3mytCmbWkzLzNRDjuWEovhQtycuvpfd368XvLBA== dependencies: acorn "^6.0.7" acorn-walk "^6.1.1" @@ -17650,7 +16747,7 @@ webpack-cli@^3.1.2: v8-compile-cache "^2.0.2" yargs "^12.0.5" -webpack-dev-middleware@^3.5.1: +webpack-dev-middleware@^3.6.2: version "3.6.2" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.6.2.tgz#f37a27ad7c09cd7dc67cd97655413abaa1f55942" integrity sha512-A47I5SX60IkHrMmZUlB0ZKSWi29TZTcPz7cha1Z75yYOsgWh/1AcPmQEbC8ZIbU3A1ytSv1PMU0PyPz2Lmz2jg== @@ -17661,40 +16758,40 @@ webpack-dev-middleware@^3.5.1: webpack-log "^2.0.0" webpack-dev-server@^3.1.10: - version "3.2.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.2.1.tgz#1b45ce3ecfc55b6ebe5e36dab2777c02bc508c4e" - integrity sha512-sjuE4mnmx6JOh9kvSbPYw3u/6uxCLHNWfhWaIPwcXWsvWOPN+nc5baq4i9jui3oOBRXGonK9+OI0jVkaz6/rCw== + version "3.3.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.3.1.tgz#7046e49ded5c1255a82c5d942bcdda552b72a62d" + integrity sha512-jY09LikOyGZrxVTXK0mgIq9y2IhCoJ05848dKZqX1gAGLU1YDqgpOT71+W53JH/wI4v6ky4hm+KvSyW14JEs5A== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" - chokidar "^2.0.0" - compression "^1.5.2" - connect-history-api-fallback "^1.3.0" + chokidar "^2.1.5" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" debug "^4.1.1" - del "^3.0.0" - express "^4.16.2" - html-entities "^1.2.0" + del "^4.1.0" + express "^4.16.4" + html-entities "^1.2.1" http-proxy-middleware "^0.19.1" import-local "^2.0.0" internal-ip "^4.2.0" ip "^1.1.5" - killable "^1.0.0" - loglevel "^1.4.1" - opn "^5.1.0" - portfinder "^1.0.9" + killable "^1.0.1" + loglevel "^1.6.1" + opn "^5.5.0" + portfinder "^1.0.20" schema-utils "^1.0.0" - selfsigned "^1.9.1" - semver "^5.6.0" - serve-index "^1.7.2" + selfsigned "^1.10.4" + semver "^6.0.0" + serve-index "^1.9.1" sockjs "0.3.19" sockjs-client "1.3.0" spdy "^4.0.0" - strip-ansi "^3.0.0" + strip-ansi "^3.0.1" supports-color "^6.1.0" url "^0.11.0" - webpack-dev-middleware "^3.5.1" + webpack-dev-middleware "^3.6.2" webpack-log "^2.0.0" - yargs "12.0.2" + yargs "12.0.5" webpack-log@^2.0.0: version "2.0.0" @@ -17852,7 +16949,7 @@ wordwrap@~1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -worker-farm@^1.5.2, worker-farm@^1.6.0: +worker-farm@^1.5.2: version "1.6.0" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ== @@ -17889,7 +16986,7 @@ write-file-atomic@2.4.1: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: +write-file-atomic@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz#a7181706dfba17855d221140a9c06e15fcdd87b9" integrity sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g== @@ -17958,11 +17055,6 @@ xmldom@0.1.x, xmldom@^0.1.22: resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" integrity sha1-1QH5ezvbQDr4757MIFcxh6rawOk= -xregexp@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" - integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== - xregexp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" @@ -18000,7 +17092,7 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== -yargs-parser@^10.0.0, yargs-parser@^10.1.0: +yargs-parser@^10.0.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== @@ -18015,6 +17107,14 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.0.0.tgz#3fc44f3e76a8bdb1cc3602e860108602e5ccde8b" + integrity sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" @@ -18022,20 +17122,13 @@ yargs-parser@^5.0.0: dependencies: camelcase "^3.0.0" -yargs-parser@^9.0.2: - version "9.0.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" - integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= - dependencies: - camelcase "^4.1.0" - -yargs@12.0.2: - version "12.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc" - integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ== +yargs@12.0.5, yargs@^12.0.1, yargs@^12.0.2, yargs@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== dependencies: cliui "^4.0.0" - decamelize "^2.0.0" + decamelize "^1.2.0" find-up "^3.0.0" get-caller-file "^1.0.1" os-locale "^3.0.0" @@ -18045,43 +17138,24 @@ yargs@12.0.2: string-width "^2.0.0" which-module "^2.0.0" y18n "^3.2.1 || ^4.0.0" - yargs-parser "^10.1.0" - -yargs@^11.0.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" - integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^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 "^9.0.2" + yargs-parser "^11.1.1" -yargs@^12.0.1, yargs@^12.0.2, yargs@^12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== +yargs@^13.2.1: + version "13.2.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.2.tgz#0c101f580ae95cea7f39d927e7770e3fdc97f993" + integrity sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA== dependencies: cliui "^4.0.0" - decamelize "^1.2.0" find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" + get-caller-file "^2.0.1" + os-locale "^3.1.0" require-directory "^2.1.1" - require-main-filename "^1.0.1" + require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^2.0.0" + string-width "^3.0.0" which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" + y18n "^4.0.0" + yargs-parser "^13.0.0" yargs@^7.0.0: version "7.1.0"