diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..b34e8d6b --- /dev/null +++ b/.prettierrc @@ -0,0 +1 @@ +{ "tabWidth": 4, "trailingComma": "es5", "arrowParens": "avoid" } diff --git a/.travis.yml b/.travis.yml index c3ea3ee6..579ac033 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: - - 10.16.2 + - lts/dubnium os: - linux dist: bionic @@ -11,7 +11,7 @@ before_install: - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list - sudo apt-get update && sudo apt-get install --no-install-recommends yarn - - nvm install 10.16.2 && nvm use 10.16.2 && npm install -g yarn + - nvm install lts/dubnium && nvm use lts/dubnium && npm install -g yarn - yarn install cache: apt: true diff --git a/README.md b/README.md index 37dfdf1e..456959d5 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -## Private Share +## pShare ### Software Objectives: - Privately and securely share data with friends, family, and business associates. @@ -91,6 +91,32 @@ New binaries can be created by following https://github.com/HiddenField/dynamic- Information about the architecture of the application can be found in [this document](documentation/electron-redux-architecture.md) +### Talking to an installed pShare's instance of dynamicd + +#### Linux *.deb*-based installation from `bash` + +In the terminal, it is possible to make an alias `dyncli` to point to the running dynamicd: + +```shell +$ alias dyncli='/opt/pShare/resources/static/dynamicd/linux/dynamic-cli "-conf=$HOME/.pshare/.dynamic/dynamic.conf" "-datadir=$HOME/.pshare/.dynamic"' +``` + +then we can use it to issue RPC commands against the running `dynamicd` as follows: + +```shell +$ dyncli syncstatus +``` + +#### Windows-based installation from `cmd` + +In windows, we can use the following: + +```shell +> "%LOCALAPPDATA%\Programs\pshare\resources\static\dynamicd\win32\dynamic-cli.exe" "-conf=%USERPROFILE%\.pshare\.dynamic\dynamic.conf" "-datadir=%USERPROFILE%\.pshare\.dynamic" syncstatus +``` + +to do the same thing. No `alias` command to ease usage, unfortunately. + ### License See LICENSE.md file for copying and use information. \ No newline at end of file diff --git a/getVersion.ts b/getVersion.ts new file mode 100644 index 00000000..fbea28b4 --- /dev/null +++ b/getVersion.ts @@ -0,0 +1 @@ +export const version: string = require('./package.json').version \ No newline at end of file diff --git a/package.json b/package.json index 206a7f77..7711b92a 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,18 @@ { "name": "pshare", - "version": "0.5.8", + "version": "1.0.0", "description": "Secure and private peer to peer file sharing", "homepage": "https://duality.solutions/pshare", - "license": "UNLICENSED", + "license": "SEE LICENSE IN LICENSE.md", "author": { "name": "HiddenField", "email": "info@hiddenfield.com", "url": "https://duality.solutions/pshare" }, + "repository": { + "type": "git", + "url": "https://github.com/duality-solutions/pShare.git" + }, "build": { "appId": "solutions.duality.pshare", "productName": "pShare", @@ -17,9 +21,7 @@ }, "linux": { "target": [ - "AppImage", - "deb", - "tar.gz" + "deb" ] } }, @@ -47,7 +49,10 @@ "is-in-subnet": "^1.9.0", "mime-types": "^2.1.22", "pify": "^4.0.1", + "progress-stream": "^2.0.0", + "qrcode-generator": "^1.4.3", "react": "^16.8.6", + "react-copy-to-clipboard": "^5.0.1", "react-dom": "^16.8.6", "react-dropzone": "^10.0.0", "react-redux": "^5.1.1", @@ -65,6 +70,7 @@ "seedrandom": "^2.4.4", "sjcl-git": "https://github.com/bitwiseshiftleft/sjcl.git#1.0.8", "source-map-support": "^0.5.9", + "stream-buffers": "^3.0.2", "styled-components": "^4.2.0", "symbol-observable": "^1.2.0", "ts-deep-equal": "^1.1.1", @@ -86,6 +92,7 @@ "@types/jest": "^23.3.10", "@types/mime-types": "^2.1.0", "@types/pify": "^3.0.2", + "@types/progress-stream": "^2.0.0", "@types/react": "^16.7.9", "@types/react-dom": "^16.0.11", "@types/react-redux": "^6.0.10", @@ -93,6 +100,7 @@ "@types/react-router-dom": "^4.3.1", "@types/react-transition-group": "1.1.5", "@types/seedrandom": "^2.4.27", + "@types/stream-buffers": "^3.0.3", "@types/styled-components": "^4.1.6", "@types/uuid": "^3.4.4", "@types/webdriverio": "^4.13.0", @@ -100,10 +108,10 @@ "electron-builder": "^20.36.2", "electron-webpack": "^2.6.1", "electron-webpack-ts": "^3.1.0", - "jest": "^23.6.0", + "jest": "^24.9.0", "redux-saga-test-plan": "^3.7.0", "spectron": "^5.0.0", - "ts-jest": "^23.10.5", + "ts-jest": "^24.0.2", "tslint": "^5.11.0", "webdriverio": "^4.14.1", "webpack": "^4.26.0", diff --git a/src/main/getRpcClient.ts b/src/main/getRpcClient.ts index 88c1f53a..eec18c4c 100644 --- a/src/main/getRpcClient.ts +++ b/src/main/getRpcClient.ts @@ -40,7 +40,7 @@ async function createRpcClient(cancellationToken: CancellationToken): Promise<{ const client = await createJsonRpcClient({ host: "localhost", - port: "33650", + port: "33350", username: processInfo.rpcUser, password: processInfo.rpcPassword, timeout: 20000, diff --git a/src/main/index.ts b/src/main/index.ts index 0c6983ce..25adbc24 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -15,8 +15,8 @@ import { installExtensionsAsync } from './installExtensionsAsync'; import { configureStore } from './store'; import { install as installDevtron } from 'devtron' import { AppActions } from '../shared/actions/app'; - import { divertConsoleToLogger } from './system/divertConsoleToLogger'; +import { version } from '../../getVersion'; declare module 'electron' { @@ -56,7 +56,7 @@ if (!hasLock) { const persistencePaths = ['user.syncAgreed', 'user.userName', 'user.accountCreationTxId', 'user.accountCreated', 'rtcConfig']; let mainWindow: BrowserWindow | null let rtcWindow: BrowserWindow | null - + let aboutPanelWindow: BrowserWindow | null const store = configureStore(() => mainWindow, persistencePaths) store.getState(); @@ -93,13 +93,102 @@ if (!hasLock) { return window } - function createMainWindow() { - const window = new BrowserWindow({ width: 1024, height: 768 }) - - + function createAboutPanelWindow() { + const window = new BrowserWindow({ width: 420, height: 300, resizable:false}); + window.setMenuBarVisibility(false); + window.on('closed', () => { + aboutPanelWindow = null + }) + const loadView = ( props: { title: string, version: string, }) => { + + return (` + + + + ${props.title} + + + + +

pShare

+ + + + + + p-share-logo-svgs + + + + +

Powered by Duality™

+

Think Inside The Block™

+ + https://duality.solutions/pshare + +

Version: ${props.version}

+ + + + `) + } + const content = 'data:text/html;charset=UTF-8,' + encodeURIComponent(loadView({ + title: "About pShare", + version: version || "Not found", + })); + window.loadURL(content); + return window; + } + function createMainWindow() { + const window = new BrowserWindow({ width: 1024, height: 768 }) console.log(`loading templateUrl : ${templateUrl}`) window.loadURL(`${templateUrl}?role=renderer`) @@ -181,12 +270,28 @@ if (!hasLock) { } mainWindow = createMainWindow() rtcWindow = createRtcWindow() + setAppMenu(mainWindow); - if (isDevelopment) { + const contextMenu = [ + { + label: 'Cut', + role: 'cut' + }, + { + label: 'Copy', + role: 'copy' + }, + { + label: 'Paste', + role: 'paste' + } + ] + if (isDevelopment) { // add inspect element on right click menu mainWindow.webContents.on('context-menu', (e, props) => { mainWindow && Menu.buildFromTemplate([ + ...contextMenu, { label: 'Inspect element', click() { @@ -208,14 +313,19 @@ if (!hasLock) { ]).popup(mainWindow); }); } + else { + mainWindow.webContents.on('context-menu', () => { + mainWindow && Menu.buildFromTemplate(contextMenu).popup(mainWindow); + }) + } }) - function setAppMenu(mainWindow: BrowserWindow) { const template = [ { label: 'Edit', + id: 'edit-menu', submenu: [ { role: 'undo' }, { role: 'redo' }, @@ -229,21 +339,39 @@ if (!hasLock) { ] }, { + role: 'Help', + id: 'help-menu', + submenu: [ + { + label: 'Support', + click() { shell.openExternal('https://discord.gg/87be63e')} + }, + { + label: 'About pShare', + click() { + if(aboutPanelWindow) return; + aboutPanelWindow = createAboutPanelWindow() + } + } + ] + } + ]; + if (isDevelopment) { + template.push({ label: 'View', + id: 'view-menu', submenu: [ { role: 'reload' }, { role: 'forcereload' }, { label: 'Reset redux store', async click() { - mainWindow && await mainWindow.webContents.executeJavaScript("window.resetStore && window.resetStore()") } }, { label: 'Toggle RTC window devtools', click() { - rtcWindow && rtcWindow.webContents.openDevTools({ mode: "detach" }); } }, @@ -255,29 +383,20 @@ if (!hasLock) { { type: 'separator' }, { role: 'togglefullscreen' } ] - }, - { - role: 'window', - submenu: [ - { role: 'minimize' }, - { role: 'close' } - ] - }, - { - role: 'help', - submenu: [ - { - label: 'Learn More', - click() { shell.openExternal('https://electronjs.org'); } - } - ] - } - ]; + }) + } + if (process.platform === 'darwin') { template.unshift({ - label: app.getName(), + label: 'pShare', submenu: [ - { role: 'about' }, + { + label: 'About pShare', + click() { + if(aboutPanelWindow) return; + aboutPanelWindow = createAboutPanelWindow() + } + }, { type: 'separator' }, { role: 'services', submenu: [] }, { type: 'separator' }, @@ -300,13 +419,13 @@ if (!hasLock) { // } // ) // Window menu - template[3].submenu = [ - { role: 'close' }, - { role: 'minimize' }, - { role: 'zoom' }, - { type: 'separator' }, - { role: 'front' } - ]; + // template[3].submenu = [ + // { role: 'close' }, + // { role: 'minimize' }, + // { role: 'zoom' }, + // { type: 'separator' }, + // { role: 'front' } + // ]; } const menu = Menu.buildFromTemplate(template); Menu.setApplicationMenu(menu); diff --git a/src/main/sagas/addFileSaga.ts b/src/main/sagas/addFileSaga.ts index ee4f673b..5e95a3d1 100644 --- a/src/main/sagas/addFileSaga.ts +++ b/src/main/sagas/addFileSaga.ts @@ -2,42 +2,122 @@ import { takeEvery, select, call, put } from "redux-saga/effects"; import { getType, ActionType } from "typesafe-actions"; import { AddFileActions } from "../../shared/actions/addFile"; import * as fsExtra from 'fs-extra' +import * as fs from 'fs'; import * as path from 'path' import { app } from "electron"; import { MainRootState } from "../reducers"; +import { FilePathInfo } from "../../shared/types/FilePathInfo"; +import { getAllFilePaths } from "../system/getAllFilePaths"; +import { blinq } from "blinq"; const pathToShareDirectory = path.join(app.getPath("home"), ".pshare", "share"); export function* addFileSaga() { yield takeEvery(getType(AddFileActions.filesSelected), function* (action: ActionType) { + + + const { files, directories }: SortedFileInfoCollection = yield call(() => sortFileInfosToFileOrDirectories(action.payload)) + + + + const linkedUserName: string | undefined = yield select((s: MainRootState) => s.sharedFiles.linkedUserName) if (!linkedUserName) { return } - const targetDirectory = path.join(pathToShareDirectory, linkedUserName, "out") + const baseDirectory = path.join(pathToShareDirectory, linkedUserName, "out"); + const currentPath = yield select((s: MainRootState) => s.fileNavigation.sharedFilesViewPath.join("/")) + + const targetDirectory = path.join(baseDirectory, currentPath) yield call(() => fsExtra.ensureDir(targetDirectory)) - const filePathInfos = action.payload; - - for (const fpi of filePathInfos) { - console.log("filePathInfo : " + fpi.path) - const fileName = path.basename(fpi.path) - const [firstSeg, ...remainingSegs] = fileName.split("."); - for (let i = 0; ; i++) { - const dest = path.join(targetDirectory, i === 0 ? fileName : `${firstSeg}(${i})${["", ...remainingSegs].join(".")}`); - - try { - yield call(() => fsExtra.copy(fpi.path, dest, { errorOnExist: true, overwrite: false })) - } catch (err) { - if (/ already exists$/.test(err.message)) { - continue - } - throw err - } - break - } + + try { + yield* addDroppedFiles(files, targetDirectory) + yield* addDroppedDirectories(directories, targetDirectory) + } catch (err) { + yield put(AddFileActions.failed(err && typeof err.message === "string" ? err.message : "something went wrong")) } yield put(AddFileActions.close()) }) } +interface CopyOperation { + src: string + dest: string +} + +function* addDroppedDirectories(filePathInfos: FilePathInfo[], targetDirectory: string) { + const operations: CopyOperation[] = []; + for (const folderInfo of filePathInfos) { + const allFilePaths: string[] = yield call(() => getAllFilePaths([folderInfo.path])) + const dirName = path.basename(folderInfo.path) + // const newDirectoryPath = path.join(targetDirectory, dirName) + // const exists: boolean = yield call(() => pathExists(newDirectoryPath)) + // if (exists) { + // throw Error("pathExists") + // } + const relativePaths = allFilePaths.map(p => ({ absolutePath: p, relativePath: path.join(dirName, path.relative(folderInfo.path, p)) })) + const ops = relativePaths.map(({ absolutePath, relativePath }) => ({ src: absolutePath, dest: path.join(targetDirectory, relativePath) })) + operations.push(...ops) + } + const directoriesToEnsure = blinq(operations).select(o => path.dirname(o.dest)).distinct().toArray(); + + for (const dp of directoriesToEnsure) { + yield call(() => fsExtra.ensureDir(dp)) + } + + for (const { src, dest } of operations) { + yield call(() => fsExtra.copy(src, dest, { errorOnExist: true, overwrite: false })) + } + + +} +// async function pathExists(path: string): Promise { +// try { +// await fs.promises.access(path) +// } catch{ +// return false +// } +// return true +// } +function* addDroppedFiles(filePathInfos: FilePathInfo[], targetDirectory: string) { + for (const fpi of filePathInfos) { + console.log("filePathInfo : " + fpi.path) + const fileName = path.basename(fpi.path) + const [firstSeg, ...remainingSegs] = fileName.split("."); + for (let i = 0; ; i++) { + const dest = path.join(targetDirectory, i === 0 ? fileName : `${firstSeg}(${i})${["", ...remainingSegs].join(".")}`); + + try { + yield call(() => fsExtra.copy(fpi.path, dest, { errorOnExist: true, overwrite: false })) + } catch (err) { + if (/ already exists$/.test(err.message)) { + continue + } + throw err + } + break + } + } +} + +interface SortedFileInfoCollection { + files: FilePathInfo[] + directories: FilePathInfo[] +} + +async function sortFileInfosToFileOrDirectories(fileInfos: FilePathInfo[]): Promise { + const files: FilePathInfo[] = [] + const directories: FilePathInfo[] = [] + for (const fileInfo of fileInfos) { + const normalizedPath = path.normalize(fileInfo.path); + const stat: fs.Stats = await fs.promises.stat(normalizedPath); + if (stat.isDirectory()) { + directories.push(fileInfo) + } else if (stat.isFile()) { + files.push(fileInfo) + } + } + return { files, directories } +} \ No newline at end of file diff --git a/src/main/sagas/bdapSaga.ts b/src/main/sagas/bdapSaga.ts index 4dd8cefd..b748d75e 100644 --- a/src/main/sagas/bdapSaga.ts +++ b/src/main/sagas/bdapSaga.ts @@ -1,4 +1,4 @@ -import { takeEvery, put, call, select, take, all, race } from "redux-saga/effects"; +import { takeEvery, put, call, select, take, race } from "redux-saga/effects"; import { getType, ActionType } from "typesafe-actions"; import { BdapActions } from "../../shared/actions/bdap"; import { RpcClient } from "../RpcClient"; @@ -12,165 +12,298 @@ import { blinq } from "blinq"; import { delay } from "redux-saga"; import { LinkDeniedResponse } from "../../dynamicdInterfaces/LinkDeniedResponse"; import { CompleteLink } from "../../dynamicdInterfaces/links/CompleteLink"; +import { tuple } from "../../shared/system/tuple"; +import { getFirstBdapAccount } from "./helpers/getFirstBdapAccount"; +import { BdapAccount } from "../../dynamicdInterfaces/BdapAccount"; + +type Report = { success: any; failure: any }; +type ResultsReport = Record; +type Frequency = "repeated" | "once"; +interface BdapOperation { + action: any; + successAction: any; + failureAction: any; + frequency: Frequency; +} +const operations: Record = { + users: { + action: () => BdapActions.getUsers(), + successAction: BdapActions.getUsersSuccess, + failureAction: BdapActions.getUsersFailed, + frequency: "repeated", + }, + completeLinks: { + action: () => BdapActions.getCompleteLinks(), + successAction: BdapActions.getCompleteLinksSuccess, + failureAction: BdapActions.getCompleteLinksFailed, + frequency: "repeated", + }, + pendingRequestLinks: { + action: () => BdapActions.getPendingRequestLinks(), + successAction: BdapActions.getPendingRequestLinksSuccess, + failureAction: BdapActions.getPendingRequestLinksFailed, + frequency: "repeated", + }, + pendingAcceptLinks: { + action: () => BdapActions.getPendingAcceptLinks(), + successAction: BdapActions.getPendingAcceptLinksSuccess, + failureAction: BdapActions.getPendingAcceptLinksFailed, + frequency: "repeated", + }, + deniedLinks: { + action: () => BdapActions.getDeniedLinks(), + successAction: BdapActions.getDeniedLinksSuccess, + failureAction: BdapActions.getDeniedLinksFailed, + frequency: "repeated", + }, + balance: { + action: () => BdapActions.getBalance(), + successAction: BdapActions.getBalanceSuccess, + failureAction: BdapActions.getBalanceFailed, + frequency: "repeated", + }, + topUpAddress: { + action: () => BdapActions.getTopUpAddress(), + successAction: BdapActions.getTopUpAddressSuccess, + failureAction: BdapActions.getTopUpAddressFailed, + frequency: "once", + }, +}; + +type OperationCounts = Record; export function* bdapSaga(rpcClient: RpcClient, mock: boolean = false) { - yield takeEvery(getType(BdapActions.getUsers), function* () { - + yield takeEvery(getType(BdapActions.getUsers), function*() { let response: GetUserInfo[]; try { - response = yield call(() => rpcClient.command("getusers")) - + response = yield call(() => rpcClient.command("getusers")); } catch (err) { - yield put(BdapActions.getUsersFailed(err.message)) - return + yield put(BdapActions.getUsersFailed(err.message)); + return; } - const currentUserName: string | undefined = yield select((state: MainRootState) => state.user.userName) - if (typeof currentUserName !== 'undefined') { - const currentUser = blinq(response).singleOrDefault(r => r.object_id === currentUserName) - if (typeof currentUser !== 'undefined') { - yield put(BdapActions.currentUserReceived(currentUser)) + const currentUserName: string | undefined = yield select( + (state: MainRootState) => state.user.userName + ); + if (typeof currentUserName !== "undefined") { + const currentUser = blinq(response).singleOrDefault( + r => r.object_id === currentUserName + ); + if (typeof currentUser !== "undefined") { + yield put(BdapActions.currentUserReceived(currentUser)); } } - yield put(BdapActions.getUsersSuccess(response)) - }) - yield takeEvery(getType(BdapActions.getPendingAcceptLinks), function* () { - - yield* rpcLinkCommand(rpcClient, (client) => client.command("link", "pending", "accept"), BdapActions.getPendingAcceptLinksSuccess, BdapActions.getPendingAcceptLinksFailed) - }) - yield takeEvery(getType(BdapActions.getPendingRequestLinks), function* () { - - yield* rpcLinkCommand(rpcClient, (client) => client.command("link", "pending", "request"), BdapActions.getPendingRequestLinksSuccess, BdapActions.getPendingRequestLinksFailed) - }) - yield takeEvery(getType(BdapActions.getCompleteLinks), function* () { - + yield put(BdapActions.getUsersSuccess(response)); + }); + yield takeEvery(getType(BdapActions.getBalance), function*() { + let balance: number; + try { + balance = yield unlockedCommandEffect(rpcClient, async client => { + const b: number = await client.command("getbalance"); + const cr: { total_credits: number } = await client.command( + "getcredits" + ); + const tc = cr.total_credits; + const bc = Math.trunc(b / 0.00100001); + return tc + bc; + }); + } catch (err) { + yield put(BdapActions.getBalanceFailed(err.message)); + return; + } + yield put(BdapActions.getBalanceSuccess(balance)); + }); + yield takeEvery(getType(BdapActions.getTopUpAddress), function*() { + let topUpAddress: string | undefined; + try { + const bdapAcct: BdapAccount = yield getFirstBdapAccount(rpcClient); + topUpAddress = bdapAcct.link_address; + } catch (err) { + yield put(BdapActions.getTopUpAddressFailed(err.message)); + return; + } + yield put(BdapActions.getTopUpAddressSuccess(topUpAddress!)); + }); + yield takeEvery(getType(BdapActions.getPendingAcceptLinks), function*() { + yield* rpcLinkCommand( + rpcClient, + client => client.command("link", "pending", "accept"), + BdapActions.getPendingAcceptLinksSuccess, + BdapActions.getPendingAcceptLinksFailed + ); + }); + yield takeEvery(getType(BdapActions.getPendingRequestLinks), function*() { + yield* rpcLinkCommand( + rpcClient, + client => client.command("link", "pending", "request"), + BdapActions.getPendingRequestLinksSuccess, + BdapActions.getPendingRequestLinksFailed + ); + }); + yield takeEvery(getType(BdapActions.getCompleteLinks), function*() { //const rpcClient: RpcClient = yield call(() => getRpcClient()) let response: LinkResponse; try { - response = yield call(() => rpcClient.command("link", "complete")) - + response = yield call(() => rpcClient.command("link", "complete")); } catch (err) { - yield put(BdapActions.getCompleteLinksFailed(err.message)) - return + yield put(BdapActions.getCompleteLinksFailed(err.message)); + return; } const links = extractLinks(response); + yield put(BdapActions.getCompleteLinksSuccess(links)); + }); - yield put(BdapActions.getCompleteLinksSuccess(links)) - - }) - - - yield takeEvery(getType(BdapActions.getDeniedLinks), function* () { - - const currentUser: GetUserInfo = yield getCurrentUser() - const userName = currentUser.object_id + yield takeEvery(getType(BdapActions.getDeniedLinks), function*() { + const currentUser: GetUserInfo = yield getCurrentUser(); + const userName = currentUser.object_id; let response: LinkDeniedResponse | {}; try { - response = yield unlockedCommandEffect(rpcClient, client => client.command("link", "denied", userName)) - + response = yield unlockedCommandEffect(rpcClient, client => + client.command("link", "denied", userName) + ); } catch (err) { //if (!/^DeniedLinkList: ERRCODE: 5604/.test(err.message)) { // yield put(BdapActions.getDeniedLinksFailed(err.message)) // return //} - response = {} + response = {}; } if (isLinkDeniedResponse(response)) { - const deniedList = entries(response.denied_list).select(([, v]) => v).toArray() - yield put(BdapActions.getDeniedLinksSuccess(deniedList)) + const deniedList = entries(response.denied_list) + .select(([, v]) => v) + .toArray(); + yield put(BdapActions.getDeniedLinksSuccess(deniedList)); + } else { + yield put(BdapActions.getDeniedLinksSuccess([])); } - else { - yield put(BdapActions.getDeniedLinksSuccess([])) - } - - }) - - yield takeEvery(getType(BdapActions.initialize), function* () { - let allSourcesRetrievedAtLeastOnce = false - for (; ;) { - - - yield put(BdapActions.getUsers()) - - yield put(BdapActions.getCompleteLinks()) - yield put(BdapActions.getPendingAcceptLinks()) - yield put(BdapActions.getPendingRequestLinks()) - yield put(BdapActions.getDeniedLinks()) - - const getResults = yield all({ - users: race({ - success: take(getType(BdapActions.getUsersSuccess)), - failure: take(getType(BdapActions.getUsersFailed)) - }), - completeLinks: race({ - success: take(getType(BdapActions.getCompleteLinksSuccess)), - failure: take(getType(BdapActions.getCompleteLinksFailed)) - }), - pendingRequest: race({ - success: take(getType(BdapActions.getPendingRequestLinksSuccess)), - failure: take(getType(BdapActions.getPendingRequestLinksFailed)) - }), - pendingAccept: race({ - success: take(getType(BdapActions.getPendingAcceptLinksSuccess)), - failure: take(getType(BdapActions.getPendingAcceptLinksFailed)) - }), - denied: race({ - success: take(getType(BdapActions.getDeniedLinksSuccess)), - failure: take(getType(BdapActions.getDeniedLinksFailed)) - - }) - }) - - if (getResults.users.success - && getResults.completeLinks.success - && getResults.pendingRequest.success - && getResults.pendingAccept.success - && getResults.denied.success - ) { - console.log("all user/link data successful retrieved") - - allSourcesRetrievedAtLeastOnce = true - yield put(BdapActions.bdapDataFetchSuccess()) - yield delay(60000) + }); + + yield takeEvery(getType(BdapActions.initialize), function*() { + let operationCounts: OperationCounts = entries(operations) + .select(([k, v]) => tuple(k, 0)) + .aggregate({}, (p, [k, v]) => ({ ...p, [k]: v })); + + //let allSourcesRetrievedAtLeastOnce = false + + for (;;) { + let remainingEntries = entries(operations) + .join( + entries(operationCounts), + ([k]) => k, + ([k]) => k, + ([k, vo], [, vc]) => tuple(k, vo, vc) + ) + .where( + ([, vo, vc]) => + vo.frequency === "repeated" || + (vo.frequency === "once" && vc === 0) + ) + .select(([k, vo]) => tuple(k, vo)); + + console.log( + "remaining entries", + remainingEntries.select(([k]) => k).toArray() + ); + + for (let attempts = 0; remainingEntries.any(); attempts++) { + if (attempts >= 3) { + throw Error( + `Could not retrieve ${[ + ...remainingEntries.select(([k]) => k), + ].join(", ")} lists from dynamicd` + ); + } + const remainingActions = remainingEntries.select(([k, v]) => ({ + key: k, + effect: put(v.action()), + successAction: v.successAction, + failureAction: v.failureAction, + })); + let resultsReport: ResultsReport = {}; + for (const v of remainingActions) { + yield v.effect; + const r = yield race({ + success: take(getType(v.successAction)), + failure: take(getType(v.failureAction)), + }); + resultsReport = { ...resultsReport, [v.key]: r }; + } + const resultEntries = entries(resultsReport); + + const entriesWithResults = remainingEntries.join( + resultEntries, + ([k]) => k, + ([k]) => k, + ([k, vo], [, vr]) => ({ key: k, operation: vo, result: vr }) + ); + + const failedEntries = entriesWithResults.where( + ({ result: { failure } }) => failure + ); + const successEntries = entriesWithResults.where( + ({ result: { success } }) => success + ); + + operationCounts = entries(operationCounts) + .leftOuterJoin( + successEntries, + ([k]) => k, + e => e.key, + (oe, se) => (se ? tuple(oe[0], oe[1] + 1) : oe) + ) + .aggregate({}, (p, [k, v]) => ({ ...p, [k]: v })); + + remainingEntries = failedEntries.select(e => + tuple(e.key, e.operation) + ); } - else { - console.warn("some user/link data was not successfully retrieved") - //todo: report this, somehow - yield put(BdapActions.bdapDataFetchFailed("some user/link data was not successfully retrieved")) - if (allSourcesRetrievedAtLeastOnce) { - yield delay(60000) - } + //allSourcesRetrievedAtLeastOnce = true; + if (!remainingEntries.any()) { + yield put(BdapActions.bdapDataFetchSuccess()); + } else { + const msg = `some user/link data was not successfully retrieved [${[ + ...remainingEntries.select(([k]) => k), + ].join(", ")}]`; + yield put(BdapActions.bdapDataFetchFailed(msg)); } + console.log("operation counts", operationCounts); + yield delay(60000); } - - }) + }); } -const reservedKeyNames = ["locked_links"] +const reservedKeyNames = ["locked_links"]; const extractLinks = (response: LinkResponse): T[] => entries(response) - .leftOuterJoin(reservedKeyNames, ([k,]) => k, rkn => rkn, (entry, rkn) => ({ entry, rkn })) + .leftOuterJoin( + reservedKeyNames, + ([k]) => k, + rkn => rkn, + (entry, rkn) => ({ entry, rkn }) + ) .where(({ rkn }) => typeof rkn === "undefined") .select(({ entry: [, v] }) => v) - .toArray() - - + .toArray(); const getCurrentUser = () => - call(function* () { - let currentUser: GetUserInfo = yield select((state: MainRootState) => state.bdap.currentUser); - if (typeof currentUser === 'undefined') { - const a: ActionType = yield take(getType(BdapActions.currentUserReceived)); + call(function*() { + let currentUser: GetUserInfo = yield select( + (state: MainRootState) => state.bdap.currentUser + ); + if (typeof currentUser === "undefined") { + const a: ActionType< + typeof BdapActions.currentUserReceived + > = yield take(getType(BdapActions.currentUserReceived)); currentUser = a.payload; } return currentUser; - }) + }); function* rpcLinkCommand( rpcClient: RpcClient, @@ -178,19 +311,19 @@ function* rpcLinkCommand( successActionCreator: (entries: T[]) => any, failActionCreator: (message: string) => any ) { - let response: LinkResponse; try { - response = yield unlockedCommandEffect(rpcClient, cmd) + response = yield unlockedCommandEffect(rpcClient, cmd); } catch (err) { - yield put(failActionCreator(err.message)) + yield put(failActionCreator(err.message)); return; } - const links = extractLinks(response) - yield put(successActionCreator(links)) + const links = extractLinks(response); + yield put(successActionCreator(links)); } -function isLinkDeniedResponse(obj: LinkDeniedResponse | {}): obj is LinkDeniedResponse { +function isLinkDeniedResponse( + obj: LinkDeniedResponse | {} +): obj is LinkDeniedResponse { return (obj).list_updated !== undefined; } - diff --git a/src/main/sagas/bulkImportSaga.ts b/src/main/sagas/bulkImportSaga.ts new file mode 100644 index 00000000..f11104fe --- /dev/null +++ b/src/main/sagas/bulkImportSaga.ts @@ -0,0 +1,227 @@ +import { takeEvery, call, select, put } from "redux-saga/effects"; +import { getType, ActionType } from "typesafe-actions"; + +import { RpcClient } from "../RpcClient"; +import { BdapActions } from "../../shared/actions/bdap"; +import { BrowserWindowProvider } from "../../shared/system/BrowserWindowProvider"; +// import { app, BrowserWindow, dialog } from "electron"; +import * as fs from 'fs'; +import { blinq } from "blinq"; +import { MainRootState } from "../reducers"; +import { GetUserInfo } from "../../dynamicdInterfaces/GetUserInfo"; +import { Link } from "../../dynamicdInterfaces/links/Link"; +import { PendingLink } from "../../dynamicdInterfaces/links/PendingLink"; +import { DeniedLink } from "../../dynamicdInterfaces/DeniedLink"; +import { unlockedCommandEffect } from "./effects/unlockedCommandEffect"; +import { getUserNameFromFqdn } from "../../shared/system/getUserNameFromFqdn"; +import { BulkImportActions } from "../../shared/actions/bulkImport"; + +export function* previewBulkImportSaga() { + yield takeEvery(getType(BulkImportActions.previewBulkImport), function*(action: ActionType) { + const filePath = action.payload; + // console.log(filePath) + if (filePath == null) { + yield put(BulkImportActions.bulkImportAborted()); + return; + } + const data = yield call (() => readFile(filePath.path)) + yield put(BulkImportActions.previewData(data)) + }) +} + +export interface RequestStatus { + link: string, + status: string, +} + +export function* bulkImportSaga(rpcClient: RpcClient, browserWindowProvider: BrowserWindowProvider) { + yield takeEvery(getType(BulkImportActions.beginBulkImport), function* (action: ActionType) { + + const data = action.payload; + + const userFqdnsFromFile = [...blinq(splitLines(data))]; + + const allUsers: GetUserInfo[] = yield select((s: MainRootState) => s.bdap.users); + const completeLinks: Link[] = yield select((s: MainRootState) => s.bdap.completeLinks); + const pendingRequestLinks: PendingLink[] = yield select((s: MainRootState) => s.bdap.pendingRequestLinks); + const deniedRequestLinks: DeniedLink[] = yield select((s: MainRootState) => s.bdap.deniedLinks); + const currentUserFqdn: string = yield select((s: MainRootState) => typeof s.bdap.currentUser !== 'undefined' ? s.bdap.currentUser.object_full_path : undefined) + const pendingAcceptLinks: PendingLink[] = yield select((s: MainRootState) => s.bdap.pendingAcceptLinks); + + const fqdnRequestStatus: RequestStatus[] = []; + + const completeFqdns = + blinq(completeLinks) + .select(l => blinq([l.recipient_fqdn, l.requestor_fqdn]).first(n => n !== currentUserFqdn)); + + // for( const fqdn in completeFqdns ) { + // fqdnRequestStatus.push({ link: fqdn, status: 'completed'}) + // } + + const deniedFqdns = + blinq(deniedRequestLinks) + .select(l => l.requestor_fqdn); + + // for ( const fqdn in deniedFqdns ) { + // fqdnRequestStatus.push({ link: fqdn, status: 'denied' }) + // } + + const pendingLinkFqdns = + blinq(pendingAcceptLinks) + .concat(pendingRequestLinks) + .select(l => blinq([l.recipient_fqdn, l.requestor_fqdn]).first(n => n !== currentUserFqdn)); + + // for ( const fqdn in pendingLinkFqdns ) { + // fqdnRequestStatus.push({ link: fqdn, status: 'pending' }) + // } + + const exclusions = + completeFqdns + .concat(deniedFqdns) + .concat(pendingLinkFqdns) + .concat([currentUserFqdn]) + .distinct(); + + const totalListItems = userFqdnsFromFile.length; + + const fqdnListToUsers = blinq(userFqdnsFromFile) + .fullOuterJoin(allUsers, x => x, u => u.object_full_path, (listUser, user) => ({ listUser, user })); + + const usersThatExist = fqdnListToUsers.where(x => x.user != null && x.listUser != null).select(x => x.user!); + const listFqdnsThatDontExist = fqdnListToUsers.where(x => x.listUser != null && x.user == null).select(x => x.listUser!); + + let successCount = 0; + let failCount = 0; + + for (const userFqdn of listFqdnsThatDontExist) { + failCount++; + fqdnRequestStatus.push({ status: 'User does not exist', link: userFqdn }) + yield put(BulkImportActions.bulkImportProgress({ + totalItems: totalListItems, + failed: failCount, + successful: successCount, + currentItem: { + linkFqdn: userFqdn, + err: "User does not exist", + success: false + } + })) + } + + const usersToExclusions = usersThatExist + .leftOuterJoin(exclusions, u => u.object_full_path, e => e, (user, excludedUserFqdn) => ({ user, excludedUserFqdn })); + const excludedUserFqdns = usersToExclusions.where(x => x.excludedUserFqdn != null).select(x => x.user.object_full_path); + for (const userFqdn of excludedUserFqdns) { + failCount++; + fqdnRequestStatus.push({ status: 'Link already requested/complete/denied', link: userFqdn }) + yield put(BulkImportActions.bulkImportProgress({ + totalItems: totalListItems, + failed: failCount, + successful: successCount, + currentItem: { + linkFqdn: userFqdn, + err: "Link already requested/complete/denied", + success: false + } + })) + } + + const usersToRequestLink = + usersToExclusions + .where(x => x.excludedUserFqdn == null) + .select(x => x.user); + + + // const requestedLinks: = []; + const userName = getUserNameFromFqdn(currentUserFqdn); + const inviteMessage = `${userName} wants to link with you`; + //const failedUsers: GetUserInfo[] = []; + for (const user of usersToRequestLink) { + console.log("inviting " + user.object_id) + //let response: LinkRequestResponse; + try { + yield unlockedCommandEffect(rpcClient, client => client.command("link", "request", userName, user.object_id, inviteMessage)) + successCount++; + fqdnRequestStatus.push({ status: 'success', link: user.object_full_path}) + + } catch (err) { + failCount++; + if (/^Insufficient funds/.test(err.message)) { + fqdnRequestStatus.push({ status: 'Insufficient funds', link: user.object_full_path }) + yield put(BulkImportActions.bulkImportFailed(fqdnRequestStatus)) + yield put(BdapActions.insufficientFunds("request a link to " + user.object_id + " or any more users in the bulk import list")) + yield put(BdapActions.getPendingRequestLinks()); + return; + } else { + fqdnRequestStatus.push({ status: 'Failed', link: user.object_full_path }) + yield put(BulkImportActions.bulkImportProgress({ + totalItems: totalListItems, + failed: failCount, + successful: successCount, + currentItem: { + linkFqdn: user.object_full_path, + success: false, + err: err.message + } + })) + } + + continue; + } + yield put(BdapActions.getBalance()) + yield put(BulkImportActions.bulkImportProgress({ + totalItems: totalListItems, + failed: failCount, + successful: successCount, + currentItem: { + linkFqdn: user.object_full_path, + success: true + } + })) + + + } + yield put(BulkImportActions.bulkImportSuccess(fqdnRequestStatus)); + //console.log("failed users", failedUsers); + yield put(BdapActions.getPendingRequestLinks()); + + }); +} + +function* splitLines(data: string) { + const split = data.match(/[^\r\n]+/g); + if (split) { + for (const v of split) { + yield v; + } + } +} + +// function getFilePathSync(window: BrowserWindow) { +// const homeDir = app.getPath("documents"); +// const path = dialog.showOpenDialog(window, { +// // filters: [ +// // { +// // name: "p-share wallet key backup", +// // extensions: ["psh.json"] +// // } +// // ], +// defaultPath: homeDir, +// title: "Bulk import file", +// properties: ["multiSelections", "openFile"] + +// }); +// if (path == null) { +// return undefined; +// } +// if (Array.isArray(path) && path.length > 0) { +// return path[0]; +// } +// return undefined; +// } + +function* readFile(path: string) { + const buf: Buffer = yield call(() => fs.promises.readFile(path)) + const data = buf.toString(); + return data; +} \ No newline at end of file diff --git a/src/main/sagas/exportUserLinksSaga.ts b/src/main/sagas/exportUserLinksSaga.ts new file mode 100644 index 00000000..e7d0b393 --- /dev/null +++ b/src/main/sagas/exportUserLinksSaga.ts @@ -0,0 +1,66 @@ +import { takeEvery, call, select } from "redux-saga/effects"; +import { getType } from "typesafe-actions"; +import { dialog, app, } from "electron"; +import { BrowserWindowProvider } from "../../shared/system/BrowserWindowProvider"; +import * as path from "path" +import fs from 'fs' +import { DashboardActions } from "../../shared/actions/dashboard"; +import { MainRootState } from "../reducers"; +import { CompleteLink } from "../../dynamicdInterfaces/links/CompleteLink"; +import { PendingLink } from "../../dynamicdInterfaces/links/PendingLink"; + +export function* exportUserLinksSaga(browserWindowProvider: BrowserWindowProvider) { + yield takeEvery(getType(DashboardActions.exportMyLinks), function* () { + const browserWindow = browserWindowProvider(); + if (browserWindow == null) { + return + } + + const currentUserFqdn: string = yield select((s: MainRootState) => typeof s.bdap.currentUser !== 'undefined' ? s.bdap.currentUser.object_full_path : undefined) + const links: string[] = [] + const completeLinks: CompleteLink[] = yield select((s: MainRootState) => s.bdap.completeLinks) + const pendingAcceptLinks: PendingLink[] = yield select((s: MainRootState) => s.bdap.pendingAcceptLinks) + const pendingRequestLinks: PendingLink[] = yield select((s: MainRootState) => s.bdap.pendingRequestLinks) + + completeLinks.map((link: CompleteLink) => { + link.recipient_fqdn === currentUserFqdn ? + links.push(link.requestor_fqdn) : links.push(link.recipient_fqdn) + }) + + pendingAcceptLinks.map((link: PendingLink) => { + links.push(link.requestor_fqdn) + }) + + pendingRequestLinks.map((link: PendingLink) => { + links.push(link.recipient_fqdn) + }) + + const fileName = 'User Links export'; + const downloadsDir = app.getPath("downloads"); + const defaultSavePath = path.join(downloadsDir, fileName); + + const showDialog = () => new Promise((resolve, reject) => { + dialog + .showSaveDialog(browserWindow, { + buttonLabel: "Save", + defaultPath: defaultSavePath, + title: `Save ${fileName} as...` + }, (filename) => { + if (filename) { + fs.writeFileSync(filename, links.join('\n'), 'utf-8'); + resolve('Success') + } + else { + reject("cancelled"); + } + }); + }); + // simple call without try/catch kill the saga monitor in error state (reject) + try { + yield call(() => showDialog()) + } + catch { + console.log('export-cancelled') + } + }) +} \ No newline at end of file diff --git a/src/main/sagas/fileRequestSaveDialogSaga.ts b/src/main/sagas/fileRequestSaveDialogSaga.ts index b5de39bd..5fc7802c 100644 --- a/src/main/sagas/fileRequestSaveDialogSaga.ts +++ b/src/main/sagas/fileRequestSaveDialogSaga.ts @@ -3,48 +3,61 @@ import { getType, ActionType } from "typesafe-actions"; import { FileSharingActions } from "../../shared/actions/fileSharing"; import { dialog, app, BrowserWindow } from "electron"; import { BrowserWindowProvider } from "../../shared/system/BrowserWindowProvider"; -import * as path from "path" +import * as path from "path"; import { FileRequest } from "../../shared/actions/payloadTypes/FileRequest"; +import { FileRequestWithSavePath } from "../../shared/actions/payloadTypes/FileRequestWithSavePath"; -export function* requestFileSaveDialogSaga(browserWindowProvider: BrowserWindowProvider) { - yield takeEvery(getType(FileSharingActions.requestFile), function* (action: ActionType) { +export function* requestFileSaveDialogSaga( + browserWindowProvider: BrowserWindowProvider +) { + yield takeEvery(getType(FileSharingActions.requestFile), function*( + action: ActionType + ) { const browserWindow = browserWindowProvider(); if (browserWindow == null) { - return + return; } - const fileRequest = action.payload - let savePath: string + const fileRequest = action.payload; + let savePath: string; try { savePath = yield* getSavePath(fileRequest, browserWindow); } catch (err) { if (err.message === "cancelled") { return; } - throw err + throw err; } - yield put(FileSharingActions.requestFileWithSavePath({ ...fileRequest, savePath })) - }) + const fr: FileRequestWithSavePath = { + ...fileRequest, + savePath, + type: "file", + }; + yield put(FileSharingActions.startRequestFile(fr)); + }); } function* getSavePath(fileRequest: FileRequest, browserWindow: BrowserWindow) { const fileName = path.basename(path.normalize(fileRequest.fileName)); const downloadsDir = app.getPath("downloads"); const defaultSavePath = path.join(downloadsDir, fileName); - const showDialog = () => new Promise((resolve, reject) => { - dialog - .showSaveDialog(browserWindow, { - buttonLabel: "Save", - defaultPath: defaultSavePath, - title: `Save ${fileName} as...` - }, (filename) => { - if (filename) { - resolve(filename); - } - else { - reject(Error("cancelled")); + const showDialog = () => + new Promise((resolve, reject) => { + dialog.showSaveDialog( + browserWindow, + { + buttonLabel: "Save", + defaultPath: defaultSavePath, + title: `Save ${fileName} as...`, + }, + filename => { + if (filename) { + resolve(filename); + } else { + reject(Error("cancelled")); + } } - }); - }); + ); + }); const savePath: string = yield call(() => showDialog()); return savePath; } diff --git a/src/main/sagas/fileShareSaga.ts b/src/main/sagas/fileShareSaga.ts deleted file mode 100644 index b9715138..00000000 --- a/src/main/sagas/fileShareSaga.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { RpcClient } from "../RpcClient"; -import { select, take, actionChannel, all, put } from "redux-saga/effects"; -import { MainRootState } from "../reducers"; -import { InOutSharedFiles } from "../../shared/reducers/fileWatch"; -import { Link, isLink } from "../../dynamicdInterfaces/links/Link"; -import { blinq } from "blinq"; -import { getUserNameFromFqdn } from "../../shared/system/getUserNameFromFqdn"; -import { entries } from "../../shared/system/entries"; -import { SharedFile } from "../../shared/types/SharedFile"; -import { BdapActions } from "../../shared/actions/bdap"; -import { getType, ActionType } from "typesafe-actions"; -import { FileWatchActions } from "../../shared/actions/fileWatch"; -import { unlockedCommandEffect } from "./effects/unlockedCommandEffect"; -import { PublicSharedFile } from "../../shared/types/PublicSharedFile"; -import { RootActions } from "../../shared/actions"; -import { Channel, buffers, delay } from "redux-saga"; -import { getChannelActionsUntilTimeOut } from "./helpers/getChannelActionsUntilTimeOut"; -import { FileListActions } from "../../shared/actions/fileList"; - -type AddUnlinkAndNewLinkActionTypes = - ActionType - | ActionType - | ActionType - -const putErrorRegexes = [ - /Put failed\. Record is locked\. You need to wait at least (\d+) seconds before updating the same record in the DHT\./, - /DHT data entry is locked for another (\d+) seconds/ -]; - -export function* fileShareSaga(rpcClient: RpcClient) { - const channel: Channel = - yield actionChannel((action: RootActions) => { - switch (action.type) { - case getType(FileWatchActions.fileAdded): - case getType(FileWatchActions.fileUnlinked): - case getType(BdapActions.newCompleteLink): - - console.log("found AddAndUnlinkActionTypes") - return true - default: - return false - } - }, buffers.expanding()) - yield all({ - initialScan: take(getType(FileWatchActions.initialScanComplete)), - bdapFetchData: take(getType(BdapActions.bdapDataFetchSuccess)) - }) - const userName: string = yield select((s: MainRootState) => s.user.userName) - - - let hasAnnouncedFirstPublish = false - for (; ;) { - const allActions: AddUnlinkAndNewLinkActionTypes[] = yield getChannelActionsUntilTimeOut(channel, 5000) - - const usersThatNeedUpdating = blinq(allActions) - .select(a => - isLink(a.payload) - ? getRemoteLinkName(a.payload, userName) - : a.payload.sharedWith) - .selectMany(x => x == null ? [] : [x]) - .distinct() - const existingFileWatchUsers: Record = yield select((s: MainRootState) => s.fileWatch.users) - const completeLinks: Link[] = yield select((s: MainRootState) => s.bdap.completeLinks) - const remoteUsers = - blinq(completeLinks) - .selectMany(l => [l.recipient_fqdn, l.requestor_fqdn]) - .select(fqdn => getUserNameFromFqdn(fqdn)!) - .intersect(usersThatNeedUpdating) - const entriesWithMatchingCompleteLink = - remoteUsers - .leftOuterJoin | undefined]>( - entries(existingFileWatchUsers), - remoteUserName => remoteUserName, - ([fileShareUserName]) => fileShareUserName, - (remUn, x) => [remUn, x ? x[1].out || {} : {}]) - .where(([, sharedFiles]) => typeof sharedFiles !== 'undefined') - const dataForLinks = - entriesWithMatchingCompleteLink - .select<[string, Record | undefined], [string, Iterable]>( - ([userName, sharedFiles]) => [ - userName, - sharedFiles - ? entries(sharedFiles) - .select(([fileName, sharedFile]) => ({ - fileName, - hash: sharedFile.hash!, - size: sharedFile.size!, - contentType: sharedFile.contentType! - })) - .orderBy(x => x.hash) - : [] - ]) - const dataToPublish = [...dataForLinks] - for (const [remoteUserName, publicSharedFiles] of dataToPublish) { - const serialized = JSON.stringify([...publicSharedFiles]) - console.log(`shared with ${remoteUserName} : ${serialized}`) - //dht putlinkrecord hfchrissperry100 hfchrissperry101 pshare-filelist "" - for (; ;) { - try { - const result = - yield unlockedCommandEffect( - rpcClient, - client => - client.command("dht", "putlinkrecord", userName, remoteUserName, "pshare-filelist", serialized, true)) - console.log(`putbdaplinkdata returned ${JSON.stringify(result, null, 2)}`) - } catch (err) { - const r = blinq(putErrorRegexes).select(regex => regex.exec(err.message)).firstOrDefault(result => result != null) - //const r = /DHT data entry is locked for another (\d+) seconds/.exec(err.message) - if (r) { - console.warn(err.message) - const unlockTimeSecsStr = r[1] - const unlockTimeSecs = parseInt(unlockTimeSecsStr, 10) - if (!isNaN(unlockTimeSecs)) { - console.warn(`waiting for ${unlockTimeSecs}s before trying again`) - yield delay(1000 * (unlockTimeSecs + 1)) - continue - } - console.warn(`could not parse wait time from error message`) - } - throw err - - } - break; - } - } - if (dataToPublish.length > 0 || !hasAnnouncedFirstPublish) { - hasAnnouncedFirstPublish = true - yield put(FileListActions.fileListPublished()) - } - } - -} - -const getRemoteLinkName = (link: Link, localUserName: string) => - blinq([link.recipient_fqdn, link.requestor_fqdn]) - .select(getUserNameFromFqdn) - .single(n => n !== localUserName) - diff --git a/src/main/sagas/fileWatchSaga.ts b/src/main/sagas/fileWatchSaga.ts index 90335a77..1f9068a8 100644 --- a/src/main/sagas/fileWatchSaga.ts +++ b/src/main/sagas/fileWatchSaga.ts @@ -1,160 +1,174 @@ -import { watch } from 'chokidar' -import { eventChannel, END } from 'redux-saga'; -import { app } from 'electron'; -import * as path from 'path' -import * as fs from 'fs' -import * as util from 'util' -import * as fsExtra from 'fs-extra' -import { call, take, cancelled, fork, put } from 'redux-saga/effects'; -import { createAsyncQueue } from '../../shared/system/createAsyncQueue'; -import { BdapActions } from '../../shared/actions/bdap'; -import mime from 'mime-types' -import { blinq } from 'blinq'; -import { FileWatchActions } from "../../shared/actions/fileWatch"; -import { SharedFile } from '../../shared/types/SharedFile'; -import { maximumFileSize } from '../../shared/system/maximumFileSize'; -import { hashFile } from '../../shared/system/hashing/hashFile'; -import { getType } from 'typesafe-actions'; +import { watch } from "chokidar"; +import { eventChannel, END, buffers } from "redux-saga"; +import { app } from "electron"; +import os from "os"; +import * as path from "path"; +import * as fs from "fs"; +import * as util from "util"; +import * as fsExtra from "fs-extra"; +import { call, take, put } from "redux-saga/effects"; +import { BdapActions } from "../../shared/actions/bdap"; +import mime from "mime-types"; +import { blinq } from "blinq"; +import { FileWatchActions, FileChange } from "../../shared/actions/fileWatch"; +import { SharedFile } from "../../shared/types/SharedFile"; +//import { maximumFileSize } from '../../shared/system/maximumFileSize'; +//import { hashFile } from '../../shared/system/hashing/hashFile'; +import { getType } from "typesafe-actions"; +import { resourceScope } from "../../shared/system/redux-saga/resourceScope"; +import { takeBatch } from "../../shared/system/redux-saga/takeBatch"; interface SimpleFileWatchEvent { - type: "add" | "change" | "unlink" | "ready" + type: "add" | "change" | "unlink" | "ready"; } interface FileWatchEvent extends SimpleFileWatchEvent { - path: string + path: string; } -const fsStatAsync = util.promisify(fs.stat) +const fsStatAsync = util.promisify(fs.stat); //const isDirectory = (obj: DirectoryEntry): obj is Directory => obj.type === "directory" -const isFileWatchEvent = (obj: SimpleFileWatchEvent): obj is FileWatchEvent => (obj).path !== undefined +const isFileWatchEvent = (obj: SimpleFileWatchEvent): obj is FileWatchEvent => + (obj).path !== undefined; const pathToShareDirectory = path.join(app.getPath("home"), ".pshare", "share"); -const getRelativePath = (fqPath: string) => path.relative(pathToShareDirectory, fqPath) +const getRelativePath = (fqPath: string) => + path.relative(pathToShareDirectory, fqPath); export function* fileWatchSaga() { - yield take(getType(BdapActions.bdapDataFetchSuccess)) - yield call(() => fsExtra.ensureDir(pathToShareDirectory)) - console.log("starting file watcher") - const watcher = watch(pathToShareDirectory, { awaitWriteFinish: { stabilityThreshold: 500 } }) - const channel = eventChannel((emitter: (v: SimpleFileWatchEvent | FileWatchEvent | END) => void) => { - const addHandler: (...args: any[]) => void = path => emitter({ type: "add", path }); - const changeHandler: (...args: any[]) => void = path => emitter({ type: "change", path }); - const unlinkHandler: (...args: any[]) => void = path => emitter({ type: "unlink", path }); - const readyHandler: (...args: any[]) => void = () => emitter({ type: "ready" }); - watcher.on("add", addHandler) - watcher.on("change", changeHandler) - watcher.on("unlink", unlinkHandler) - watcher.on("ready", readyHandler) - return () => { - console.log("killing watcher") - watcher.off("add", addHandler) - watcher.off("change", changeHandler) - watcher.off("unlink", unlinkHandler) - watcher.off("ready", readyHandler) - } - }) - const q = createAsyncQueue() - yield fork(function* () { - try { - for (; ;) { - const ev: SimpleFileWatchEvent = yield take(channel) - q.post(ev) - } - } finally { - if (yield cancelled()) { - channel.close() - } - } - }) - //const addedFiles: string[] = [] - //const unlinkedFiles: string[] = [] - for (; ;) { - const ev: SimpleFileWatchEvent = yield call(() => q.receive()) - if (ev.type === "ready") { - yield put(FileWatchActions.initialScanComplete()) - continue - } + yield take(getType(BdapActions.bdapDataFetchSuccess)); + yield call(() => fsExtra.ensureDir(pathToShareDirectory)); + console.log("starting file watcher"); + const watcher = watch(pathToShareDirectory, { + awaitWriteFinish: { stabilityThreshold: 500 }, + }); + const channel = eventChannel( + (emitter: (v: SimpleFileWatchEvent | FileWatchEvent | END) => void) => { + const addHandler: (...args: any[]) => void = path => + emitter({ type: "add", path }); + const changeHandler: (...args: any[]) => void = path => + emitter({ type: "change", path }); + const unlinkHandler: (...args: any[]) => void = path => + emitter({ type: "unlink", path }); + const readyHandler: (...args: any[]) => void = () => + emitter({ type: "ready" }); + watcher.on("add", addHandler); + watcher.on("change", changeHandler); + watcher.on("unlink", unlinkHandler); + watcher.on("ready", readyHandler); + return () => { + console.log("killing watcher"); + watcher.off("add", addHandler); + watcher.off("change", changeHandler); + watcher.off("unlink", unlinkHandler); + watcher.off("ready", readyHandler); + }; + }, + buffers.expanding() + ); + const scope = resourceScope(channel, ch => ch.close()); - if (isFileWatchEvent(ev)) { - switch (ev.type) { - case "add": - { - const files: SharedFile[] = yield* getSharedFileInfo([ev.path], true); - for (const f of files) { - if (f.size === undefined || f.size > maximumFileSize) { - continue - } + yield* scope.use(function*(channel) { + for (;;) { + const receivedEvts = yield takeBatch(channel, { + maxDurationMs: 10000, + maxSize: 4096, + minDurationMs: 1000, + }); + console.log(`got ${receivedEvts.length} filewatch events`); + const fileChanges: FileChange[] = []; - yield put(FileWatchActions.fileAdded(f)) + for (const ev of receivedEvts) { + if (ev.type === "ready") { + yield put(FileWatchActions.initialScanComplete()); + continue; + } + + if (isFileWatchEvent(ev)) { + switch (ev.type) { + case "add": { + const files: SharedFile[] = yield* getSharedFileInfo( + [ev.path], + true + ); + + for (const f of files) { + // if (f.size === undefined || f.size > maximumFileSize) { + // continue + // } + + fileChanges.push({ type: "added", file: f }); + } + break; } - break - } - case "unlink": - { - const files: SharedFile[] = yield* getSharedFileInfo([ev.path], false); - for (const f of files) { - yield put(FileWatchActions.fileUnlinked(f)) + case "unlink": { + const files: SharedFile[] = yield* getSharedFileInfo( + [ev.path], + false + ); + for (const f of files) { + fileChanges.push({ type: "unlinked", file: f }); + } + break; } - break } + } } + yield put(FileWatchActions.filesChanged(fileChanges)); } - } - // const allFiles = blinq(addedFiles) - // .except(unlinkedFiles); - // const files: SharedFile[] = yield* getSharedFileInfo(allFiles); - - // for (const f of files) { - // yield put(FileWatchActions.fileAdded(f)) - // } - // //console.log(initialFiles) - // console.log(files) - + }); } const getTopDirectoryFromPath = (filePath: string) => { const pathSegments = filePath.split(path.sep); return pathSegments.length <= 1 ? undefined : pathSegments[0]; -} -function* getSharedFileInfo(allFiles: Iterable, gatherMetaData: boolean) { - const filePromises: Iterable> = - blinq(allFiles) - .selectMany(filePath => { - const relPath = getRelativePath(filePath); - const userDirName = getTopDirectoryFromPath(relPath); //represents linked user - if (!userDirName) { - return []; - } - const userDirRelativePath = path.relative(userDirName, relPath); - const inOrOut = getTopDirectoryFromPath(userDirRelativePath) - if (inOrOut !== "in" && inOrOut !== "out") { - return [] - } - const dir: "in" | "out" = inOrOut - const inOutRelPath = path.relative(inOrOut, userDirRelativePath) - return [{ +}; +function* getSharedFileInfo( + allFiles: Iterable, + gatherMetaData: boolean +) { + const filePromises: Iterable> = blinq(allFiles) + .selectMany(filePath => { + const relPath = getRelativePath(filePath); + const userDirName = getTopDirectoryFromPath(relPath); //represents linked user + if (!userDirName) { + return []; + } + const userDirRelativePath = path.relative(userDirName, relPath); + const inOrOut = getTopDirectoryFromPath(userDirRelativePath); + if (inOrOut !== "in" && inOrOut !== "out") { + return []; + } + const dir: "in" | "out" = inOrOut; + const inOutRelPath = path.relative(inOrOut, userDirRelativePath); + return [ + { direction: dir, filePath, userDirName, - inOutRelPath - }]; - }) - .select(async (fi): Promise => { + inOutRelPath, + }, + ]; + }) + .select( + async (fi): Promise => { let stats: fs.Stats | undefined; - let contentType: string | undefined - let hash: string | undefined + let contentType: string | undefined; + //let hash: string | undefined if (gatherMetaData) { stats = await fsStatAsync(fi.filePath); - contentType = mime.lookup(fi.filePath) || 'application/octet-stream' - hash = await hashFile(fi.filePath) - }; - return ({ + contentType = + mime.lookup(fi.filePath) || "application/octet-stream"; + //hash = await hashFile(fi.filePath) + } + return { path: fi.filePath, contentType, - relativePath: fi.inOutRelPath, + relativePath: normalizeSlashes(fi.inOutRelPath), direction: fi.direction, size: stats ? stats.size : undefined, sharedWith: fi.userDirName, - hash - }); - }); + //hash + }; + } + ); const files: SharedFile[] = []; for (let filePromise of filePromises) { const f: SharedFile = yield call(() => filePromise); @@ -163,3 +177,5 @@ function* getSharedFileInfo(allFiles: Iterable, gatherMetaData: boolean) return files; } +const normalizeSlashes = (p: string) => + os.platform() === "win32" ? p.replace(/\\/g, "/") : p; diff --git a/src/main/sagas/index.ts b/src/main/sagas/index.ts index 9d462beb..55651cec 100644 --- a/src/main/sagas/index.ts +++ b/src/main/sagas/index.ts @@ -7,6 +7,7 @@ import { saveMnemonicSaga } from "./saveMnemonicSaga"; import { BrowserWindowProvider } from "../../shared/system/BrowserWindowProvider"; import { translateMnemonicFileSaveFailedActionsToValidationMessagesSaga } from "./translateMnemonicFileSaveFailedActionsToValidationMessagesSaga"; import { bdapSaga } from "./bdapSaga"; +import { bulkImportSaga, previewBulkImportSaga } from "./bulkImportSaga"; import { linkRequestSaga } from "./linkRequestSaga"; import { linkAcceptSaga } from "./linkAcceptSaga"; import { fileWatchSaga } from "./fileWatchSaga"; @@ -16,19 +17,17 @@ import { addFileSaga } from "./addFileSaga"; import { startViewSharedFilesSaga } from "./startViewSharedFilesSaga"; import { scanForLinkMessagesSaga } from "./scanForLinkMessagesSaga"; import { sendLinkMessageSaga } from "./sendLinkMessageSaga"; -//import { fileShareSaga } from "./fileShareSaga"; import { requestFileSaveDialogSaga } from "./fileRequestSaveDialogSaga"; import { newLinkSaga } from "./newLinkSaga"; import { restoreFromMnemonicSaga } from "./restoreFromMnemonicSaga"; import { removeFileSaga } from "./removeFileSaga"; - +import { exportUserLinksSaga } from './exportUserLinksSaga'; export const getRootSaga = (rpcClient: RpcClientWrapper, browserWindowProvider: BrowserWindowProvider) => [ () => startViewSharedFilesSaga(rpcClient), () => addFileSaga(), () => removeFileSaga(), () => fileWatchSaga(), - //() => fileShareSaga(rpcClient), () => linkRequestSaga(rpcClient), () => linkAcceptSaga(rpcClient), () => linkDeclineSaga(rpcClient), @@ -40,10 +39,13 @@ export const getRootSaga = (rpcClient: RpcClientWrapper, browserWindowProvider: () => saveMnemonicSaga(browserWindowProvider), () => translateMnemonicFileSaveFailedActionsToValidationMessagesSaga(), () => bdapSaga(rpcClient), + () => bulkImportSaga(rpcClient, browserWindowProvider), + () => previewBulkImportSaga(), () => scanForLinkMessagesSaga(rpcClient), () => sendLinkMessageSaga(rpcClient), () => requestFileSaveDialogSaga(browserWindowProvider), () => newLinkSaga(), - () => restoreFromMnemonicSaga(rpcClient) + () => restoreFromMnemonicSaga(rpcClient), + () => exportUserLinksSaga(browserWindowProvider), ] diff --git a/src/main/sagas/linkAcceptSaga.ts b/src/main/sagas/linkAcceptSaga.ts index 4bb990ca..90ee2068 100644 --- a/src/main/sagas/linkAcceptSaga.ts +++ b/src/main/sagas/linkAcceptSaga.ts @@ -49,15 +49,22 @@ export function* linkAcceptSaga(rpcClient: RpcClient) { typeof registrationDays === 'undefined' ? client.command("link", "accept", recipient, requestor) : client.command("link", "accept", recipient, requestor, registrationDays.toString())); + console.log(response) } catch (err) { - //debugger - throw err + if (/^Insufficient funds/.test(err.message)) { + yield put(BdapActions.insufficientFunds("accept a link from " + requestor)) + + } else { + throw err + } } - console.log(response) + } yield put(BdapActions.getCompleteLinks()) yield put(BdapActions.getPendingAcceptLinks()) + yield put(BdapActions.getBalance()) + }); } diff --git a/src/main/sagas/linkDeclineSaga.ts b/src/main/sagas/linkDeclineSaga.ts index 774a3491..365b2f7d 100644 --- a/src/main/sagas/linkDeclineSaga.ts +++ b/src/main/sagas/linkDeclineSaga.ts @@ -45,15 +45,22 @@ export function* linkDeclineSaga(rpcClient: RpcClient) { try { response = yield unlockedCommandEffect(rpcClient, client => client.command("link", "deny", recipient, requestor)); + console.log(response) } catch (err) { - //debugger + if (/^Insufficient funds/.test(err.message)) { + yield put(BdapActions.insufficientFunds("deny a link from " + requestor)) + return + + } throw err } - console.log(response) + } yield put(BdapActions.getCompleteLinks()) yield put(BdapActions.getPendingAcceptLinks()) + yield put(BdapActions.getBalance()) + }); } diff --git a/src/main/sagas/linkRequestSaga.ts b/src/main/sagas/linkRequestSaga.ts index cb6b4883..6e50274c 100644 --- a/src/main/sagas/linkRequestSaga.ts +++ b/src/main/sagas/linkRequestSaga.ts @@ -47,6 +47,7 @@ export function* linkRequestSaga(rpcClient: RpcClient) { try { response = yield unlockedCommandEffect(rpcClient, client => client.command("link", "request", requestor, recipient, inviteMessage)) + console.log(response) } catch (err) { if (/^BDAP_SEND_LINK_RPC_ERROR\: ERRCODE\: 4001/.test(err.message)) { @@ -54,12 +55,18 @@ export function* linkRequestSaga(rpcClient: RpcClient) { yield put(BdapActions.createLinkRequestFailed("Link request or accept already exists for these accounts")) return } - //debugger + + if (/^Insufficient funds/.test(err.message)) { + yield put(BdapActions.insufficientFunds("request a link to " + recipient)) + return + + } throw err } - console.log(response) + yield put(BdapActions.getPendingRequestLinks()) + yield put(BdapActions.getBalance()) }) diff --git a/src/main/sagas/remoteLoggingSaga.ts b/src/main/sagas/remoteLoggingSaga.ts index 685e2dd7..3ff42862 100644 --- a/src/main/sagas/remoteLoggingSaga.ts +++ b/src/main/sagas/remoteLoggingSaga.ts @@ -6,6 +6,11 @@ import winston from 'winston' const isDevelopment = process.env.NODE_ENV === 'development' +const passwordRegex = new RegExp('password','i') +const passphraseRegex = new RegExp('passphrase','i') +const mnemonicRegex = new RegExp('mnemonic','i') + +const tokenTester = (item: string) => (passwordRegex.test(item) || passphraseRegex.test(item) || mnemonicRegex.test(item)) export function* remoteLoggingSaga() { if (isDevelopment) { @@ -16,6 +21,12 @@ export function* remoteLoggingSaga() { if (typeof logger === 'undefined') { return; } + let flag = false + action.payload.args.map(item => { + if (item && typeof item === 'string' && tokenTester(item) ) flag = true + if (item && typeof item === 'object' && Object.keys(item).some(ele => tokenTester(ele))) flag = true + }) + if (flag) return; const timestamp = new Date().toUTCString() switch (action.payload.level) { case "error": diff --git a/src/main/sagas/removeFileSaga.ts b/src/main/sagas/removeFileSaga.ts index b04271a5..6b5b3232 100644 --- a/src/main/sagas/removeFileSaga.ts +++ b/src/main/sagas/removeFileSaga.ts @@ -1,4 +1,4 @@ -import { takeEvery, put } from "redux-saga/effects"; +import { takeEvery, put, call } from "redux-saga/effects"; import { getType, ActionType } from "typesafe-actions"; import * as fsExtra from 'fs-extra' import { RemoveFileActions } from "../../shared/actions/removeFile"; @@ -6,8 +6,9 @@ import { RemoveFileActions } from "../../shared/actions/removeFile"; export function* removeFileSaga() { yield takeEvery(getType(RemoveFileActions.removeSharedFile), function* (action: ActionType) { - fsExtra.removeSync(action.payload) - yield put (RemoveFileActions.fileRemoved()) + yield call(() => fsExtra.remove(action.payload)) + + yield put(RemoveFileActions.fileRemoved()) }) } diff --git a/src/main/sagas/startViewSharedFilesSaga.ts b/src/main/sagas/startViewSharedFilesSaga.ts index 1f051aca..a7a83f8f 100644 --- a/src/main/sagas/startViewSharedFilesSaga.ts +++ b/src/main/sagas/startViewSharedFilesSaga.ts @@ -1,5 +1,15 @@ -import { v4 as uuid } from 'uuid'; -import { takeEvery, call, put, select, actionChannel, flush, fork, take, race } from "redux-saga/effects"; +import { v4 as uuid } from "uuid"; +import { + takeEvery, + call, + put, + select, + actionChannel, + flush, + fork, + take, + race, +} from "redux-saga/effects"; import { getType, ActionType } from "typesafe-actions"; import { DashboardActions } from "../../shared/actions/dashboard"; import { RpcClient } from "../RpcClient"; @@ -7,124 +17,193 @@ import { GetUserInfo } from "../../dynamicdInterfaces/GetUserInfo"; import { MainRootState } from "../reducers"; import { FileListActions } from "../../shared/actions/fileList"; import { SharedFilesActions } from "../../shared/actions/sharedFiles"; -import { FileListMessage } from '../../shared/types/FileListMessage'; -import { getUserNameFromFqdn } from '../../shared/system/getUserNameFromFqdn'; -import { SharedFile } from '../../shared/types/SharedFile'; -import { entries } from '../../shared/system/entries'; -import { PublicSharedFile } from '../../shared/types/PublicSharedFile'; -import { BdapActions } from '../../shared/actions/bdap'; -import { LinkMessageEnvelope } from '../../shared/actions/payloadTypes/LinkMessageEnvelope'; -import { delay } from 'redux-saga'; +import { FileListMessage } from "../../shared/types/FileListMessage"; +import { getUserNameFromFqdn } from "../../shared/system/getUserNameFromFqdn"; +import { SharedFile } from "../../shared/types/SharedFile"; +import { entries } from "../../shared/system/entries"; +import { PublicSharedFile } from "../../shared/types/PublicSharedFile"; +import { BdapActions } from "../../shared/actions/bdap"; +import { delay } from "redux-saga"; +import { FileNavigationActions } from "../../shared/actions/fileNavigation"; +import { FileSharingActions } from "../../shared/actions/fileSharing"; +import { + FileListRequest, + isFileListRequest, +} from "../../shared/actions/payloadTypes/FileListRequest"; +import { RtcActions } from "../../shared/actions/rtc"; export function* startViewSharedFilesSaga(rpcClient: RpcClient) { - yield fork(function* () { - yield take(getType(BdapActions.initialize)) + yield fork(function*() { + yield take(getType(BdapActions.initialize)); const pred = (action: BdapActions) => { switch (action.type) { case getType(BdapActions.linkMessageReceived): - return action.payload.message.type === "pshare-filelist-request"; + return ( + action.payload.message.type === + "pshare-filelist-request" + ); default: return false; } - } - - yield takeEvery(pred, function* (action: ActionType) { - const msg = action.payload - const { id } = msg.message - const senderFqdn = msg.rawMessage.sender_fqdn - const sender = getUserNameFromFqdn(senderFqdn) + }; + + yield takeEvery(pred, function*( + action: ActionType + ) { + const msg = action.payload; + const { id } = msg.message; + const senderFqdn = msg.rawMessage.sender_fqdn; + const sender = getUserNameFromFqdn(senderFqdn); if (sender) { - const filesRecord: Record = yield select((s: MainRootState) => { - if (s.fileWatch.users[sender]) { - return s.fileWatch.users[sender].out; + const filesRecord: Record = yield select( + (s: MainRootState) => { + if (s.fileWatch.users[sender]) { + return s.fileWatch.users[sender].out; + } else { + return {}; + } } - else { - return {} - } - }) - const sharedFiles: PublicSharedFile[] = - entries(filesRecord) - .select(([fileName, v]) => ({ - fileName, - hash: v.hash!, - size: v.size!, - contentType: v.contentType! - })) - .toArray() + ); + const sharedFiles: PublicSharedFile[] = entries(filesRecord) + .select(([fileName, v]) => ({ + fileName, + //hash: v.hash!, + size: v.size!, + contentType: v.contentType!, + })) + .toArray(); const fileListMessage: FileListMessage = { files: sharedFiles, - id - } - yield put(BdapActions.sendLinkMessage({ recipient: sender, payload: { id: uuid(), timestamp: Math.trunc((new Date()).getTime()), type: "pshare-filelist", payload: fileListMessage } })) + id, + }; + yield put( + BdapActions.sendLinkMessage({ + recipient: sender, + payload: { + id: uuid(), + timestamp: Math.trunc(new Date().getTime()), + type: "pshare-filelist", + payload: fileListMessage, + }, + }) + ); } - }) - - - }) - yield takeEvery(getType(DashboardActions.startViewSharedFiles), function* (action: ActionType) { - - const linkedUserName = action.payload - const linkedUserInfo: GetUserInfo = yield call(() => rpcClient.command("getuserinfo", linkedUserName)) - yield put(DashboardActions.viewSharedFiles(linkedUserInfo)) - const chan = yield actionChannel(getType(SharedFilesActions.close)) - const checkClosed = function* () { - const closeActions: any[] = yield flush(chan) - return closeActions.some(x => true) - } - let fileListMessage: FileListMessage; + }); + }); + yield takeEvery(getType(DashboardActions.startViewSharedFiles), function*( + action: ActionType + ) { + yield put(FileNavigationActions.goRoot({ type: "downloadableFiles" })); + yield put(FileNavigationActions.goRoot({ type: "sharedFiles" })); + const linkedUserName = action.payload; + const linkedUserInfo: GetUserInfo = yield call(() => + rpcClient.command("getuserinfo", linkedUserName) + ); + yield put(DashboardActions.viewSharedFiles(linkedUserInfo)); + const chan = yield actionChannel(getType(SharedFilesActions.close)); + const checkClosed = function*() { + const closeActions: any[] = yield flush(chan); + return closeActions.some(x => true); + }; + let fileListMessage: PublicSharedFile[]; try { - fileListMessage = yield call(() => getSharedFileListForLink(linkedUserName)) + fileListMessage = yield call(() => + getSharedFileListForLink(linkedUserName) + ); } catch (err) { - yield put(FileListActions.fileListFetchFailed()) - - return + if (yield* checkClosed()) { + return; + } + yield put(FileListActions.fileListFetchFailed()); + + return; } if (yield* checkClosed()) { - return + return; } - const fileList = fileListMessage.files - yield put(FileListActions.fileListFetchSuccess(fileList)) + yield put(FileListActions.fileListFetchSuccess(fileListMessage)); //yield put(DashboardActions.viewSharedFiles(linkedUserInfo)) - - }) + }); } - - - function* getSharedFileListForLink(linkedUserName: string) { - const msgId = uuid() - yield put(BdapActions.sendLinkMessage({ recipient: linkedUserName, payload: { id: msgId, timestamp: Math.trunc((new Date()).getTime()), type: "pshare-filelist-request", payload: { id: msgId } } })) - - - const pred = (action: BdapActions) => { + const msgId = uuid(); + const myUserName: string = yield select( + (s: MainRootState) => s.user.userName! + ); + + const req: FileListRequest = { + fileName: "file-list", + ownerUserName: linkedUserName, + requestorUserName: myUserName, + requestId: msgId, + type: "file-list", + }; + yield put(FileSharingActions.startRequestFile(req)); + + // yield put( + // BdapActions.sendLinkMessage({ + // recipient: linkedUserName, + // payload: { + // id: msgId, + // timestamp: Math.trunc(new Date().getTime()), + // type: "pshare-filelist-request", + // payload: { id: msgId }, + // }, + // }) + // ); + + const successPredicate = (action: FileSharingActions) => { switch (action.type) { - case getType(BdapActions.linkMessageReceived): - return action.payload.message.payload.id === msgId && action.payload.message.type === "pshare-filelist"; + case getType(FileSharingActions.fileListResponse): + return action.payload.requestId === msgId; default: return false; } - } - const { action, timeout }: { action: ActionType, timeout: unknown } = yield race({ - timeout: delay(20000), - action: take(pred) - }) + }; + const failurePredicate = (action: RtcActions) => { + switch (action.type) { + case getType(RtcActions.fileReceiveFailed): + return ( + isFileListRequest(action.payload.fileRequest) && + action.payload.fileRequest.requestId === msgId + ); + default: + return false; + } + }; + const { + successAction, + failureAction, + timeout, + abort, + }: { + successAction: ActionType; + failureAction: ActionType; + timeout: unknown; + abort: unknown; + } = yield race({ + timeout: delay(1200000), + abort: take(getType(DashboardActions.startViewSharedFiles)), + successAction: take(successPredicate as any), + failureAction: take(failurePredicate as any), + }); if (timeout) { - throw Error("timeout") + throw Error("timeout"); + } + if (abort) { + console.log("file-list-fetch aborted"); + return; + } + if (failureAction) { + throw failureAction.payload.error; } - - //const action: ActionType = yield take(pred) - - const { payload: fileListMessage }: LinkMessageEnvelope = action.payload.message - - - return fileListMessage - - -} \ No newline at end of file + console.log("got shared files", successAction); + return successAction.payload.sharedFiles; +} diff --git a/src/main/store/hot-reload/runRootSagaWithHotReload.ts b/src/main/store/hot-reload/runRootSagaWithHotReload.ts index 3a86946a..465939a8 100644 --- a/src/main/store/hot-reload/runRootSagaWithHotReload.ts +++ b/src/main/store/hot-reload/runRootSagaWithHotReload.ts @@ -20,6 +20,8 @@ import { actionLoggingSaga } from "../../sagas/actionLoggingSaga"; import { remoteLoggingSaga } from "../../sagas/remoteLoggingSaga"; import { EventDispatcher } from "../../../shared/system/events/EventDispatcher"; import { createStoreWithHotReload } from "./createStoreWithHotReload"; +import * as path from 'path' + export function runRootSagaWithHotReload(sagaMw: SagaMiddleware<{}>, browserWindowProvider: BrowserWindowProvider, sagaMonitor: EventDispatcher, store: ReturnType) { let rpcClient: RpcClientWrapper | undefined; @@ -39,13 +41,15 @@ export function runRootSagaWithHotReload(sagaMw: SagaMiddleware<{}>, browserWind const cancellationTokenSource = createCancellationTokenSource() sagaMonitor.addEventListener("error", e => { console.log("sagamonitor error") + cancellationTokenSource.cancel().then(() => { store.dispatch(AppActions.terminated()); + const logPath = path.join(app.getPath("home"), ".pshare", "logs", "pshare.log"); const messageBoxOptions: MessageBoxOptions = { type: "error", title: "Error", - message: `Oops, it looks like something's gone wrong`, - detail: `Sorry, the application will now close.\nMaybe restarting will help.${e.message ? `\nThe error was : ${e.message}` : ""}`, + message: `An unrecoverable error has occurred`, + detail: `Sorry, the application will now close.${e.message ? `\n\nThe error was\n\n"${e.message}"` : ""}\n\nA log file can be found at\n\n${logPath}\n\nIf the problem persists, please get in touch with us at\n\nhttps://discord.gg/87be63e`, normalizeAccessKeys: true, buttons: ["&Ok"], noLink: true, diff --git a/src/main/system/divertConsoleToLogger.ts b/src/main/system/divertConsoleToLogger.ts index 9ff77bff..580611cf 100644 --- a/src/main/system/divertConsoleToLogger.ts +++ b/src/main/system/divertConsoleToLogger.ts @@ -1,5 +1,12 @@ import { prepareErrorForSerialization } from '../../shared/proxy/prepareErrorForSerialization'; import { getLogger } from './getLogger'; + +const passwordRegex = new RegExp('password','i') +const passphraseRegex = new RegExp('passphrase','i') +const mnemonicRegex = new RegExp('mnemonic','i') + +const tokenTester = (item: string) => (passwordRegex.test(item) || passphraseRegex.test(item) || mnemonicRegex.test(item)) + export async function divertConsoleToLogger() { const logger = await getLogger() if (typeof logger === 'undefined') { @@ -11,23 +18,47 @@ export async function divertConsoleToLogger() { const originalConsoleError = console.error.bind(console); console.log = (...args: any) => { const timestamp = new Date().toUTCString() - logger.info(["Main console", timestamp, ...args]); + let flag = false + args.map((item:any) => { + if (item && typeof item === 'string' && tokenTester(item)) + flag = true; + }) originalConsoleLog(...args); + if(flag) return; + logger.info(["Main console", timestamp, ...args]); }; console.warn = (...args: any) => { const timestamp = new Date().toUTCString() - logger.warn(["Main console", timestamp, ...args]); + let flag = false + args.map((item:any) => { + if (item && typeof item === 'string' && tokenTester(item)) + flag = true; + }) originalConsoleWarn(...args); + if(flag) return; + logger.warn(["Main console", timestamp, ...args]); }; console.info = (...args: any) => { const timestamp = new Date().toUTCString() - logger.info(["Main console", timestamp, ...args]); + let flag = false + args.map((item:any) => { + if (item && typeof item === 'string' && tokenTester(item)) + flag = true; + }) originalConsoleInfo(...args); + if(flag) return; + logger.info(["Main console", timestamp, ...args]); }; console.error = (...args: any) => { const timestamp = new Date().toUTCString() - logger.error(["Main console", timestamp, ...args]); + let flag = false + args.map((item:any) => { + if (item && typeof item === 'string' && tokenTester(item)) + flag = true; + }) originalConsoleError(...args); + if(flag) return; + logger.error(["Main console", timestamp, ...args]); }; process.on('uncaughtException', (err) => { const e = prepareErrorForSerialization(err); diff --git a/src/main/system/getAllFilePaths.ts b/src/main/system/getAllFilePaths.ts new file mode 100644 index 00000000..145f545c --- /dev/null +++ b/src/main/system/getAllFilePaths.ts @@ -0,0 +1,34 @@ +import { promisify } from 'util'; +import * as fs from 'fs'; +import * as path from 'path' + +export async function getAllFilePaths(filePaths: string[], visited: Set | undefined = undefined): Promise { + if (filePaths.length === 0) { + return []; + } + const visitedSet = visited || new Set(); + const files: string[] = []; + for (const pth of filePaths) { + const normalizedPath = path.normalize(pth) + if (visitedSet.has(normalizedPath)) { + continue; + } + visitedSet.add(normalizedPath); + const pathExists = await exists(normalizedPath); + if (!pathExists) { + continue; + } + const stat: fs.Stats = await fs.promises.stat(normalizedPath); + if (stat.isFile()) { + files.push(normalizedPath); + } + else if (stat.isDirectory()) { + const dirContents = await fs.promises.readdir(normalizedPath); + const dirContentsPaths = dirContents.map(p => path.join(normalizedPath, p)); + const dPaths = await getAllFilePaths(dirContentsPaths, visitedSet); + files.push(...dPaths); + } + } + return files; +} +const exists = promisify(fs.exists); diff --git a/src/main/validation/userNameValidationRules.ts b/src/main/validation/userNameValidationRules.ts index a4e5fc20..97109d99 100644 --- a/src/main/validation/userNameValidationRules.ts +++ b/src/main/validation/userNameValidationRules.ts @@ -3,7 +3,7 @@ import { GetUserInfo } from "../../dynamicdInterfaces/GetUserInfo"; import { RpcClient } from "../RpcClient"; const isLongEnough = (client: RpcClient, value: string) => value.length >= 3; -const isValidCharacters = (client: RpcClient, value: string) => /^[A-Za-z0-9]+$/.test(value); +const isValidCharacters = (client: RpcClient, value: string) => /^[a-z0-9]+$/.test(value); const userNameDoesNotExist = async (client: RpcClient, value: string) => { let userInfo: GetUserInfo; @@ -34,7 +34,7 @@ export const userNameValidationRules: ValidationTest[] = [ testsOnSuccess: [ { test: isValidCharacters, - message: "Value may only contain letters and numbers", + message: "User name may only contain smaller case alphanumeric", testsOnSuccess: [{ test: userNameDoesNotExist, message: "User name is already taken" diff --git a/src/renderer/assets/svgs/copy-32.svg b/src/renderer/assets/svgs/copy-32.svg new file mode 100644 index 00000000..94bb70a7 --- /dev/null +++ b/src/renderer/assets/svgs/copy-32.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + diff --git a/src/renderer/assets/svgs/export.svg b/src/renderer/assets/svgs/export.svg new file mode 100644 index 00000000..3181c3b3 --- /dev/null +++ b/src/renderer/assets/svgs/export.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/assets/svgs/folder-blue.svg b/src/renderer/assets/svgs/folder-blue.svg new file mode 100644 index 00000000..72f50ffb --- /dev/null +++ b/src/renderer/assets/svgs/folder-blue.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/renderer/assets/svgs/goback.svg b/src/renderer/assets/svgs/goback.svg new file mode 100644 index 00000000..ad0ce7f8 --- /dev/null +++ b/src/renderer/assets/svgs/goback.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/assets/svgs/right-chevron.svg b/src/renderer/assets/svgs/right-chevron.svg new file mode 100644 index 00000000..5933ee50 --- /dev/null +++ b/src/renderer/assets/svgs/right-chevron.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/components/dashboard/AddFile.tsx b/src/renderer/components/dashboard/AddFile.tsx index 5c9cc8bc..98445491 100644 --- a/src/renderer/components/dashboard/AddFile.tsx +++ b/src/renderer/components/dashboard/AddFile.tsx @@ -6,7 +6,8 @@ import { Text } from "../ui-elements/Text"; import Container from "../ui-elements/Container"; import { FilePathInfo } from "../../../shared/types/FilePathInfo"; import { Dropzone, DropzoneError } from "../ui-elements/Dropzone"; -import { maximumFileSize } from "../../../shared/system/maximumFileSize"; +import BalanceIndicator from "../../../renderer/containers/dashboard/BalanceIndicator"; +//import { maximumFileSize } from "../../../shared/system/maximumFileSize"; @@ -17,27 +18,31 @@ export interface AddFileStateProps { export interface AddFilesDispatchProps { close: () => void filesSelected: (files: FilePathInfo[]) => void + //directoriesSelected: (directories: string[]) => void } export type AddFileProps = AddFileStateProps & AddFilesDispatchProps -export const AddFile: FunctionComponent = ({ close, filesSelected, linkedUserCommonName }) => { +export const AddFile: FunctionComponent = ({ close, filesSelected, linkedUserCommonName }) => { // react hooks FTW!!!! - const [error, setError] = useState(undefined) + const [ + error, + //setError + ] = useState(undefined) const userNameParts = linkedUserCommonName.split(' ') const lastName = (userNameParts.length > 1) ? userNameParts[userNameParts.length - 1] : "" const firstName = userNameParts.length > 1 ? userNameParts.slice(0, -1).join(' ') : userNameParts[0] const filesSelectedHandler = (files: FilePathInfo[]) => { - if (files.some(f => f.size > maximumFileSize)) { - setError({ title: "File too large!", message: "please select or drag a file that is no larger than 3gb" }) - return - } filesSelected(files) } - return <> - + const directoriesSelectedHander = (directories: FilePathInfo[]) => { + filesSelected(directories) + } + return
+ +
@@ -54,13 +59,13 @@ export const AddFile: FunctionComponent = ({ close, filesSelected, Add file - + File size limit: 3gb - ; +
; } diff --git a/src/renderer/components/dashboard/AddLinks.tsx b/src/renderer/components/dashboard/AddLinks.tsx index 4e4b9b58..6c899b5a 100644 --- a/src/renderer/components/dashboard/AddLinks.tsx +++ b/src/renderer/components/dashboard/AddLinks.tsx @@ -1,7 +1,7 @@ import { Component } from "react"; import React from "react"; import { H1, Text } from "../ui-elements/Text"; -import { AddLinksIcon, UserListAvatar, CloseIcon, BtnAddLinksIcon, RequestSentIcon } from "../ui-elements/Image"; +import { UserListAvatar, CloseIcon, BtnAddLinksIcon, RequestSentIcon } from "../ui-elements/Image"; import { UserList, UserListItem } from "../ui-elements/Dashboard"; import man from "../../assets/man.svg"; import Container from "../ui-elements/Container"; @@ -14,6 +14,8 @@ import Modal from "../ui-elements/Modal"; import Button from "../ui-elements/Button"; import Input from "../ui-elements/Input"; import { SearchActions } from "../../../shared/actions/search"; +// import { BulkImportActions } from "../../../shared/actions/bulkImport"; +import BalanceIndicator from "../../containers/dashboard/BalanceIndicator"; type SearchStatus = "NO_SEARCH" | "SEARCH_RESULT" export interface AddLinksStateProps { @@ -23,7 +25,11 @@ export interface AddLinksStateProps { status: SearchStatus } -export type AddLinksDispatchProps = PickedDispatchProps & PickedDispatchProps & { push: (pathname: string) => void } +export type AddLinksDispatchProps = + PickedDispatchProps + // & PickedDispatchProps + & PickedDispatchProps + & { push: (pathname: string) => void } export type AddLinksProps = AddLinksStateProps & AddLinksDispatchProps interface AddLinksComponentStateProps { @@ -33,7 +39,6 @@ interface AddLinksComponentStateProps { interface CustomRequestMessageProps { close: () => void, send: (msg: string) => void, - } interface CustomRequestMessageComponentState { msg: string @@ -94,27 +99,32 @@ export class AddLinks extends Component} -
+
+
push('/Dashboard/MyLinks')} /> finish
-

Add Links

-
- addLinksQueryTextChanged(e.target.value)} - margin="20px 0 20px 0" - padding="0 20px" - /> - 0 ? "visible" : "hidden", - margin:'30px 0 0 0' - }} +

+ {/* */} + Add Links

+
+ addLinksQueryTextChanged(e.target.value)} + margin="20px 0 20px 0" + padding="0 20px" + autoFocus={true} + /> + 0 ? "visible" : "hidden", + margin: '30px 0 0 0' + }} onClick={() => { addLinksQueryTextChanged(""); document.getElementById("addLinksInput")!.focus() - }} /> + }} />
{/* @@ -129,7 +139,7 @@ export class AddLinks extends Component this.setState(x)) + renderResults(queryText, status, users, x => this.setState(x), push) }
@@ -140,24 +150,34 @@ export class AddLinks extends Component void) => { +const renderResults = (queryText: string, status: string, users: BdapUser[], setState: (x: AddLinksComponentStateProps) => void, push: (pathname: string) => void) => { switch (status) { case "NO_SEARCH": return queryText.length === 0 - ? Type some characters to find other users... + ? <> + Type some characters to find other users... + + { + event.preventDefault(); + push("/Dashboard/BulkImport") + }} + style={{ cursor: 'pointer', color: '#2e77d0' }} + >Bulk invite from file... + : Type some more characters to find other users... case "SEARCH_RESULT": return users.length > 0 - ? - {users.map(u => -
+ ? + {users.map(u => setState({ requestModal: true, recipent: u.userName }) }> +
{u.state === 'pending' ?
Request sent
- :
setState({ requestModal: true, recipent: u.userName })}> + :
Request
} diff --git a/src/renderer/components/dashboard/BalanceIndicator.tsx b/src/renderer/components/dashboard/BalanceIndicator.tsx new file mode 100644 index 00000000..1029abca --- /dev/null +++ b/src/renderer/components/dashboard/BalanceIndicator.tsx @@ -0,0 +1,97 @@ +import { FunctionComponent, useState, useRef, CSSProperties, useCallback } from "react"; +import React from "react"; +import { QRCode } from "../ui-elements/QRCode" +import { Text } from "../ui-elements/Text"; +import { useOutsideAlerter } from "../../system/useOutsideAlerter"; +import copyIcon from "../../assets/svgs/copy-32.svg" + +import { CopyToClipboard } from 'react-copy-to-clipboard'; +import { delay } from "../../../shared/system/delay"; +import { PickedDispatchProps } from "../../../renderer/system/PickedDispatchProps"; +import { BdapActions } from "../../../shared/actions/bdap"; + +export interface BalanceIndicatorStateProps { + balance: number + walletAddress: string + errorMessage?: string + hideLinkWhenMinimized?: boolean +} +export type BalanceIndicatorDispatchProps = PickedDispatchProps +export type BalanceIndicatorProps = BalanceIndicatorStateProps & BalanceIndicatorDispatchProps +export const BalanceIndicator: FunctionComponent = ({ balance, walletAddress, errorMessage, fundsDialogDismissed, hideLinkWhenMinimized }) => { + const [visible, setVisible] = useState(false) + const [copied, setCopied] = useState(false); + const elemRef = useRef(null); + + const isVisible = visible || errorMessage; + + const cb = useCallback((ev: MouseEvent) => { + if (isVisible) { + setVisible(false) + ev.preventDefault() + ev.stopPropagation() + fundsDialogDismissed() + } + }, [isVisible]) + useOutsideAlerter(elemRef, cb); + const borderStyle = isVisible ? "solid 2px #ccc" : "none"; + + const outerStyle: CSSProperties = { + padding: '6px', + display: "block", + position: "absolute", + zIndex: 10000, + top: 0, + left: 0, + borderBottom: borderStyle, + borderRight: borderStyle, + backgroundColor: isVisible ? "#ffffff" : "none", + borderBottomRightRadius: "8px" + } + + return <> + {((!hideLinkWhenMinimized) || isVisible) &&
+ + { + e.preventDefault(); + console.log("balanceIndicator clicked"); + const show = !isVisible; + setVisible(show) + if (!show) { + fundsDialogDismissed() + } + }} + style={{ cursor: 'pointer', color: (balance > 60) ? '#2e77d0' : 'red' }} + >Balance : {balance} credits + + {isVisible && <> + {errorMessage &&
{errorMessage}
} +
+ +
+
+ {copied &&
COPIED TO CLIPBOARD
} + {walletAddress} + { + setCopied(true) + await delay(2000) + setCopied(false) + }}> + + + +
+ } +
} + + +} \ No newline at end of file diff --git a/src/renderer/components/dashboard/BulkImport.tsx b/src/renderer/components/dashboard/BulkImport.tsx new file mode 100644 index 00000000..2bbad05a --- /dev/null +++ b/src/renderer/components/dashboard/BulkImport.tsx @@ -0,0 +1,145 @@ +import { FunctionComponent, useState } from "react"; +import React from "react"; +import { Box } from "../ui-elements/Box"; +import { CloseIcon } from "../ui-elements/Image"; +import { Text } from "../ui-elements/Text"; +import Container from "../ui-elements/Container"; +import { FilePathInfo } from "../../../shared/types/FilePathInfo"; +import { Dropzone, DropzoneError } from "../ui-elements/Dropzone"; +import Button from "../ui-elements/Button"; +import { UserList, UserListItem } from "../ui-elements/Dashboard"; +import { RequestStatus } from "../../../main/sagas/bulkImportSaga"; + + + +export interface BulkImportStateProps { + data: string, + fqdnData: RequestStatus[], + err: boolean +} + +export interface BulkImportsDispatchProps { + push: (pathname:string) => void, + previewBulkImport: (filepath: FilePathInfo) => void + beginBulkImport: (data: string) => void +} + +export type BulkImportProps = BulkImportStateProps & BulkImportsDispatchProps + +export const BulkImport: FunctionComponent = ({ err, data, push, previewBulkImport, beginBulkImport, fqdnData }) => { + // react hooks FTW!!!! + const [ + error, + // setError + ] = useState(undefined) + + const [ + status, setStatus + ] = useState('dropzone') // default dropzone; + + + // currently select only one file + const filesSelectedHandler = (files: FilePathInfo[]) => { + if(error) { + return; + } + setStatus('preview'); + const file = files[0]; + previewBulkImport(file) + } + + const renderBody = (status: string, fqdnData: RequestStatus[]) => { + switch(status) { + case "dropzone": + return (<> + +
+ close push("/Dashboard/AddLinks")} /> + + + + + + Bulk Import File + + + + + + ); + case "preview": + return (<> + + + + + Bulk Import Links Preview + + + + + + + {data.split('\n').map((item, idx) => item.length > 0 ? + + {item} + : '' + )} + + + + + ); + case "result": + return (<> + + + + + Bulk Import Result + + + + {err ? + + You have run out of funds. All further link requests are aborted. + + : ''} + +
Link
+
Status
+
+ + {fqdnData.map((item,idx) => + +
{item.link}
+
{item.status}
+
+ )} +
+
+
+
+ ); + default: return; + } + } + + return
+ + {renderBody(status, fqdnData)} + +
; +} + + diff --git a/src/renderer/components/dashboard/ClientDownloads.tsx b/src/renderer/components/dashboard/ClientDownloads.tsx index cbaa8407..3181cd43 100644 --- a/src/renderer/components/dashboard/ClientDownloads.tsx +++ b/src/renderer/components/dashboard/ClientDownloads.tsx @@ -10,6 +10,8 @@ import man from "../../assets/man.svg"; import { LinkDisplayName } from "./LinkDisplayName"; import { prettySize } from "../../../shared/system/prettySize"; import CircularProgress from "../ui-elements/CircularProgress"; +import BalanceIndicator from "../../containers/dashboard/BalanceIndicator" +import { prettyTime } from "../../../shared/system/prettyTime"; export interface ClientDownloadsDispatchProps { @@ -19,7 +21,8 @@ export interface ClientDownloadsStateProps { } export type ClientDownloadsProps = ClientDownloadsDispatchProps & ClientDownloadsStateProps export const ClientDownloads: FunctionComponent = ({ currentSessions }) => <> -
+
+ @@ -37,14 +40,14 @@ export const ClientDownloads: FunctionComponent = ({ curre const sessionEntries = entries(currentSessions); if (!sessionEntries.any()) { return (<>

Nobody is downloading data from you

- ) + ) } else { return sessionEntries .select(([key, downloadState]) => { return ( -
+
@@ -65,11 +68,11 @@ export const ClientDownloads: FunctionComponent = ({ curre margin: '0', width: '0.4px' }} /> -
- - {`${downloadState.progressPct}%`} - - +
+ + {`${downloadState.progressPct}%`}{downloadState.eta!=null&&<> {prettySize(downloadState.speed)}/s ({prettyTime(downloadState.eta!)})} + +
= ({ invites, beginAcceptLink, beginDeclineLink }: InvitesProps) => <> -
+
+

Invites

-
- {invites.length>0 ? - - {invites.map(({ user, link, link_message }, idx) => - -
-
- - -
-
- - -
-
-
- )} -
: - + +
+
+ + )} + : + You have no invites yet 😕 - + }
diff --git a/src/renderer/components/dashboard/MyLinks.tsx b/src/renderer/components/dashboard/MyLinks.tsx index 6204f382..db5baeaa 100644 --- a/src/renderer/components/dashboard/MyLinks.tsx +++ b/src/renderer/components/dashboard/MyLinks.tsx @@ -1,83 +1,108 @@ import { FunctionComponent } from "react"; import React from "react"; import { H1, Text } from "../ui-elements/Text"; -import { MyLinksIcon, UserListAvatar, PendingIcon, BtnAddLinksIcon, ViewBtnIcon, CloseIcon } from "../ui-elements/Image"; +import { MyLinksIcon, UserListAvatar, PendingIcon, BtnAddLinksIcon, ViewBtnIcon, CloseIcon, ExportIcon } from "../ui-elements/Image"; import { UserList, UserListItem } from "../ui-elements/Dashboard"; import man from "../../assets/man.svg"; import Container from "../ui-elements/Container"; import { BdapUser } from "../../system/BdapUser"; import { LinkDisplayName } from "./LinkDisplayName"; import Input from "../ui-elements/Input"; - +import BalanceIndicator from "../../containers/dashboard/BalanceIndicator" export interface MyLinksStateProps { users: BdapUser[], + allUsers: BdapUser[], userName: string, - queryText: string + queryText: string, + balance: number } export interface MyLinksDispatchProps { push: (pathname: string) => void, startViewSharedFiles: (userName: string) => void myLinksQueryTextChanged: (value: string) => void + exportMyLinks: () => void } export type MyLinksProps = MyLinksStateProps & MyLinksDispatchProps -export const MyLinks: FunctionComponent = ({ users, push, startViewSharedFiles, userName, myLinksQueryTextChanged, queryText }: MyLinksProps) => - <> -
-
Add Links - push('/Dashboard/AddLinks')} /> +export const MyLinks: FunctionComponent = ({ users, push, startViewSharedFiles, userName, myLinksQueryTextChanged, queryText, allUsers, balance, exportMyLinks }: MyLinksProps) => { + + + return <> +
+ +
+ Add Links + push('/Dashboard/AddLinks')} /> +
+ Export Links + exportMyLinks()}/> +

My Links ({userName})

- {users.length>0 ? - <> -
- myLinksQueryTextChanged(e.target.value)} - margin="20px 0 20px 0" - padding="0 20px" - /> - {/* - - NOTE - - adding and removing the element below with a ternary statement - causes measurable performance issues + {allUsers.length > 0 ? + <> +
+ myLinksQueryTextChanged(e.target.value)} + margin="20px 0 20px 0" + padding="0 20px" + /> + {/* - toggling css visibility below is an optimization that doesn't - cause document reflow - - - */} - 0 ? "visible" : "hidden", - margin:'30px 0 0 0' - }} - onClick={() => { - myLinksQueryTextChanged(""); - document.getElementById("myLinksInput")!.focus() - }} /> -
- - {users.map(u => - -
- - -
- {u.state === 'pending' - ?
Pending
- :
View startViewSharedFiles(u.userName)} width="30px" height="30px" margin="0 0 0 1em" />
} - {/* */} -
- )} -
+ NOTE + + adding and removing the element below with a ternary statement + causes measurable performance issues + + toggling css visibility below is an optimization that doesn't + cause document reflow + + + */} + 0 ? "visible" : "hidden", + margin: '30px 0 0 0' + }} + onClick={() => { + myLinksQueryTextChanged(""); + document.getElementById("myLinksInput")!.focus() + }} /> +
+ { + users.length > 0 + ?
+ + {users.map(u => + {} : u.state === 'pending-invite' + ? () => push('/Dashboard/Invites') + : () => startViewSharedFiles(u.userName)} > +
+ + +
+ {u.state === 'pending' + ?
Pending-Request
+ : u.state === 'pending-invite' + ?
Pending-Invite
+ :
View
} + {/* */} +
+ )} +
+ + : No results. + } : <> - You don't have any links yet . - Go ahead, add someone to your list by clicking Add Links at the top-right. + You don't have any links yet . + Go ahead, add someone to your list by clicking Add Links at the top-right. }
+} diff --git a/src/renderer/components/dashboard/SharedFiles.tsx b/src/renderer/components/dashboard/SharedFiles.tsx index 0eacd455..6a4d47f7 100644 --- a/src/renderer/components/dashboard/SharedFiles.tsx +++ b/src/renderer/components/dashboard/SharedFiles.tsx @@ -3,22 +3,32 @@ import React from "react"; import man from "../../assets/man.svg"; import { Box } from "../ui-elements/Box"; import { LinkDisplayName } from "./LinkDisplayName"; -import { UserListAvatar, CloseIcon, BtnAddLinksIcon, DocumentSvg, DeleteIcon, DownloadIcon, DoneIcon, ErrorIcon } from "../ui-elements/Image"; +import { UserListAvatar, CloseIcon, BtnAddLinksIcon, DocumentSvg, DeleteIcon, DownloadIcon, DoneIcon, ErrorIcon, FolderIcon, GoBackIcon, RightChevronIcon } from "../ui-elements/Image"; import { Text } from "../ui-elements/Text"; -import Button, { SharedButton, DownloadButton, CustomButton } from "../ui-elements/Button"; +import { SharedButton, DownloadButton, CustomButton, BreadcrumbButton } from "../ui-elements/Button"; import { Divider } from "../ui-elements/Divider"; import { FilesList, FilesListItem, FilesListFile, Hovered } from "../ui-elements/Dashboard"; import { SharedFile } from "../../../shared/types/SharedFile"; import { blinq } from "blinq"; import { FileRequest } from "../../../shared/actions/payloadTypes/FileRequest"; -import { DownloadableFile, SharedFilesFetchState } from "../../../shared/reducers/sharedFiles"; +import { SharedFilesFetchState } from "../../../shared/types/SharedFilesFetchState"; +import { DownloadableFile } from "../../../shared/types/DownloadableFile"; import { InlineSpinner } from "../ui-elements/LoadingSpinner"; import { prettySize } from "../../../shared/system/prettySize"; import CircularProgress from "../ui-elements/CircularProgress"; +import BalanceIndicator from "../../containers/dashboard/BalanceIndicator"; +import { DirectoryEntry } from "../../../shared/system/file/DirectoryEntry"; +import { FileEntry } from "../../../shared/system/file/FileEntry"; +import { NavigationCommand, BaseNavigationCommand } from "../../../shared/actions/fileNavigation"; +import * as path from "path" +import { prettyTime } from "../../../shared/system/prettyTime"; export interface SharedFilesStateProps { - outFiles: SharedFile[], + outFilesView: (DirectoryEntry | FileEntry)[] + downloadableFilesView: (DirectoryEntry | FileEntry)[] + currentSharedFilesPath: string + currentDownloadableFilesPath: string linkedUserCommonName?: string linkedUserName?: string downloadableFiles: DownloadableFile[] @@ -30,16 +40,20 @@ export interface SharedFilesDispatchProps { shareNewFile: () => void requestFile: (req: FileRequest) => void removeSharedFile: (filePath: string) => void + openDirectory: (navCommand: NavigationCommand) => void + upDirectory: (navCommand: BaseNavigationCommand) => void + goRoot: (navCommand: NavigationCommand) => void } export type SharedFilesProps = SharedFilesStateProps & SharedFilesDispatchProps -export const SharedFiles: FunctionComponent = ({ close, requestFile, removeSharedFile, shareNewFile, outFiles, linkedUserName, userName, linkedUserCommonName, downloadableFiles, sharedFilesFetchState }) => { +export const SharedFiles: FunctionComponent = ({ downloadableFilesView, currentSharedFilesPath, currentDownloadableFilesPath, openDirectory, upDirectory, goRoot, close, requestFile, removeSharedFile, shareNewFile, outFilesView, linkedUserName, userName, linkedUserCommonName, sharedFilesFetchState }) => { const [currentView, setCurrentView] = useState<"shared" | "downloads">("shared") - const [promptModal, setPromptModal] = useState(false) + const [promptModal, setPromptModal] = useState(false) const [filePath, setFilePath] = useState(undefined) return <> - {promptModal && setPromptModal(false) } />} - + {promptModal && setPromptModal(false)} />} +
@@ -53,11 +67,28 @@ export const SharedFiles: FunctionComponent = ({ close, reques { currentView === "downloads" - ? - : setPromptModal(!promptModal)} - setFilePath={setFilePath} - /> + ? + : setPromptModal(!promptModal)} + setFilePath={setFilePath} + openDirectory={openDirectory} + upDirectory={upDirectory} + goRoot={goRoot} + currentSharedFilesPath={currentSharedFilesPath} + /> } ; @@ -65,66 +96,149 @@ export const SharedFiles: FunctionComponent = ({ close, reques interface DownloadViewState { - downloadableFiles: DownloadableFile[] + downloadableFilesView: (DirectoryEntry | FileEntry)[] + currentDownloadableFilesPath: string requestFile: (req: FileRequest) => void userName: string ownerUserName: string sharedFilesFetchState: SharedFilesFetchState + openDirectory: (navCommand: NavigationCommand) => void + upDirectory: (navCommand: BaseNavigationCommand) => void + goRoot: (navCommand: NavigationCommand) => void + } -const DownloadView: FunctionComponent = ({ downloadableFiles, requestFile, userName, ownerUserName, sharedFilesFetchState }) => { +const DownloadView: FunctionComponent = ({ openDirectory, upDirectory, downloadableFilesView, currentDownloadableFilesPath, requestFile, userName, ownerUserName, sharedFilesFetchState }) => { + + const callUpDirectoryMultiple = (number: number) => { + Array.from(Array(number)).forEach((x, i) => { + upDirectory({ type: 'downloadableFiles'}); + }) + } + switch (sharedFilesFetchState) { case "success": - return + return
+ Files shared with you + + { currentDownloadableFilesPath.length > 0 ? + upDirectory({ type: "downloadableFiles" })} style={{cursor: 'pointer'}} width="20%"> + + Go Back + + : + + + Go Back + + } + + +
+ callUpDirectoryMultiple(currentDownloadableFilesPath.split('/').length)}> + + pShare + + + {currentDownloadableFilesPath.length>0 ? currentDownloadableFilesPath.split('/').map((item,idx) => + <> + callUpDirectoryMultiple(currentDownloadableFilesPath.split('/').length - (idx+1)) }> + + {item} + + + + ) : ''} +
+ + - {blinq(downloadableFiles).select(f => - - - - {f.file.fileName} - -
- { - (() => { - switch (f.state) { - case "downloading": //download progress bars - return
- - downloading + { + downloadableFilesView + ? + blinq(downloadableFilesView) + .select(entry => { + if (entry.type === "file") { + const fileEntry = (entry as FileEntry) + const f = fileEntry.fileInfo; + return + + + {path.basename(f.file.fileName)} + + +
+ {(() => { + switch (f.state) { + case "downloading": //download progress bars + return
+ + downloading{f.eta!=null&&<> {prettySize(f.speed)}/s ({prettyTime(f.eta!)})} - -
- case "ready": - return ( -
- {prettySize(f.file.size)} - requestFile({ fileId: f.file.hash, ownerUserName, requestorUserName: userName, fileName: f.file.fileName })} /> -
-
) - case "failed": // try again cancel buttons - return <> - - - case "downloaded": - return - case "starting": - return ( - Starting - ) - default: - return <> - } - })() - } -
-
)} + +
; + case "ready": + return ( +
+ {prettySize(f.file.size)} + requestFile({ ownerUserName, requestorUserName: userName, fileName: f.file.fileName, type: "file" })} /> +
+
); + case "failed": // try again cancel buttons + return <> + + ; + case "downloaded": + return ; + case "starting": + return ( + Starting + ); + default: + return <>; + } + })()} +
+
; + } + if (entry.type === "directory") { + const directoryEntry = (entry as DirectoryEntry); + return openDirectory({ type: "downloadableFiles", location: directoryEntry.name! })}> + + + {path.basename(directoryEntry.name!)} + + {/* + { + e.preventDefault() + e.stopPropagation() + toggleDeleteModal(directoryEntry.fullPath!); + setFilePath(directoryEntry.fullPath!); + }} width="35px" height="20px" margin="5px 10px" /> + */} + + } + throw Error("unexpected entry type") + + }) + + : [] + } +
-
; + +
; case "failed": return @@ -149,66 +263,148 @@ const DeletePrompt: FunctionComponent<{ return (
- - - Are you sure you wanna delete {filePath ? filePath.split('/').pop(): ''} ? + + + Are you sure you want to remove {filePath ? path.basename(filePath) : ''} ? - - cancel()}>Cancel - - - + + cancel()}> + Cancel + { + if (filePath) { + removeSharedFile(filePath); + cancel() + } + }}> Delete + +
- ) + ) } interface ShareViewProps { shareNewFile: () => void - outFiles: SharedFile[] - toggleDeleteModal: (filePath:string) => void, - setFilePath: (filePath:string) => void + outFilesView: (DirectoryEntry | FileEntry)[] + toggleDeleteModal: (filePath: string) => void, + setFilePath: (filePath: string) => void + openDirectory: (navCommand: NavigationCommand) => void + upDirectory: (navCommand: BaseNavigationCommand) => void + goRoot: (navCommand: NavigationCommand) => void + currentSharedFilesPath: string + } -const ShareView: FunctionComponent = ({ outFiles, shareNewFile, toggleDeleteModal, setFilePath }) => { - return ( - <> - - - Your shared files -
- share new file - shareNewFile()} /> -
-
- - - {outFiles - ? blinq(outFiles).select(f => - - - {f.relativePath} - - - { +const ShareView: FunctionComponent = ({ currentSharedFilesPath, outFilesView, shareNewFile, toggleDeleteModal, setFilePath, openDirectory, upDirectory }) => { + const callUpDirectoryMultiple = (number: number) => { + Array.from(Array(number)).forEach((x, i) => { + upDirectory({ type: 'sharedFiles'}); + }) + } + + return ( +
+ + + + Your shared files +
+ share new file + shareNewFile()} /> +
+
+ + + { currentSharedFilesPath.length > 0 ? + upDirectory({ type: "sharedFiles" })} style={{cursor: 'pointer'}} width="20%"> + + Go Back + + : + + + Go Back + + } + + + +
+ callUpDirectoryMultiple(currentSharedFilesPath.split('/').length)}> + + pShare + + + {currentSharedFilesPath.length>0 ? currentSharedFilesPath.split('/').map((item,idx) => + <> + callUpDirectoryMultiple(currentSharedFilesPath.split('/').length - (idx+1)) }> + + {item} + + + + ) : ''} +
+ + + {outFilesView + ? blinq(outFilesView) + .select(entry => { + if (entry.type === "file") { + const fileEntry = (entry as FileEntry); + const f = fileEntry.fileInfo; + return + + + {path.basename(f.relativePath)} + + + { toggleDeleteModal(f.path); - setFilePath(f.path) - }} - width="35px" height="20px" margin="5px 10px" /> - - ) - : []} - -
-
- -) + setFilePath(f.path); + }} width="35px" height="20px" margin="5px 10px" /> + + ; + } + if (entry.type === "directory") { + const directoryEntry = (entry as DirectoryEntry); + return ( + openDirectory({ type: "sharedFiles", location: directoryEntry.name! })} + > + + + {path.basename(directoryEntry.name!)} + + + { + e.preventDefault() + e.stopPropagation() + toggleDeleteModal(directoryEntry.fullPath!); + setFilePath(directoryEntry.fullPath!); + }} width="35px" height="20px" margin="5px 10px" /> + + ) + } + throw Error("unexpected entry type") + + }) + : []} + + + +
+ ) } diff --git a/src/renderer/components/dashboard/Sidebar.tsx b/src/renderer/components/dashboard/Sidebar.tsx index 3d276e4b..c3a54cee 100644 --- a/src/renderer/components/dashboard/Sidebar.tsx +++ b/src/renderer/components/dashboard/Sidebar.tsx @@ -69,7 +69,7 @@ const tabs: TabInfo[] = [ margin="0 0 0 1em" />, text: "My Links", isSelected: (pathname: string) => pathname === '/Dashboard/MyLinks' || pathname === '/Dashboard/AddLinks' - || pathname === '/Dashboard/SharedFiles' || pathname === '/Dashboard/AddFile' + || pathname === '/Dashboard/SharedFiles' || pathname === '/Dashboard/AddFile' || pathname === '/Dashboard/BulkImport' }, { location: '/Dashboard/Inbox', diff --git a/src/renderer/components/ui-elements/Button.tsx b/src/renderer/components/ui-elements/Button.tsx index 8c069db6..89905b9c 100755 --- a/src/renderer/components/ui-elements/Button.tsx +++ b/src/renderer/components/ui-elements/Button.tsx @@ -94,6 +94,19 @@ const ArrowButton:React.FunctionComponent = ({ label, onClick, ) +const BreadcrumbButton = styled('div')<{ type?: string, active?: boolean }>` + display: inline-block; + min-width: 50px; + padding: 4px; + margin: 10px 0 10px 0; + // border: solid 1px ${(props) => props.active ? '#4a4a4a': '#4a4a4a' }; + background: ${(props) => props.active ? '#4a4a4a': 'white' }; + border-radius: 4px; + box-shadow: 0 0 14px 0 rgba(0, 0, 0, 0.1); + // clip-path: ${(props) => props.active ? 'polygon(75% 0%, 88% 50%, 75% 100%, 0% 100%, 0% 54%, 0% 0%) ': ''}; + cursor: pointer; +`; + const StyledSharedButton = styled('div')<{ white?: boolean , margin?: string}>` width: 132px; height: 42px; @@ -113,7 +126,7 @@ const SharedButton:React.FunctionComponent<{ onClick: () => void, white?: boolea - + YOUR FILES @@ -130,6 +143,6 @@ const DownloadButton:React.FunctionComponent<{ onClick: () => void, white?: bool ) export default StyledButton -export { ArrowButton, BackArrowButton, LightButton, SharedButton, DownloadButton, BackButton, CustomButton }; +export { ArrowButton, BackArrowButton, LightButton, SharedButton, DownloadButton, BackButton, CustomButton, BreadcrumbButton }; diff --git a/src/renderer/components/ui-elements/CircularProgress.tsx b/src/renderer/components/ui-elements/CircularProgress.tsx index 08c4095f..0808b24a 100644 --- a/src/renderer/components/ui-elements/CircularProgress.tsx +++ b/src/renderer/components/ui-elements/CircularProgress.tsx @@ -9,9 +9,9 @@ const Svg = styled('svg')` const CircularProgress:React.FunctionComponent<{ progress: number, size: number }> = ({ progress, size }) => - - + + diff --git a/src/renderer/components/ui-elements/Dashboard.tsx b/src/renderer/components/ui-elements/Dashboard.tsx index aeff4003..cd5b25f6 100644 --- a/src/renderer/components/ui-elements/Dashboard.tsx +++ b/src/renderer/components/ui-elements/Dashboard.tsx @@ -87,7 +87,7 @@ const FilesList = styled('ul')` `; const Hovered = styled('div')` - visibility:hidden; + opacity:0; `; const Unhovered = styled('div')` visibility: visible; @@ -98,12 +98,17 @@ const FilesListItem = styled('li')` direction: row; justify-content: space-between; padding: 0.5em 0.25em; + border: 2px solid #e7e7e700; + transition : border-color 200ms ease-out; + ${Hovered} { + transition : opacity 200ms ease-out + } &:hover { border-radius: 7px; - border: solid 2px #e7e7e7; + border-color: #e7e7e7ff; }; &:hover ${Hovered} { - visibility: visible; + opacity:1; } &:hover ${Unhovered} { visibility: hidden; @@ -118,8 +123,11 @@ const FilesListFile = styled('span')` justify-content: flex-start; padding: 0; margin: 0; + ${Hovered} { + transition : opacity 200ms ease-out + } &:hover ${Hovered} { - visibility: visible; + opacity:1; } `; diff --git a/src/renderer/components/ui-elements/Dropzone.tsx b/src/renderer/components/ui-elements/Dropzone.tsx index 89216f62..1303ed4f 100644 --- a/src/renderer/components/ui-elements/Dropzone.tsx +++ b/src/renderer/components/ui-elements/Dropzone.tsx @@ -1,10 +1,17 @@ -import React from "react"; +import React, { useRef, useEffect, MutableRefObject } from "react"; import { FunctionComponent } from "react"; import { Text } from "./Text"; import { Card } from "./Card"; import Button from "./Button"; import { FilePathInfo } from "../../../shared/types/FilePathInfo"; -export const Dropzone: FunctionComponent = ({ error, filesSelected, multiple, accept }) => { +export const Dropzone: FunctionComponent = ({ error, filesSelected, directoriesSelected, multiple, accept }) => { + const dirFileInputRef: MutableRefObject = useRef(null); + useEffect(() => { + const elem = dirFileInputRef.current; + if (elem) { + elem.setAttribute("webkitdirectory", "") //annoyingly, we don't seem to be able to set this as an attr with JSX :( + } + }) return { e.preventDefault(); e.dataTransfer.dropEffect = "move"; @@ -36,10 +43,29 @@ export const Dropzone: FunctionComponent = ({ error, filesSelecte Select file + { + directoriesSelected + && + <> + { + e.preventDefault(); + if (!e.currentTarget.files) { + return; + } + const files = [...e.currentTarget.files]; + directoriesSelected(files.map(f => ({ path: f.path, type: "", size: 0 }))) + }} style={({ display: "none" })} /> + + } ; }; interface DropzoneDispatchProps { filesSelected: (files: FilePathInfo[]) => void; + directoriesSelected?: (directories: FilePathInfo[]) => void; } interface DropzoneStateProps { error?: DropzoneError; diff --git a/src/renderer/components/ui-elements/Image.tsx b/src/renderer/components/ui-elements/Image.tsx index cc5eecb2..020e4b4d 100755 --- a/src/renderer/components/ui-elements/Image.tsx +++ b/src/renderer/components/ui-elements/Image.tsx @@ -23,6 +23,10 @@ import cancelicon from "../../assets/cancel.svg"; import downloadicon from "../../assets/svgs/download.svg"; import doneicon from "../../assets/svgs/done.svg"; import erroricon from "../../assets/svgs/error.svg"; +import foldericon from "../../assets/svgs/folder-blue.svg"; +import goback from "../../assets/svgs/goback.svg"; +import rightchevron from "../../assets/svgs/right-chevron.svg"; +import exporticon from "../../assets/svgs/export.svg"; interface ImageProps { src?: string, @@ -30,7 +34,7 @@ interface ImageProps { height?: string, margin?: string, white?: boolean, - onClick?: () => void, + onClick?: (e:React.MouseEvent) => void, cursor?: string, float?: string, @@ -107,9 +111,22 @@ const DoneIcon: React.FunctionComponent = const ErrorIcon: React.FunctionComponent = ({ width, height, margin, onClick, style }) => +const FolderIcon: React.FunctionComponent = + ({ width, height, margin, onClick, style }) => + +const GoBackIcon: React.FunctionComponent = + ({ width, height, margin, onClick, style }) => + +const RightChevronIcon: React.FunctionComponent = + ({ width, height, margin, onClick, style }) => + +const ExportIcon: React.FunctionComponent = + ({ width, height, margin, onClick, style }) => + export { SvgIcon as AppLogo, PlainAppLogo, MyLinksIcon, InboxIcon, OutboxIcon, RequestSentIcon, ViewBtnIcon, InvitesIcon, UserListAvatar, PendingIcon, BtnAddLinksIcon, AddLinksIcon, CloseIcon, DocumentSvg, - ProgressSpinner, DeleteIcon, CheckIcon, CancelIcon, DownloadIcon, DoneIcon, ErrorIcon + ProgressSpinner, DeleteIcon, CheckIcon, CancelIcon, DownloadIcon, DoneIcon, ErrorIcon, FolderIcon, + GoBackIcon, RightChevronIcon, ExportIcon } \ No newline at end of file diff --git a/src/renderer/components/ui-elements/QRCode.tsx b/src/renderer/components/ui-elements/QRCode.tsx new file mode 100644 index 00000000..4ace4e28 --- /dev/null +++ b/src/renderer/components/ui-elements/QRCode.tsx @@ -0,0 +1,122 @@ +import * as qrGenerator from 'qrcode-generator'; +import * as React from 'react'; +import * as ReactDOM from 'react-dom'; + +export interface IProps { + value?: string; + ecLevel?: 'L' | 'M' | 'Q' | 'H'; + enableCORS?: boolean; + size?: number; + minimumCellSize?: number; + minPadding?: number; + bgColor?: string; + fgColor?: string; + qrStyle?: 'squares' | 'dots'; + style?: object; +} + + + +function utf16to8(str: string): string { + let out: string = '', i: number, c: number; + const len: number = str.length; + for (i = 0; i < len; i++) { + c = str.charCodeAt(i); + if ((c >= 0x0001) && (c <= 0x007F)) { + out += str.charAt(i); + } else if (c > 0x07FF) { + out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F)); + out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F)); + out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); + } else { + out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F)); + out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); + } + } + return out; +} + +function drawPositioningPattern(row: number, col: number, length: number, props: IProps, ctx: CanvasRenderingContext2D) { + + const cellSize = Math.max(Math.trunc(props.size! / length), props.minimumCellSize!); + + for (let r = -1; r <= 7; r++) { + if (!(row + r <= -1 || length <= row + r)) { + for (let c = -1; c <= 7; c++) { + if (!(col + c <= -1 || length <= col + c) && + (0 <= r && r <= 6 && (c == 0 || c == 6)) || + (0 <= c && c <= 6 && (r == 0 || r == 6)) || + (2 <= r && r <= 4 && 2 <= c && c <= 4)) { + + const w = (Math.ceil(((row + r) + 1) * cellSize) - Math.floor((row + r) * cellSize)); + const h = (Math.ceil(((col + c) + 1) * cellSize) - Math.floor((col + c) * cellSize)); + + ctx.fillStyle = props.fgColor!; + ctx.fillRect(Math.round((row + r) * cellSize), Math.round((col + c) * cellSize), w, h); + } + } + } + } +} +const defaultProps: IProps = { + value: '', + ecLevel: 'M', + size: 150, + minPadding: 10, + bgColor: '#FFFFFF', + fgColor: '#000000', + qrStyle: 'squares', + minimumCellSize: 1 +} +export const QRCode: React.FunctionComponent = (props) => { + const { value, ecLevel, size, bgColor, fgColor, qrStyle, minimumCellSize } = { ...defaultProps, ...props }; + const canvasRef = React.useRef(null); + + const qrCode = qrGenerator(0, ecLevel!); + qrCode.addData(utf16to8(value!)); + qrCode.make(); + const length = qrCode.getModuleCount(); + const cellSize = Math.max(Math.trunc(size! / length), minimumCellSize!); + const actualSize = cellSize * length; + + React.useEffect(() => { + const canvas: HTMLCanvasElement = ReactDOM.findDOMNode(canvasRef.current!) as HTMLCanvasElement; + const ctx: CanvasRenderingContext2D = canvas.getContext('2d')!; + + const scale = (window.devicePixelRatio || 1); + canvas.height = canvas.width = actualSize * scale; + ctx.scale(scale, scale); + ctx.fillStyle = bgColor!; + ctx.fillRect(0, 0, actualSize, actualSize); + const s = qrStyle === "dots" ? 1 : 0 + for (let row = 0; row < length; row++) { + for (let col = 0; col < length; col++) { + if (qrCode.isDark(row, col)) { + ctx.fillStyle = fgColor!; + const w = (Math.ceil((col + 1) * cellSize) - Math.floor(col * cellSize)) - s; + const h = (Math.ceil((row + 1) * cellSize) - Math.floor(row * cellSize)) - s; + ctx.fillRect(Math.round(col * cellSize), Math.round(row * cellSize), w, h); + } + } + } + drawPositioningPattern(0, 0, length, props, ctx); + drawPositioningPattern(length - 7, 0, length, props, ctx); + drawPositioningPattern(0, length - 7, length, props, ctx); + + + }, [value, ecLevel, size, bgColor, fgColor, qrStyle]) + + return
+ +
+} \ No newline at end of file diff --git a/src/renderer/containers/dashboard/AddLinks.ts b/src/renderer/containers/dashboard/AddLinks.ts index b6c70799..c45be26f 100644 --- a/src/renderer/containers/dashboard/AddLinks.ts +++ b/src/renderer/containers/dashboard/AddLinks.ts @@ -9,6 +9,7 @@ import { blinq } from "blinq"; import { push } from "connected-react-router"; import { filterDeniedUsers } from "./helpers/filterDeniedUsers"; import { SearchActions } from "../../../shared/actions/search"; +import { BulkImportActions } from "../../../shared/actions/bulkImport"; @@ -71,6 +72,6 @@ const mapStateToProps = (state: RendererRootState /*, ownProps*/): AddLinksState }; }; -const mapDispatchToProps: MapPropsToDispatchObj = { ...SearchActions, ...BdapActions, push }; +const mapDispatchToProps: MapPropsToDispatchObj = { ...SearchActions, ...BdapActions, ...BulkImportActions, push }; export default connect(mapStateToProps, mapDispatchToProps)(AddLinks) diff --git a/src/renderer/containers/dashboard/BalanceIndicator.ts b/src/renderer/containers/dashboard/BalanceIndicator.ts new file mode 100644 index 00000000..79e5dc9b --- /dev/null +++ b/src/renderer/containers/dashboard/BalanceIndicator.ts @@ -0,0 +1,17 @@ +import { RendererRootState } from "../../reducers"; +import { BalanceIndicator, BalanceIndicatorDispatchProps, BalanceIndicatorStateProps } from "../../components/dashboard/BalanceIndicator" +import { MapPropsToDispatchObj } from "../../system/MapPropsToDispatchObj"; +import { connect } from "react-redux"; +import { BdapActions } from "../../../shared/actions/bdap"; + +const mapStateToProps = (state: RendererRootState, ownProps: { hideLinkWhenMinimized?: boolean }): BalanceIndicatorStateProps => ({ + balance: state.bdap.balance, + walletAddress: state.bdap.topUpAddress || "", + errorMessage: state.bdap.insufficientFundsErrorMessage, + ...ownProps +}) + +const mapDispatchToProps: MapPropsToDispatchObj = { ...BdapActions }; + +export default connect(mapStateToProps, mapDispatchToProps)(BalanceIndicator) + diff --git a/src/renderer/containers/dashboard/BulkImport.ts b/src/renderer/containers/dashboard/BulkImport.ts new file mode 100644 index 00000000..f4d07747 --- /dev/null +++ b/src/renderer/containers/dashboard/BulkImport.ts @@ -0,0 +1,21 @@ +import { RendererRootState } from "../../reducers"; +import { MapPropsToDispatchObj } from "../../system/MapPropsToDispatchObj"; +import { connect } from "react-redux"; +import { BulkImportStateProps, BulkImportsDispatchProps, BulkImport } from "../../components/dashboard/BulkImport"; +import { BulkImportActions } from "../../../shared/actions/bulkImport"; +import { push } from "connected-react-router"; + + + + +const mapStateToProps = (state: RendererRootState /*, ownProps*/): BulkImportStateProps => { + return { + data: state.bulkImport.previewData, + fqdnData: state.bulkImport.fqdnData, + err: state.bulkImport.err + }; +}; + +const mapDispatchToProps: MapPropsToDispatchObj = { ...BulkImportActions, push }; + +export default connect(mapStateToProps, mapDispatchToProps)(BulkImport) diff --git a/src/renderer/containers/dashboard/MyLinks.ts b/src/renderer/containers/dashboard/MyLinks.ts index 104dd70c..5c61e650 100644 --- a/src/renderer/containers/dashboard/MyLinks.ts +++ b/src/renderer/containers/dashboard/MyLinks.ts @@ -12,9 +12,9 @@ import { FileSharingActions } from "../../../shared/actions/fileSharing"; import { SearchActions } from "../../../shared/actions/search"; const getUserName = createSelector([(state: RendererRootState) => typeof state.bdap.currentUser !== 'undefined' ? state.bdap.currentUser.object_id : undefined], (user) => user) -const getUserList = createSelector( +const getBalance = createSelector([(state: RendererRootState) => state.bdap.balance], (b) => b) +const getUserListBase = createSelector( [ - (state: RendererRootState) => state.myLinksSearch.query, (state: RendererRootState) => state.bdap.users, (state: RendererRootState) => state.bdap.completeLinks, (state: RendererRootState) => state.bdap.pendingAcceptLinks, @@ -22,7 +22,7 @@ const getUserList = createSelector( (state: RendererRootState) => state.bdap.deniedLinks, (state: RendererRootState) => typeof state.bdap.currentUser !== 'undefined' ? state.bdap.currentUser.object_full_path : undefined ], - (query, users, completeLinks, pendingAcceptLinks, pendingRequestLinks, deniedLinks, currentUserFqdn) => { + (users, completeLinks, pendingAcceptLinks, pendingRequestLinks, deniedLinks, currentUserFqdn) => { const linkedUsers = blinq(users) .join( completeLinks, @@ -41,7 +41,7 @@ const getUserList = createSelector( (u) => ({ userName: u.object_id, commonName: u.common_name, - state: "pending" + state: "pending-invite" } as BdapUser)) const pendingRequestUsers = blinq(users) .join( @@ -56,6 +56,15 @@ const getUserList = createSelector( const baseQuery = linkedUsers .concat(pendingAcceptUsers) .concat(pendingRequestUsers); + return baseQuery + }); +const getUserList = createSelector( + [ + (state: RendererRootState) => state.myLinksSearch.query, + getUserListBase + ], + (query, baseQuery) => { + return query.length > 0 ? baseQuery .select(bdapUser => ({ bdapUser, commonNameQueryPosition: bdapUser.commonName.indexOf(query), userNameQueryPosition: bdapUser.userName.indexOf(query) })) @@ -76,7 +85,9 @@ const mapStateToProps = (state: RendererRootState /*, ownProps*/): MyLinksStateP return { users: getUserList(state), userName: getUserName(state)!, - queryText: state.myLinksSearch.queryText + queryText: state.myLinksSearch.queryText, + allUsers: getUserListBase(state).toArray(), + balance: getBalance(state) }; }; diff --git a/src/renderer/containers/dashboard/SharedFiles.ts b/src/renderer/containers/dashboard/SharedFiles.ts index 7568c647..b42392c6 100644 --- a/src/renderer/containers/dashboard/SharedFiles.ts +++ b/src/renderer/containers/dashboard/SharedFiles.ts @@ -5,26 +5,86 @@ import { SharedFiles, SharedFilesStateProps, SharedFilesDispatchProps } from ".. import { SharedFilesActions } from "../../../shared/actions/sharedFiles"; import { FileSharingActions } from "../../../shared/actions/fileSharing"; import { RemoveFileActions } from "../../../shared/actions/removeFile"; +import * as path from "path" +import { createSelector } from 'reselect' +import { fileListToTree } from "../../../shared/system/file/fileListToTree"; +import { getDirectoryListing } from "../../../shared/system/file/getDirectoryListing"; +import { FileNavigationActions } from "../../../shared/actions/fileNavigation"; +import { blinq } from "blinq"; +const userNameSelector = (state: RendererRootState) => state.sharedFiles.linkedUserName +const fileWatchUsersSelector = (state: RendererRootState) => state.fileWatch.users; +const fileWatchUserSelector = createSelector( + [ + userNameSelector, + fileWatchUsersSelector + ], + (linkedUserName, users) => linkedUserName != null ? users[linkedUserName] : undefined +) +const outSelector = createSelector( + [ + fileWatchUserSelector, + ], + fileWatchUser => fileWatchUser ? fileWatchUser.out : undefined) +const outFilesSelector = createSelector( + [ + outSelector + ], + out => out ? Object.values(out) : []) +const sharedFilesDownloadableFilesSelector = (state: RendererRootState) => state.sharedFiles.downloadableFiles; +const downloadableFilesSelector = createSelector( + [ + sharedFilesDownloadableFilesSelector + ], + downloadableFiles => downloadableFiles || [] +) +const outFilesTreeSelector = createSelector([ + outFilesSelector +], files => fileListToTree(files)) + +const downloadableFilesTreeSelector = createSelector([ + downloadableFilesSelector +], files => fileListToTree(files)) + +const sharedFilesPathSelector = (state: RendererRootState) => state.fileNavigation.sharedFilesViewPath.join("/") +const downloadableFilesPathSelector = (state: RendererRootState) => state.fileNavigation.downloadableFilesViewPath.join("/") + +const outFilesCurrentDirectorySelector = createSelector( + [ + outFilesTreeSelector, + sharedFilesPathSelector + ], + (tree, filePath) => blinq(getDirectoryListing(filePath, tree)).orderBy(x => x.type === "directory" ? 0 : 1).thenBy(x => path.basename(x.name!)).toArray()) + +const downloadableFilesCurrentDirectorySelector = createSelector( + [ + downloadableFilesTreeSelector, + downloadableFilesPathSelector + ], + (tree, filePath) => blinq(getDirectoryListing(filePath, tree)).orderBy(x => x.type === "directory" ? 0 : 1).thenBy(x => path.basename(x.name!)).toArray()) const mapStateToProps = (state: RendererRootState /*, ownProps*/): SharedFilesStateProps => { + //const outFiles = outFilesSelector(state); + const downloadableFiles = downloadableFilesSelector(state); + const outFilesView = outFilesCurrentDirectorySelector(state) + const downloadableFilesView = downloadableFilesCurrentDirectorySelector(state); + const currentSharedFilesPath = sharedFilesPathSelector(state); + const currentDownloadableFilesPath = downloadableFilesPathSelector(state); return { - outFiles: - state.sharedFiles.linkedUserName - && state.fileWatch.users[state.sharedFiles.linkedUserName] - && state.fileWatch.users[state.sharedFiles.linkedUserName].out - ? Object.values(state.fileWatch.users[state.sharedFiles.linkedUserName].out) - : [], + outFilesView, + downloadableFilesView, + currentSharedFilesPath, + currentDownloadableFilesPath, linkedUserCommonName: state.sharedFiles.linkedCommonName, linkedUserName: state.sharedFiles.linkedUserName, userName: state.user.userName!, - downloadableFiles: state.sharedFiles.downloadableFiles || [], + downloadableFiles, sharedFilesFetchState: state.sharedFiles.state } }; -const mapDispatchToProps: MapPropsToDispatchObj = { ...SharedFilesActions, ...FileSharingActions, ...RemoveFileActions }; +const mapDispatchToProps: MapPropsToDispatchObj = { ...FileNavigationActions, ...SharedFilesActions, ...FileSharingActions, ...RemoveFileActions }; export default connect(mapStateToProps, mapDispatchToProps)(SharedFiles) diff --git a/src/renderer/routes/appRoutes.ts b/src/renderer/routes/appRoutes.ts index 953fb7bf..b9f404b3 100644 --- a/src/renderer/routes/appRoutes.ts +++ b/src/renderer/routes/appRoutes.ts @@ -24,6 +24,7 @@ import RestoreSyncProgress from '../containers/onboarding_restore/RestoreSyncPro import SecureFilePassword from '../containers/onboarding_restore/SecureFilePassword'; import SharedFiles from '../containers/dashboard/SharedFiles'; import AddFile from '../containers/dashboard/AddFile'; +import BulkImport from '../containers/dashboard/BulkImport'; import { CreatingLinkProgress } from '../components/dashboard/CreatingLinkProgress'; import { ClientDownloads } from '../containers/dashboard/ClientDownloads'; export interface RouteInfo { @@ -62,7 +63,8 @@ const dashboardRoutingTable = { sharedFiles: route("/Dashboard/SharedFiles", SharedFiles), addFile: route("/Dashboard/AddFile", AddFile), creatingLinkProgress: route("/Dashboard/CreatingLinkProgress", CreatingLinkProgress), - clientDownloads: route("/Dashboard/Outbox", ClientDownloads) + clientDownloads: route("/Dashboard/Outbox", ClientDownloads), + bulkImport: route("/Dashboard/BulkImport", BulkImport) } export const pushRoute = (route: RouteInfo) => push(route.path) diff --git a/src/renderer/sagas/navSaga/navSaga.ts b/src/renderer/sagas/navSaga/navSaga.ts index 5b15ea8a..7cd34004 100644 --- a/src/renderer/sagas/navSaga/navSaga.ts +++ b/src/renderer/sagas/navSaga/navSaga.ts @@ -15,11 +15,19 @@ import { AppActions } from "../../../shared/actions/app"; export function* navSaga() { console.log("nav saga started") yield* waitForInitialized(); + const syncIsComplete: boolean = yield select((s: RendererRootState) => s.sync.isComplete) + if (!syncIsComplete) { + yield* waitForSync(); - yield* waitForSync(); - + } + const currentState: RendererRootState = yield select() + if(currentState.router.location.pathname.startsWith("/Dashboard/")){ + yield* dashboardNav() + + return; + } if (currentState.user.isOnboarded) { console.log("nav saga: user is onboarded, navigating to /Main") yield put(pushRoute(appRoutes.dashboard)) @@ -48,7 +56,7 @@ export function* navSaga() { yield bdapAccountConfigNavMap.runNav(); yield* waitForWalletCredentials(); } - else{ + else { console.log("nav saga: navigating to Onboarding -- /CreateAccount") yield put(pushRoute(appRoutes.createAccount)) console.log("nav saga navigating to /CreateAccount") @@ -57,9 +65,9 @@ export function* navSaga() { createAccount: take(getType(RootActions.createAccount)), restoreAccount: take(getType(RootActions.restoreAccount)) }) - + let returnedToCreateAccount = false - + if (createAccount) { yield put(pushRoute(appRoutes.enterUserName)) const bdapAccountConfigNavMap = getNavMap(); @@ -77,8 +85,8 @@ export function* navSaga() { yield* waitForWalletCredentials(); } else { yield put(pushRoute(appRoutes.restoreAccount)) - - + + for (; ;) { let returnedToRestoreAccount = false const { passphrase, mnemonicFile, cancelled } = yield race({ @@ -86,7 +94,7 @@ export function* navSaga() { mnemonicFile: take(getType(RootActions.restoreWithMnemonicFile)), cancelled: take(getType(RootActions.restoreCancelled)) }) - + if (cancelled) { yield put(pushRoute(appRoutes.createAccount)) returnedToCreateAccount = true @@ -99,7 +107,7 @@ export function* navSaga() { restoreNavMap.registerNavAction(RootActions.restoreSync, appRoutes.restoreSyncProgress) restoreNavMap.registerNavAction(RootActions.restoreFailed, appRoutes.restoreWithPassphrase) restoreNavMap.registerNavAction(RootActions.restoreSuccess, appRoutes.passwordCreateOrLogin, true) //true parameter indicates stopping condition - + yield restoreNavMap.runNav(); //note: this hangs until we hit a navAction with "stopOnThisAction" parameter `true` } else if (mnemonicFile) { @@ -111,26 +119,26 @@ export function* navSaga() { restoreNavMap.registerNavAction(RootActions.restoreSync, appRoutes.restoreSyncProgress) restoreNavMap.registerNavAction(RootActions.restoreFailed, appRoutes.restoreWithMnemonicFile) restoreNavMap.registerNavAction(RootActions.restoreSuccess, appRoutes.passwordCreateOrLogin, true) //true parameter indicates stopping condition - + yield restoreNavMap.runNav(); //note: this hangs until we hit a navAction with "stopOnThisAction" parameter `true` } - - + + if (returnedToRestoreAccount) continue; if (returnedToCreateAccount) break yield* waitForWalletCredentials(); break; - + } } if (!returnedToCreateAccount) { break; } } - - } + } - + } + } diff --git a/src/renderer/system/BdapUserState.ts b/src/renderer/system/BdapUserState.ts index 616beeae..b8a233a5 100644 --- a/src/renderer/system/BdapUserState.ts +++ b/src/renderer/system/BdapUserState.ts @@ -1 +1 @@ -export type BdapUserState = "normal" | "pending" | "linked"; +export type BdapUserState = "normal" | "pending" | "linked" | "pending-invite"; diff --git a/src/renderer/system/useInterval.tsx b/src/renderer/system/useInterval.tsx new file mode 100644 index 00000000..1207c453 --- /dev/null +++ b/src/renderer/system/useInterval.tsx @@ -0,0 +1,17 @@ +import { useEffect, useRef } from "react"; +export function useInterval(callback: () => void, delay: number) { + const savedCallback = useRef<(() => void) | null>(null); + useEffect(() => { + savedCallback.current = callback; + }, [callback]); + useEffect(() => { + function tick() { + savedCallback.current && savedCallback.current(); + } + if (delay !== null) { + let id = setInterval(tick, delay); + return () => clearInterval(id); + } + return () => { }; + }, [delay]); +} diff --git a/src/renderer/system/useOutsideAlerter.tsx b/src/renderer/system/useOutsideAlerter.tsx new file mode 100644 index 00000000..be784a54 --- /dev/null +++ b/src/renderer/system/useOutsideAlerter.tsx @@ -0,0 +1,18 @@ +import { useEffect, MutableRefObject, useRef } from "react"; +export function useOutsideAlerter(elementRef: MutableRefObject, callback: (ev: MouseEvent) => void) { + const savedCallback = useRef<((ev: MouseEvent) => void) | null>(null); + useEffect(() => { + savedCallback.current = callback; + }, [callback]); + function handleClickOutside(event: MouseEvent) { + if (elementRef.current && !elementRef.current.contains(event.target)) { + savedCallback.current && savedCallback.current(event); + } + } + useEffect(() => { + document.addEventListener("click", handleClickOutside, { capture: true }); + return () => { + document.removeEventListener("click", handleClickOutside, { capture: true }); + }; + }); +} diff --git a/src/rtc/sagas/helpers/ProgressHandler.ts b/src/rtc/sagas/helpers/ProgressHandler.ts new file mode 100644 index 00000000..32c8b5d1 --- /dev/null +++ b/src/rtc/sagas/helpers/ProgressHandler.ts @@ -0,0 +1 @@ +export type ProgressHandler = (progress: number, speed: number, eta: number | undefined, downloadedBytes: number, size: number) => any; diff --git a/src/rtc/sagas/helpers/copyFileToRTCPeer.ts b/src/rtc/sagas/helpers/copyFileToRTCPeer.ts deleted file mode 100644 index d35c6ca2..00000000 --- a/src/rtc/sagas/helpers/copyFileToRTCPeer.ts +++ /dev/null @@ -1,105 +0,0 @@ -import { call, race } from "redux-saga/effects"; -import { toArrayBuffer } from "../../../shared/system/bufferConversion"; -import { RTCPeer } from "../../system/webRtc/RTCPeer"; -import { createPromiseResolver } from "../../../shared/system/createPromiseResolver"; -import { delay } from "redux-saga"; -import * as util from 'util' -import * as fs from 'fs' - -const fileReadBufferSize = 65536; // 64KiB -const maxSendBuffered = 2097152; // 2MiB -const sendBufferedAmountLowThreshold = 262144; // 256KiB - -const fsReadAsync = util.promisify(fs.read); -const fsCloseAsync = util.promisify(fs.close); -const fsOpenAsync = util.promisify(fs.open); - -export const copyFileToRTCPeer = - - (filePath: string, peer: RTCPeer, progressHandler?: ((progress: number, downloadedBytes: number, size: number) => any)) => call(function* () { - const dataChannel = peer.dataChannel; - dataChannel.bufferedAmountLowThreshold = sendBufferedAmountLowThreshold; - let totalRead = 0; - let totalSent = 0; - const { size: fileSize }: fs.Stats = yield call(() => fs.promises.stat(filePath)) - var buffer = new Buffer(fileReadBufferSize); - const fileDescriptor: number = yield call(() => fsOpenAsync(filePath, "r")); - let currentProgressPct = -1 - for (; ;) { - console.log("reading chunk"); - const amtToRead = Math.min(fileSize - totalRead, fileReadBufferSize); - const { bytesRead }: { - bytesRead: number; - } = yield call(() => fsReadAsync(fileDescriptor, buffer, 0, amtToRead, totalRead)); - console.log("chunk read"); - if (bytesRead === 0) { - if (totalSent !== fileSize || totalSent !== totalRead) { - throw Error("transfer length mismatch"); - } - break; - } - totalRead += bytesRead; - if (dataChannel.bufferedAmount > maxSendBuffered) { - console.log("buffer high"); - const pr = createPromiseResolver(); - dataChannel.onbufferedamountlow = () => pr.resolve(true); - - const { success } = yield race({ - timeout: call(function* () { - let currBufAmt = dataChannel.bufferedAmount - let now = performance.now() - let moved = false - for (; ;) { - yield delay(250) - moved = moved || dataChannel.bufferedAmount !== currBufAmt - currBufAmt = dataChannel.bufferedAmount - if (moved) { - now = performance.now() - moved = false - } else { - if ((performance.now() - now) > 120000) { - break - } - } - } - }), - success: call(() => pr.promise) - }) - if (!success) { - throw Error("timeout") - } - - - console.log("buffer emptied"); - } - dataChannel.send(toArrayBuffer(buffer, 0, bytesRead)); - totalSent += bytesRead; - - const progressPct = Math.trunc((totalSent / fileSize) * 100) - if (progressPct != currentProgressPct) { - currentProgressPct = progressPct - if (progressHandler) { - yield progressHandler(currentProgressPct, totalSent, fileSize) - } - } - yield delay(0); - } - yield call(() => fsCloseAsync(fileDescriptor)); - let bufferedAmt = dataChannel.bufferedAmount - let now = performance.now() - let moved = false - while (bufferedAmt > 0) { - yield delay(250); - moved = moved || dataChannel.bufferedAmount !== bufferedAmt - bufferedAmt = dataChannel.bufferedAmount - if (moved) { - now = performance.now() - moved = false - } else { - if ((performance.now() - now) > 120000) { - throw Error("timeout") - } - } - } - }); - diff --git a/src/rtc/sagas/helpers/copyFromRTCPeerToStream.ts b/src/rtc/sagas/helpers/copyFromRTCPeerToStream.ts new file mode 100644 index 00000000..11022f22 --- /dev/null +++ b/src/rtc/sagas/helpers/copyFromRTCPeerToStream.ts @@ -0,0 +1,146 @@ +import { call, race, take } from "redux-saga/effects"; +import { RTCPeer } from "../../system/webRtc/RTCPeer"; +//import * as util from "util"; +//import * as fs from "fs"; +import { eventChannel, END } from "redux-saga"; +import { createRTCPeerReadStream } from "./createRTCPeerReadStream"; +import progressStream from "progress-stream"; +import { Progress } from "progress-stream"; +import * as stream from "stream"; +import { ProgressHandler } from "./ProgressHandler"; + +//const fsUnlinkAsync = util.promisify(fs.unlink); + +export const copyFromRTCPeerToStream = < + T extends string, + TData extends string | Blob | ArrayBuffer | ArrayBufferView +>( + stream: stream.Writable, + size: number, + peer: RTCPeer, + progressHandler?: ProgressHandler +) => + call(function*() { + const len = size; + //const writeStream = fs.createWriteStream(savePath); + const readStream = createRTCPeerReadStream(peer, len); + + //cleanupOperations.push(() => writeStream.close()); + yield* copyStream(readStream, stream, len, progressHandler); + }); + +function* copyStream( + readStream: stream.Readable, + writeStream: stream.Writable, + len: number, + progressHandler?: ProgressHandler +) { + const cleanupOperations: (() => void)[] = []; + try { + const progStream = progressStream({ length: len, time: 500 }); + const progressChannel = eventChannel(emitter => { + const handler = (progress: Progress) => { + emitter(progress); + if (progress.remaining === 0) { + emitter(END); + } + }; + progStream.on("progress", handler); + return () => progStream.off("progress", handler); + }); + cleanupOperations.push(() => progressChannel.close()); + + const pipe = readStream.pipe(progStream).pipe(writeStream); + const errorChannel = eventChannel(emitter => { + const handler = (err: Error) => emitter(err); + pipe.on("error", handler); + return () => pipe.off("error", handler); + }); + cleanupOperations.push(() => errorChannel.close()); + + const endChannel = eventChannel<{}>(emitter => { + const handler = () => emitter({}); + pipe.on("finish", handler); + return () => pipe.off("finish", handler); + }); + cleanupOperations.push(() => endChannel.close()); + let currentProgressPct = 0; + + if (progressHandler) { + yield progressHandler(0, 0, undefined, 0, len); + } + + // yield put( + // RtcActions.fileReceiveProgress({ + // fileRequest, + // totalBytes: len, + // downloadedBytes: 0, + // downloadedPct: 0, + // speed: 0, + // }) + // ); + + for (;;) { + const progTake = take(progressChannel); + const errTake = take(errorChannel); + const endTake = take(endChannel); + const result = yield race({ + progress: progTake, + error: errTake, + end: endTake, + }); + if (result.err) { + throw result.err; + } + if (result.end) { + throw Error("unexpected end"); + } + if (result.progress) { + const p: Progress = result.progress; + const newPct = Math.trunc(p.percentage); + if (newPct !== currentProgressPct) { + currentProgressPct = newPct; + if (progressHandler) { + yield progressHandler( + currentProgressPct, + p.speed, + p.eta, + p.transferred, + len + ); + } + // yield put( + // RtcActions.fileReceiveProgress({ + // fileRequest, + // totalBytes: len, + // downloadedBytes: p.transferred, + // downloadedPct: currentProgressPct, + // speed: p.speed, + // eta: p.eta, + // }) + // ); + } + + if (p.remaining === 0) { + yield take(endChannel); + if (progressHandler) { + yield progressHandler(100, 0, 0, p.transferred, len); + } + // yield put( + // RtcActions.fileReceiveProgress({ + // fileRequest, + // totalBytes: len, + // downloadedBytes: p.transferred, + // downloadedPct: 100, + // speed: 0, + // eta: 0, + // }) + // ); + break; + } + } + } + } finally { + cleanupOperations.forEach(op => op()); + } +} diff --git a/src/rtc/sagas/helpers/copyStreamToRTCPeer.ts b/src/rtc/sagas/helpers/copyStreamToRTCPeer.ts new file mode 100644 index 00000000..501b85ac --- /dev/null +++ b/src/rtc/sagas/helpers/copyStreamToRTCPeer.ts @@ -0,0 +1,97 @@ +import { call, race, take } from "redux-saga/effects"; +import { RTCPeer } from "../../system/webRtc/RTCPeer"; +import { eventChannel, END } from "redux-saga"; +import { createRTCDataChannelWriteStream } from "./createRTCDataChannelWriteStream"; +import progressStream from "progress-stream"; +import { Progress } from "progress-stream"; +import * as stream from "stream"; +import { ProgressHandler } from "./ProgressHandler"; + +const sendBufferedAmountLowThreshold = 262144; // 256KiB +export const copyStreamToRTCPeer = < + T extends string, + TData extends string | Blob | ArrayBuffer | ArrayBufferView +>( + stream: stream.Readable, + size: number, + peer: RTCPeer, + progressHandler?: ProgressHandler +) => + call(function*() { + const dataChannel = peer.dataChannel; + dataChannel.bufferedAmountLowThreshold = sendBufferedAmountLowThreshold; + + const writeStream = createRTCDataChannelWriteStream(dataChannel); + + yield* copyStream(stream, writeStream, size, progressHandler); + }); + +function* copyStream( + readStream: stream.Readable, + writeStream: stream.Writable, + fileSize: number, + progressHandler?: ProgressHandler +) { + const cleanupOperations: (() => void)[] = []; + try { + const progStream = progressStream({ length: fileSize, time: 500 }); + const progressChannel = eventChannel(emitter => { + const handler = (progress: Progress) => { + emitter(progress); + if (progress.remaining === 0) { + emitter(END); + } + }; + progStream.on("progress", handler); + return () => progStream.off("progress", handler); + }); + cleanupOperations.push(() => progressChannel.close()); + const pipe = readStream.pipe(progStream).pipe(writeStream); + const endChannel = eventChannel<{}>(emitter => { + const handler = () => emitter({}); + pipe.on("finish", handler); + return () => pipe.off("finish", handler); + }); + cleanupOperations.push(() => endChannel.close()); + const errorChannel = eventChannel(emitter => { + const handler = (err: Error) => emitter(err); + pipe.on("error", handler); + return () => pipe.off("error", handler); + }); + cleanupOperations.push(() => errorChannel.close()); + let currentProgressPct = 0; + if (progressHandler) { + yield progressHandler(0, 0, undefined, 0, fileSize); + } + for (;;) { + const progTake = take(progressChannel); + const errTake = take(errorChannel); + const result = yield race({ progress: progTake, error: errTake }); + if (result.err) { + throw result.err; + } + if (result.progress) { + const p: Progress = result.progress; + if (progressHandler) { + const newPct = Math.trunc(p.percentage); + if (newPct !== currentProgressPct) { + currentProgressPct = newPct; + yield progressHandler( + currentProgressPct, + p.speed, + p.eta, + p.transferred, + p.length + ); + } + } + if (p.remaining === 0) { + break; + } + } + } + yield take(endChannel); + } finally { + cleanupOperations.forEach(op => op()); + } +} diff --git a/src/rtc/sagas/helpers/createRTCDataChannelWriteStream.ts b/src/rtc/sagas/helpers/createRTCDataChannelWriteStream.ts new file mode 100644 index 00000000..5c5ed2af --- /dev/null +++ b/src/rtc/sagas/helpers/createRTCDataChannelWriteStream.ts @@ -0,0 +1,66 @@ +import * as stream from "stream" +import { toArrayBuffer } from "../../../shared/system/bufferConversion"; +import { createPromiseResolver } from "../../../shared/system/createPromiseResolver"; +import { delay } from "../../../shared/system/delay"; + +const maxSendBuffered = 2097152; // 2MiB + +const timeoutOnNoDataMoved = async (dataChannel: RTCDataChannel) => { + let currBufAmt = dataChannel.bufferedAmount + let now = performance.now() + let moved = false + for (; ;) { + await delay(250) + moved = moved || dataChannel.bufferedAmount !== currBufAmt + currBufAmt = dataChannel.bufferedAmount + if (moved) { + now = performance.now() + moved = false + } else { + if ((performance.now() - now) > 120000) { + break + } + } + } +} + +const waitUntilSafeToSend = async (dataChannel: RTCDataChannel) => { + if (dataChannel.bufferedAmount > maxSendBuffered) { + const pr = createPromiseResolver(); + dataChannel.onbufferedamountlow = () => pr.resolve(); + + const timeout = timeoutOnNoDataMoved(dataChannel) + + + await Promise.race([pr.promise, timeout].map(p => p.then(() => [p]))).then(([p]) => { + if (p === timeout) { + throw Error("timeout") + } + }) + + } +} + + +class RTCDataChannelWriteStream extends stream.Writable { + constructor(private dataChannel: RTCDataChannel, opts?: stream.WritableOptions) { + super(opts) + } + _write(chunk: any, encoding: string, callback: (error?: Error | null) => void): void { + if (!Buffer.isBuffer(chunk)) { + throw Error("unsupported") + } + waitUntilSafeToSend(this.dataChannel).then(() => { + try { + this.dataChannel.send(toArrayBuffer(chunk, 0, chunk.length)) + } catch (err) { + callback(err) + return + } + callback(); + }).catch(err => callback(err)) + } +} + +export const createRTCDataChannelWriteStream = + (dataChannel: RTCDataChannel, opts?: stream.WritableOptions) => new RTCDataChannelWriteStream(dataChannel, opts) \ No newline at end of file diff --git a/src/rtc/sagas/helpers/createRTCPeerReadStream.ts b/src/rtc/sagas/helpers/createRTCPeerReadStream.ts new file mode 100644 index 00000000..637b0f26 --- /dev/null +++ b/src/rtc/sagas/helpers/createRTCPeerReadStream.ts @@ -0,0 +1,87 @@ +import * as stream from "stream"; +import { toBuffer } from "../../../shared/system/bufferConversion"; +import { delay } from "../../../shared/system/delay"; +import { RTCPeer } from "../../../rtc/system/webRtc/RTCPeer"; + +const hasArrayBuffer = typeof ArrayBuffer === "function"; +function isArrayBuffer(value: unknown): value is ArrayBuffer { + return ( + hasArrayBuffer && + (value instanceof ArrayBuffer || + toString.call(value) === "[object ArrayBuffer]") + ); +} +class RTCPeerReadStream< + T extends string, + TData extends string | Blob | ArrayBuffer | ArrayBufferView +> extends stream.Readable { + private remaining: number; + private isReading: boolean; + private errors: Error[]; + constructor( + private peer: RTCPeer, + length: number, + opts?: stream.ReadableOptions + ) { + super(opts); + this.remaining = length; + this.isReading = false; + this.errors = []; + } + _read(size: number): void { + const err = + this.errors.length > 0 ? this.errors[this.errors.length - 1] : null; + if (err) { + throw err; + } + if (this.isReading) { + return; + } + this.isReading = true; + (async () => { + try { + for (;;) { + if (this.remaining === 0) { + this.push(null); + break; + } + const messagePromise = this.peer.incomingMessageQueue.receive(); + const timeoutPromise = delay(120000); + + const [p] = await Promise.race( + [messagePromise, timeoutPromise].map(p => + p.then(() => [p]) + ) + ); + if (p === timeoutPromise) { + throw Error("timeout"); + } + const data: TData = await (p as Promise); + if (!isArrayBuffer(data)) { + throw Error("unsupported"); + } + console.log("pushing " + data.byteLength); + const pushResult = this.push( + toBuffer(data, 0, data.byteLength) + ); + this.remaining -= data.byteLength; + if (!pushResult) { + break; + } + } + } catch (err) { + this.errors.push(err); + } + this.isReading = false; + })(); + } +} + +export const createRTCPeerReadStream = < + T extends string, + TData extends string | Blob | ArrayBuffer | ArrayBufferView +>( + peer: RTCPeer, + length: number, + opts?: stream.ReadableOptions +) => new RTCPeerReadStream(peer, length, opts); diff --git a/src/rtc/sagas/helpers/receiveFileFromRTCPeer.ts b/src/rtc/sagas/helpers/receiveFileFromRTCPeer.ts deleted file mode 100644 index ffcb8fd5..00000000 --- a/src/rtc/sagas/helpers/receiveFileFromRTCPeer.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { call, put, race } from "redux-saga/effects"; -import { RTCPeer } from "../../system/webRtc/RTCPeer"; -import * as util from 'util' -import * as fs from 'fs' -import { FileInfo } from "../../../shared/actions/payloadTypes/FileInfo"; -import { FileRequest } from "../../../shared/actions/payloadTypes/FileRequest"; -import { RtcActions } from "../../../shared/actions/rtc"; -import * as crypto from 'crypto' -import { toBuffer } from "../../../shared/system/bufferConversion"; -import { delay } from "redux-saga"; - -const fsOpenAsync = util.promisify(fs.open) -const fsCloseAsync = util.promisify(fs.close) -const fsWriteAsync = util.promisify(fs.write) -const fsUnlinkAsync = util.promisify(fs.unlink) - -export const receiveFileFromRTCPeer = - - (savePath: string, peer: RTCPeer, fileNameInfo: FileInfo, fileRequest: FileRequest) => call(function* () { - - try { - const shasum = crypto.createHash('sha256'); - const fileDescriptor: number = yield call(() => fsOpenAsync(savePath, "w")); - try { - let total = 0; - let currentPct = -1 - for (; ;) { - const { msg, timeout }: { msg: ArrayBuffer, timeout: any } = yield race({ - msg: call(() => peer.incomingMessageQueue.receive()), - timeout: delay(120000) - }) - if (timeout) { - throw Error("timeout") - } - total += msg.byteLength; - //console.log(`answerpeer received : ${total}`); - - const buffer = toBuffer(msg, 0, msg.byteLength) - shasum.update(buffer) - yield call(() => fsWriteAsync(fileDescriptor, buffer)); - - if (total > fileNameInfo.size) { - throw Error("more data than expected"); - } - if (total === fileNameInfo.size) { - break; - } - const pct = (total * 100 / fileNameInfo.size) >> 0 - if (currentPct !== pct) { - currentPct = pct - yield put(RtcActions.fileReceiveProgress({ fileRequest, totalBytes: fileNameInfo.size, downloadedBytes: total, downloadedPct: pct })) - } - - } - } - finally { - yield call(() => fsCloseAsync(fileDescriptor)); - } - const computedHash = shasum.digest("base64") - if (computedHash !== fileRequest.fileId) { - throw Error("Checksum error: hash of downloaded data does not match that of requested data") - } - } - catch (err) { - try { - yield call(() => fsUnlinkAsync(savePath)); - } - catch { } - throw err; - } - finally { - peer.close(); - } - - }); diff --git a/src/rtc/sagas/processIncomingOfferSaga.ts b/src/rtc/sagas/processIncomingOfferSaga.ts index a964bf3c..5c3eaf68 100644 --- a/src/rtc/sagas/processIncomingOfferSaga.ts +++ b/src/rtc/sagas/processIncomingOfferSaga.ts @@ -5,7 +5,7 @@ import { LinkMessageEnvelope } from "../../shared/actions/payloadTypes/LinkMessa import { FileInfo } from "../../shared/actions/payloadTypes/FileInfo"; import { PromiseType } from "../../shared/system/generic-types/PromiseType"; import { getAnswerPeer } from "../system/webRtc/getAnswerPeer"; -import { copyFileToRTCPeer } from "./helpers/copyFileToRTCPeer"; +import { copyStreamToRTCPeer } from "./helpers/copyStreamToRTCPeer"; import { RtcActions } from "../../shared/actions/rtc"; import { prepareErrorForSerialization } from "../../shared/proxy/prepareErrorForSerialization"; import { FileRequest } from "../../shared/actions/payloadTypes/FileRequest"; @@ -15,86 +15,274 @@ import { blinq } from "blinq"; import { BdapActions } from "../../shared/actions/bdap"; import { SessionDescriptionEnvelope } from "../../shared/actions/payloadTypes/SessionDescriptionEnvelope"; import { ClientDownloadActions } from "../../shared/actions/clientDownload"; +import * as fs from "fs"; +import { + resourceScope, + ResourceScope, +} from "../../shared/system/redux-saga/resourceScope"; +import { isFileListRequest } from "../../shared/actions/payloadTypes/FileListRequest"; +import { MainRootState } from "../../main/reducers"; +import { PublicSharedFile } from "../../shared/types/PublicSharedFile"; +import { entries } from "../../shared/system/entries"; +import { ReadableStreamBuffer } from "stream-buffers"; +import * as stream from "stream"; +//import { tuple } from "../../shared/system/tuple"; +//import { sharedFiles } from "src/shared/reducers"; +import { FileListResponse } from "../../shared/actions/payloadTypes/FileListResponse"; export function* processIncomingOfferSaga() { const pred = (action: BdapActions) => { switch (action.type) { case getType(BdapActions.linkMessageReceived): - return action.payload.message.type === "pshare-offer" + return action.payload.message.type === "pshare-offer"; default: return false; } - } - yield takeEvery(pred, function* (action: ActionType) { - const offerEnvelope: LinkMessageEnvelope> = action.payload.message - const { id: transactionId, payload: { sessionDescription: offerSdp, payload: fileRequest } } = offerEnvelope; - const rtcConfig: RTCConfiguration = yield select((s: RtcRootState) => s.rtcConfig) - const answerPeer: PromiseType> = yield call(() => getAnswerPeer(rtcConfig)); - const internalFileInfo: InternalFileInfo | null = yield getFileInfo(fileRequest); + }; + yield takeEvery(pred, function*( + action: ActionType + ) { + const offerEnvelope: LinkMessageEnvelope< + SessionDescriptionEnvelope + > = action.payload.message; + const { + id: transactionId, + payload: { sessionDescription: offerSdp, payload: fileRequest }, + } = offerEnvelope; + + const internalFileInfo: MessageInfo | null = yield getFileInfo( + fileRequest + ); if (!internalFileInfo) { - console.warn("could not retrieve file info for file request") + console.warn("could not retrieve file info for file request"); - return + return; } - const { localPath, ...fileInfo } = internalFileInfo; - yield put(ClientDownloadActions.clientDownloadStarted({ fileRequest, fileInfo })) - try { - console.log(fileRequest); - const offerSessionDescription = new RTCSessionDescription(offerSdp); - const answer: RTCSessionDescription = yield call(() => answerPeer.getAnswer(offerSessionDescription)); - - const answerEnvelope: LinkMessageEnvelope> = { + let answerPeer: + | PromiseType> + | undefined; + if (internalFileInfo.size > 0) { + const rtcConfig: RTCConfiguration = yield select( + (s: RtcRootState) => s.rtcConfig + ); + answerPeer = yield call(() => getAnswerPeer(rtcConfig)); + } - id: transactionId, - timestamp: Math.trunc((new Date()).getTime()), - type: "pshare-answer", - payload: { sessionDescription: answer.toJSON(), payload: fileInfo } - }; - const routeEnvelope: LinkRouteEnvelope>> = { - recipient: fileRequest.requestorUserName, - payload: answerEnvelope - }; - yield put(BdapActions.sendLinkMessage(routeEnvelope)); - yield call(() => answerPeer.waitForDataChannelOpen()); - try { - yield copyFileToRTCPeer(localPath, answerPeer, (progressPct, downloadedBytes, size) => put(ClientDownloadActions.clientDownloadProgress({ fileRequest, progressPct, downloadedBytes, size }))); - } - catch (err) { - yield put(RtcActions.fileSendFailed(prepareErrorForSerialization(err))); - return; + const scope = resourceScope(answerPeer, async peer => { + if (peer) { + await peer.close(); } - finally { - answerPeer.dataChannel.close(); + }); + yield* scope.use(function*(answerPeer) { + const { localPath, fileInfo, alternativeStream } = (() => { + if (isInternalFileInfo(internalFileInfo)) { + const { + localPath, + ...fileInfo + }: InternalFileInfo = internalFileInfo; + return { localPath, fileInfo, alternativeStream: null }; + } else if (isInternalDirectoryInfo(internalFileInfo)) { + const { size, type, payload } = internalFileInfo; + return { + localPath: null, + fileInfo: { path: "file-list", size, type }, + alternativeStream: payload, + }; + } else { + throw Error("unexpected internalFileInfo type"); + } + })(); + + if (fileInfo != null) { + //const { localPath, ...fileInfo } = internalFileInfo; + + yield put( + ClientDownloadActions.clientDownloadStarted({ + fileRequest, + fileInfo, + }) + ); } - } finally { - yield put(ClientDownloadActions.clientDownloadComplete(fileRequest)) - } + let answer: RTCSessionDescription | undefined; + try { + if (answerPeer) { + console.log(fileRequest); + const offerSessionDescription = new RTCSessionDescription( + offerSdp + ); + answer = yield call(() => + answerPeer!.getAnswer(offerSessionDescription) + ); + } + + const answerEnvelope: LinkMessageEnvelope< + SessionDescriptionEnvelope + > = { + id: transactionId, + timestamp: Math.trunc(new Date().getTime()), + type: "pshare-answer", + payload: { + sessionDescription: answer + ? answer.toJSON() + : undefined, + payload: fileInfo, + }, + }; + const routeEnvelope: LinkRouteEnvelope< + LinkMessageEnvelope> + > = { + recipient: fileRequest.requestorUserName, + payload: answerEnvelope, + }; + yield put(BdapActions.sendLinkMessage(routeEnvelope)); + if (answerPeer) { + yield call(() => answerPeer!.waitForDataChannelOpen()); + let fileSize: number; + let scope: ResourceScope; + if (localPath) { + const stats: fs.Stats = yield call(() => + fs.promises.stat(localPath) + ); + fileSize = stats.size; + const stream = fs.createReadStream(localPath); + scope = resourceScope(stream, () => stream.close()); + } else if (alternativeStream) { + fileSize = fileInfo.size; + scope = resourceScope(alternativeStream, () => {}); + } else { + throw Error("no localpath or alternativeStream"); + } + + //const scope = resourceScope(stream, s => s.close()); + yield* scope.use(function*(readStream) { + try { + yield copyStreamToRTCPeer( + readStream, + fileSize, + answerPeer!, + ( + progressPct, + speed, + eta, + downloadedBytes, + size + ) => + put( + ClientDownloadActions.clientDownloadProgress( + { + fileRequest, + progressPct, + downloadedBytes, + size, + speed, + eta, + } + ) + ) + ); + } catch (err) { + yield put( + RtcActions.fileSendFailed( + prepareErrorForSerialization(err) + ) + ); + return; + } + }); + } + } finally { + yield put( + ClientDownloadActions.clientDownloadComplete(fileRequest) + ); + } + }); }); } -interface InternalFileInfo { - localPath: string; + +interface MessageInfo { type: string; size: number; +} +interface InternalFileInfo extends MessageInfo { + localPath: string; path: string; } +function isInternalFileInfo(item: MessageInfo): item is InternalFileInfo { + const x = item as InternalFileInfo; + return x.hasOwnProperty("localPath") && x.hasOwnProperty("path"); +} +interface InternalDirectoryInfo extends MessageInfo { + requestId: string; + payload: stream.Readable; +} +function isInternalDirectoryInfo( + item: MessageInfo +): item is InternalDirectoryInfo { + const x = item as InternalDirectoryInfo; + return x.hasOwnProperty("requestId") && x.hasOwnProperty("payload"); +} function getFileInfo(fileRequest: FileRequest) { - return call(function* () { - const sharedFiles: SharedFile[] = - yield select((s: RtcRootState) => - (s.fileWatch.users[fileRequest.requestorUserName] && Object.values(s.fileWatch.users[fileRequest.requestorUserName].out)) || []) - const sharedFile = blinq(sharedFiles).firstOrDefault(f => f.hash === fileRequest.fileId) - if (typeof sharedFile === 'undefined') { - return null + return call(function*() { + if (isFileListRequest(fileRequest)) { + const filesRecord: Record = yield select( + (s: MainRootState) => { + if (s.fileWatch.users[fileRequest.requestorUserName]) { + return s.fileWatch.users[fileRequest.requestorUserName] + .out; + } else { + return {}; + } + } + ); + const sharedFiles: PublicSharedFile[] = entries(filesRecord) + .select(([fileName, v]) => ({ + fileName, + //hash: v.hash!, + size: v.size!, + contentType: v.contentType!, + })) + .toArray(); + + const memStream = new ReadableStreamBuffer(); + + const response: FileListResponse = { + requestId: fileRequest.requestId, + sharedFiles, + }; + memStream.put(JSON.stringify(response)); + memStream.stop(); + + const di: InternalDirectoryInfo = { + requestId: fileRequest.requestId, + payload: memStream, + size: memStream.size(), + type: "application/json", + }; + return di; + } + const sharedFiles: SharedFile[] = yield select( + (s: RtcRootState) => + (s.fileWatch.users[fileRequest.requestorUserName] && + Object.values( + s.fileWatch.users[fileRequest.requestorUserName].out + )) || + [] + ); + const sharedFile = blinq(sharedFiles).firstOrDefault( + f => f.relativePath === fileRequest.fileName + ); + if (typeof sharedFile === "undefined") { + return null; } const output: InternalFileInfo = { localPath: sharedFile.path, type: sharedFile.contentType!, size: sharedFile.size!, - path: sharedFile.relativePath + path: sharedFile.relativePath, }; return output; }); diff --git a/src/rtc/sagas/requestFileSaga.ts b/src/rtc/sagas/requestFileSaga.ts index 50ff0c77..f30f528b 100644 --- a/src/rtc/sagas/requestFileSaga.ts +++ b/src/rtc/sagas/requestFileSaga.ts @@ -6,102 +6,279 @@ import { LinkMessageEnvelope } from "../../shared/actions/payloadTypes/LinkMessa import { FileRequest } from "../../shared/actions/payloadTypes/FileRequest"; import { PromiseType } from "../../shared/system/generic-types/PromiseType"; import { getOfferPeer } from "../system/webRtc/getOfferPeer"; -import { v4 as uuid } from 'uuid'; -import * as path from 'path' +import { v4 as uuid } from "uuid"; +import * as path from "path"; import { RtcActions } from "../../shared/actions/rtc"; -import { receiveFileFromRTCPeer } from "./helpers/receiveFileFromRTCPeer"; +import { copyFromRTCPeerToStream } from "./helpers/copyFromRTCPeerToStream"; import { prepareErrorForSerialization } from "../../shared/proxy/prepareErrorForSerialization"; -import { UserSharePaths, getOrCreateShareDirectoriesForUser } from "./helpers/getOrCreateShareDirectoriesForUser"; +import { + UserSharePaths, + getOrCreateShareDirectoriesForUser, +} from "./helpers/getOrCreateShareDirectoriesForUser"; import { delay } from "redux-saga"; -import * as fs from 'fs' -import { FileRequestWithSavePath } from "../../shared/actions/payloadTypes/FileRequestWithSavePath"; +import * as fs from "fs"; import { RtcRootState } from "../reducers"; import { BdapActions } from "../../shared/actions/bdap"; import { SessionDescriptionEnvelope } from "../../shared/actions/payloadTypes/SessionDescriptionEnvelope"; import { FileInfo } from "../../shared/actions/payloadTypes/FileInfo"; +import { resourceScope } from "../../shared/system/redux-saga/resourceScope"; +import * as util from "util"; +import { deleteProperty } from "../../shared/system/deleteProperty"; +import { WritableStreamBuffer } from "stream-buffers"; +import * as stream from "stream"; +import { isFileRequestWithSavePath } from "../../shared/actions/payloadTypes/FileRequestWithSavePath"; +import { isFileListRequest } from "../../shared/actions/payloadTypes/FileListRequest"; +import { FileListResponse } from "../../shared/actions/payloadTypes/FileListResponse"; +const fsUnlinkAsync = util.promisify(fs.unlink); //this runs in rtc export function* requestFileSaga() { - yield takeEvery(getType(FileSharingActions.requestFileWithSavePath), function* (action: ActionType) { - const rtcConfig: RTCConfiguration = yield select((s: RtcRootState) => s.rtcConfig) + yield takeEvery(getType(FileSharingActions.startRequestFile), function*( + action: ActionType + ) { + const rtcConfig: RTCConfiguration = yield select( + (s: RtcRootState) => s.rtcConfig + ); - const peer: PromiseType> = yield call(() => getOfferPeer(rtcConfig)) - try { - const fileRequest: FileRequestWithSavePath = action.payload; - yield put(RtcActions.fileReceiveProgress({ fileRequest, downloadedBytes: 0, totalBytes: 0, downloadedPct: 0, status: "negotiating connection" })) - const offer: RTCSessionDescription = yield call(() => peer.createOffer()) - yield put(RtcActions.fileReceiveProgress({ fileRequest, downloadedBytes: 0, totalBytes: 0, downloadedPct: 0, status: "sending offer" })) - const offerEnvelope: LinkMessageEnvelope> = { + const peer: PromiseType> = yield call( + () => getOfferPeer(rtcConfig) + ); - payload: { payload: fileRequest, sessionDescription: offer.toJSON() }, + const scope = resourceScope(peer, peer => peer.close()); + yield* scope.use(function*(peer) { + const incomingFileRequest = action.payload; + const fileRequest: FileRequest = isFileRequestWithSavePath( + incomingFileRequest + ) + ? deleteProperty(incomingFileRequest, "savePath") + : incomingFileRequest; + yield put( + RtcActions.fileReceiveProgress({ + fileRequest, + downloadedBytes: 0, + totalBytes: 0, + downloadedPct: 0, + status: "negotiating connection", + speed: 0, + }) + ); + const offer: RTCSessionDescription = yield call(() => + peer.createOffer() + ); + yield put( + RtcActions.fileReceiveProgress({ + fileRequest, + downloadedBytes: 0, + totalBytes: 0, + downloadedPct: 0, + status: "sending offer", + speed: 0, + }) + ); + const offerEnvelope: LinkMessageEnvelope< + SessionDescriptionEnvelope + > = { + payload: { + payload: fileRequest, + sessionDescription: offer.toJSON(), + }, id: uuid(), - timestamp: Math.trunc((new Date()).getTime()), - type: "pshare-offer" - } - const routeEnvelope: LinkRouteEnvelope>> = { + timestamp: Math.trunc(new Date().getTime()), + type: "pshare-offer", + }; + const routeEnvelope: LinkRouteEnvelope< + LinkMessageEnvelope> + > = { recipient: action.payload.ownerUserName, - payload: offerEnvelope - } - yield put(BdapActions.sendLinkMessage(routeEnvelope)) - yield put(RtcActions.fileReceiveProgress({ fileRequest, downloadedBytes: 0, totalBytes: 0, downloadedPct: 0, status: "waiting for answer" })) + payload: offerEnvelope, + }; + yield put(BdapActions.sendLinkMessage(routeEnvelope)); + yield put( + RtcActions.fileReceiveProgress({ + fileRequest, + downloadedBytes: 0, + totalBytes: 0, + downloadedPct: 0, + status: "waiting for answer", + speed: 0, + }) + ); const pred = (action: BdapActions) => { switch (action.type) { case getType(BdapActions.linkMessageReceived): - return action.payload.message.type === "pshare-answer" && action.payload.message.id === offerEnvelope.id + return ( + action.payload.message.type === "pshare-answer" && + action.payload.message.id === offerEnvelope.id + ); default: return false; } - } + }; - - - const { linkMessage }: { linkMessage: ActionType } = yield race({ + const { + linkMessage, + }: { + linkMessage: ActionType; + } = yield race({ timeout: delay(60 * 1000), - linkMessage: take(pred) - }) + linkMessage: take(pred), + }); if (!linkMessage) { - yield put(RtcActions.fileReceiveFailed({ fileRequest, error: prepareErrorForSerialization(Error("timeout")) })) - yield delay(10000) - yield put(RtcActions.fileReceiveReset(fileRequest)) - return + yield put( + RtcActions.fileReceiveFailed({ + fileRequest, + error: prepareErrorForSerialization(Error("timeout")), + }) + ); + yield delay(10000); + yield put(RtcActions.fileReceiveReset(fileRequest)); + return; } - const answerEnvelope: LinkMessageEnvelope> = linkMessage.payload.message - yield put(RtcActions.fileReceiveProgress({ fileRequest, downloadedBytes: 0, totalBytes: 0, downloadedPct: 0, status: "connecting to peer" })) - - const { payload: { sessionDescription: answerSdp, payload: fileInfo } } = answerEnvelope + const answerEnvelope: LinkMessageEnvelope< + SessionDescriptionEnvelope + > = linkMessage.payload.message; + yield put( + RtcActions.fileReceiveProgress({ + fileRequest, + downloadedBytes: 0, + totalBytes: 0, + downloadedPct: 0, + status: "connecting to peer", + speed: 0, + }) + ); - const answerSessionDescription = new RTCSessionDescription(answerSdp); - yield call(() => peer.setRemoteDescription(answerSessionDescription)) - yield call(() => peer.waitForDataChannelOpen()) - yield put(RtcActions.fileReceiveProgress({ fileRequest, downloadedBytes: 0, totalBytes: 0, downloadedPct: 0, status: "connected to peer" })) + const { + payload: { sessionDescription: answerSdp, payload: fileInfo }, + } = answerEnvelope; + const otherEndUser = action.payload.ownerUserName; + const { + temp, + }: UserSharePaths = yield getOrCreateShareDirectoriesForUser( + otherEndUser + ); + const tempPath = path.join(temp, `__${uuid()}`); + if (fileInfo.size > 0) { + const answerSessionDescription = new RTCSessionDescription( + answerSdp + ); + yield call(() => + peer.setRemoteDescription(answerSessionDescription) + ); + yield call(() => peer.waitForDataChannelOpen()); + yield put( + RtcActions.fileReceiveProgress({ + fileRequest, + downloadedBytes: 0, + totalBytes: 0, + downloadedPct: 0, + status: "connected to peer", + speed: 0, + }) + ); + //debugger + try { + const scope = isFileRequestWithSavePath(incomingFileRequest) + ? resourceScope( + fs.createWriteStream(tempPath) as stream.Writable, + s => (s as fs.WriteStream).close() + ) + : resourceScope( + new WritableStreamBuffer({}) as stream.Writable, + () => {} + ); + yield* scope.use(function*(s: stream.Writable) { + yield copyFromRTCPeerToStream( + s, + fileInfo.size, + peer, + (progress, speed, eta, downloadedBytes, size) => + put( + RtcActions.fileReceiveProgress({ + fileRequest, + downloadedBytes, + totalBytes: size, + downloadedPct: progress, + status: "downloading", + speed, + eta, + }) + ) + ); + if (!isFileRequestWithSavePath(incomingFileRequest)) { + const streamBuffer = s as WritableStreamBuffer; + const message = streamBuffer.getContentsAsString(); + if (isFileListRequest(incomingFileRequest)) { + console.log(`MESSAGE: ${message}`); + } else { + throw Error("unexpected fileRequest type"); + } + if (message) { + const response: FileListResponse = JSON.parse( + message + ); + yield put( + FileSharingActions.fileListResponse( + response + ) + ); // dispatch response to app + } + } + }); + } catch (err) { + if (isFileRequestWithSavePath(incomingFileRequest)) { + yield call(() => fsUnlinkAsync(tempPath)); + } - const otherEndUser = action.payload.ownerUserName - const { temp }: UserSharePaths = yield getOrCreateShareDirectoriesForUser(otherEndUser); - const tempPath = path.join(temp, `__${uuid()}`) - - //debugger - try { - yield receiveFileFromRTCPeer(tempPath, peer, fileInfo, fileRequest) - } catch (err) { - yield put(RtcActions.fileReceiveFailed({ fileRequest, error: prepareErrorForSerialization(err) })) - yield delay(10000) - yield put(RtcActions.fileReceiveReset(fileRequest)) - return + yield put( + RtcActions.fileReceiveFailed({ + fileRequest, + error: prepareErrorForSerialization(err), + }) + ); + yield delay(10000); + yield put(RtcActions.fileReceiveReset(fileRequest)); + return; + } + } else { + yield call(() => touchFile(tempPath)); } + if (isFileRequestWithSavePath(incomingFileRequest)) { + yield call(() => + fs.promises.rename(tempPath, incomingFileRequest.savePath) + ); + } - yield call(() => fs.promises.rename(tempPath, fileRequest.savePath)); - yield put(RtcActions.fileReceiveSuccess(fileRequest)) - yield delay(10000) - yield put(RtcActions.fileReceiveReset(fileRequest)) + yield put(RtcActions.fileReceiveSuccess(fileRequest)); + yield delay(10000); + yield put(RtcActions.fileReceiveReset(fileRequest)); + }); + }); +} - } - finally { - peer.close() - } - }) +function touchFile(filePath: string) { + const time = new Date(); + return new Promise((resolve, reject) => + fs.utimes(filePath, time, time, err => { + if (err) { + fs.open(filePath, "w", (err, fd) => { + if (err) { + reject(err); + } + fs.close(fd, err => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); + } + }) + ); } diff --git a/src/rtc/system/webRtc/RTCPeer.ts b/src/rtc/system/webRtc/RTCPeer.ts index 9b30ea08..412de4d7 100644 --- a/src/rtc/system/webRtc/RTCPeer.ts +++ b/src/rtc/system/webRtc/RTCPeer.ts @@ -5,5 +5,5 @@ export interface RTCPeer; readonly dataChannel: RTCDataChannel; send: (data: TData) => void; - close: () => void; + close: () => Promise; } diff --git a/src/rtc/system/webRtc/getAnswerPeer.ts b/src/rtc/system/webRtc/getAnswerPeer.ts index ab52ff5d..e1e8b0f5 100644 --- a/src/rtc/system/webRtc/getAnswerPeer.ts +++ b/src/rtc/system/webRtc/getAnswerPeer.ts @@ -3,9 +3,12 @@ import { createPromiseResolver } from "../../../shared/system/createPromiseResol import { createAsyncQueue } from "../../../shared/system/createAsyncQueue"; import { AnswerPeerEvents } from "./AnswerPeerEvents"; import { RTCAnswerPeer } from "./RTCAnswerPeer"; +import { waitForDrained } from "./waitForDrained"; +import { delay } from "../../../shared/system/delay"; -export async function getAnswerPeer(peerConnectionConfig: RTCConfiguration): Promise> { - +export async function getAnswerPeer< + T extends string | Blob | ArrayBuffer | ArrayBufferView +>(peerConnectionConfig: RTCConfiguration): Promise> { const eventDispatcher = createEventEmitter(); const peer = new RTCPeerConnection(peerConnectionConfig); @@ -20,10 +23,10 @@ export async function getAnswerPeer queue.post(e.data); dataChannel.onopen = e => eventDispatcher.dispatchEvent("open", e); - eventDispatcher.dispatchEvent("datachannel", dataChannel) + eventDispatcher.dispatchEvent("datachannel", dataChannel); }; - peer.onicecandidate = (event) => { - console.log('answerPeer ice candidate'); + peer.onicecandidate = event => { + console.log("answerPeer ice candidate"); if (event.candidate) { // These would normally be sent to answerPeer over some other transport, // like a websocket, but since this is local we can just set it here. @@ -31,70 +34,80 @@ export async function getAnswerPeer { - const pr = createPromiseResolver() - eventDispatcher.once("sessiondescription", (sd: RTCSessionDescription) => pr.resolve(sd)) - await peer.setRemoteDescription(offer) - const answer = new RTCSessionDescription(await peer.createAnswer({})) - await peer.setLocalDescription(answer) - return await pr.promise + const pr = createPromiseResolver(); + eventDispatcher.once( + "sessiondescription", + (sd: RTCSessionDescription) => pr.resolve(sd) + ); + await peer.setRemoteDescription(offer); + const answer = new RTCSessionDescription( + await peer.createAnswer({}) + ); + await peer.setLocalDescription(answer); + return await pr.promise; }, waitForDataChannelOpen: async () => { - const pr = createPromiseResolver() - eventDispatcher.once("datachannel", (dataChannel: RTCDataChannel) => pr.resolve(dataChannel)) - const dc = await pr.promise + const pr = createPromiseResolver(); + eventDispatcher.once("datachannel", (dataChannel: RTCDataChannel) => + pr.resolve(dataChannel) + ); + const dc = await pr.promise; if (dc.readyState !== "open") { - const prom = createPromiseResolver() + const prom = createPromiseResolver(); const res = () => prom.resolve(); const rej: (evtObj: any) => void = e => prom.reject(e); - eventDispatcher.addEventListener("open", res) - eventDispatcher.addEventListener("error", rej) + eventDispatcher.addEventListener("open", res); + eventDispatcher.addEventListener("error", rej); try { - await (prom.promise) - + await prom.promise; } finally { - eventDispatcher.removeEventListener("open", res) - eventDispatcher.removeEventListener("error", rej) - + eventDispatcher.removeEventListener("open", res); + eventDispatcher.removeEventListener("error", rej); } } - dataChannel = dc - return dc - + dataChannel = dc; + return dc; }, addEventListener: eventDispatcher.addEventListener, once: eventDispatcher.once, removeEventListener: eventDispatcher.removeEventListener, - get incomingMessageQueue() { return queue }, + get incomingMessageQueue() { + return queue; + }, get dataChannel() { if (dataChannel) { - return dataChannel + return dataChannel; } else { - throw Error("RTCDataChannel not yet acquired, did you waitForDataChannelOpen()?") + throw Error( + "RTCDataChannel not yet acquired, did you waitForDataChannelOpen()?" + ); } }, send: (data: T) => { if (dataChannel) { dataChannel.send(data as any); } else { - throw Error("no data channel") + throw Error("no data channel"); } - }, - close: () => { + close: async () => { + await waitForDrained(rtcPeer); + await delay(20000); dataChannel && dataChannel.close(); - peer.close() - } - } + peer.close(); + }, + }; + return rtcPeer; } diff --git a/src/rtc/system/webRtc/getOfferPeer.ts b/src/rtc/system/webRtc/getOfferPeer.ts index dedc15b1..b5f56d8d 100644 --- a/src/rtc/system/webRtc/getOfferPeer.ts +++ b/src/rtc/system/webRtc/getOfferPeer.ts @@ -3,13 +3,16 @@ import { createAsyncQueue } from "../../../shared/system/createAsyncQueue"; import { createPromiseResolver } from "../../../shared/system/createPromiseResolver"; import { RTCOfferPeer } from "./RTCOfferPeer"; import { OfferPeerEvents } from "./OfferPeerEvents"; +import { waitForDrained } from "./waitForDrained"; +import { delay } from "redux-saga"; -export async function getOfferPeer(peerConnectionConfig: RTCConfiguration): Promise> { - +export async function getOfferPeer< + T extends string | Blob | ArrayBuffer | ArrayBufferView +>(peerConnectionConfig: RTCConfiguration): Promise> { const eventDispatcher = createEventEmitter(); const peer = new RTCPeerConnection(peerConnectionConfig); peer.onicecandidate = (event: RTCPeerConnectionIceEvent) => { - console.log('offerPeer ice candidate'); + console.log("offerPeer ice candidate"); if (event.candidate) { // These would normally be sent to answerPeer over some other transport, // like a websocket, but since this is local we can just set it here. @@ -17,12 +20,15 @@ export async function getOfferPeer(); @@ -31,42 +37,51 @@ export async function getOfferPeer queue.post(e.data); dataChannel.onopen = e => eventDispatcher.dispatchEvent("open", e); - return { + const rtcPeer = { createOffer: async () => { - const pr = createPromiseResolver() - eventDispatcher.once("sessiondescription", (sd: RTCSessionDescription) => pr.resolve(sd)) + const pr = createPromiseResolver(); + eventDispatcher.once( + "sessiondescription", + (sd: RTCSessionDescription) => pr.resolve(sd) + ); const offerInit = await peer.createOffer({}); const offer = new RTCSessionDescription(offerInit); await peer.setLocalDescription(offer); - return await pr.promise + return await pr.promise; }, waitForDataChannelOpen: async () => { - const prom = createPromiseResolver() + const prom = createPromiseResolver(); const res = () => prom.resolve(); const rej: (evtObj: any) => void = e => prom.reject(e); - eventDispatcher.addEventListener("open", res) - eventDispatcher.addEventListener("error", rej) + eventDispatcher.addEventListener("open", res); + eventDispatcher.addEventListener("error", rej); try { - await (prom.promise) - + await prom.promise; } finally { - eventDispatcher.removeEventListener("open", res) - eventDispatcher.removeEventListener("error", rej) - + eventDispatcher.removeEventListener("open", res); + eventDispatcher.removeEventListener("error", rej); } - return dataChannel + return dataChannel; }, - setRemoteDescription: (sessionDescription: RTCSessionDescription) => peer.setRemoteDescription(sessionDescription), + setRemoteDescription: (sessionDescription: RTCSessionDescription) => + peer.setRemoteDescription(sessionDescription), //addIceCandidate: (candidate: RTCIceCandidate) => peer.addIceCandidate(candidate), addEventListener: eventDispatcher.addEventListener, once: eventDispatcher.once, removeEventListener: eventDispatcher.removeEventListener, - get incomingMessageQueue() { return queue }, - get dataChannel() { return dataChannel }, + get incomingMessageQueue() { + return queue; + }, + get dataChannel() { + return dataChannel; + }, send: (data: T) => dataChannel.send(data as any), - close: () => { + close: async () => { + await waitForDrained(rtcPeer); + await delay(20000); dataChannel && dataChannel.close(); - peer.close() - } + peer.close(); + }, }; + return rtcPeer; } diff --git a/src/rtc/system/webRtc/waitForDrained.ts b/src/rtc/system/webRtc/waitForDrained.ts new file mode 100644 index 00000000..25a4f306 --- /dev/null +++ b/src/rtc/system/webRtc/waitForDrained.ts @@ -0,0 +1,23 @@ +import { delay } from "../../../shared/system/delay"; +import { OfferPeerEvents } from "./OfferPeerEvents"; +import { AnswerPeerEvents } from "./AnswerPeerEvents"; +import { RTCPeer } from "./RTCPeer"; + +export const waitForDrained = async < + TEvents extends AnswerPeerEvents | OfferPeerEvents, + T extends string | Blob | ArrayBuffer | ArrayBufferView +>( + peer: RTCPeer +) => { + const bufferWaitTimeout = delay(120000); + while (peer && peer.dataChannel && peer.dataChannel.bufferedAmount > 0) { + const intervalDelay = delay(250); + const [winningPromise] = await Promise.race( + [bufferWaitTimeout, intervalDelay].map(p => p.then(() => [p])) + ); + + if (winningPromise === bufferWaitTimeout) { + break; + } + } +}; diff --git a/src/shared/actions/addFile.ts b/src/shared/actions/addFile.ts index 8dd4a0c2..ed6cb017 100644 --- a/src/shared/actions/addFile.ts +++ b/src/shared/actions/addFile.ts @@ -3,5 +3,6 @@ import { FilePathInfo } from '../types/FilePathInfo'; export const AddFileActions = { close: createStandardAction('add_files/CLOSE')(), filesSelected: createStandardAction('add_files/FILES_SELECTED')(), + failed: createStandardAction('add_files/FAILED')(), }; export type AddFileActions = ActionType; diff --git a/src/shared/actions/bdap.ts b/src/shared/actions/bdap.ts index 18d7d6f5..a3940933 100644 --- a/src/shared/actions/bdap.ts +++ b/src/shared/actions/bdap.ts @@ -37,6 +37,14 @@ export const BdapActions = { getPendingAcceptLinksSuccess: createStandardAction('bdap/GET_PENDING_ACCEPT_LINKS_SUCCESS')(), getPendingAcceptLinksFailed: createStandardAction('bdap/GET_PENDING_ACCEPT_LINKS_FAILED')(), + getBalance: createStandardAction('bdap/GET_BALANCE')(), + getBalanceSuccess: createStandardAction('bdap/GET_BALANCE_SUCCESS')(), + getBalanceFailed: createStandardAction('bdap/GET_BALANCE_FAILED')(), + + getTopUpAddress: createStandardAction('bdap/GET_TOP_UP_ADDRESS')(), + getTopUpAddressSuccess: createStandardAction('bdap/GET_TOP_UP_ADDRESS_SUCCESS')(), + getTopUpAddressFailed: createStandardAction('bdap/GET_TOP_UP_ADDRESS_FAILED')(), + bdapDataFetchSuccess: createStandardAction('bdap/BDAP_DATA_FETCH_SUCCESS')(), bdapDataFetchFailed: createStandardAction('bdap/BDAP_DATA_FETCH_FAILED')(), @@ -57,7 +65,10 @@ export const BdapActions = { sendLinkMessage: createStandardAction('bdap/SEND_LINK_MESSAGE')>>(), - linkMessageReceived:createStandardAction('bdap/LINK_MESSAGE_RECEIVED')<{message:LinkMessageEnvelope,rawMessage:LinkMessage}>(), + linkMessageReceived: createStandardAction('bdap/LINK_MESSAGE_RECEIVED')<{ message: LinkMessageEnvelope, rawMessage: LinkMessage }>(), + + insufficientFunds: createStandardAction('bdap/INSUFFICIENT_FUNDS')(), + fundsDialogDismissed: createStandardAction('bdap/FUNDS_DIALOG_DISMISSED')(), } diff --git a/src/shared/actions/bulkImport.ts b/src/shared/actions/bulkImport.ts new file mode 100644 index 00000000..f782f501 --- /dev/null +++ b/src/shared/actions/bulkImport.ts @@ -0,0 +1,26 @@ +import { createStandardAction, ActionType } from "typesafe-actions"; +import { FilePathInfo } from "../types/FilePathInfo"; +import { RequestStatus } from "../../main/sagas/bulkImportSaga"; + +export const BulkImportActions = { + previewBulkImport: createStandardAction('bulkImport/PREVIEW_BULK_IMPORT')(), + previewData: createStandardAction('bulkImport/PREVIEW_DATA')(), + beginBulkImport: createStandardAction('bulkImport/BEGIN_BULK_IMPORT')(), + bulkImportAborted: createStandardAction('bulkImport/BULK_IMPORT_ABORTED')(), + bulkImportProgress: createStandardAction('bulkImport/BULK_IMPORT_PROGRESS')(), + bulkImportFailed: createStandardAction('bulkImport/BULK_IMPORT_FAILED')(), + bulkImportSuccess: createStandardAction('bulkImport/BULK_IMPORT_SUCCESS')(), +} + +export type BulkImportActions = ActionType; + +interface BulkImportProgress { + totalItems: number, + successful: number, + failed: number, + currentItem: { + linkFqdn: string, + success: boolean, + err?: string + } +} \ No newline at end of file diff --git a/src/shared/actions/clientDownload.ts b/src/shared/actions/clientDownload.ts index 6da60932..2b15e20d 100644 --- a/src/shared/actions/clientDownload.ts +++ b/src/shared/actions/clientDownload.ts @@ -1,14 +1,22 @@ -import { createStandardAction, ActionType } from 'typesafe-actions'; -import { FileRequest } from './payloadTypes/FileRequest'; -import { FileInfo } from './payloadTypes/FileInfo'; +import { createStandardAction, ActionType } from "typesafe-actions"; +import { FileRequest } from "./payloadTypes/FileRequest"; +import { FileInfo } from "./payloadTypes/FileInfo"; export const ClientDownloadActions = { - clientDownloadStarted: createStandardAction('clientDownload/DOWNLOAD_STARTED')<{ fileRequest: FileRequest, fileInfo: FileInfo }>(), - clientDownloadComplete: createStandardAction('clientDownload/DOWNLOAD_COMPLETE')(), - clientDownloadProgress: createStandardAction('clientDownload/DOWNLOAD_PROGRESS')<{ - fileRequest: FileRequest; - progressPct: number; - downloadedBytes: number - size: number - }>(), + clientDownloadStarted: createStandardAction( + "clientDownload/DOWNLOAD_STARTED" + )<{ fileRequest: FileRequest; fileInfo: FileInfo }>(), + clientDownloadComplete: createStandardAction( + "clientDownload/DOWNLOAD_COMPLETE" + )(), + clientDownloadProgress: createStandardAction( + "clientDownload/DOWNLOAD_PROGRESS" + )<{ + fileRequest: FileRequest; + progressPct: number; + downloadedBytes: number; + size: number; + speed: number; + eta?: number; + }>() }; export type ClientDownloadActions = ActionType; diff --git a/src/shared/actions/dashboard.ts b/src/shared/actions/dashboard.ts index 39511d96..3678c3b7 100644 --- a/src/shared/actions/dashboard.ts +++ b/src/shared/actions/dashboard.ts @@ -7,6 +7,7 @@ export const DashboardActions = { viewSharedFiles: createStandardAction('dashboard/myLinks/VIEW_SHARED_FILES')(), viewMyLinks: createStandardAction('dashboard/myLinks/VIEW_MY_LINKS')(), toggleSpinner: createStandardAction('dashboard/TOGGLE_SPINNER')(), + exportMyLinks: createStandardAction('dashboard/EXPORT_MY_LINKS')(), } diff --git a/src/shared/actions/fileNavigation.ts b/src/shared/actions/fileNavigation.ts new file mode 100644 index 00000000..f88717a2 --- /dev/null +++ b/src/shared/actions/fileNavigation.ts @@ -0,0 +1,17 @@ +import { ActionType, createStandardAction } from 'typesafe-actions'; +// import { PublicSharedFile } from '../types/PublicSharedFile'; +// import { FileListMessage } from '../types/FileListMessage'; + +export interface BaseNavigationCommand { + type: "sharedFiles" | "downloadableFiles", +} +export interface NavigationCommand extends BaseNavigationCommand { + location: string +} + +export const FileNavigationActions = { + openDirectory: createStandardAction('file_navigation/OPEN_DIRECTORY')(), + upDirectory: createStandardAction('file_navigation/UP_DIRECTORY')(), + goRoot: createStandardAction('file_navigation/GO_ROOT')(), +}; +export type FileNavigationActions = ActionType; diff --git a/src/shared/actions/fileSharing.ts b/src/shared/actions/fileSharing.ts index 22a78f50..6cea5661 100644 --- a/src/shared/actions/fileSharing.ts +++ b/src/shared/actions/fileSharing.ts @@ -2,11 +2,12 @@ import { ActionType, createStandardAction } from 'typesafe-actions'; import { FileRequest } from './payloadTypes/FileRequest'; import { FileInfo } from './payloadTypes/FileInfo'; import { LinkMessageEnvelope } from './payloadTypes/LinkMessageEnvelope'; -import { FileRequestWithSavePath } from './payloadTypes/FileRequestWithSavePath'; import { SessionDescriptionEnvelope } from './payloadTypes/SessionDescriptionEnvelope'; +import { FileListResponse } from './payloadTypes/FileListResponse'; export const FileSharingActions = { requestFile: createStandardAction('fileSharing/REQUEST_FILE')(), - requestFileWithSavePath: createStandardAction('fileSharing/REQUEST_FILE_WITH_SAVE_PATH')(), + fileListResponse: createStandardAction('fileSharing/FILE_LIST_RESPONSE')(), + startRequestFile: createStandardAction('fileSharing/START_REQUEST_FILE')(), offerEnvelopeReceived: createStandardAction('fileSharing/OFFER_ENVELOPE_RECEIVED')>>(), answerEnvelopeReceived: createStandardAction('fileSharing/ANSWER_ENVELOPE_RECEIVED')>>() }; diff --git a/src/shared/actions/fileWatch.ts b/src/shared/actions/fileWatch.ts index efc24c98..109b9ff5 100644 --- a/src/shared/actions/fileWatch.ts +++ b/src/shared/actions/fileWatch.ts @@ -1,8 +1,19 @@ -import { ActionType, createStandardAction } from 'typesafe-actions'; -import { SharedFile } from '../types/SharedFile'; +import { ActionType, createStandardAction } from "typesafe-actions"; +import { SharedFile } from "../types/SharedFile"; +export interface FileChange { + file: SharedFile; + type: "added" | "unlinked"; +} export const FileWatchActions = { - fileAdded: createStandardAction('file_watch/FILE_ADDED')(), - fileUnlinked: createStandardAction('file_watch/FILE_UNLINKED')(), - initialScanComplete:createStandardAction('file_watch/INITIAL_SCAN_COMPLETE')(), + fileAdded: createStandardAction("file_watch/FILE_ADDED")(), + fileUnlinked: createStandardAction("file_watch/FILE_UNLINKED")< + SharedFile + >(), + filesChanged: createStandardAction("file_watch/FILES_CHANGED")< + FileChange[] + >(), + initialScanComplete: createStandardAction( + "file_watch/INITIAL_SCAN_COMPLETE" + )(), }; export type FileWatchActions = ActionType; diff --git a/src/shared/actions/index.ts b/src/shared/actions/index.ts index d5eaf743..3e477938 100644 --- a/src/shared/actions/index.ts +++ b/src/shared/actions/index.ts @@ -12,6 +12,7 @@ import { AddFileActions } from './addFile'; import { BdapActions } from './bdap'; import { FileListActions } from './fileList'; import { SearchActions } from './search'; +import { FileNavigationActions } from './fileNavigation'; export const RootActions = { ...StoreActions, @@ -26,7 +27,8 @@ export const RootActions = { ...BdapActions, ...FileListActions, ...RtcActions, - ...SearchActions + ...SearchActions, + ...FileNavigationActions } export type RootActions = ActionType diff --git a/src/shared/actions/payloadTypes/FileListRequest.ts b/src/shared/actions/payloadTypes/FileListRequest.ts new file mode 100644 index 00000000..71ef1aaa --- /dev/null +++ b/src/shared/actions/payloadTypes/FileListRequest.ts @@ -0,0 +1,9 @@ +import { FileRequest } from "./FileRequest"; +export interface FileListRequest extends FileRequest { + type: "file-list"; + requestId: string; +} +export function isFileListRequest(item: FileRequest): item is FileListRequest { + const x = item as FileListRequest; + return x.type === "file-list" && x.hasOwnProperty("requestId"); +} diff --git a/src/shared/actions/payloadTypes/FileListResponse.ts b/src/shared/actions/payloadTypes/FileListResponse.ts new file mode 100644 index 00000000..86e09865 --- /dev/null +++ b/src/shared/actions/payloadTypes/FileListResponse.ts @@ -0,0 +1,5 @@ +import { PublicSharedFile } from "../../types/PublicSharedFile"; +export interface FileListResponse { + requestId: string; + sharedFiles: PublicSharedFile[]; +} diff --git a/src/shared/actions/payloadTypes/FileReceiveProgress.ts b/src/shared/actions/payloadTypes/FileReceiveProgress.ts index 149dd2ca..4ee0b3ad 100644 --- a/src/shared/actions/payloadTypes/FileReceiveProgress.ts +++ b/src/shared/actions/payloadTypes/FileReceiveProgress.ts @@ -1,8 +1,10 @@ import { FileRequest } from "./FileRequest"; export interface FileReceiveProgress { - totalBytes: number; - downloadedBytes: number; - downloadedPct: number - fileRequest: FileRequest; - status?:string + totalBytes: number; + downloadedBytes: number; + downloadedPct: number; + fileRequest: FileRequest; + status?: string; + speed: number; + eta?: number; } diff --git a/src/shared/actions/payloadTypes/FileRequest.ts b/src/shared/actions/payloadTypes/FileRequest.ts index 6fe12068..e96d28d8 100644 --- a/src/shared/actions/payloadTypes/FileRequest.ts +++ b/src/shared/actions/payloadTypes/FileRequest.ts @@ -1,7 +1,7 @@ export interface FileRequest { ownerUserName: string; requestorUserName: string; - fileId: string; fileName: string + type: "file" | "file-list" } diff --git a/src/shared/actions/payloadTypes/FileRequestWithSavePath.ts b/src/shared/actions/payloadTypes/FileRequestWithSavePath.ts index ae8c54ea..1194716f 100644 --- a/src/shared/actions/payloadTypes/FileRequestWithSavePath.ts +++ b/src/shared/actions/payloadTypes/FileRequestWithSavePath.ts @@ -1,4 +1,12 @@ import { FileRequest } from "./FileRequest"; + export interface FileRequestWithSavePath extends FileRequest { savePath: string; + type: "file"; +} +export function isFileRequestWithSavePath( + item: FileRequest +): item is FileRequestWithSavePath { + const x = item as FileRequestWithSavePath; + return x.type === "file" && x.hasOwnProperty("savePath"); } diff --git a/src/shared/reducers/bdap.ts b/src/shared/reducers/bdap.ts index d4972b9f..ebf2b5e2 100644 --- a/src/shared/reducers/bdap.ts +++ b/src/shared/reducers/bdap.ts @@ -15,9 +15,12 @@ export interface BdapState { pendingRequestLinks: PendingLink[] completeLinks: Link[] deniedLinks: DeniedLink[] - currentUser?: GetUserInfo + currentUser?: GetUserInfo, + balance: number, + topUpAddress?: string, + insufficientFundsErrorMessage?: string } -const defaultState: BdapState = { users: [], pendingAcceptLinks: [], pendingRequestLinks: [], completeLinks: [], deniedLinks: [] }; +const defaultState: BdapState = { users: [], pendingAcceptLinks: [], pendingRequestLinks: [], completeLinks: [], deniedLinks: [], balance: 0 }; // type BdapUserState = "normal" | "pending" | "linked" //mock states fttb // export interface BdapUser { // userName: string @@ -50,6 +53,14 @@ export const bdap = (state: BdapState = defaultState, action: BdapActions | AppA case getType(BdapActions.getDeniedLinksSuccess): const deniedLinks = action.payload return { ...state, deniedLinks } + case getType(BdapActions.getBalanceSuccess): + return { ...state, balance: action.payload } + case getType(BdapActions.getTopUpAddressSuccess): + return { ...state, topUpAddress: action.payload } + case getType(BdapActions.insufficientFunds): + return { ...state, insufficientFundsErrorMessage: "Your account does not have enough credit to " + action.payload } + case getType(BdapActions.fundsDialogDismissed): + return deleteOptionalProperty(state, "insufficientFundsErrorMessage") case getType(AppActions.initializeApp): return { ...deleteOptionalProperty(state, "currentUser"), diff --git a/src/shared/reducers/bulkImport.ts b/src/shared/reducers/bulkImport.ts new file mode 100644 index 00000000..87994fb7 --- /dev/null +++ b/src/shared/reducers/bulkImport.ts @@ -0,0 +1,28 @@ +import { BulkImportActions } from '../actions/bulkImport'; +import { getType } from 'typesafe-actions'; +import { RequestStatus } from '../../main/sagas/bulkImportSaga'; + +export interface BulkImportPreviewState { + previewData: string, + err: boolean, + fqdnData: RequestStatus[] +} + +const initialState: BulkImportPreviewState = { + previewData: '', + fqdnData: [], + err: false +} + +export const bulkImport = (state = initialState, action: BulkImportActions): BulkImportPreviewState => { + switch (action.type) { + case getType(BulkImportActions.previewData): + return { ...state, previewData: action.payload } + case getType(BulkImportActions.bulkImportSuccess): + return {...state, fqdnData: [...action.payload] } + case getType(BulkImportActions.bulkImportFailed): + return {...state, fqdnData: [...action.payload], err: true } + default: + return state + } +}; diff --git a/src/shared/reducers/clientDownloads.ts b/src/shared/reducers/clientDownloads.ts index 59cbe660..f52d5a8d 100644 --- a/src/shared/reducers/clientDownloads.ts +++ b/src/shared/reducers/clientDownloads.ts @@ -2,45 +2,91 @@ import { ClientDownloadActions } from "../actions/clientDownload"; import { getType } from "typesafe-actions"; import { FileRequest } from "../actions/payloadTypes/FileRequest"; import { deleteOptionalProperty } from "../system/deleteOptionalProperty"; +import { isFileListRequest } from "../actions/payloadTypes/FileListRequest"; interface ClientDownloadsState { - currentSessions: Record + currentSessions: Record; } -type FileRequestDownloadStatus = "not started" | "downloading" +type FileRequestDownloadStatus = "not started" | "downloading"; export interface FileRequestDownloadState extends FileRequest { - status: FileRequestDownloadStatus - progressPct: number - downloadedBytes: number - size: number - key: string + status: FileRequestDownloadStatus; + progressPct: number; + downloadedBytes: number; + size: number; + key: string; + speed: number; + eta?: number; } const defaultState: ClientDownloadsState = { - currentSessions: {} + currentSessions: {} }; -export const clientDownloads = (state: ClientDownloadsState = defaultState, action: ClientDownloadActions): ClientDownloadsState => { - switch (action.type) { - case getType(ClientDownloadActions.clientDownloadStarted): { - const { fileRequest, fileInfo } = action.payload - const rec: FileRequestDownloadState = { ...fileRequest, status: "not started", progressPct: 0, key: createKey(fileRequest), size: fileInfo.size, downloadedBytes: 0 } - return { ...state, currentSessions: { ...state.currentSessions, [rec.key]: rec } } - } - case getType(ClientDownloadActions.clientDownloadProgress): { - const { fileRequest, progressPct, downloadedBytes, size } = action.payload - const key = createKey(fileRequest) - const currentRec = state.currentSessions[key] - if (currentRec == null) { - return state - } - const rec: FileRequestDownloadState = { ...currentRec, ...fileRequest, status: "downloading", progressPct, key, downloadedBytes, size } - return { ...state, currentSessions: { ...state.currentSessions, [rec.key]: rec } } - } - case getType(ClientDownloadActions.clientDownloadComplete): { - const fileRequest = action.payload - return { ...state, currentSessions: deleteOptionalProperty(state.currentSessions, createKey(fileRequest)) } - } +export const clientDownloads = ( + state: ClientDownloadsState = defaultState, + action: ClientDownloadActions +): ClientDownloadsState => { + switch (action.type) { + case getType(ClientDownloadActions.clientDownloadStarted): { + const { fileRequest, fileInfo } = action.payload; + const rec: FileRequestDownloadState = { + ...fileRequest, + status: "not started", + progressPct: 0, + key: createKey(fileRequest), + size: fileInfo.size, + downloadedBytes: 0, + speed: 0 + }; + return { + ...state, + currentSessions: { ...state.currentSessions, [rec.key]: rec } + }; } - return state; + case getType(ClientDownloadActions.clientDownloadProgress): { + const { + fileRequest, + progressPct, + downloadedBytes, + size, + speed, + eta + } = action.payload; + const key = createKey(fileRequest); + const currentRec = state.currentSessions[key]; + if (currentRec == null) { + return state; + } + const rec: FileRequestDownloadState = { + ...currentRec, + ...fileRequest, + status: "downloading", + progressPct, + key, + downloadedBytes, + size, + speed, + eta + }; + return { + ...state, + currentSessions: { ...state.currentSessions, [rec.key]: rec } + }; + } + case getType(ClientDownloadActions.clientDownloadComplete): { + const fileRequest = action.payload; + return { + ...state, + currentSessions: deleteOptionalProperty( + state.currentSessions, + createKey(fileRequest) + ) + }; + } + } + return state; }; function createKey(fileRequest: FileRequest): string { - return `${fileRequest.requestorUserName} ${fileRequest.fileId} ${fileRequest.fileName}`; -} + if(isFileListRequest(fileRequest)){ + return `file-list-for ${fileRequest.requestorUserName} ${fileRequest.requestId}` + } + return `file-for ${fileRequest.requestorUserName} ${fileRequest.fileName}`; +} diff --git a/src/shared/reducers/fileNavigation.ts b/src/shared/reducers/fileNavigation.ts new file mode 100644 index 00000000..e3230f56 --- /dev/null +++ b/src/shared/reducers/fileNavigation.ts @@ -0,0 +1,44 @@ +import { RootActions } from "../actions"; +import { getType } from "typesafe-actions"; + +interface FileNavigationState { + sharedFilesViewPath: string[] + downloadableFilesViewPath: string[] +} + +const defaultState = { downloadableFilesViewPath: [], sharedFilesViewPath: [] }; +export const fileNavigation = (state: FileNavigationState = defaultState, action: RootActions): FileNavigationState => { + switch (action.type) { + case getType(RootActions.openDirectory): { + switch (action.payload.type) { + case "sharedFiles": + return { ...state, sharedFilesViewPath: [...state.sharedFilesViewPath, action.payload.location] } + case "downloadableFiles": + return { ...state, downloadableFilesViewPath: [...state.downloadableFilesViewPath, action.payload.location] } + default: + return state + } + } + case getType(RootActions.upDirectory): { + switch (action.payload.type) { + case "sharedFiles": + return { ...state, sharedFilesViewPath: state.sharedFilesViewPath.slice(0, -1) } + case "downloadableFiles": + return { ...state, downloadableFilesViewPath: state.downloadableFilesViewPath.slice(0, -1) } + default: + return state + } + } + case getType(RootActions.goRoot): { + switch (action.payload.type) { + case "sharedFiles": + return { ...state, sharedFilesViewPath: [] } + case "downloadableFiles": + return { ...state, downloadableFilesViewPath: [] } + default: + return state + } + } + } + return state +} diff --git a/src/shared/reducers/fileWatch.ts b/src/shared/reducers/fileWatch.ts index 992b56bf..4f999b1a 100644 --- a/src/shared/reducers/fileWatch.ts +++ b/src/shared/reducers/fileWatch.ts @@ -1,62 +1,182 @@ -import { FileWatchActions } from "../actions/fileWatch"; +import { FileWatchActions, FileChange } from "../actions/fileWatch"; import { SharedFile } from "../types/SharedFile"; import { getType } from "typesafe-actions"; import { deleteOptionalProperty } from "../system/deleteOptionalProperty"; +import { blinq } from "blinq"; +import { entries, keys } from "../system/entries"; +import { tuple } from "../system/tuple"; +import { Enumerable } from "blinq/dist/types/src/Enumerable"; +import { deleteProperty } from "../system/deleteProperty"; export interface InOutSharedFiles { - in: Record - out: Record + in: Record; + out: Record; } interface FileWatchState { - users: Record + users: Record; } const defaultState: FileWatchState = { - users: {} -} + users: {}, +}; + // todo: this is nasty. some sort of functional lense might be a way to tidy this up. shades.js is a possible candidate -export const fileWatch = (state: FileWatchState = defaultState, action: FileWatchActions) => { +export const fileWatch = ( + state: FileWatchState = defaultState, + action: FileWatchActions +) => { switch (action.type) { - case (getType(FileWatchActions.fileAdded)): + case getType(FileWatchActions.filesChanged): + const allChanges = blinq(action.payload); + + //const changesByUser = allChanges.groupBy(c => c.file.sharedWith); + const users: Record = entries(state.users) + .fullOuterGroupJoin( + allChanges, + ([userKey]) => userKey, + c => c.file.sharedWith, + (userEntries, changes) => + tuple(userEntries.singleOrDefault(), changes) + ) + .select(([userEntry, changes]) => + applyChanges(userEntry, changes) + ) + .where(([, files]) => files != null) + .aggregate({}, (users, [userKey, files]) => ({ + ...users, + [userKey]: files!, + })); + return { users }; + + case getType(FileWatchActions.fileAdded): return { ...state, users: { ...state.users, [action.payload.sharedWith]: { ...state.users[action.payload.sharedWith], - in: action.payload.direction !== "in" - ? (state.users[action.payload.sharedWith] || {}).in - : { - ...((state.users[action.payload.sharedWith] || {}).in), - [action.payload.relativePath]: action.payload - }, - out: action.payload.direction !== "out" - ? (state.users[action.payload.sharedWith] || {}).out - : { - ...((state.users[action.payload.sharedWith] || {}).out), - [action.payload.relativePath]: action.payload - }, - } - } - } - case (getType(FileWatchActions.fileUnlinked)): + in: + action.payload.direction !== "in" + ? (state.users[action.payload.sharedWith] || {}) + .in + : { + ...( + state.users[ + action.payload.sharedWith + ] || {} + ).in, + [action.payload.relativePath]: + action.payload, + }, + out: + action.payload.direction !== "out" + ? (state.users[action.payload.sharedWith] || {}) + .out + : { + ...( + state.users[ + action.payload.sharedWith + ] || {} + ).out, + [action.payload.relativePath]: + action.payload, + }, + }, + }, + }; + case getType(FileWatchActions.fileUnlinked): return { ...state, users: { ...state.users, [action.payload.sharedWith]: { ...state.users[action.payload.sharedWith], - in: action.payload.direction !== "in" - ? (state.users[action.payload.sharedWith] || {}).in - : deleteOptionalProperty(((state.users[action.payload.sharedWith] || {}).in) || {}, action.payload.relativePath), - out: action.payload.direction !== "out" - ? (state.users[action.payload.sharedWith] || {}).out - : deleteOptionalProperty(((state.users[action.payload.sharedWith] || {}).out) || {}, action.payload.relativePath), - } - } - } + in: + action.payload.direction !== "in" + ? (state.users[action.payload.sharedWith] || {}) + .in + : deleteOptionalProperty( + ( + state.users[ + action.payload.sharedWith + ] || {} + ).in || {}, + action.payload.relativePath + ), + out: + action.payload.direction !== "out" + ? (state.users[action.payload.sharedWith] || {}) + .out + : deleteOptionalProperty( + ( + state.users[ + action.payload.sharedWith + ] || {} + ).out || {}, + action.payload.relativePath + ), + }, + }, + }; default: - return state + return state; + } +}; + +function applyChanges( + userEntry: [string, InOutSharedFiles] | undefined, + changes: Enumerable +): [string, InOutSharedFiles | null] { + const firstChange = changes.firstOrDefault(); + if (!firstChange) { + if (userEntry == null) { + throw Error("userEntry should not be null"); + } + return userEntry; } -} \ No newline at end of file + const [userKey, sharedFiles]: [string, InOutSharedFiles] = + userEntry || tuple(firstChange.file.sharedWith, { in: {}, out: {} }); + + const changesByInAndOut = changes.toLookup(c => c.file.direction); + + const returnEntries: InOutSharedFiles = blinq([ + { + direction: "in", + files: sharedFiles.in, + changes: changesByInAndOut.get("in"), + }, + { + direction: "out", + files: sharedFiles.out, + changes: changesByInAndOut.get("out"), + }, + ]) + .select(c => + tuple( + c.direction, + c.changes ? applyChanges2(c.files, c.changes) : c.files + ) + ) + .aggregate({} as InOutSharedFiles, (o, [k, v]) => ({ ...o, [k]: v })); + return tuple( + userKey, + keys(returnEntries.in).any() || keys(returnEntries.out).any() + ? returnEntries + : null + ); +} + +function applyChanges2( + files: Record, + changes: Iterable +): Record { + const updatedFiles = blinq(changes).aggregate(files, (files, change) => + change.type === "added" + ? { ...files, [change.file.relativePath]: change.file } + : change.type === "unlinked" + ? deleteProperty(files, change.file.relativePath) + : files + ); + return updatedFiles; +} diff --git a/src/shared/reducers/index.ts b/src/shared/reducers/index.ts index 1a6cec2f..a2313ba8 100644 --- a/src/shared/reducers/index.ts +++ b/src/shared/reducers/index.ts @@ -12,4 +12,5 @@ export { rtcConfig } from './rtcConfig' export { clientDownloads } from './clientDownloads' export { error } from './error' export { app } from './app' - +export { fileNavigation } from './fileNavigation' +export { bulkImport } from './bulkImport'; diff --git a/src/shared/reducers/rtcConfig.ts b/src/shared/reducers/rtcConfig.ts index f935c88c..3aa4eec2 100644 --- a/src/shared/reducers/rtcConfig.ts +++ b/src/shared/reducers/rtcConfig.ts @@ -1,7 +1,7 @@ import { RootActions } from "../actions"; const rtcDefaultState: RTCConfiguration = { iceServers: [ - { urls: 'turn:45.77.158.163:3478', username: "test", credential: "Admin@123", } + { urls: 'turn:ice.bdap.io:3478', username: "test", credential: "Admin@123", } ], }; export const rtcConfig = (state: RTCConfiguration = rtcDefaultState, action: RootActions): RTCConfiguration => { diff --git a/src/shared/reducers/sharedFiles.ts b/src/shared/reducers/sharedFiles.ts index 93d43759..a0e6e60a 100644 --- a/src/shared/reducers/sharedFiles.ts +++ b/src/shared/reducers/sharedFiles.ts @@ -7,116 +7,145 @@ import { deleteOptionalProperty } from "../system/deleteOptionalProperty"; import { RtcActions } from "../actions/rtc"; import { blinq } from "blinq"; import { FileSharingActions } from "../actions/fileSharing"; - -export type SharedFilesFetchState = "initial" | "downloading" | "success" | "failed" -export interface SharedFilesState { - linkedUserName?: string, - linkedCommonName?: string, - downloadableFiles?: DownloadableFile[], - state: SharedFilesFetchState -} -export type DownloadState = "ready" | "starting" | "downloading" | "downloaded" | "failed" -export interface DownloadableFile { - file: PublicSharedFile - state: DownloadState - progressPct: number - progressStatus?: string -} +import { DownloadableFile } from "../types/DownloadableFile"; +import { DownloadState } from "../types/DownloadState"; +import { SharedFilesState } from "../types/SharedFilesState"; const defaultState: SharedFilesState = { - state: "initial" -} - -export const sharedFiles = (state: SharedFilesState = defaultState, action: DashboardActions | SharedFilesActions | FileListActions | RtcActions | FileSharingActions): SharedFilesState => { - switch (action.type) { - case getType(DashboardActions.viewSharedFiles): - return { ...state, linkedUserName: action.payload.object_id, linkedCommonName: action.payload.common_name } - - case getType(FileListActions.fileListFetchSuccess): - const downloadableFiles = - blinq(action.payload) - .leftOuterJoin( - state.downloadableFiles || [], - psf => (psf.hash + psf.fileName), - df => (df.file.hash + df.file.fileName), - (psf, df) => - typeof df === "undefined" - ? { file: psf, state: "ready" as DownloadState, progressPct: 0 } - : { ...df, file: psf }) - .toArray() - return { - ...state, - downloadableFiles, - state: "success" - } + state: "initial" +}; +export const sharedFiles = ( + state: SharedFilesState = defaultState, + action: + | DashboardActions + | SharedFilesActions + | FileListActions + | RtcActions + | FileSharingActions +): SharedFilesState => { + switch (action.type) { + case getType(DashboardActions.viewSharedFiles): + return { + ...state, + linkedUserName: action.payload.object_id, + linkedCommonName: action.payload.common_name + }; - case getType(DashboardActions.startViewSharedFiles): - return { ...state, state: "downloading" } - case getType(FileListActions.fileListFetchFailed): - return { ...deleteOptionalProperty(state, "downloadableFiles"), state: "failed" } + case getType(FileListActions.fileListFetchSuccess): + const downloadableFiles = blinq(action.payload) + .leftOuterJoin< + PublicSharedFile, + DownloadableFile, + string, + DownloadableFile + >( + state.downloadableFiles || [], + psf => psf.fileName, + df => df.file.fileName, + (psf, df) => + typeof df === "undefined" + ? { + file: psf, + state: "ready" as DownloadState, + progressPct: 0, + speed: 0 + } + : { ...df, file: psf } + ) + .toArray(); + return { + ...state, + downloadableFiles, + state: "success" + }; - case getType(SharedFilesActions.close): - const { linkedUserName, ...rest } = { ...state } - return { ...rest, state: "initial" } + case getType(DashboardActions.startViewSharedFiles): + return { ...state, state: "downloading" }; + case getType(FileListActions.fileListFetchFailed): + return { + ...deleteOptionalProperty(state, "downloadableFiles"), + state: "failed" + }; + case getType(SharedFilesActions.close): + const { linkedUserName, ...rest } = { ...state }; + return { ...rest, state: "initial" }; - case getType(FileSharingActions.requestFileWithSavePath): - { - const fileRequest = action.payload - const mappedDownloadableFiles: DownloadableFile[] = (state.downloadableFiles || []) - .map(df => df.file.fileName === fileRequest.fileName - && df.file.hash === fileRequest.fileId - ? { state: "starting", progressPct: 100, file: df.file } - : df) - return { ...state, downloadableFiles: mappedDownloadableFiles } - } + case getType(FileSharingActions.startRequestFile): { + const fileRequest = action.payload; + const mappedDownloadableFiles: DownloadableFile[] = ( + state.downloadableFiles || [] + ).map(df => + df.file.fileName === fileRequest.fileName + ? { state: "starting", progressPct: 0, file: df.file, speed: 0 } + : df + ); + return { ...state, downloadableFiles: mappedDownloadableFiles }; + } - case getType(RtcActions.fileReceiveSuccess): - { - const fileRequest = action.payload - const mappedDownloadableFiles: DownloadableFile[] = (state.downloadableFiles || []) - .map(df => df.file.fileName === fileRequest.fileName - && df.file.hash === fileRequest.fileId - ? { state: "downloaded", progressPct: 100, file: df.file } - : df) - return { ...state, downloadableFiles: mappedDownloadableFiles } + case getType(RtcActions.fileReceiveSuccess): { + const fileRequest = action.payload; + const mappedDownloadableFiles: DownloadableFile[] = ( + state.downloadableFiles || [] + ).map(df => + df.file.fileName === fileRequest.fileName + ? { + state: "downloaded", + progressPct: 100, + file: df.file, + speed: 0, + eta: 0 } + : df + ); + return { ...state, downloadableFiles: mappedDownloadableFiles }; + } - case getType(RtcActions.fileReceiveReset): - { - const fileRequest = action.payload - const mappedDownloadableFiles: DownloadableFile[] = (state.downloadableFiles || []) - .map(df => df.file.fileName === fileRequest.fileName - && df.file.hash === fileRequest.fileId - ? { state: "ready", progressPct: 0, file: df.file } - : df) - return { ...state, downloadableFiles: mappedDownloadableFiles } - } + case getType(RtcActions.fileReceiveReset): { + const fileRequest = action.payload; + const mappedDownloadableFiles: DownloadableFile[] = ( + state.downloadableFiles || [] + ).map(df => + df.file.fileName === fileRequest.fileName + ? { state: "ready", progressPct: 0, file: df.file, speed: 0 } + : df + ); + return { ...state, downloadableFiles: mappedDownloadableFiles }; + } - case getType(RtcActions.fileReceiveFailed): - { - const { fileRequest } = action.payload - const mappedDownloadableFiles: DownloadableFile[] = (state.downloadableFiles || []) - .map(df => df.file.fileName === fileRequest.fileName - && df.file.hash === fileRequest.fileId - ? { state: "failed", progressPct: 0, file: df.file } - : df) - return { ...state, downloadableFiles: mappedDownloadableFiles } - } + case getType(RtcActions.fileReceiveFailed): { + const { fileRequest } = action.payload; + const mappedDownloadableFiles: DownloadableFile[] = ( + state.downloadableFiles || [] + ).map(df => + df.file.fileName === fileRequest.fileName + ? { state: "failed", progressPct: 0, file: df.file, speed: 0 } + : df + ); + return { ...state, downloadableFiles: mappedDownloadableFiles }; + } - case getType(RtcActions.fileReceiveProgress): - { - const { fileRequest, downloadedPct, status } = action.payload - const mappedDownloadableFiles: DownloadableFile[] = (state.downloadableFiles || []) - .map(df => df.file.fileName === fileRequest.fileName - && df.file.hash === fileRequest.fileId - ? { state: "downloading", progressPct: downloadedPct, file: df.file, progressStatus: status } - : df) - return { ...state, downloadableFiles: mappedDownloadableFiles } + case getType(RtcActions.fileReceiveProgress): { + const { fileRequest, downloadedPct, status, speed, eta } = action.payload; + const mappedDownloadableFiles: DownloadableFile[] = ( + state.downloadableFiles || [] + ).map(df => + df.file.fileName === fileRequest.fileName + ? { + state: "downloading", + progressPct: downloadedPct, + file: df.file, + progressStatus: status, + speed, + eta } - - default: - return state + : df + ); + return { ...state, downloadableFiles: mappedDownloadableFiles }; } -} \ No newline at end of file + + default: + return state; + } +}; diff --git a/src/shared/reducers/user.ts b/src/shared/reducers/user.ts index 141a6b80..b14224e6 100644 --- a/src/shared/reducers/user.ts +++ b/src/shared/reducers/user.ts @@ -1,7 +1,8 @@ import { UserActions } from '../actions/user' import { getType } from 'typesafe-actions'; import { OnboardingActions } from '../actions/onboarding'; -import { deleteOptionalProperty, deleteOptionalProperties } from '../system/deleteOptionalProperty'; +import { deleteOptionalProperty } from '../system/deleteOptionalProperty'; +import { deleteOptionalProperties } from "../system/deleteOptionalProperties"; import { AppActions } from '../actions/app'; export interface UserState { diff --git a/src/shared/system/deepMerge.ts b/src/shared/system/deepMerge.ts index 9e1dd8a8..2745d21f 100644 --- a/src/shared/system/deepMerge.ts +++ b/src/shared/system/deepMerge.ts @@ -14,6 +14,7 @@ import { entriesToObject, entries } from "./entries"; */ export const deepMerge = (...items: T[]): T => { + //onsole.log("mergeItems", items) const itms = blinq(items).groupBy(i => i).select(g => g.key) const numItms = itms.count() let areMergable: boolean @@ -52,6 +53,7 @@ const getLatestEntries = (entries: Enumerable<[TK, TV]>, items: Enumerable): Enumerable<[TK, TV]> => entries + .where(([propName, value]): boolean => items.any(i => typeof i[propName] !== 'undefined')) .select(([propName, value]): [TK, TV] => [propName, mergeObjectPropertyFromItems(propName, items)]); const mergeObjectPropertyFromItems = (propName: TK, items: Enumerable): TV => diff --git a/src/shared/system/delay.ts b/src/shared/system/delay.ts index d528f4f5..a55eb8bf 100644 --- a/src/shared/system/delay.ts +++ b/src/shared/system/delay.ts @@ -1,15 +1,15 @@ import { CancellationToken } from "./createCancellationTokenSource"; export const delay = (time: number, cancellationToken?: CancellationToken) => { - - - - return new Promise((resolve,reject) => { + return new Promise<{}>((resolve, reject) => { if (cancellationToken && cancellationToken.isCancellationRequested) { - reject(Error("operation was cancelled")) + reject(Error("operation was cancelled")); return; } - cancellationToken && cancellationToken.register(() => reject(Error("operation was cancelled"))) - return setTimeout(resolve, time); + cancellationToken && + cancellationToken.register(() => + reject(Error("operation was cancelled")) + ); + return setTimeout(() => resolve({}), time); }); -} \ No newline at end of file +}; diff --git a/src/shared/system/deleteOptionalProperties.ts b/src/shared/system/deleteOptionalProperties.ts new file mode 100644 index 00000000..c02d4cde --- /dev/null +++ b/src/shared/system/deleteOptionalProperties.ts @@ -0,0 +1,3 @@ +import { OptionalKeys } from "./generic-types/OptionalKeys"; +import { deleteOptionalProperty } from "./deleteOptionalProperty"; +export const deleteOptionalProperties = (obj: T, ...ids: OptionalKeys[]): T => ids.reduce((prev, id) => deleteOptionalProperty(prev, id), obj); diff --git a/src/shared/system/deleteOptionalProperty.ts b/src/shared/system/deleteOptionalProperty.ts index c144a8e8..c334206b 100644 --- a/src/shared/system/deleteOptionalProperty.ts +++ b/src/shared/system/deleteOptionalProperty.ts @@ -3,8 +3,7 @@ import { OptionalKeys } from "./generic-types/OptionalKeys"; /** Typesafe way to delete optional properties from an object using magic of OptionalKeys */ export const deleteOptionalProperty = (obj: T, id: OptionalKeys): T => { const { [id]: deleted, ...newState } = obj; - return newState as T // this type-conversion is safe because we're sure we only deleted optional props -} + return newState as T; // this type-conversion is safe because we're sure we only deleted optional props +}; + -export const deleteOptionalProperties = (obj: T, ...ids: OptionalKeys[]): T => - ids.reduce((prev, id) => deleteOptionalProperty(prev, id), obj) \ No newline at end of file diff --git a/src/shared/system/deleteProperty.ts b/src/shared/system/deleteProperty.ts new file mode 100644 index 00000000..9e92b624 --- /dev/null +++ b/src/shared/system/deleteProperty.ts @@ -0,0 +1,11 @@ +import { Omit } from "./generic-types/Omit"; + + + +export const deleteProperty = ( + obj: T, + id: K +): Omit => { + const { [id]: deleted, ...newState } = obj; + return newState as Omit; +}; diff --git a/src/shared/system/file/DirectoryEntry.ts b/src/shared/system/file/DirectoryEntry.ts new file mode 100644 index 00000000..2dee34f9 --- /dev/null +++ b/src/shared/system/file/DirectoryEntry.ts @@ -0,0 +1,9 @@ +import { FileEntry } from "./FileEntry"; +import { DownloadableFile } from "../../types/DownloadableFile"; +import { SharedFile } from "../../types/SharedFile"; +export interface DirectoryEntry { + type: "directory"; + entries: (FileEntry | DirectoryEntry)[]; + name?: string; + fullPath?: string; +} diff --git a/src/shared/system/file/FileEntry.ts b/src/shared/system/file/FileEntry.ts new file mode 100644 index 00000000..720ca762 --- /dev/null +++ b/src/shared/system/file/FileEntry.ts @@ -0,0 +1,8 @@ +import { DownloadableFile } from "../../types/DownloadableFile"; +import { SharedFile } from "../../types/SharedFile"; + +export interface FileEntry { + type: "file"; + name: string; + fileInfo: T +} diff --git a/src/shared/system/file/fileListToTree.ts b/src/shared/system/file/fileListToTree.ts new file mode 100644 index 00000000..aea832b3 --- /dev/null +++ b/src/shared/system/file/fileListToTree.ts @@ -0,0 +1,117 @@ +import { blinq, empty, range } from "blinq"; +import { Enumerable } from "blinq/dist/types/src/Enumerable"; +import { FileEntry } from "./FileEntry"; +import { DirectoryEntry } from "./DirectoryEntry"; +import { SharedFile } from "../../types/SharedFile"; +import { DownloadableFile } from "../../types/DownloadableFile"; +import * as path from "path"; + +function isSharedFile(item: SharedFile | DownloadableFile): item is SharedFile { + return !!(item as SharedFile).direction; +} +function isDownloadableFile( + item: SharedFile | DownloadableFile +): item is DownloadableFile { + return !!(item as DownloadableFile).file; +} + +interface RawFileEntry { + pathSegments: string[]; + file: T; +} + +/// takes a list of filepaths and turns them into an object hierarchy representing directories and files +export function fileListToTree( + list: T[] +): DirectoryEntry { + if (list.length === 0) { + //throw {} + return { entries: [], type: "directory" }; + } + const bList = blinq(list); + const v = bList.first(); + + const fileSegmentsList = bList.select(file => { + if (isSharedFile(file)) { + if (file.relativePath.startsWith("/")) { + throw Error("paths should not start with '/'"); + } + const v: RawFileEntry = { + pathSegments: file.relativePath.split("/"), + file, + }; + return v; + } else if (isDownloadableFile(file)) { + if (file.file.fileName.startsWith("/")) { + throw Error("paths should not start with '/'"); + } + const v: RawFileEntry = { + pathSegments: file.file.fileName.split("/"), + file, + }; + return v; + } + throw Error("unexpected"); + }); + let baseDir: string | undefined; + if (isSharedFile(v)) { + const depth = v.relativePath.split("/").length; + const backPaths = range(0, depth) + .select(x => "..") + .toArray() + .join("/"); + baseDir = path.normalize(path.join(v.path, backPaths)); + } + return fileSegmentsListToTree(undefined, fileSegmentsList, baseDir); +} + +function fileSegmentsListToTree( + name: string | undefined, + list: Enumerable>, + baseDir: string | undefined +): DirectoryEntry { + const lookup = list.toLookup(file => file.pathSegments.length > 1); + const files = lookup.get(false) || empty>(); + const dirs = lookup.get(true) || empty>(); + + const fileEntries: Enumerable> = files.select( + f => + ({ + type: "file", + name: f.pathSegments[0], + fileInfo: f.file, + } as FileEntry) + ); + const dirEntries: Enumerable> = dirs + .groupBy(d => d.pathSegments[0]) + .select(g => + fileSegmentsListToTree( + g.key, + g.select( + ({ pathSegments: [, ...pathSegments], ...remaining }) => ({ + ...remaining, + pathSegments, + }) + ), + baseDir ? path.join(baseDir, g.key) : undefined + ) + ); + const entries = empty | DirectoryEntry>() + .concat(dirEntries) + .concat(fileEntries) + .orderBy(({ name }) => name) + .toArray(); + + return name != null + ? { + name, + type: "directory", + entries, + fullPath: baseDir, + } + : { + type: "directory", + entries, + fullPath: baseDir, + }; +} diff --git a/src/shared/system/file/getDirectoryListing.ts b/src/shared/system/file/getDirectoryListing.ts new file mode 100644 index 00000000..f66ef500 --- /dev/null +++ b/src/shared/system/file/getDirectoryListing.ts @@ -0,0 +1,29 @@ +import { blinq } from "blinq"; +import { FileEntry } from "./FileEntry"; +import { DirectoryEntry } from "./DirectoryEntry"; +import { SharedFile } from "../../types/SharedFile"; +import { DownloadableFile } from "../../types/DownloadableFile"; +export function getDirectoryListing(path: string, rootDirectory: DirectoryEntry): (FileEntry | DirectoryEntry)[] { + + if(path.startsWith("/")){ + throw Error("paths should not start with '/'") + } + const pathSegments = path.split("/"); + if (pathSegments.length === 1 && pathSegments[0] === "") { + return rootDirectory.entries + } + return getDirectoryListingFromPathSegments(pathSegments, rootDirectory); +} +function getDirectoryListingFromPathSegments(pathSegments: string[], rootDirectory: DirectoryEntry): (FileEntry | DirectoryEntry)[] { + let directoryNames = pathSegments; + let currentDirectory: DirectoryEntry | undefined = rootDirectory; + while (directoryNames.length > 0 && currentDirectory != null) { + const [dName, ...rest] = directoryNames; + directoryNames = rest; + const entry: DirectoryEntry | undefined = currentDirectory + ? blinq(currentDirectory.entries).firstOrDefault(e => e.type === "directory" && e.name === dName) as DirectoryEntry + : undefined; + currentDirectory = entry; + } + return currentDirectory ? currentDirectory.entries : []; +} diff --git a/src/shared/system/generic-types/Omit.ts b/src/shared/system/generic-types/Omit.ts new file mode 100644 index 00000000..3e4c5052 --- /dev/null +++ b/src/shared/system/generic-types/Omit.ts @@ -0,0 +1 @@ +export type Omit = Pick>; diff --git a/src/shared/system/prettySize.ts b/src/shared/system/prettySize.ts index 05d24a7c..fb87d532 100644 --- a/src/shared/system/prettySize.ts +++ b/src/shared/system/prettySize.ts @@ -1,15 +1,15 @@ import { round } from "./round"; import { blinq } from "blinq"; export const prettySize = (() => { - const sizeUnits = ["B", "KB", "MB", "GB", "TB", "PB", "EB"]; - const sizes = sizeUnits.map((u, i) => ({ unit: u, size: 1024 ** i })); - const round2 = round(2); - const prettySize = (inputSize: number) => { - const chosenSize = blinq(sizes) - .takeWhile(({ size }) => size <= inputSize) - .lastOrDefault(); - const cs = chosenSize || sizes[0]; - return `${round2(inputSize / cs.size)} ${cs.unit}`; - }; - return prettySize; + const sizeUnits = ["B", "KB", "MB", "GB", "TB", "PB", "EB"]; + const sizes = sizeUnits.map((u, i) => ({ unit: u, size: 1024 ** i })); + const round2 = round(2); + const prettySize = (inputSize: number) => { + const chosenSize = blinq(sizes) + .takeWhile(({ size }) => size <= inputSize) + .lastOrDefault(); + const cs = chosenSize || sizes[0]; + return `${round2(inputSize / cs.size)} ${cs.unit}`; + }; + return prettySize; })(); diff --git a/src/shared/system/prettyTime.ts b/src/shared/system/prettyTime.ts new file mode 100644 index 00000000..2861fa22 --- /dev/null +++ b/src/shared/system/prettyTime.ts @@ -0,0 +1,42 @@ +import { blinq } from "blinq"; + +type TimeInterval = "s" | "m" | "h" | "d" | "wk"; +interface IntervalDescription { + label: TimeInterval; + interval: number | null; +} + +export const prettyTime = (() => { + const intervals: IntervalDescription[] = [ + { label: "s", interval: 60 }, + { label: "m", interval: 60 }, + { label: "h", interval: 24 }, + { label: "d", interval: 7 }, + { label: "wk", interval: null }, + ]; + const bIntervals = blinq(intervals); + + const pt = (secs: number) => { + const isNegative = secs < 0; + secs = Math.abs(secs); + const agg = bIntervals.aggregate( + { parts: [] as (string | null)[], rem: secs }, + (acc, curr) => { + const v = curr.interval + ? (acc.rem | 0) % curr.interval + : acc.rem | 0; + const vs = v > 0 ? `${v}${curr.label}` : null; + const r = acc.rem / (curr.interval == null ? 1 : curr.interval); + return { parts: [...acc.parts, vs], rem: r }; + } + ); + const parts = blinq(agg.parts) + .reverse() + .where(s => s != null) + .toArray(); + const absPretty = parts.length === 0 ? "0s" : parts.join(" "); + + return `${isNegative ? "-" : ""}${absPretty}`; + }; + return pt; +})(); diff --git a/src/shared/system/redux-saga/resourceScope.ts b/src/shared/system/redux-saga/resourceScope.ts new file mode 100644 index 00000000..400e6b30 --- /dev/null +++ b/src/shared/system/redux-saga/resourceScope.ts @@ -0,0 +1,51 @@ +import { isPromise } from "../isPromise"; +import { call } from "redux-saga/effects"; + +export const resourceScope = ( + factory: (() => T | Promise) | T, + cleanup: (item: T) => void | Promise | IterableIterator +): ResourceScope => { + return { + *use( + action: (item: T) => IterableIterator | Promise | void + ) { + let item: T; + if (typeof factory === "function") { + const itemOrPromise = (factory as (() => T | Promise))(); + if (isPromise(itemOrPromise)) { + item = yield call(() => itemOrPromise); + } else { + item = itemOrPromise as T; + } + } else { + item = factory; + } + + try { + const actionResult = action(item); + if (isPromise(actionResult)) { + yield call(() => actionResult); + } else if ((actionResult as any)[Symbol.iterator]) { + yield* actionResult as IterableIterator; + } + } catch (ex) { + console.log("Use threw :", ex); + throw ex; + } finally { + const pp = cleanup(item); + if (pp) { + if (isPromise(pp)) { + yield call(() => pp); + } else if ((pp as any)[Symbol.iterator]) { + yield* pp as IterableIterator; + } + } + } + }, + }; +}; +export interface ResourceScope { + use( + action: (item: T) => IterableIterator | Promise | void + ): IterableIterator; +} diff --git a/src/shared/system/redux-saga/takeBatch.ts b/src/shared/system/redux-saga/takeBatch.ts new file mode 100644 index 00000000..c1fc9c42 --- /dev/null +++ b/src/shared/system/redux-saga/takeBatch.ts @@ -0,0 +1,64 @@ +import { Channel } from "redux-saga"; +import { call, take, race, Pattern } from "redux-saga/effects"; +import { delay } from "../delay"; +interface TakeBatchOptions { + minDurationMs: number; + maxDurationMs?: number; + maxSize?: number; +} +const defaultTakeBatchOptions: TakeBatchOptions = { + minDurationMs: 1000, +}; +const neverPromise = new Promise(() => {}); +const neverEffect = call(() => neverPromise); +export const takeBatch = ( + patOrChan: Pattern | Channel, + opts: Partial = {} +) => { + const { minDurationMs, maxDurationMs, maxSize } = { + ...defaultTakeBatchOptions, + ...opts, + }; + return call(function*() { + const receivedEvts: T[] = []; + const evt: T = yield take(patOrChan as any); + const batchMaxDelay = + maxDurationMs != null ? delay(maxDurationMs) : neverEffect; + receivedEvts.push(evt); + for (;;) { + const takeFx = take(patOrChan as any); + type RaceResult = { + evt: T; + nextMessageTimeout: unknown; + maxTimeout: unknown; + }; + const { + evt, + nextMessageTimeout, + maxTimeout, + }: RaceResult = yield race({ + evt: takeFx, + nextMessageTimeout: delay(minDurationMs), + maxTimeout: call(() => batchMaxDelay), + }); + + if (evt) { + receivedEvts.push(evt); + } + if ( + nextMessageTimeout || + (maxSize != null && receivedEvts.length >= maxSize) || + maxTimeout + ) { + // console.log(`sending batch`, { + // evt: !!evt, + // nextMessageTimeout: !!nextMessageTimeout, + // maxtTimeout: !!maxTimeout, + // numMessages: receivedEvts.length, + // }); + break; + } + } + return receivedEvts; + }); +}; diff --git a/src/shared/system/tuple.ts b/src/shared/system/tuple.ts new file mode 100644 index 00000000..2b4e8a7d --- /dev/null +++ b/src/shared/system/tuple.ts @@ -0,0 +1,4 @@ +// https://stackoverflow.com/a/48687313/14357 +export function tuple(...data: T) { + return data; +} \ No newline at end of file diff --git a/src/shared/types/DownloadState.ts b/src/shared/types/DownloadState.ts new file mode 100644 index 00000000..556d0046 --- /dev/null +++ b/src/shared/types/DownloadState.ts @@ -0,0 +1 @@ +export type DownloadState = "ready" | "starting" | "downloading" | "downloaded" | "failed"; diff --git a/src/shared/types/DownloadableFile.ts b/src/shared/types/DownloadableFile.ts new file mode 100644 index 00000000..86ad9589 --- /dev/null +++ b/src/shared/types/DownloadableFile.ts @@ -0,0 +1,10 @@ +import { PublicSharedFile } from "./PublicSharedFile"; +import { DownloadState } from "./DownloadState"; +export interface DownloadableFile { + file: PublicSharedFile; + state: DownloadState; + progressPct: number; + progressStatus?: string; + speed: number; + eta?: number; +} diff --git a/src/shared/types/PublicSharedFile.ts b/src/shared/types/PublicSharedFile.ts index 55a29146..1fafc059 100644 --- a/src/shared/types/PublicSharedFile.ts +++ b/src/shared/types/PublicSharedFile.ts @@ -1,6 +1,6 @@ export interface PublicSharedFile { fileName: string; - hash: string; + //hash: string; size: number; contentType: string; } diff --git a/src/shared/types/SharedFile.ts b/src/shared/types/SharedFile.ts index 833d5203..1872e118 100644 --- a/src/shared/types/SharedFile.ts +++ b/src/shared/types/SharedFile.ts @@ -5,5 +5,5 @@ export interface SharedFile { size?: number; contentType?: string; direction: "in" | "out"; - hash?:string + //hash?:string } diff --git a/src/shared/types/SharedFilesFetchState.ts b/src/shared/types/SharedFilesFetchState.ts new file mode 100644 index 00000000..ad4c1285 --- /dev/null +++ b/src/shared/types/SharedFilesFetchState.ts @@ -0,0 +1 @@ +export type SharedFilesFetchState = "initial" | "downloading" | "success" | "failed"; diff --git a/src/shared/types/SharedFilesState.ts b/src/shared/types/SharedFilesState.ts new file mode 100644 index 00000000..8e292320 --- /dev/null +++ b/src/shared/types/SharedFilesState.ts @@ -0,0 +1,8 @@ +import { DownloadableFile } from "./DownloadableFile"; +import { SharedFilesFetchState } from "./SharedFilesFetchState"; +export interface SharedFilesState { + linkedUserName?: string; + linkedCommonName?: string; + downloadableFiles?: DownloadableFile[]; + state: SharedFilesFetchState; +} diff --git a/src/tests/misc/createLocalAction.spec.ts b/src/tests/misc/createLocalAction.spec.ts index 00073be4..67b7a472 100644 --- a/src/tests/misc/createLocalAction.spec.ts +++ b/src/tests/misc/createLocalAction.spec.ts @@ -22,10 +22,8 @@ test("createLocalAction", () => { expect(getType(createStandardAction("foo")())).toBe("foo") const ac1Type = getType(ac1); - console.log(ac1Type) expect(ac1Type).toBe("actionname") const ac2Type = getType(ac2); - console.log(ac2Type) expect(ac2Type).toBe("actionname2") }) \ No newline at end of file diff --git a/src/tests/misc/deepMerge.spec.ts b/src/tests/misc/deepMerge.spec.ts index f05e0faf..a51f7588 100644 --- a/src/tests/misc/deepMerge.spec.ts +++ b/src/tests/misc/deepMerge.spec.ts @@ -2,82 +2,124 @@ import { deepMerge } from "../../shared/system/deepMerge"; // import { blinq } from "blinq"; // import { Enumerable } from "blinq/dist/types/src/Enumerable"; interface B { - c: number - d: string + c: number; + d: string; } interface A { - a: number - b: Partial - e: boolean + a: number; + b: Partial; + e: boolean; } - test("misc", () => { - const a: A = { a: 1, b: { c: 2, d: "foo" }, e: false } - const b: Partial = { e: true } - const c: Partial = { a: 2 } - - const merged = deepMerge(a, b, c) + const a: A = { a: 1, b: { c: 2, d: "foo" }, e: false }; + const b: Partial = { e: true }; + const c: Partial = { a: 2 }; - expect(merged).not.toBe(a) - expect(merged).not.toBe(b) - expect(merged).not.toBe(c) + const merged = deepMerge(a, b, c); - expect(merged).toEqual({ a: 2, b: { c: 2, d: "foo" }, e: true }) - const d: Partial = { b: { d: "woo" } } - const merged2 = deepMerge(a, d, b, c) - expect(merged2).toEqual({ a: 2, b: { c: 2, d: "woo" }, e: true }) - const e: Partial = { b: { d: "doo" } } - const merged3 = deepMerge(a, d, b, c, e) - expect(merged3).toEqual({ a: 2, b: { c: 2, d: "doo" }, e: true }) - const merged4 = deepMerge(a, b, c, e, d) - expect(merged4).toEqual({ a: 2, b: { c: 2, d: "woo" }, e: true }) + expect(merged).not.toBe(a); + expect(merged).not.toBe(b); + expect(merged).not.toBe(c); + expect(merged).toEqual({ a: 2, b: { c: 2, d: "foo" }, e: true }); + const d: Partial = { b: { d: "woo" } }; + const merged2 = deepMerge(a, d, b, c); + expect(merged2).toEqual({ a: 2, b: { c: 2, d: "woo" }, e: true }); + const e: Partial = { b: { d: "doo" } }; + const merged3 = deepMerge(a, d, b, c, e); + expect(merged3).toEqual({ a: 2, b: { c: 2, d: "doo" }, e: true }); + const merged4 = deepMerge(a, b, c, e, d); + expect(merged4).toEqual({ a: 2, b: { c: 2, d: "woo" }, e: true }); - expect(deepMerge( - { - b: 3, - c: 5 - }, - { - a: 1, - b: 2, - cx: { - x: 55, - y: 66 + expect( + deepMerge( + { + b: 3, + c: 5, + }, + { + a: 1, + b: 2, + cx: { + x: 55, + y: 66, + }, + }, + { + cx: { + x: 77, + }, } + ) + ).toEqual({ + a: 1, + b: 2, + c: 5, + cx: { + x: 77, + y: 66, }, - { - cx: { - x: 77 - } - })) - .toEqual({ - a: 1, - b: 2, - c: 5, - cx: { - x: 77, - y: 66 - } - }) -}) + }); +}); test("reuses equal structures", () => { - const zz = { zz: 11 } + const zz = { zz: 11 }; - expect(deepMerge(zz, zz)).toBe(zz) -}) + expect(deepMerge(zz, zz)).toBe(zz); +}); test("deep reuses equal structures", () => { + const zz = { zz: 11 }; + const aa = { a: 1, z: zz }; + const bb = { a: 2, z: zz }; + const cc = deepMerge(aa, bb); + expect(cc.z).toBe(zz); +}); + +test("throws with no params", () => expect(() => deepMerge()).toThrow()); +test("treats arrays as unmergeable", () => + expect(deepMerge([1, 2], [3, 4])).toEqual([3, 4])); +test("treats numbers as unmergeable", () => expect(deepMerge(1, 2)).toEqual(2)); +test("throws with mixed mergeable/unmergeable items", () => + expect(() => deepMerge({ a: 1 }, 2 as any)).toThrow()); +test("throws with mixed mergeable/unmergeable items, deep in graph", () => + expect(() => deepMerge({ a: { b: 2 } }, { a: 1 })).toThrow()); - const zz = { zz: 11 } - const aa = { a: 1, z: zz } - const bb = { a: 2, z: zz } - const cc = deepMerge(aa, bb) - expect(cc.z).toBe(zz) -}) +const badData = [ + { + in: undefined, + out: { + emptyfile: { + contentType: "application/octet-stream", + direction: "out", + hash: "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", + path: + "/home/spender/.pshare/share/hfchrissperry1001/out/emptyfile", + relativePath: "emptyfile", + sharedWith: "hfchrissperry1001", + size: 0, + }, + }, + }, + { + out: { + emptyfile: { + contentType: "application/octet-stream", + direction: "out", + hash: "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", + path: + "/home/spender/.pshare/share/hfchrissperry1001/out/emptyfile", + relativePath: "emptyfile", + sharedWith: "hfchrissperry1001", + size: 0, + }, + }, + }, +]; -test("throws with no params", () => expect(() => deepMerge()).toThrow()) -test("treats arrays as unmergeable", () => expect(deepMerge([1, 2], [3, 4])).toEqual([3, 4])) -test("treats numbers as unmergeable", () => expect(deepMerge(1, 2)).toEqual(2)) -test("throws with mixed mergeable/unmergeable items", () => expect(() => deepMerge({ a: 1 }, 2 as any)).toThrow()) -test("throws with mixed mergeable/unmergeable items, deep in graph", () => expect(() => deepMerge({ a: { b: 2 } }, { a: 1 })).toThrow()) \ No newline at end of file +test("works with badData", () => { + //console.log(badData[0]) + //console.log(badData[1]) + const merged = deepMerge(badData[0], badData[1]); + //console.log(merged) + expect(merged).toBeDefined(); +}); diff --git a/src/tests/misc/deleteOptionalProperty.spec.ts b/src/tests/misc/deleteOptionalProperty.spec.ts index 59596860..be8c9c92 100644 --- a/src/tests/misc/deleteOptionalProperty.spec.ts +++ b/src/tests/misc/deleteOptionalProperty.spec.ts @@ -1,4 +1,5 @@ -import { deleteOptionalProperty, deleteOptionalProperties } from "../../shared/system/deleteOptionalProperty"; +import { deleteOptionalProperty } from "../../shared/system/deleteOptionalProperty"; +import { deleteOptionalProperties } from "../../shared/system/deleteOptionalProperties"; interface A { one: string diff --git a/src/tests/misc/fileListToTree.spec.ts b/src/tests/misc/fileListToTree.spec.ts new file mode 100644 index 00000000..3f02f135 --- /dev/null +++ b/src/tests/misc/fileListToTree.spec.ts @@ -0,0 +1,85 @@ +import { fileListToTree } from "../../shared/system/file/fileListToTree"; +import { SharedFile } from "../../shared/types/SharedFile"; + +const testData = [ + "home/user1/Documents/bandwidths.ods", + "home/user1/Documents/invoices/HID-001.odt", +]; + +const mappedTestData: SharedFile[] = testData.map(path => ({ + sharedWith: "string", + relativePath: path, + path, + size: 123, + contentType: "string", + direction: "out", +})); + +const expectedTree = { + type: "directory", + entries: [ + { + name: "home", + type: "directory", + entries: [ + { + name: "user1", + type: "directory", + entries: [ + { + name: "Documents", + type: "directory", + entries: [ + { + type: "file", + name: "bandwidths.ods", + fileInfo: { + sharedWith: "string", + relativePath: + "home/user1/Documents/bandwidths.ods", + path: + "home/user1/Documents/bandwidths.ods", + size: 123, + contentType: "string", + direction: "out", + }, + }, + { + name: "invoices", + type: "directory", + entries: [ + { + type: "file", + name: "HID-001.odt", + fileInfo: { + sharedWith: "string", + relativePath: + "home/user1/Documents/invoices/HID-001.odt", + path: + "home/user1/Documents/invoices/HID-001.odt", + size: 123, + contentType: "string", + direction: "out", + }, + }, + ], + fullPath: "home/user1/Documents/invoices", + }, + ], + fullPath: "home/user1/Documents", + }, + ], + fullPath: "home/user1", + }, + ], + fullPath: "home", + }, + ], + fullPath: ".", +}; + +test("fileListToTree", () => { + const result = fileListToTree(mappedTestData); + //console.log(JSON.stringify(result, null, 2)); + expect(result).toEqual(expectedTree); +}); diff --git a/src/tests/misc/fileWatchReducer.spec.ts b/src/tests/misc/fileWatchReducer.spec.ts new file mode 100644 index 00000000..31ad4096 --- /dev/null +++ b/src/tests/misc/fileWatchReducer.spec.ts @@ -0,0 +1,80 @@ +import { fileWatch } from "../../shared/reducers"; +import { FileWatchActions } from "../../shared/actions/fileWatch"; + +test("fileWatch reducer", () => { + const defaultState = fileWatch(undefined, { type: "" } as any); + const newState = fileWatch( + defaultState, + FileWatchActions.filesChanged([ + { + type: "added", + file: { + direction: "out", + path: "/a/b/c", + relativePath: "b/c", + sharedWith: "monkeyMan", + }, + }, + { + type: "added", + file: { + direction: "out", + path: "/a/b/c/d", + relativePath: "b/c/d", + sharedWith: "monkeyMan", + }, + }, + { + type: "added", + file: { + direction: "in", + path: "/a/b/c/d", + relativePath: "b/c/d", + sharedWith: "monkeyMan", + }, + }, + { + type: "unlinked", + file: { + direction: "out", + path: "/a/b/c/d", + relativePath: "b/c/d", + sharedWith: "monkeyMan", + }, + }, + { + type: "unlinked", + file: { + direction: "out", + path: "/a/b/c", + relativePath: "b/c", + sharedWith: "monkeyMan", + }, + }, + { + type: "unlinked", + file: { + direction: "out", + path: "/a/b/c", + relativePath: "b/c/foo", + sharedWith: "monkeyMan", + }, + }, + ]) + ); + expect(newState).toEqual({ + users: { + monkeyMan: { + in: { + "b/c/d": { + direction: "in", + path: "/a/b/c/d", + relativePath: "b/c/d", + sharedWith: "monkeyMan", + }, + }, + out: {}, + }, + }, + }); +}); diff --git a/src/tests/misc/getDirectoryListing.spec.ts b/src/tests/misc/getDirectoryListing.spec.ts new file mode 100644 index 00000000..1411aafd --- /dev/null +++ b/src/tests/misc/getDirectoryListing.spec.ts @@ -0,0 +1,233 @@ +import { SharedFile } from "../../shared/types/SharedFile"; + +import { fileListToTree } from "../../shared/system/file/fileListToTree"; +import { getDirectoryListing } from "../../shared/system/file/getDirectoryListing"; + +const testData = [ + "home/user1/Documents/bandwidths.ods", + "home/user1/Documents/invoices/HID-001.odt", + "magic/home/user1/Documents/invoices/HID-001.odt", +]; + +const mappedTestData: SharedFile[] = testData.map(path => ({ + sharedWith: "string", + relativePath: path, + path, + size: 123, + contentType: "string", + direction: "out", +})); + +const expectedEntries = [ + { + type: "file", + name: "HID-001.odt", + fileInfo: { + sharedWith: "string", + relativePath: "home/user1/Documents/invoices/HID-001.odt", + path: "home/user1/Documents/invoices/HID-001.odt", + size: 123, + contentType: "string", + direction: "out", + }, + }, +]; +const expectedEntries1 = [ + { + type: "file", + name: "HID-001.odt", + fileInfo: { + sharedWith: "string", + relativePath: "magic/home/user1/Documents/invoices/HID-001.odt", + path: "magic/home/user1/Documents/invoices/HID-001.odt", + size: 123, + contentType: "string", + direction: "out", + }, + }, +]; + +const expectedEntries2 = [ + { + type: "file", + name: "bandwidths.ods", + fileInfo: { + sharedWith: "string", + relativePath: "home/user1/Documents/bandwidths.ods", + path: "home/user1/Documents/bandwidths.ods", + size: 123, + contentType: "string", + direction: "out", + }, + }, + { + name: "invoices", + type: "directory", + entries: [ + { + type: "file", + name: "HID-001.odt", + fileInfo: { + sharedWith: "string", + relativePath: "home/user1/Documents/invoices/HID-001.odt", + path: "home/user1/Documents/invoices/HID-001.odt", + size: 123, + contentType: "string", + direction: "out", + }, + }, + ], + fullPath: "home/user1/Documents/invoices", + }, +]; + +const rootEntry = [ + { + name: "home", + type: "directory", + fullPath: "home", + entries: [ + { + name: "user1", + type: "directory", + fullPath: "home/user1", + entries: [ + { + name: "Documents", + type: "directory", + fullPath: "home/user1/Documents", + entries: [ + { + type: "file", + name: "bandwidths.ods", + fileInfo: { + sharedWith: "string", + relativePath: + "home/user1/Documents/bandwidths.ods", + path: "home/user1/Documents/bandwidths.ods", + size: 123, + contentType: "string", + direction: "out", + }, + }, + { + name: "invoices", + type: "directory", + fullPath: "home/user1/Documents/invoices", + entries: [ + { + type: "file", + name: "HID-001.odt", + fileInfo: { + sharedWith: "string", + relativePath: + "home/user1/Documents/invoices/HID-001.odt", + path: + "home/user1/Documents/invoices/HID-001.odt", + size: 123, + contentType: "string", + direction: "out", + }, + }, + ], + }, + ], + }, + ], + }, + ], + }, + { + name: "magic", + type: "directory", + fullPath: "magic", + entries: [ + { + name: "home", + type: "directory", + fullPath: "magic/home", + + entries: [ + { + name: "user1", + type: "directory", + fullPath: "magic/home/user1", + + entries: [ + { + name: "Documents", + type: "directory", + fullPath: "magic/home/user1/Documents", + + entries: [ + { + name: "invoices", + type: "directory", + fullPath: + "magic/home/user1/Documents/invoices", + + entries: [ + { + type: "file", + name: "HID-001.odt", + fileInfo: { + sharedWith: "string", + relativePath: + "magic/home/user1/Documents/invoices/HID-001.odt", + path: + "magic/home/user1/Documents/invoices/HID-001.odt", + size: 123, + contentType: "string", + direction: "out", + }, + }, + ], + }, + ], + }, + ], + }, + ], + }, + ], + }, +]; + +test("getDirectoryListing", () => { + const root = fileListToTree(mappedTestData); + //console.log(JSON.stringify(root,null,2)) + { + const directoryListing = getDirectoryListing( + "home/user1/Documents/invoices", + root + ); + expect(directoryListing).toEqual(expectedEntries); + // const directoryListing2 = getDirectoryListing("/home/user1/Documents/invoices/", root) + // expect(directoryListing2).toEqual(expectedEntries) + } + { + const directoryListing = getDirectoryListing( + "magic/home/user1/Documents/invoices", + root + ); + expect(directoryListing).toEqual(expectedEntries1); + // const directoryListing2 = getDirectoryListing("magic/home/user1/Documents/invoices/", root) + // expect(directoryListing2).toEqual(expectedEntries1) + } + { + const directoryListing = getDirectoryListing( + "home/user1/Documents", + root + ); + expect(directoryListing).toEqual(expectedEntries2); + // const directoryListing2 = getDirectoryListing("/home/user1/Documents/", root) + // expect(directoryListing2).toEqual(expectedEntries2) + } + { + const directoryListing = getDirectoryListing("", root); + expect(directoryListing).toEqual(rootEntry); + // const directoryListing2 = getDirectoryListing("/home/user1/Documents/", root) + // expect(directoryListing2).toEqual(expectedEntries2) + } + //console.log(JSON.stringify(getDirectoryListing("home", root), null, 2)) +}); diff --git a/src/tests/misc/resourceScope.spec.ts b/src/tests/misc/resourceScope.spec.ts new file mode 100644 index 00000000..3191cb65 --- /dev/null +++ b/src/tests/misc/resourceScope.spec.ts @@ -0,0 +1,24 @@ +import { resourceScope } from "../../shared/system/redux-saga/resourceScope"; + +test("resourceScope", () => { + var scope = resourceScope( + () => ({ used: false, message: "hello" }), + o => { + o.used = true; + } + ); + let oo: any; + let m: string | undefined; + var it = scope.use(function*(o) { + //console.log("scoped code running"); + oo = o; + m = o.message; + yield 666; + }); + for (const x of it) { + expect(m).toBe("hello"); + expect(x).toBe(666); + } + expect(oo).toBeDefined(); + expect(oo.used).toBeTruthy(); +}); diff --git a/src/tests/takeBatch.spec.ts b/src/tests/takeBatch.spec.ts new file mode 100644 index 00000000..0f188be8 --- /dev/null +++ b/src/tests/takeBatch.spec.ts @@ -0,0 +1,99 @@ +import { call, fork } from "redux-saga/effects"; +import { channel, Channel, END, delay, runSaga } from "redux-saga"; +import { takeBatch } from "../shared/system/redux-saga/takeBatch"; + +describe("takeBatch", () => { + test("maxDurationMs", async () => { + let theBatch: number[]; + const saga = function*() { + const chan: Channel = yield call(() => channel()); + yield fork(function*() { + for (let i = 0; i < 5; ++i) { + yield delay(300); + yield chan.put(i); + } + yield chan.put(END); + }); + const batch: number[] = yield takeBatch(chan, { + maxDurationMs: 1000, + maxSize: 1000, + minDurationMs: 500, + }); + theBatch = batch; + }; + + const dispatched: any[] = []; + + const s = runSaga( + { + dispatch: action => dispatched.push(action), + getState: () => ({ value: "test" }), + }, + saga + ); + await s.done; + expect(theBatch!.length).toBe(4); + }); + test("maxSize", async () => { + let theBatch: number[]; + const saga = function*() { + const chan: Channel = yield call(() => channel()); + yield fork(function*() { + for (let i = 0; i < 4; ++i) { + yield delay(300); + yield chan.put(i); + } + yield chan.put(END); + }); + const batch: number[] = yield takeBatch(chan, { + maxDurationMs: 1000000, + maxSize: 3, + minDurationMs: 500, + }); + theBatch = batch; + }; + + const dispatched: any[] = []; + + const s = runSaga( + { + dispatch: action => dispatched.push(action), + getState: () => ({ value: "test" }), + }, + saga + ); + await s.done; + expect(theBatch!.length).toBe(3); + }); + test("minDuration", async () => { + let theBatch: number[]; + const saga = function*() { + const chan: Channel = yield call(() => channel()); + yield fork(function*() { + for (let i = 0; i < 2; ++i) { + yield delay(300); + yield chan.put(i); + } + yield chan.put(END); + }); + const batch: number[] = yield takeBatch(chan, { + maxDurationMs: 1000000, + maxSize: 3, + minDurationMs: 200, + }); + theBatch = batch; + }; + + const dispatched: any[] = []; + + const s = runSaga( + { + dispatch: action => dispatched.push(action), + getState: () => ({ value: "test" }), + }, + saga + ); + await s.done; + expect(theBatch!.length).toBe(1); + }); +}); diff --git a/src/types/react-copy-to-clipboard.ts b/src/types/react-copy-to-clipboard.ts new file mode 100644 index 00000000..ab7b9b65 --- /dev/null +++ b/src/types/react-copy-to-clipboard.ts @@ -0,0 +1 @@ +declare module 'react-copy-to-clipboard'; \ No newline at end of file diff --git a/static/dynamicd/dynamic.default.conf b/static/dynamicd/dynamic.default.conf index dccbe22d..7af4f0c0 100644 --- a/static/dynamicd/dynamic.default.conf +++ b/static/dynamicd/dynamic.default.conf @@ -1,17 +1,7 @@ #Do not use special characters with username/password rpcuser=CWIXE4bsgA rpcpassword=KT7xrPgVWWvakblJApSh8 -#rpcport=33350 -#port=33300 -privatenet=1 -#daemon=1 server=1 -rpcbind=0.0.0.0 -rpcallowip=0.0.0.0/0 -addnode=159.203.17.98 -addnode=18.214.64.9 -addnode=178.128.144.29 -addnode=206.189.30.176 -addnode=178.128.180.138 -addnode=178.128.63.114 -addnode=138.197.167.18 +rpcbind=127.0.0.1 +rpcallowip=127.0.0.1 +stealthtx=1 diff --git a/yarn.lock b/yarn.lock index beebe68c..a7fb0ac0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,24 +4,50 @@ "7zip-bin@~4.1.0": version "4.1.0" - resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-4.1.0.tgz#33eff662a5c39c0c2061170cc003c5120743fff0" + resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-4.1.0.tgz" integrity sha512-AsnBZN3a8/JcNt+KPkGGODaA4c7l3W5+WpeKgGSbstSLxqWtTXqd1ieJGBQ8IFCtRg8DmmKUcSkIkUc0A4p3YA== "7zip@0.0.6": version "0.0.6" - resolved "https://registry.yarnpkg.com/7zip/-/7zip-0.0.6.tgz#9cafb171af82329490353b4816f03347aa150a30" - integrity sha1-nK+xca+CMpSQNTtIFvAzR6oVCjA= + resolved "https://registry.yarnpkg.com/7zip/-/7zip-0.0.6.tgz" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35": +"@babel/code-frame@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz" integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== dependencies: "@babel/highlight" "^7.0.0" +"@babel/code-frame@^7.5.5": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" + integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@^7.1.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.6.0.tgz#9b00f73554edd67bebc86df8303ef678be3d7b48" + integrity sha512-FuRhDRtsd6IptKpHXAa+4WPZYY2ZzgowkbLBecEDDSje1X/apG7jQM33or3NdOmjXBKWGOg4JmSiRfUfuTtHXw== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.6.0" + "@babel/helpers" "^7.6.0" + "@babel/parser" "^7.6.0" + "@babel/template" "^7.6.0" + "@babel/traverse" "^7.6.0" + "@babel/types" "^7.6.0" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/core@^7.1.2", "@babel/core@^7.1.6": version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.6.tgz#3733cbee4317429bc87c62b29cf8587dba7baeb3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.6.tgz" integrity sha512-Hz6PJT6e44iUNpAn8AoyAs6B3bl60g7MJQaI0rZEar6ECzh6+srYO1xlIdssio34mPaUtAb1y+XlkkSJzok3yw== dependencies: "@babel/code-frame" "^7.0.0" @@ -41,7 +67,7 @@ "@babel/generator@^7.1.6": version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.6.tgz#001303cf87a5b9d093494a4bf251d7b5d03d3999" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.6.tgz" integrity sha512-brwPBtVvdYdGxtenbQgfCdDPmtkmUBZPjUoK5SXJEBuHaA5BCubh9ly65fzXz7R6o5rA76Rs22ES8Z+HCc0YIQ== dependencies: "@babel/types" "^7.1.6" @@ -50,16 +76,27 @@ source-map "^0.5.0" trim-right "^1.0.1" +"@babel/generator@^7.4.0", "@babel/generator@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.6.0.tgz#e2c21efbfd3293ad819a2359b448f002bfdfda56" + integrity sha512-Ms8Mo7YBdMMn1BYuNtKuP/z0TgEIhbcyB8HVR6PPNYp4P61lMsABiS4A3VG1qznjXVCf3r+fVHhm4efTYVsySA== + dependencies: + "@babel/types" "^7.6.0" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + trim-right "^1.0.1" + "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz" integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== dependencies: "@babel/types" "^7.0.0" "@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz" integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== dependencies: "@babel/helper-explode-assignable-expression" "^7.1.0" @@ -67,7 +104,7 @@ "@babel/helper-builder-react-jsx@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz#fa154cb53eb918cf2a9a7ce928e29eb649c5acdb" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz" integrity sha512-ebJ2JM6NAKW0fQEqN8hOLxK84RbRz9OkUhGS/Xd5u56ejMfVbayJ4+LykERZCOUM6faa6Fp3SZNX3fcT16MKHw== dependencies: "@babel/types" "^7.0.0" @@ -75,7 +112,7 @@ "@babel/helper-call-delegate@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz" integrity sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ== dependencies: "@babel/helper-hoist-variables" "^7.0.0" @@ -84,7 +121,7 @@ "@babel/helper-define-map@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz" integrity sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg== dependencies: "@babel/helper-function-name" "^7.1.0" @@ -93,7 +130,7 @@ "@babel/helper-explode-assignable-expression@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz" integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== dependencies: "@babel/traverse" "^7.1.0" @@ -101,7 +138,7 @@ "@babel/helper-function-name@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz" integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== dependencies: "@babel/helper-get-function-arity" "^7.0.0" @@ -110,28 +147,28 @@ "@babel/helper-get-function-arity@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz" integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== dependencies: "@babel/types" "^7.0.0" "@babel/helper-hoist-variables@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz" integrity sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w== dependencies: "@babel/types" "^7.0.0" "@babel/helper-member-expression-to-functions@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz" integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== dependencies: "@babel/types" "^7.0.0" "@babel/helper-module-imports@7.0.0-beta.35": version "7.0.0-beta.35" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz#308e350e731752cdb4d0f058df1d704925c64e0a" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz" integrity sha512-vaC1KyIZSuyWb3Lj277fX0pxivyHwuDU4xZsofqgYAbkDxNieMg2vuhzP5AgMweMY7fCQUMTi+BgPqTLjkxXFg== dependencies: "@babel/types" "7.0.0-beta.35" @@ -139,14 +176,14 @@ "@babel/helper-module-imports@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz" integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== dependencies: "@babel/types" "^7.0.0" "@babel/helper-module-transforms@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz#470d4f9676d9fad50b324cdcce5fbabbc3da5787" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz" integrity sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw== dependencies: "@babel/helper-module-imports" "^7.0.0" @@ -158,26 +195,26 @@ "@babel/helper-optimise-call-expression@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz" integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== dependencies: "@babel/types" "^7.0.0" "@babel/helper-plugin-utils@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz" integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== "@babel/helper-regex@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz" integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg== dependencies: lodash "^4.17.10" "@babel/helper-remap-async-to-generator@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz" integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" @@ -188,7 +225,7 @@ "@babel/helper-replace-supers@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz#5fc31de522ec0ef0899dc9b3e7cf6a5dd655f362" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz" integrity sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ== dependencies: "@babel/helper-member-expression-to-functions" "^7.0.0" @@ -198,7 +235,7 @@ "@babel/helper-simple-access@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz" integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== dependencies: "@babel/template" "^7.1.0" @@ -206,14 +243,21 @@ "@babel/helper-split-export-declaration@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz" integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== dependencies: "@babel/types" "^7.0.0" +"@babel/helper-split-export-declaration@^7.4.4": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" + integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== + dependencies: + "@babel/types" "^7.4.4" + "@babel/helper-wrap-function@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz#8cf54e9190706067f016af8f75cb3df829cc8c66" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz" integrity sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA== dependencies: "@babel/helper-function-name" "^7.1.0" @@ -223,30 +267,49 @@ "@babel/helpers@^7.1.5": version "7.1.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.1.5.tgz#68bfc1895d685f2b8f1995e788dbfe1f6ccb1996" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.1.5.tgz" integrity sha512-2jkcdL02ywNBry1YNFAH/fViq4fXG0vdckHqeJk+75fpQ2OH+Az6076tX/M0835zA45E0Cqa6pV5Kiv9YOqjEg== dependencies: "@babel/template" "^7.1.2" "@babel/traverse" "^7.1.5" "@babel/types" "^7.1.5" +"@babel/helpers@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.6.0.tgz#21961d16c6a3c3ab597325c34c465c0887d31c6e" + integrity sha512-W9kao7OBleOjfXtFGgArGRX6eCP0UEcA2ZWEWNkJdRZnHhW4eEbeswbG3EwaRsnQUAEGWYgMq1HsIXuNNNy2eQ== + dependencies: + "@babel/template" "^7.6.0" + "@babel/traverse" "^7.6.0" + "@babel/types" "^7.6.0" + "@babel/highlight@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz" integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^4.0.0" +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b" + integrity sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g== + "@babel/parser@^7.1.2", "@babel/parser@^7.1.6": version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.6.tgz#16e97aca1ec1062324a01c5a6a7d0df8dd189854" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.6.tgz" integrity sha512-dWP6LJm9nKT6ALaa+bnL247GHHMWir3vSlZ2+IHgHgktZQx0L3Uvq2uAWcuzIe+fujRsYWBW2q622C5UvGK9iQ== +"@babel/parser@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.6.0.tgz#3e05d0647432a8326cb28d0de03895ae5a57f39b" + integrity sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ== + "@babel/plugin-proposal-async-generator-functions@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz#41c1a702e10081456e23a7b74d891922dd1bb6ce" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz" integrity sha512-Fq803F3Jcxo20MXUSDdmZZXrPe6BWyGcWBPPNB/M7WaUYESKDeKMOGIxEzQOjGSmW/NWb6UaPZrtTB2ekhB/ew== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -255,7 +318,7 @@ "@babel/plugin-proposal-json-strings@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz#3b4d7b5cf51e1f2e70f52351d28d44fc2970d01e" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz" integrity sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -263,7 +326,7 @@ "@babel/plugin-proposal-object-rest-spread@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz" integrity sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -271,7 +334,7 @@ "@babel/plugin-proposal-optional-catch-binding@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz#b610d928fe551ff7117d42c8bb410eec312a6425" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz" integrity sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -279,7 +342,7 @@ "@babel/plugin-proposal-unicode-property-regex@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz#498b39cd72536cd7c4b26177d030226eba08cd33" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz" integrity sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -288,56 +351,56 @@ "@babel/plugin-syntax-async-generators@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz#bf0891dcdbf59558359d0c626fdc9490e20bc13c" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz" integrity sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-dynamic-import@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz#6dfb7d8b6c3be14ce952962f658f3b7eb54c33ee" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0.tgz" integrity sha512-Gt9xNyRrCHCiyX/ZxDGOcBnlJl0I3IWicpZRC4CdC0P5a/I07Ya2OAMEBU+J7GmRFVmIetqEYRko6QYRuKOESw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-json-strings@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz#0d259a68090e15b383ce3710e01d5b23f3770cbd" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz" integrity sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-jsx@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz#034d5e2b4e14ccaea2e4c137af7e4afb39375ffd" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz" integrity sha512-PdmL2AoPsCLWxhIr3kG2+F9v4WH06Q3z+NoGVpQgnUNGcagXHq5sB3OXxkSahKq9TLdNMN/AJzFYSOo8UKDMHg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz#37d8fbcaf216bd658ea1aebbeb8b75e88ebc549b" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz" integrity sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-optional-catch-binding@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz#886f72008b3a8b185977f7cb70713b45e51ee475" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz" integrity sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-arrow-functions@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz#a6c14875848c68a3b4b3163a486535ef25c7e749" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz" integrity sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-async-to-generator@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.1.0.tgz#109e036496c51dd65857e16acab3bafdf3c57811" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.1.0.tgz" integrity sha512-rNmcmoQ78IrvNCIt/R9U+cixUHeYAzgusTFgIAv+wQb9HJU4szhpDD6e5GCACmj/JP5KxuCwM96bX3L9v4ZN/g== dependencies: "@babel/helper-module-imports" "^7.0.0" @@ -346,14 +409,14 @@ "@babel/plugin-transform-block-scoped-functions@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz#482b3f75103927e37288b3b67b65f848e2aa0d07" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz" integrity sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-block-scoping@^7.1.5": version "7.1.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.1.5.tgz#3e8e0bc9a5104519923302a24f748f72f2f61f37" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.1.5.tgz" integrity sha512-jlYcDrz+5ayWC7mxgpn1Wj8zj0mmjCT2w0mPIMSwO926eXBRxpEgoN/uQVRBfjtr8ayjcmS+xk2G1jaP8JjMJQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -361,7 +424,7 @@ "@babel/plugin-transform-classes@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz#ab3f8a564361800cbc8ab1ca6f21108038432249" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz" integrity sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" @@ -375,21 +438,21 @@ "@babel/plugin-transform-computed-properties@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz#2fbb8900cd3e8258f2a2ede909b90e7556185e31" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz" integrity sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-destructuring@^7.0.0": version "7.1.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.3.tgz#e69ff50ca01fac6cb72863c544e516c2b193012f" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.3.tgz" integrity sha512-Mb9M4DGIOspH1ExHOUnn2UUXFOyVTiX84fXCd+6B5iWrQg/QMeeRmSwpZ9lnjYLSXtZwiw80ytVMr3zue0ucYw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-dotall-regex@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz#73a24da69bc3c370251f43a3d048198546115e58" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz" integrity sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -398,14 +461,14 @@ "@babel/plugin-transform-duplicate-keys@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz#a0601e580991e7cace080e4cf919cfd58da74e86" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz" integrity sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-exponentiation-operator@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.1.0.tgz#9c34c2ee7fd77e02779cfa37e403a2e1003ccc73" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.1.0.tgz" integrity sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" @@ -413,14 +476,14 @@ "@babel/plugin-transform-for-of@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz#f2ba4eadb83bd17dc3c7e9b30f4707365e1c3e39" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz" integrity sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-function-name@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.1.0.tgz#29c5550d5c46208e7f730516d41eeddd4affadbb" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.1.0.tgz" integrity sha512-VxOa1TMlFMtqPW2IDYZQaHsFrq/dDoIjgN098NowhexhZcz3UGlvPgZXuE1jEvNygyWyxRacqDpCZt+par1FNg== dependencies: "@babel/helper-function-name" "^7.1.0" @@ -428,14 +491,14 @@ "@babel/plugin-transform-literals@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz#2aec1d29cdd24c407359c930cdd89e914ee8ff86" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz" integrity sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-modules-amd@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.1.0.tgz#f9e0a7072c12e296079b5a59f408ff5b97bf86a8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.1.0.tgz" integrity sha512-wt8P+xQ85rrnGNr2x1iV3DW32W8zrB6ctuBkYBbf5/ZzJY99Ob4MFgsZDFgczNU76iy9PWsy4EuxOliDjdKw6A== dependencies: "@babel/helper-module-transforms" "^7.1.0" @@ -443,7 +506,7 @@ "@babel/plugin-transform-modules-commonjs@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.1.0.tgz#0a9d86451cbbfb29bd15186306897c67f6f9a05c" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.1.0.tgz" integrity sha512-wtNwtMjn1XGwM0AXPspQgvmE6msSJP15CX2RVfpTSTNPLhKhaOjaIfBaVfj4iUZ/VrFSodcFedwtPg/NxwQlPA== dependencies: "@babel/helper-module-transforms" "^7.1.0" @@ -452,7 +515,7 @@ "@babel/plugin-transform-modules-systemjs@^7.0.0": version "7.1.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.1.3.tgz#2119a3e3db612fd74a19d88652efbfe9613a5db0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.1.3.tgz" integrity sha512-PvTxgjxQAq4pvVUZF3mD5gEtVDuId8NtWkJsZLEJZMZAW3TvgQl1pmydLLN1bM8huHFVVU43lf0uvjQj9FRkKw== dependencies: "@babel/helper-hoist-variables" "^7.0.0" @@ -460,7 +523,7 @@ "@babel/plugin-transform-modules-umd@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.1.0.tgz#a29a7d85d6f28c3561c33964442257cc6a21f2a8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.1.0.tgz" integrity sha512-enrRtn5TfRhMmbRwm7F8qOj0qEYByqUvTttPEGimcBH4CJHphjyK1Vg7sdU7JjeEmgSpM890IT/efS2nMHwYig== dependencies: "@babel/helper-module-transforms" "^7.1.0" @@ -468,14 +531,14 @@ "@babel/plugin-transform-new-target@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz" integrity sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-object-super@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.1.0.tgz#b1ae194a054b826d8d4ba7ca91486d4ada0f91bb" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.1.0.tgz" integrity sha512-/O02Je1CRTSk2SSJaq0xjwQ8hG4zhZGNjE8psTsSNPXyLRCODv7/PBozqT5AmQMzp7MI3ndvMhGdqp9c96tTEw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -483,7 +546,7 @@ "@babel/plugin-transform-parameters@^7.1.0": version "7.1.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.1.0.tgz#44f492f9d618c9124026e62301c296bf606a7aed" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.1.0.tgz" integrity sha512-vHV7oxkEJ8IHxTfRr3hNGzV446GAb+0hgbA7o/0Jd76s+YzccdWuTU296FOCOl/xweU4t/Ya4g41yWz80RFCRw== dependencies: "@babel/helper-call-delegate" "^7.1.0" @@ -492,14 +555,14 @@ "@babel/plugin-transform-react-display-name@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz#93759e6c023782e52c2da3b75eca60d4f10533ee" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.0.0.tgz" integrity sha512-BX8xKuQTO0HzINxT6j/GiCwoJB0AOMs0HmLbEnAvcte8U8rSkNa/eSCAY+l1OA4JnCVq2jw2p6U8QQryy2fTPg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-react-jsx-self@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0.tgz#a84bb70fea302d915ea81d9809e628266bb0bc11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.0.0.tgz" integrity sha512-pymy+AK12WO4safW1HmBpwagUQRl9cevNX+82AIAtU1pIdugqcH+nuYP03Ja6B+N4gliAaKWAegIBL/ymALPHA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -507,7 +570,7 @@ "@babel/plugin-transform-react-jsx-source@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0.tgz#28e00584f9598c0dd279f6280eee213fa0121c3c" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.0.0.tgz" integrity sha512-OSeEpFJEH5dw/TtxTg4nijl4nHBbhqbKL94Xo/Y17WKIf2qJWeIk/QeXACF19lG1vMezkxqruwnTjVizaW7u7w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -515,7 +578,7 @@ "@babel/plugin-transform-react-jsx@^7.0.0": version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.1.6.tgz#e6188e7d2a2dcd2796d45a87f8b0a8c906f57d1a" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.1.6.tgz" integrity sha512-iU/IUlPEYDRwuqLwqVobzPAZkBOQoZ9xRTBmj6ANuk5g/Egn/zdNGnXlSoKeNmKoYVeIRxx5GZhWmMhLik8dag== dependencies: "@babel/helper-builder-react-jsx" "^7.0.0" @@ -524,28 +587,28 @@ "@babel/plugin-transform-regenerator@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz" integrity sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw== dependencies: regenerator-transform "^0.13.3" "@babel/plugin-transform-shorthand-properties@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz#85f8af592dcc07647541a0350e8c95c7bf419d15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz" integrity sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-spread@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz#93583ce48dd8c85e53f3a46056c856e4af30b49b" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz" integrity sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-sticky-regex@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz#30a9d64ac2ab46eec087b8530535becd90e73366" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz" integrity sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -553,7 +616,7 @@ "@babel/plugin-transform-template-literals@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz#084f1952efe5b153ddae69eb8945f882c7a97c65" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz" integrity sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" @@ -561,14 +624,14 @@ "@babel/plugin-transform-typeof-symbol@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz#4dcf1e52e943e5267b7313bff347fdbe0f81cec9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz" integrity sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-unicode-regex@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz#c6780e5b1863a76fe792d90eded9fcd5b51d68fc" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz" integrity sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -577,7 +640,7 @@ "@babel/preset-env@^7.1.0": version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.1.6.tgz#a0bf4b96b6bfcf6e000afc5b72b4abe7cc13ae97" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.1.6.tgz" integrity sha512-YIBfpJNQMBkb6MCkjz/A9J76SNCSuGVamOVBgoUkLzpJD/z8ghHi9I42LQ4pulVX68N/MmImz6ZTixt7Azgexw== dependencies: "@babel/helper-module-imports" "^7.0.0" @@ -624,7 +687,7 @@ "@babel/preset-react@^7.0.0": version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz#e86b4b3d99433c7b3e9e91747e2653958bc6b3c0" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.0.0.tgz" integrity sha512-oayxyPS4Zj+hF6Et11BwuBkmpgT/zMxyuZgFrMeZID6Hdh3dGlk4sHCAhdBCpuCKW2ppBfl2uCCetlrUIJRY3w== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -635,23 +698,32 @@ "@babel/runtime@^7.1.2": version "7.1.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.5.tgz#4170907641cf1f61508f563ece3725150cc6fe39" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.5.tgz" integrity sha512-xKnPpXG/pvK1B90JkwwxSGii90rQGKtzcMt2gI5G6+M0REXaq6rOHsGC2ay6/d0Uje7zzvSzjEzfR3ENhFlrfA== dependencies: regenerator-runtime "^0.12.0" "@babel/template@^7.1.0", "@babel/template@^7.1.2": version "7.1.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz" integrity sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag== dependencies: "@babel/code-frame" "^7.0.0" "@babel/parser" "^7.1.2" "@babel/types" "^7.1.2" +"@babel/template@^7.4.0", "@babel/template@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.6.0.tgz#7f0159c7f5012230dad64cca42ec9bdb5c9536e6" + integrity sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.6.0" + "@babel/types" "^7.6.0" + "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.1.6": version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.6.tgz#c8db9963ab4ce5b894222435482bd8ea854b7b5c" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.6.tgz" integrity sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ== dependencies: "@babel/code-frame" "^7.0.0" @@ -664,9 +736,24 @@ globals "^11.1.0" lodash "^4.17.10" +"@babel/traverse@^7.4.3", "@babel/traverse@^7.6.0": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.6.0.tgz#389391d510f79be7ce2ddd6717be66d3fed4b516" + integrity sha512-93t52SaOBgml/xY74lsmt7xOR4ufYvhb5c5qiM6lu4J/dWGMAfAh6eKw4PjLes6DI6nQgearoxnFJk60YchpvQ== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.6.0" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.6.0" + "@babel/types" "^7.6.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + "@babel/types@7.0.0-beta.35": version "7.0.0-beta.35" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.35.tgz#cf933a9a9a38484ca724b335b88d83726d5ab960" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.35.tgz" integrity sha512-y9XT11CozHDgjWcTdxmhSj13rJVXpa5ZXwjjOiTedjaM0ba5ItqdS02t31EhPl7HtOWxsZkYCCUNrSfrOisA6w== dependencies: esutils "^2.0.2" @@ -675,76 +762,288 @@ "@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.5", "@babel/types@^7.1.6": version "7.1.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.6.tgz#0adb330c3a281348a190263aceb540e10f04bcce" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.6.tgz" integrity sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w== dependencies: esutils "^2.0.2" lodash "^4.17.10" to-fast-properties "^2.0.0" +"@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.6.0": + version "7.6.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.6.1.tgz#53abf3308add3ac2a2884d539151c57c4b3ac648" + integrity sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@cnakazawa/watch@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" + integrity sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + "@emotion/is-prop-valid@^0.7.3": version "0.7.3" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz#a6bf4fa5387cbba59d44e698a4680f481a8da6cc" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz" integrity sha512-uxJqm/sqwXw3YPA5GXX365OBcJGFtxUVkB6WyezqFHlNe9jqUWH5ur2O2M8dGBz61kn1g3ZBlzUunFQXQIClhA== dependencies: "@emotion/memoize" "0.7.1" "@emotion/memoize@0.7.1": version "0.7.1" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.1.tgz#e93c13942592cf5ef01aa8297444dc192beee52f" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.1.tgz" integrity sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg== "@emotion/unitless@^0.7.0": version "0.7.3" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.3.tgz#6310a047f12d21a1036fb031317219892440416f" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.3.tgz" integrity sha512-4zAPlpDEh2VwXswwr/t8xGNDGg8RQiPxtxZ3qQEXyQsBV39ptTdESCjuBvGze1nLMVrxmTIKmnO/nAV8Tqjjzg== +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + realpath-native "^1.1.0" + rimraf "^2.5.4" + slash "^2.0.0" + strip-ansi "^5.0.0" + +"@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + node-notifier "^5.4.2" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== + dependencies: + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + "@posthtml/esm@^1.0.0": version "1.0.0" - resolved "https://registry.yarnpkg.com/@posthtml/esm/-/esm-1.0.0.tgz#09bcb28a02438dcee22ad1970ca1d85a000ae0cf" + resolved "https://registry.yarnpkg.com/@posthtml/esm/-/esm-1.0.0.tgz" integrity sha512-dEVG+ITnvqKGa4v040tP+n8LOKOqr94qjLva7bE5pnfm2KHJwsKz69J4KMxgWLznbpBJzy8vQfCayEk3vLZnZQ== "@sindresorhus/is@^0.14.0": version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@szmarczak/http-timer@^1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== dependencies: defer-to-connect "^1.0.1" +"@types/babel__core@^7.1.0": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.3.tgz#e441ea7df63cd080dfcd02ab199e6d16a735fc30" + integrity sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz#d2112a6b21fad600d7674274293c85dce0cb47fc" + integrity sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.7.tgz#2496e9ff56196cc1429c72034e07eab6121b6f3f" + integrity sha512-CeBpmX1J8kWLcDEnI3Cl2Eo6RfbGvzUctA+CjZUhOKDFbLfcr7fc4usEqLNWetrlJd7RhAkyYe2czXop4fICpw== + dependencies: + "@babel/types" "^7.3.0" + "@types/electron-devtools-installer@^2.2.0": version "2.2.0" - resolved "https://registry.yarnpkg.com/@types/electron-devtools-installer/-/electron-devtools-installer-2.2.0.tgz#32ee4ebbe99b3daf9847a6d2097dc00b5de94f10" + resolved "https://registry.yarnpkg.com/@types/electron-devtools-installer/-/electron-devtools-installer-2.2.0.tgz" integrity sha512-HJNxpaOXuykCK4rQ6FOMxAA0NLFYsf7FiPFGmab0iQmtVBHSAfxzy3MRFpLTTDDWbV0yD2YsHOQvdu8yCqtCfw== "@types/electron-json-storage@^4.0.0": version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/electron-json-storage/-/electron-json-storage-4.0.0.tgz#ea15cb3f2ca6fa4c31e74d974e0ec5655c74414f" + resolved "https://registry.yarnpkg.com/@types/electron-json-storage/-/electron-json-storage-4.0.0.tgz" integrity sha512-b1+VXOjCPENmXhV0q41NCsJIFwpIjPfuJk++h53O4dQhb2RBZYEMTuAnu/UC+0+PhvmysT1f5WNt8RHM3vGevA== dependencies: electron "^1.7.5" "@types/es6-promise@^3.3.0": version "3.3.0" - resolved "https://registry.yarnpkg.com/@types/es6-promise/-/es6-promise-3.3.0.tgz#61b55e554fd807b563f158a7986ee53d3a5a5a9d" + resolved "https://registry.yarnpkg.com/@types/es6-promise/-/es6-promise-3.3.0.tgz" integrity sha512-ixCIAEkLUKv9movnHKCzx2rzAJgEnSALDXPrOSSwOjWwXFs0ssSZKan+O2e3FExPPCbX+DfA9NcKsbvLuyUlNA== dependencies: es6-promise "*" +"@types/events@*": + version "3.0.0" + resolved "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + "@types/fs-extra@^5.0.4": version "5.0.4" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-5.0.4.tgz#b971134d162cc0497d221adde3dbb67502225599" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-5.0.4.tgz" integrity sha512-DsknoBvD8s+RFfSGjmERJ7ZOP1HI0UZRA3FSI+Zakhrc/Gy26YQsLI+m5V5DHxroHRJqCDLKJp7Hixn8zyaF7g== dependencies: "@types/node" "*" +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + "@types/got@^9.4.4": version "9.4.4" - resolved "https://registry.yarnpkg.com/@types/got/-/got-9.4.4.tgz#78129553f6a41715df601db43532cd0b87a55d3f" + resolved "https://registry.yarnpkg.com/@types/got/-/got-9.4.4.tgz" integrity sha512-IGAJokJRE9zNoBdY5csIwN4U5qQn+20HxC0kM+BbUdfTKIXa7bOX/pdhy23NnLBRP8Wvyhx7X5e6EHJs+4d8HA== dependencies: "@types/node" "*" @@ -752,49 +1051,80 @@ "@types/history@*", "@types/history@^4.7.2": version "4.7.2" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.2.tgz#0e670ea254d559241b6eeb3894f8754991e73220" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.2.tgz" integrity sha512-ui3WwXmjTaY73fOQ3/m3nnajU/Orhi6cEu5rzX+BrAAJxa3eITXZ5ch9suPqtM03OWhAHhPSyBGCN4UKoxO20Q== +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + +"@types/istanbul-lib-report@*": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" + integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" + integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + "@types/jest@^23.3.10": version "23.3.10" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.10.tgz#4897974cc317bf99d4fe6af1efa15957fa9c94de" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.10.tgz" integrity sha512-DC8xTuW/6TYgvEg3HEXS7cu9OijFqprVDXXiOcdOKZCU/5PJNLZU37VVvmZHdtMiGOa8wAA/We+JzbdxFzQTRQ== "@types/mime-types@^2.1.0": version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.0.tgz#9ca52cda363f699c69466c2a6ccdaad913ea7a73" - integrity sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM= + resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.0.tgz" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": version "10.12.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.12.tgz#e15a9d034d9210f00320ef718a50c4a799417c47" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.12.tgz" integrity sha512-Pr+6JRiKkfsFvmU/LK68oBRCQeEg36TyAbPhc2xpez24OOZZCuoIhWGTd39VZy6nGafSbxzGouFPTFD/rR1A0A== "@types/node@^8.0.24": version "8.10.38" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.38.tgz#e05c201a668492e534b48102aca0294898f449f6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.38.tgz" integrity sha512-EibsnbJerd0hBFaDjJStFrVbVBAtOy4dgL8zZFw0uOvPqzBAX59Ci8cgjg3+RgJIWhsB5A4c+pi+D4P9tQQh/A== "@types/pify@^3.0.2": version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/pify/-/pify-3.0.2.tgz#1bc75dac43e31dba981c37e0a08edddc1b49cd39" + resolved "https://registry.yarnpkg.com/@types/pify/-/pify-3.0.2.tgz" integrity sha512-a5AKF1/9pCU3HGMkesgY6LsBdXHUY3WU+I2qgpU0J+I8XuJA1aFr59eS84/HP0+dxsyBSNbt+4yGI2adUpHwSg== +"@types/progress-stream@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/progress-stream/-/progress-stream-2.0.0.tgz#68ec37db90be412a4aab73f4366f5de00fc0a9ee" + integrity sha512-KKboL4BvIezEvnd2bdbIfIIkr3Th1p0AJOBaPdKMWm69uMoisOGd4mynzfB/iia2z0k3nwAJCmixESHfVjsrgw== + dependencies: + "@types/node" "*" + "@types/prop-types@*": version "15.5.6" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.5.6.tgz#9c03d3fed70a8d517c191b7734da2879b50ca26c" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.5.6.tgz" integrity sha512-ZBFR7TROLVzCkswA3Fmqq+IIJt62/T7aY/Dmz+QkU7CaW2QFqAitCE8Ups7IzmGhcN1YWMBT4Qcoc07jU9hOJQ== "@types/react-dom@^16.0.11": version "16.0.11" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.0.11.tgz#bd10ccb0d9260343f4b9a49d4f7a8330a5c1f081" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.0.11.tgz" integrity sha512-x6zUx9/42B5Kl2Vl9HlopV8JF64wLpX3c+Pst9kc1HgzrsH+mkehe/zmHMQTplIrR48H2gpU7ZqurQolYu8XBA== dependencies: "@types/react" "*" "@types/react-redux@^6.0.10": version "6.0.10" - resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-6.0.10.tgz#80a3003a7d50112c65692a8b41752f623217a17c" + resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-6.0.10.tgz" integrity sha512-+0Qfks+ODOtOpRB99E7W/w+IO2Nz4II19+sYErtlix/b3ok85SCgDcQzXUeH0z0VDvkKdKPPB2DCSls4jpQ/OA== dependencies: "@types/react" "*" @@ -802,7 +1132,7 @@ "@types/react-router-dom@^4.3.1": version "4.3.1" - resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-4.3.1.tgz#71fe2918f8f60474a891520def40a63997dafe04" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-4.3.1.tgz" integrity sha512-GbztJAScOmQ/7RsQfO4cd55RuH1W4g6V1gDW3j4riLlt+8yxYLqqsiMzmyuXBLzdFmDtX/uU2Bpcm0cmudv44A== dependencies: "@types/history" "*" @@ -811,7 +1141,7 @@ "@types/react-router@*", "@types/react-router@^4.4.1": version "4.4.1" - resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-4.4.1.tgz#c875dfd0b6fe00efa463eb8e5de8b5f74644b3f5" + resolved "https://registry.yarnpkg.com/@types/react-router/-/react-router-4.4.1.tgz" integrity sha512-CtQfdcXyMye3vflnQQ2sHU832iDJRoAr4P+7f964KlLYupXU1I5crP1+d/WnCMo6mmtjBjqQvxrtbAbodqerMA== dependencies: "@types/history" "*" @@ -819,14 +1149,14 @@ "@types/react-transition-group@1.1.5": version "1.1.5" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-1.1.5.tgz#9023b0af51df4a384045e21ce00b44f4ce85334c" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-1.1.5.tgz" integrity sha512-XlM6c7OFRTK9TKcoaOKOKS9EDpnHosRXdeN3HwQeMg2T5hOTe8/IQMzWYwaVA8ian4Zc9vMFoQxVlDL75b9aog== dependencies: "@types/react" "*" "@types/react@*", "@types/react@^16.7.9": version "16.7.9" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.7.9.tgz#d98497eccbd7b97d0a6d76f9cd61895e95d30def" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.7.9.tgz" integrity sha512-86Ih5rppq0r6V4Rr642wigwPKmizNvr+Ftc6sAAVZHUnCKBMU/3GkrT1ock/2+/NpOrwUpIIsmnFB2VUCdU5RA== dependencies: "@types/prop-types" "*" @@ -834,12 +1164,23 @@ "@types/seedrandom@^2.4.27": version "2.4.27" - resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-2.4.27.tgz#9db563937dd86915f69092bc43259d2f48578e41" - integrity sha1-nbVjk33YaRX2kJK8QyWdL0hXjkE= + resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-2.4.27.tgz" + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/stream-buffers@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/stream-buffers/-/stream-buffers-3.0.3.tgz#34e565bf64e3e4bdeee23fd4aa58d4636014a02b" + integrity sha512-NeFeX7YfFZDYsCfbuaOmFQ0OjSmHreKBpp7MQ4alWQBHeh2USLsj7qyMyn9t82kjqIX516CR/5SRHnARduRtbQ== + dependencies: + "@types/node" "*" "@types/styled-components@^4.1.6": version "4.1.6" - resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-4.1.6.tgz#9aa1d47dbc6bae540083869bcc6c639c6e9af0fe" + resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-4.1.6.tgz" integrity sha512-w/ra/Tk9oPMvWpWId7esZNY1MOa6E9BYUPLl4scVJdYnrYuy5ITLbku8dGDCVH/vjjuegrHBCRYvFLQOYJ+uHg== dependencies: "@types/node" "*" @@ -848,31 +1189,43 @@ "@types/tough-cookie@*": version "2.3.5" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.5.tgz#9da44ed75571999b65c37b60c9b2b88db54c585d" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.5.tgz" integrity sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg== "@types/uuid@^3.4.4": version "3.4.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-3.4.4.tgz#7af69360fa65ef0decb41fd150bf4ca5c0cefdf5" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-3.4.4.tgz" integrity sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw== dependencies: "@types/node" "*" "@types/webdriverio@^4.13.0": version "4.13.0" - resolved "https://registry.yarnpkg.com/@types/webdriverio/-/webdriverio-4.13.0.tgz#05acc3cbea6de5251c7adad16da1ee626858350e" + resolved "https://registry.yarnpkg.com/@types/webdriverio/-/webdriverio-4.13.0.tgz" integrity sha512-4SpsMUy6MatxIQidOZR4HpAgIi5Lzpvo7nCdq+7SdLvUGCNLPLaWSwdtpHK+En3CqQTb559kSIWR4SKFWT8H3w== dependencies: "@types/node" "*" "@types/webpack-env@^1.13.6": version "1.13.6" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.13.6.tgz#128d1685a7c34d31ed17010fc87d6a12c1de6976" + resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.13.6.tgz" integrity sha512-5Th3OsZ4gTRdr9Mho83BQ23cex4sRhOR4XTG+m+cJc0FhtUBK9Vn62hBJ+pnQYnSxoPOsKoAPOx6FcphxBC8ng== +"@types/yargs-parser@*": + version "13.1.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228" + integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== + +"@types/yargs@^13.0.0": + version "13.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.2.tgz#a64674fc0149574ecd90ba746e932b5a5f7b3653" + integrity sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ== + dependencies: + "@types/yargs-parser" "*" + "@webassemblyjs/ast@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz" integrity sha512-ZEzy4vjvTzScC+SH8RBssQUawpaInUdMTYwYYLh54/s8TuT0gBLuyUnppKsVyZEi876VmmStKsUs28UxPgdvrA== dependencies: "@webassemblyjs/helper-module-context" "1.7.11" @@ -881,44 +1234,44 @@ "@webassemblyjs/floating-point-hex-parser@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz#a69f0af6502eb9a3c045555b1a6129d3d3f2e313" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz" integrity sha512-zY8dSNyYcgzNRNT666/zOoAyImshm3ycKdoLsyDw/Bwo6+/uktb7p4xyApuef1dwEBo/U/SYQzbGBvV+nru2Xg== "@webassemblyjs/helper-api-error@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz#c7b6bb8105f84039511a2b39ce494f193818a32a" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz" integrity sha512-7r1qXLmiglC+wPNkGuXCvkmalyEstKVwcueZRP2GNC2PAvxbLYwLLPr14rcdJaE4UtHxQKfFkuDFuv91ipqvXg== "@webassemblyjs/helper-buffer@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz#3122d48dcc6c9456ed982debe16c8f37101df39b" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz" integrity sha512-MynuervdylPPh3ix+mKZloTcL06P8tenNH3sx6s0qE8SLR6DdwnfgA7Hc9NSYeob2jrW5Vql6GVlsQzKQCa13w== "@webassemblyjs/helper-code-frame@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz#cf8f106e746662a0da29bdef635fcd3d1248364b" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz" integrity sha512-T8ESC9KMXFTXA5urJcyor5cn6qWeZ4/zLPyWeEXZ03hj/x9weSokGNkVCdnhSabKGYWxElSdgJ+sFa9G/RdHNw== dependencies: "@webassemblyjs/wast-printer" "1.7.11" "@webassemblyjs/helper-fsm@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz#df38882a624080d03f7503f93e3f17ac5ac01181" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz" integrity sha512-nsAQWNP1+8Z6tkzdYlXT0kxfa2Z1tRTARd8wYnc/e3Zv3VydVVnaeePgqUzFrpkGUyhUUxOl5ML7f1NuT+gC0A== "@webassemblyjs/helper-module-context@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz#d874d722e51e62ac202476935d649c802fa0e209" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz" integrity sha512-JxfD5DX8Ygq4PvXDucq0M+sbUFA7BJAv/GGl9ITovqE+idGX+J3QSzJYz+LwQmL7fC3Rs+utvWoJxDb6pmC0qg== "@webassemblyjs/helper-wasm-bytecode@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz#dd9a1e817f1c2eb105b4cf1013093cb9f3c9cb06" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz" integrity sha512-cMXeVS9rhoXsI9LLL4tJxBgVD/KMOKXuFqYb5oCJ/opScWpkCMEz9EJtkonaNcnLv2R3K5jIeS4TRj/drde1JQ== "@webassemblyjs/helper-wasm-section@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz#9c9ac41ecf9fbcfffc96f6d2675e2de33811e68a" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz" integrity sha512-8ZRY5iZbZdtNFE5UFunB8mmBEAbSI3guwbrsCl4fWdfRiAcvqQpeqd5KHhSWLL5wuxo53zcaGZDBU64qgn4I4Q== dependencies: "@webassemblyjs/ast" "1.7.11" @@ -928,26 +1281,26 @@ "@webassemblyjs/ieee754@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz#c95839eb63757a31880aaec7b6512d4191ac640b" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz" integrity sha512-Mmqx/cS68K1tSrvRLtaV/Lp3NZWzXtOHUW2IvDvl2sihAwJh4ACE0eL6A8FvMyDG9abes3saB6dMimLOs+HMoQ== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.11.tgz#d7267a1ee9c4594fd3f7e37298818ec65687db63" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.11.tgz" integrity sha512-vuGmgZjjp3zjcerQg+JA+tGOncOnJLWVkt8Aze5eWQLwTQGNgVLcyOTqgSCxWTR4J42ijHbBxnuRaL1Rv7XMdw== dependencies: "@xtuc/long" "4.2.1" "@webassemblyjs/utf8@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.11.tgz#06d7218ea9fdc94a6793aa92208160db3d26ee82" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.11.tgz" integrity sha512-C6GFkc7aErQIAH+BMrIdVSmW+6HSe20wg57HEC1uqJP8E/xpMjXqQUxkQw07MhNDSDcGpxI9G5JSNOQCqJk4sA== "@webassemblyjs/wasm-edit@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz#8c74ca474d4f951d01dbae9bd70814ee22a82005" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz" integrity sha512-FUd97guNGsCZQgeTPKdgxJhBXkUbMTY6hFPf2Y4OedXd48H97J+sOY2Ltaq6WGVpIH8o/TGOVNiVz/SbpEMJGg== dependencies: "@webassemblyjs/ast" "1.7.11" @@ -961,7 +1314,7 @@ "@webassemblyjs/wasm-gen@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz#9bbba942f22375686a6fb759afcd7ac9c45da1a8" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz" integrity sha512-U/KDYp7fgAZX5KPfq4NOupK/BmhDc5Kjy2GIqstMhvvdJRcER/kUsMThpWeRP8BMn4LXaKhSTggIJPOeYHwISA== dependencies: "@webassemblyjs/ast" "1.7.11" @@ -972,7 +1325,7 @@ "@webassemblyjs/wasm-opt@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz#b331e8e7cef8f8e2f007d42c3a36a0580a7d6ca7" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz" integrity sha512-XynkOwQyiRidh0GLua7SkeHvAPXQV/RxsUeERILmAInZegApOUAIJfRuPYe2F7RcjOC9tW3Cb9juPvAC/sCqvg== dependencies: "@webassemblyjs/ast" "1.7.11" @@ -982,7 +1335,7 @@ "@webassemblyjs/wasm-parser@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz#6e3d20fa6a3519f6b084ef9391ad58211efb0a1a" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz" integrity sha512-6lmXRTrrZjYD8Ng8xRyvyXQJYUQKYSXhJqXOBLw24rdiXsHAOlvw5PhesjdcaMadU/pyPQOJ5dHreMjBxwnQKg== dependencies: "@webassemblyjs/ast" "1.7.11" @@ -994,7 +1347,7 @@ "@webassemblyjs/wast-parser@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz#25bd117562ca8c002720ff8116ef9072d9ca869c" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz" integrity sha512-lEyVCg2np15tS+dm7+JJTNhNWq9yTZvi3qEhAIIOaofcYlUp0UR5/tVqOwa/gXYr3gjwSZqw+/lS9dscyLelbQ== dependencies: "@webassemblyjs/ast" "1.7.11" @@ -1006,7 +1359,7 @@ "@webassemblyjs/wast-printer@1.7.11": version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz#c4245b6de242cb50a2cc950174fdbf65c78d7813" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz" integrity sha512-m5vkAsuJ32QpkdkDOUPGSltrg8Cuk3KBx4YrmAGQwCZPRdUHXxG4phIOuuycLemHFr74sWL9Wthqss4fzdzSwg== dependencies: "@webassemblyjs/ast" "1.7.11" @@ -1015,17 +1368,17 @@ "@xtuc/ieee754@^1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz" integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.1": version "4.2.1" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz" integrity sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g== abab@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz" integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== abbrev@1: @@ -1033,37 +1386,36 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@~1.3.4, accepts@~1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" - integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I= +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== dependencies: - mime-types "~2.1.18" - negotiator "0.6.1" + mime-types "~2.1.24" + negotiator "0.6.2" accessibility-developer-tools@^2.11.0: version "2.12.0" - resolved "https://registry.yarnpkg.com/accessibility-developer-tools/-/accessibility-developer-tools-2.12.0.tgz#3da0cce9d6ec6373964b84f35db7cfc3df7ab514" - integrity sha1-PaDM6dbsY3OWS4TzXbfPw996tRQ= + resolved "https://registry.yarnpkg.com/accessibility-developer-tools/-/accessibility-developer-tools-2.12.0.tgz" acorn-dynamic-import@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz" integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg== dependencies: acorn "^5.0.0" acorn-globals@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103" - integrity sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw== + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== dependencies: acorn "^6.0.1" acorn-walk "^6.0.1" acorn-walk@^6.0.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz" integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== acorn@^5.0.0, acorn@^5.5.3, acorn@^5.6.2: @@ -1073,22 +1425,20 @@ acorn@^5.0.0, acorn@^5.5.3, acorn@^5.6.2: acorn@^6.0.1: version "6.0.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.4.tgz#77377e7353b72ec5104550aa2d2097a2fd40b754" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.4.tgz" integrity sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg== ajv-errors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59" - integrity sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk= + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz" ajv-keywords@^3.1.0, ajv-keywords@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" - integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz" ajv@^6.1.0, ajv@^6.5.5: version "6.5.5" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.5.tgz#cf97cdade71c6399a92c6d6c4177381291b781a1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.5.tgz" integrity sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg== dependencies: fast-deep-equal "^2.0.1" @@ -1098,56 +1448,55 @@ ajv@^6.1.0, ajv@^6.5.5: alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz" ansi-align@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" - integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz" dependencies: string-width "^2.0.0" ansi-colors@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.1.tgz#9638047e4213f3428a11944a7d4b31cba0a3ff95" - integrity sha512-Xt+zb6nqgvV9SWAVp0EG3lRsHcbq5DDgqjPPz6pwgtj6RKz65zGXMNa82oJfOSBA/to6GmRP7Dr+6o+kbApTzQ== + version "3.2.4" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== ansi-escapes@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz" integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== ansi-html@0.0.7: version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + resolved "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz" ansi-regex@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz" ansi-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz" + +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== ansi-styles@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz" ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" anymatch@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz" integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" @@ -1155,12 +1504,12 @@ anymatch@^2.0.0: app-builder-bin@2.5.1: version "2.5.1" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-2.5.1.tgz#a5bcff31e4572d8a179bd88a1335bad8e5d62d81" + resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-2.5.1.tgz" integrity sha512-Hm+eyyfQCs5N5avLAw3w9Cf1S5TX/t6ecAfHusbzCDh/rLKLKYso2vwDWH4OQZ8uWLnuJwaAUDf3PstRcn0H+A== app-builder-lib@20.36.2, app-builder-lib@~20.36.0: version "20.36.2" - resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-20.36.2.tgz#9bc2fb3191eb81afe9af2bc35e9384d3bf7b6f01" + resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-20.36.2.tgz" integrity sha512-5FxLnWI13t0LLmh2QjmPx3KW/xhj67su7UxdCzQgULsUmYurdPx8yAOb9YxoX+RpR08inqt+H3GBOJlqSSrVgg== dependencies: "7zip-bin" "~4.1.0" @@ -1188,13 +1537,6 @@ app-builder-lib@20.36.2, app-builder-lib@~20.36.0: semver "^5.6.0" temp-file "^3.2.0" -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" - integrity sha1-126/jKlNJ24keja61EpLdKthGZE= - dependencies: - default-require-extensions "^1.0.0" - aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -1202,8 +1544,7 @@ aproba@^1.0.3, aproba@^1.1.1: archiver-utils@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" - integrity sha1-5QtMCccL89aA4y/xt5lOn52JUXQ= + resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz" dependencies: glob "^7.0.0" graceful-fs "^4.1.0" @@ -1214,8 +1555,7 @@ archiver-utils@^1.3.0: archiver@~2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-2.1.1.tgz#ff662b4a78201494a3ee544d3a33fe7496509ebc" - integrity sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw= + resolved "https://registry.yarnpkg.com/archiver/-/archiver-2.1.1.tgz" dependencies: archiver-utils "^1.3.0" async "^2.0.0" @@ -1236,98 +1576,70 @@ are-we-there-yet@~1.1.2: argparse@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - dependencies: - arr-flatten "^1.0.1" - arr-diff@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz" -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== arr-union@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz" array-equal@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz" array-find-index@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz" array-flatten@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" array-flatten@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.1.tgz#426bb9da84090c1838d812c8150af20a8331e296" - integrity sha1-Qmu52oQJDBg42BLIFQryCoMx4pY= + version "2.1.2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== array-map@0.0.0: version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" - integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz" array-reduce@0.0.0: version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" - integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz" array-union@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" dependencies: array-uniq "^1.0.1" array-uniq@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" array-unique@^0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz" 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= + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz" asn1.js@^4.0.0: version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz" integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== dependencies: bn.js "^4.0.0" @@ -1336,88 +1648,81 @@ asn1.js@^4.0.0: asn1@~0.2.3: version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz" integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz" assert@^1.1.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz" dependencies: util "0.10.3" assign-symbols@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz" astral-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== async-each@^1.0.0, async-each@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - integrity sha1-GdOGodntxufByF04iu28xW0zYC0= + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz" async-exit-hook@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" + resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz" integrity sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw== async-limiter@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz" integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== async@^1.5.2: version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" -async@^2.0.0, async@^2.1.4, async@^2.5.0: +async@^2.0.0: version "2.6.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz" integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== dependencies: lodash "^4.17.10" async@^2.6.1: version "2.6.2" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz" integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== dependencies: lodash "^4.17.11" asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz" atob@^2.1.1: version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== attr-accept@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-1.1.3.tgz#48230c79f93790ef2775fcec4f0db0f5db41ca52" + resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-1.1.3.tgz" integrity sha512-iT40nudw8zmCweivz6j58g+RT33I4KbaIvRUhjNmDwO2WmsQUxFEZZYZ5w3vXe5x5MX9D7mfvA/XaLOZYFR9EQ== dependencies: core-js "^2.5.0" autoprefixer@^6.3.1: version "6.7.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" - integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ= + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz" dependencies: browserslist "^1.7.6" caniuse-db "^1.0.30000634" @@ -1428,81 +1733,37 @@ autoprefixer@^6.3.1: aws-sign2@~0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz" aws4@^1.8.0: version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz" dependencies: chalk "^1.1.3" esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.0.0, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.18.0, babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-jest@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.6.0.tgz#a644232366557a2240a0c083da6b25786185a2f1" - integrity sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew== - dependencies: - babel-plugin-istanbul "^4.1.6" - babel-preset-jest "^23.2.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.0.0" babel-loader@^8.0.4: version "8.0.4" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.4.tgz#7bbf20cbe4560629e2e41534147692d3fecbdce6" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.4.tgz" integrity sha512-fhBhNkUToJcW9nV46v8w87AJOwAJDz84c1CL57n3Stj73FANM/b9TbCUK4YhdOwEyZ+OxhYpdeZDNzSI29Firw== dependencies: find-cache-dir "^1.0.0" @@ -1510,38 +1771,33 @@ babel-loader@^8.0.4: mkdirp "^0.5.1" util.promisify "^1.0.0" -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - babel-plugin-component@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz#9b023a23ff5c9aae0fd56c5a18b9cab8c4d45eea" + resolved "https://registry.yarnpkg.com/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz" integrity sha512-WUw887kJf2GH80Ng/ZMctKZ511iamHNqPhd9uKo14yzisvV7Wt1EckIrb8oq/uCz3B3PpAW7Xfl7AkTLDYT6ag== dependencies: "@babel/helper-module-imports" "7.0.0-beta.35" -babel-plugin-istanbul@^4.1.6: - version "4.1.6" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" - integrity sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ== +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== dependencies: - babel-plugin-syntax-object-rest-spread "^6.13.0" - find-up "^2.1.0" - istanbul-lib-instrument "^1.10.1" - test-exclude "^4.2.1" + "@babel/helper-plugin-utils" "^7.0.0" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" -babel-plugin-jest-hoist@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" - integrity sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc= +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== + dependencies: + "@types/babel__traverse" "^7.0.6" "babel-plugin-styled-components@>= 1": version "1.10.0" - resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.0.tgz#ff1f42ad2cc78c21f26b62266b8f564dbc862939" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.0.tgz" integrity sha512-sQVKG8irFXx14ZfaK1bBePirfkacl3j8nZwSZK+ZjsbnadRHKQTbhXbe/RB1vT6Vgkz45E+V95LBq4KqdhZUNw== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" @@ -1551,102 +1807,39 @@ babel-plugin-jest-hoist@^23.2.0: babel-plugin-syntax-jsx@^6.18.0: version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" -babel-plugin-syntax-object-rest-spread@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= - -babel-preset-jest@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" - integrity sha1-jsegOhOPABoaj7HoETZSvxpV2kY= +babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== dependencies: - babel-plugin-jest-hoist "^23.2.0" - babel-plugin-syntax-object-rest-spread "^6.13.0" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" -babel-runtime@^6.22.0, babel-runtime@^6.26.0: +babel-runtime@^6.26.0: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz" dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - balanced-match@^0.4.2: version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg= + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz" balanced-match@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz" base64-js@^1.0.2, base64-js@^1.2.3: version "1.3.0" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz" integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== base@^0.11.1: version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz" integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" @@ -1659,29 +1852,27 @@ base@^0.11.1: batch@0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" bcrypt-pbkdf@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" dependencies: tweetnacl "^0.14.3" big.js@^3.1.3: version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz" integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== binary-extensions@^1.0.0: version "1.12.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz" integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== bl@^1.0.0: version "1.2.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz" integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== dependencies: readable-stream "^2.3.5" @@ -1689,46 +1880,45 @@ bl@^1.0.0: blinq@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/blinq/-/blinq-2.0.2.tgz#cff478fa6fd1120a598b9d7770c4ed8ad4c79951" + resolved "https://registry.yarnpkg.com/blinq/-/blinq-2.0.2.tgz" integrity sha512-+kDz9l/y1JNTybdhwXTSJ2QxdErRj+Jvop7snULe9LEBumfGJglqZcTrDUQF71Ue9Mzh4tq806jzwT+GDm/z7Q== bluebird-lst@^1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.6.tgz#89bc4de0a357373605c8781f293f7b06d454f869" + resolved "https://registry.yarnpkg.com/bluebird-lst/-/bluebird-lst-1.0.6.tgz" integrity sha512-CBWFoPuUPpcvMUxfyr8DKdI5d4kjxFl1h39+VbKxP3KJWJHEsLtuT4pPLkjpxCGU6Ask21tvbnftWXdqIxYldQ== dependencies: bluebird "^3.5.2" bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.2: version "3.5.3" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz" integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== -body-parser@1.18.3: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== dependencies: - bytes "3.0.0" + bytes "3.1.0" content-type "~1.0.4" debug "2.6.9" depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" + http-errors "1.7.2" + iconv-lite "0.4.24" on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" bonjour@^3.5.0: version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + resolved "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz" dependencies: array-flatten "^2.1.0" deep-equal "^1.0.1" @@ -1739,12 +1929,11 @@ bonjour@^3.5.0: boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz" boxen@^1.2.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz" integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== dependencies: ansi-align "^2.0.0" @@ -1757,24 +1946,15 @@ boxen@^1.2.1: brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - braces@^2.3.0, braces@^2.3.1, braces@^2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: arr-flatten "^1.1.0" @@ -1790,24 +1970,23 @@ braces@^2.3.0, braces@^2.3.1, braces@^2.3.2: brorand@^1.0.1: version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz" browser-process-hrtime@^0.1.2: version "0.1.3" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz" integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== browser-resolve@^1.11.3: version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz" integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== dependencies: resolve "1.1.7" browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: buffer-xor "^1.0.3" @@ -1819,7 +1998,7 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4: browserify-cipher@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz" integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== dependencies: browserify-aes "^1.0.4" @@ -1828,7 +2007,7 @@ browserify-cipher@^1.0.0: browserify-des@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz" integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== dependencies: cipher-base "^1.0.1" @@ -1838,16 +2017,14 @@ browserify-des@^1.0.0: browserify-rsa@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz" dependencies: bn.js "^4.1.0" randombytes "^2.0.1" browserify-sign@^4.0.0: version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz" dependencies: bn.js "^4.1.1" browserify-rsa "^4.0.0" @@ -1859,22 +2036,21 @@ browserify-sign@^4.0.0: browserify-zlib@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz" integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: pako "~1.0.5" browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: version "1.7.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" - integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz" dependencies: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" browserslist@^4.1.0: version "4.3.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.4.tgz#4477b737db6a1b07077275b24791e680d4300425" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.4.tgz" integrity sha512-u5iz+ijIMUlmV8blX82VGFrB9ecnUg5qEt55CMZ/YJEhha+d8qpBfOFuutJ6F/VKRXjZoD33b6uvarpPxcl3RA== dependencies: caniuse-lite "^1.0.30000899" @@ -1883,26 +2059,25 @@ browserslist@^4.1.0: bs-logger@0.x: version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz" integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== dependencies: fast-json-stable-stringify "2.x" bser@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" - integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= + resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz" dependencies: node-int64 "^0.4.0" buffer-alloc-unsafe@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz" integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== buffer-alloc@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz" integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== dependencies: buffer-alloc-unsafe "^1.1.0" @@ -1910,33 +2085,29 @@ buffer-alloc@^1.2.0: buffer-crc32@^0.2.1: version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz" buffer-fill@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz" buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== buffer-indexof@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + resolved "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz" integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== buffer-xor@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz" buffer@^4.3.0: version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz" dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" @@ -1944,7 +2115,7 @@ buffer@^4.3.0: buffer@^5.1.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz" integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== dependencies: base64-js "^1.0.2" @@ -1952,7 +2123,7 @@ buffer@^5.1.0: builder-util-runtime@8.0.2, builder-util-runtime@^8.0.1: version "8.0.2" - resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.0.2.tgz#9d638a266ca3aa25ced1cff4df74c8fd97dd78cf" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-8.0.2.tgz" integrity sha512-46AjyMQ1/yBvGnXWmqNGlg8te7jCPCs7TJ0zDC2+4vV/t5iZp2dR1H9UfVpcBxlvBq3dlAOmwb9fz1d9xZN1+Q== dependencies: bluebird-lst "^1.0.6" @@ -1962,7 +2133,7 @@ builder-util-runtime@8.0.2, builder-util-runtime@^8.0.1: builder-util@9.3.0, builder-util@~9.3.0: version "9.3.0" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-9.3.0.tgz#1c94c3bd1c9095840d46a59cdf9514852a47ce8a" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-9.3.0.tgz" integrity sha512-K+kj5vWj4Mk3jOm6kVT9ZwNcECLHe449vdMxYuZpCnn7CSxRm+TeZm9P9ZFCQUID5Hww/Sy4NMFo+VVJh6+Ptw== dependencies: "7zip-bin" "~4.1.0" @@ -1980,22 +2151,24 @@ builder-util@9.3.0, builder-util@~9.3.0: builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz" builtin-status-codes@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" bytes@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== cacache@^11.0.2: version "11.3.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.1.tgz#d09d25f6c4aca7a6d305d141ae332613aa1d515f" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.1.tgz" integrity sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA== dependencies: bluebird "^3.5.1" @@ -2015,7 +2188,7 @@ cacache@^11.0.2: cache-base@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz" integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" @@ -2030,7 +2203,7 @@ cache-base@^1.0.1: cacheable-request@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.0.0.tgz#4a1727414e02ac4af82560c4da1b61daa3fa2b63" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.0.0.tgz" integrity sha512-2N7AmszH/WPPpl5Z3XMw1HAP+8d+xugnKQAeKvxFZ/04dbT/CAznqwbl+7eSr3HkwdepNwtb2yx3CAMQWvG01Q== dependencies: clone-response "^1.0.2" @@ -2041,46 +2214,46 @@ cacheable-request@^6.0.0: normalize-url "^3.1.0" responselike "^1.0.2" -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camel-case@3.0.x: version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz" dependencies: no-case "^2.2.0" upper-case "^1.1.1" camelcase-keys@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz" dependencies: camelcase "^2.0.0" map-obj "^1.0.0" camelcase@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz" camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz" camelcase@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz" integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + caniuse-api@^1.5.2: version "1.6.1" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" - integrity sha1-tTTnxzTE+B7F++isoq0kNUuWLGw= + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz" dependencies: browserslist "^1.3.6" caniuse-db "^1.0.30000529" @@ -2089,40 +2262,38 @@ caniuse-api@^1.5.2: caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: version "1.0.30000910" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000910.tgz#58cca84780223291c28e92d97a9b1512260a9a8e" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000910.tgz" integrity sha512-eysv5eAsXCBnfnhTZsKBtCZKdgeFaRqOlTN74kCfzdHdz0In3E5Aop7PyqPI757DsdjVwJOWrFHIrTPYzmll6g== caniuse-lite@^1.0.30000899: version "1.0.30000910" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000910.tgz#755d5181d4b006e5a2b59b1ffa05d0a0470039f5" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000910.tgz" integrity sha512-u/nxtHGAzCGZzIxt3dA/tpSPOcirBZFWKwz1EPz4aaupnBI2XR0Rbr74g0zc6Hzy41OEM4uMoZ38k56TpYAWjQ== -capture-exit@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" - integrity sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28= +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== dependencies: - rsvp "^3.3.3" + rsvp "^4.8.4" capture-stack-trace@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz" integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== caseless@~0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz" chain-function@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/chain-function/-/chain-function-1.0.1.tgz#c63045e5b4b663fb86f1c6e186adaf1de402a1cc" + resolved "https://registry.yarnpkg.com/chain-function/-/chain-function-1.0.1.tgz" integrity sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg== chalk@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz" dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -2132,21 +2303,29 @@ chalk@^1.1.3: chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz" integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chardet@^0.4.0: version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz" -chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: +chokidar@^2.0.2, chokidar@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz" integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== dependencies: anymatch "^2.0.0" @@ -2166,7 +2345,7 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.4: chokidar@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.2.tgz#9c23ea40b01638439e0513864d362aeacc5ad058" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.2.tgz" integrity sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg== dependencies: anymatch "^2.0.0" @@ -2183,31 +2362,59 @@ chokidar@^2.1.2: optionalDependencies: fsevents "^1.2.7" -chownr@^1.0.1, chownr@^1.1.1: +chokidar@^2.1.6: + version "2.1.8" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chownr@^1.0.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz" integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== +chownr@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" + integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== + chrome-trace-event@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz" integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== dependencies: tslib "^1.9.0" chromium-pickle-js@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" - integrity sha1-BKEGZywYsIWrd02YPfo+oTjyIgU= + resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz" ci-info@^1.5.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz" integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz" integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" @@ -2215,14 +2422,14 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: clap@^1.0.9: version "1.2.3" - resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" + resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz" integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA== dependencies: chalk "^1.1.3" class-utils@^0.3.5: version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz" integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" @@ -2232,113 +2439,110 @@ class-utils@^0.3.5: clean-css@4.2.x: version "4.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz" integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== dependencies: source-map "~0.6.0" cli-boxes@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" - integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz" cli-cursor@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz" dependencies: restore-cursor "^2.0.0" cli-width@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz" cliui@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz" integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== dependencies: string-width "^2.1.1" strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + clone-response@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz" dependencies: mimic-response "^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= + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz" co@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz" coa@~1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" - integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0= + resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz" dependencies: q "^1.1.2" coa@~2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.1.tgz#f3f8b0b15073e35d70263fb1042cb2c023db38af" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.1.tgz" integrity sha512-5wfTTO8E2/ja4jFSxePXlG5nRu5bBtL/r1HCIpJW/lzT6yDtKl0u0Z4o/Vpz32IpKmBn7HerheEZQgA9N2DarQ== dependencies: q "^1.1.2" code-point-at@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz" collection-visit@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz" dependencies: map-visit "^1.0.0" object-visit "^1.0.0" color-convert@^1.3.0, color-convert@^1.9.0, color-convert@^1.9.1: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@~0.5.0: version "0.5.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd" - integrity sha1-vbbGnOZg+t/+CwAHzER+G59ygr0= + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-0.5.3.tgz" color-name@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz" color-name@^1.0.0: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== color-string@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" - integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE= + resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz" dependencies: color-name "^1.0.0" color-string@^1.5.2: version "1.5.3" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz" integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== dependencies: color-name "^1.0.0" @@ -2346,7 +2550,7 @@ color-string@^1.5.2: color@3.0.x: version "3.0.0" - resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" + resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz" integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w== dependencies: color-convert "^1.9.1" @@ -2354,8 +2558,7 @@ color@3.0.x: color@^0.11.0: version "0.11.4" - resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" - integrity sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q= + resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz" dependencies: clone "^1.0.2" color-convert "^1.3.0" @@ -2363,8 +2566,7 @@ color@^0.11.0: colormin@^1.0.5: version "1.1.2" - resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" - integrity sha1-6i90IKcrlogaOKrlnsEkpvcpgTM= + resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz" dependencies: color "^0.11.0" css-color-names "0.0.4" @@ -2372,22 +2574,20 @@ colormin@^1.0.5: colornames@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/colornames/-/colornames-1.1.1.tgz#f8889030685c7c4ff9e2a559f5077eb76a816f96" - integrity sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y= + resolved "https://registry.yarnpkg.com/colornames/-/colornames-1.1.1.tgz" colors@^1.2.1: version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz" integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== colors@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= + resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz" colorspace@1.1.x: version "1.1.1" - resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.1.tgz#9ac2491e1bc6f8fb690e2176814f8d091636d972" + resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.1.tgz" integrity sha512-pI3btWyiuz7Ken0BWh9Elzsmv2bM9AhA7psXib4anUXy/orfZ/E0MbQwhSOG/9L8hLlalqrU0UhOuqxW1YjmVw== dependencies: color "3.0.x" @@ -2395,74 +2595,69 @@ colorspace@1.1.x: 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" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz" integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== dependencies: delayed-stream "~1.0.0" commander@2.17.x, commander@~2.17.1: version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz" integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== commander@^2.12.1: version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz" 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" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz" compare-version@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" - integrity sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA= + resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz" component-emitter@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz" compress-commons@^1.2.0: version "1.2.2" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.2.2.tgz#524a9f10903f3a813389b0225d27c48bb751890f" - integrity sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8= + resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.2.2.tgz" dependencies: buffer-crc32 "^0.2.1" crc32-stream "^2.0.0" normalize-path "^2.0.0" readable-stream "^2.0.0" -compressible@~2.0.14: - version "2.0.15" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.15.tgz#857a9ab0a7e5a07d8d837ed43fe2defff64fe212" - integrity sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw== +compressible@~2.0.16: + version "2.0.17" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz" + integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== dependencies: - mime-db ">= 1.36.0 < 2" + mime-db ">= 1.40.0 < 2" -compression@^1.5.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db" - integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg== +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== dependencies: accepts "~1.3.5" bytes "3.0.0" - compressible "~2.0.14" + compressible "~2.0.16" debug "2.6.9" - on-headers "~1.0.1" + on-headers "~1.0.2" safe-buffer "5.1.2" vary "~1.1.2" concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz" concat-stream@1.6.2, concat-stream@^1.5.0: version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" @@ -2472,7 +2667,7 @@ concat-stream@1.6.2, concat-stream@^1.5.0: configstore@^3.0.0: version "3.1.2" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz" integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== dependencies: dot-prop "^4.1.0" @@ -2482,14 +2677,14 @@ configstore@^3.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" -connect-history-api-fallback@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" - integrity sha1-sGhzk0vF40T+9hGhlqb6rgruAVo= +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== connected-react-router@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/connected-react-router/-/connected-react-router-5.0.1.tgz#8379854fad7e027b1e27652c00ad534f8ad244b3" + resolved "https://registry.yarnpkg.com/connected-react-router/-/connected-react-router-5.0.1.tgz" integrity sha512-0QwWYPRGZQ7f284lmqc5kwC4T3iW3zrAH3zzi6uUMzTOxbA+mn38tAgMOoVo9m3pbskvONFtXiajgVkCElE9EQ== dependencies: immutable "^3.8.1" @@ -2497,8 +2692,7 @@ connected-react-router@^5.0.1: console-browserify@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz" dependencies: date-now "^0.1.4" @@ -2509,39 +2703,39 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: constants-browserify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz" -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" content-type@~1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1: +convert-source-map@^1.1.0, convert-source-map@^1.4.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz" integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== dependencies: safe-buffer "~5.1.1" cookie-signature@1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== copy-concurrently@^1.0.0: version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz" integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== dependencies: aproba "^1.1.1" @@ -2553,47 +2747,50 @@ copy-concurrently@^1.0.0: copy-descriptor@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz" + +copy-to-clipboard@^3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.2.0.tgz#d2724a3ccbfed89706fac8a894872c979ac74467" + integrity sha512-eOZERzvCmxS8HWzugj4Uxl8OJxa7T2k1Gi0X5qavwydHIfuSHq2dTD09LOg/XyGq4Zpb5IsR/2OJ5lbOegz78w== + dependencies: + toggle-selection "^1.0.6" core-js@^1.0.0: version "1.2.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" - integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz" core-js@^2.4.0, core-js@^2.5.0: version "2.5.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz" integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== core-js@^2.4.1: version "2.6.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.3.tgz#4b70938bdffdaf64931e66e2db158f0892289c49" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.3.tgz" integrity sha512-l00tmFFZOBHtYhN4Cz7k32VM7vTn3rE2ANjQDxdEN6zmXZ/xq1jQuutnmHvMG1ZJ7xd72+TA5YpUK8wz3rWsfQ== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz" crc32-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4" - integrity sha1-483TtN8xaN10494/u8t7KX/pCPQ= + resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz" dependencies: crc "^3.4.4" readable-stream "^2.0.0" crc@^3.4.4: version "3.8.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz" integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== dependencies: buffer "^5.1.0" create-ecdh@^4.0.0: version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz" integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== dependencies: bn.js "^4.1.0" @@ -2601,14 +2798,13 @@ create-ecdh@^4.0.0: create-error-class@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" - integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz" dependencies: capture-stack-trace "^1.0.0" create-hash@^1.1.0, create-hash@^1.1.2: version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: cipher-base "^1.0.1" @@ -2619,7 +2815,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: cipher-base "^1.0.3" @@ -2631,15 +2827,13 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: crocket@^0.9.11: version "0.9.11" - resolved "https://registry.yarnpkg.com/crocket/-/crocket-0.9.11.tgz#288fca11ef0d3dd239b62c488265f30c8edfb0c5" - integrity sha1-KI/KEe8NPdI5tixIgmXzDI7fsMU= + resolved "https://registry.yarnpkg.com/crocket/-/crocket-0.9.11.tgz" dependencies: xpipe "*" cross-spawn@^5.0.1: version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz" dependencies: lru-cache "^4.0.1" shebang-command "^1.2.0" @@ -2647,7 +2841,7 @@ cross-spawn@^5.0.1: cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" @@ -2658,12 +2852,11 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: cross-unzip@0.0.2: version "0.0.2" - resolved "https://registry.yarnpkg.com/cross-unzip/-/cross-unzip-0.0.2.tgz#5183bc47a09559befcf98cc4657964999359372f" - integrity sha1-UYO8R6CVWb78+YzEZXlkmZNZNy8= + resolved "https://registry.yarnpkg.com/cross-unzip/-/cross-unzip-0.0.2.tgz" crypto-browserify@^3.11.0: version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz" integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== dependencies: browserify-cipher "^1.0.0" @@ -2680,22 +2873,19 @@ crypto-browserify@^3.11.0: crypto-random-string@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz" css-color-keywords@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" - integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz" css-color-names@0.0.4: version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz" css-hot-loader@^1.4.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/css-hot-loader/-/css-hot-loader-1.4.2.tgz#6fa7ae7b8e309bb8be3b7b586efd702073c68611" + resolved "https://registry.yarnpkg.com/css-hot-loader/-/css-hot-loader-1.4.2.tgz" integrity sha512-f2A5oTwEOWFCM90zh/f+WEOcHbrqGK5Hc8CZI/Bf5kgSOsP6mAXd+P3thBg6uHxaKtby6+Z7wjT5IC6KZt1Q6g== dependencies: loader-utils "^1.1.0" @@ -2704,7 +2894,7 @@ css-hot-loader@^1.4.2: css-loader@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz" integrity sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw== dependencies: babel-code-frame "^6.26.0" @@ -2722,20 +2912,18 @@ css-loader@^1.0.1: css-parse@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz#a468ee667c16d81ccf05c58c38d2a97c780dbfd4" - integrity sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q= + resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz" dependencies: css "^2.0.0" css-select-base-adapter@~0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== css-select@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz" dependencies: boolbase "~1.0.0" css-what "2.1" @@ -2744,7 +2932,7 @@ css-select@^1.1.0: css-select@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz" integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ== dependencies: boolbase "^1.0.0" @@ -2754,7 +2942,7 @@ css-select@^2.0.0: css-selector-tokenizer@^0.7.0: version "0.7.1" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz" integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA== dependencies: cssesc "^0.1.0" @@ -2763,7 +2951,7 @@ css-selector-tokenizer@^0.7.0: css-to-react-native@^2.2.2: version "2.2.2" - resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.2.2.tgz#c077d0f7bf3e6c915a539e7325821c9dd01f9965" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-2.2.2.tgz" integrity sha512-w99Fzop1FO8XKm0VpbQp3y5mnTnaS+rtCvS+ylSEOK76YXO5zoHQx/QMB1N54Cp+Ya9jB9922EHrh14ld4xmmw== dependencies: css-color-keywords "^1.0.0" @@ -2772,7 +2960,7 @@ css-to-react-native@^2.2.2: css-tree@1.0.0-alpha.28: version "1.0.0-alpha.28" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz" integrity sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w== dependencies: mdn-data "~1.1.0" @@ -2780,7 +2968,7 @@ css-tree@1.0.0-alpha.28: css-tree@1.0.0-alpha.29: version "1.0.0-alpha.29" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz" integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg== dependencies: mdn-data "~1.1.0" @@ -2788,22 +2976,20 @@ css-tree@1.0.0-alpha.29: css-url-regex@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" - integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w= + resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz" css-value@~0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/css-value/-/css-value-0.0.1.tgz#5efd6c2eea5ea1fd6b6ac57ec0427b18452424ea" - integrity sha1-Xv1sLupeof1rasV+wEJ7GEUkJOo= + resolved "https://registry.yarnpkg.com/css-value/-/css-value-0.0.1.tgz" css-what@2.1, css-what@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz" integrity sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ== css@^2.0.0: version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz" integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== dependencies: inherits "^2.0.3" @@ -2813,13 +2999,11 @@ css@^2.0.0: cssesc@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" - integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz" cssnano@^3.4.0: version "3.10.0" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" - integrity sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg= + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz" dependencies: autoprefixer "^6.3.1" decamelize "^1.1.2" @@ -2856,52 +3040,53 @@ cssnano@^3.4.0: csso@^3.5.0: version "3.5.1" - resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" + resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz" integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg== dependencies: css-tree "1.0.0-alpha.29" csso@~2.3.1: version "2.3.2" - resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" - integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U= + resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz" dependencies: clap "^1.0.9" source-map "^0.5.3" -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": +cssom@0.3.x: version "0.3.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz" integrity sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog== +"cssom@>= 0.3.2 < 0.4.0": + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + cssstyle@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb" - integrity sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog== + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== dependencies: cssom "0.3.x" csstype@^2.2.0: version "2.5.7" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.5.7.tgz#bf9235d5872141eccfb2d16d82993c6b149179ff" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.5.7.tgz" integrity sha512-Nt5VDyOTIIV4/nRFswoCKps1R5CD1hkiyjBE9/thNaNZILLEviVw9yWQw15+O+CpNjQKB/uvdcxFFOrSflY3Yw== currently-unhandled@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz" dependencies: array-find-index "^1.0.1" cyclist@~0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" - integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz" dashdash@^1.12.0: version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz" dependencies: assert-plus "^1.0.0" @@ -2916,125 +3101,104 @@ data-urls@^1.0.0: date-now@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" - integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz" -debug@2.6.9, debug@^2.1.2, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz" 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.0.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" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" -debug@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" - integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== +debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" -decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.2, decamelize@^1.2.0: version "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" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz" decode-uri-component@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz" decompress-response@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz" dependencies: mimic-response "^1.0.0" deep-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= + version "1.1.0" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz" + integrity sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" deep-extend@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@~0.1.3: version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz" deepmerge@~2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.0.1.tgz#25c1c24f110fb914f80001b925264dd77f3f4312" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.0.1.tgz" integrity sha512-VIPwiMJqJ13ZQfaCsIFnp5Me9tnjURiaIFxfz7EH0Ci0dTSQpZtSLrqOicXqEd/z2r+z+Klk9GzmnRsgpgbOsQ== -default-gateway@^2.6.0: - version "2.7.2" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.7.2.tgz#b7ef339e5e024b045467af403d50348db4642d0f" - integrity sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ== +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== dependencies: - execa "^0.10.0" + execa "^1.0.0" ip-regex "^2.1.0" -default-require-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" - integrity sha1-836hXT4T/9m0N9M+GnW1+5eHTLg= - dependencies: - strip-bom "^2.0.0" - defer-to-connect@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.0.2.tgz#4bae758a314b034ae33902b5aac25a8dd6a8633e" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.0.2.tgz" integrity sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw== define-properties@^1.1.2: version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" define-property@^0.2.5: version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz" dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz" dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz" integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" @@ -3042,25 +3206,24 @@ define-property@^2.0.2: defined@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz" -del@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" - integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= +del@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/del/-/del-4.1.1.tgz" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== dependencies: + "@types/glob" "^7.1.1" globby "^6.1.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - p-map "^1.1.1" - pify "^3.0.0" - rimraf "^2.2.8" + 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" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz" delegates@^1.0.0: version "1.0.0" @@ -3069,28 +3232,18 @@ delegates@^1.0.0: depd@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" des.js@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" - integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz" dependencies: inherits "^2.0.1" minimalistic-assert "^1.0.0" destroy@~1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= - dependencies: - repeating "^2.0.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" detect-libc@^1.0.2: version "1.0.3" @@ -3102,20 +3255,18 @@ detect-newline@^2.1.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= -detect-node@^2.0.3: +detect-node@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz" integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== dev-null@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/dev-null/-/dev-null-0.1.1.tgz#5a205ce3c2b2ef77b6238d6ba179eb74c6a0e818" - integrity sha1-WiBc48Ky73e2I41roXnrdMag6Bg= + resolved "https://registry.yarnpkg.com/dev-null/-/dev-null-0.1.1.tgz" devtron@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/devtron/-/devtron-1.4.0.tgz#b5e748bd6e95bbe70bfcc68aae6fe696119441e1" - integrity sha1-tedIvW6Vu+cL/MaKrm/mlhGUQeE= + resolved "https://registry.yarnpkg.com/devtron/-/devtron-1.4.0.tgz" dependencies: accessibility-developer-tools "^2.11.0" highlight.js "^9.3.0" @@ -3123,21 +3274,26 @@ devtron@^1.4.0: diagnostics@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/diagnostics/-/diagnostics-1.1.1.tgz#cab6ac33df70c9d9a727490ae43ac995a769b22a" + resolved "https://registry.yarnpkg.com/diagnostics/-/diagnostics-1.1.1.tgz" integrity sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ== dependencies: colorspace "1.1.x" enabled "1.0.x" kuler "1.0.x" +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== + diff@^3.2.0: version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== diffie-hellman@^5.0.0: version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz" integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== dependencies: bn.js "^4.1.0" @@ -3146,7 +3302,7 @@ diffie-hellman@^5.0.0: dmg-builder@6.4.0: version "6.4.0" - resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-6.4.0.tgz#a95a9cb951d8535acc14bde7b1cd3412ccf43c34" + resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-6.4.0.tgz" integrity sha512-q84fMrMm9mXh2qH0Sb3+o0gCvfeJRBI+46y+CpQystqgRyB+3bZB11WqCf5d8+qsENhzpi786jR82xbHG1Vvag== dependencies: app-builder-lib "~20.36.0" @@ -3160,12 +3316,11 @@ dmg-builder@6.4.0: dns-equal@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" dns-packet@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz" integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== dependencies: ip "^1.1.0" @@ -3173,92 +3328,85 @@ dns-packet@^1.3.1: dns-txt@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + resolved "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz" dependencies: buffer-indexof "^1.0.0" dom-converter@~0.2: version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz" integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== dependencies: utila "~0.4" dom-helpers@^3.2.0: version "3.4.0" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz" integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== dependencies: "@babel/runtime" "^7.1.2" dom-serializer@0: version "0.1.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" - integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII= + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz" dependencies: domelementtype "~1.1.1" entities "~1.1.1" domain-browser@^1.1.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== domelementtype@1: version "1.2.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.2.1.tgz#578558ef23befac043a1abb0db07635509393479" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.2.1.tgz" integrity sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA== domelementtype@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" - integrity sha1-sXrtguirWeUt2cGbF1bg/BhyBMI= + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz" domelementtype@~1.1.1: version "1.1.3" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" - integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs= + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz" domexception@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz" integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== dependencies: webidl-conversions "^4.0.2" domhandler@2.1: version "2.1.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594" - integrity sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ= + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz" dependencies: domelementtype "1" domhandler@^2.3.0: version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz" integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== dependencies: domelementtype "1" domutils@1.1: version "1.1.6" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485" - integrity sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU= + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz" dependencies: domelementtype "1" domutils@1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz" dependencies: dom-serializer "0" domelementtype "1" domutils@^1.5.1, domutils@^1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== dependencies: dom-serializer "0" @@ -3266,29 +3414,27 @@ domutils@^1.5.1, domutils@^1.7.0: dot-prop@^4.1.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz" integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== dependencies: is-obj "^1.0.0" dotenv-expand@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275" - integrity sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU= + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz" dotenv@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.1.0.tgz#9853b6ca98292acb7dec67a95018fa40bccff42c" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.1.0.tgz" integrity sha512-/veDn2ztgRlB7gKmE3i9f6CmDIyXAy6d5nBq+whO9SLX+Zs1sXEgFLPi+aSuWqUuusMfbi84fT8j34fs1HaYUw== duplexer3@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz" duplexify@^3.4.2, duplexify@^3.6.0: version "3.6.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz" integrity sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA== dependencies: end-of-stream "^1.0.0" @@ -3298,30 +3444,28 @@ duplexify@^3.4.2, duplexify@^3.6.0: ecc-jsbn@~0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" ee-first@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" ejs@^2.6.1: version "2.6.1" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz" integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ== ejs@~2.5.6: version "2.5.9" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.9.tgz#7ba254582a560d267437109a68354112475b0ce5" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.9.tgz" integrity sha512-GJCAeDBKfREgkBtgrYSf9hQy9kTb3helv0zGdzqhM7iAkW8FA/ZF97VQDbwFiwIT8MQLLOe5VlPZOEvZAqtUAQ== electron-builder@^20.36.2: version "20.36.2" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-20.36.2.tgz#9fefef8c5f08ced5c2085d8331c2ad3c545daef8" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-20.36.2.tgz" integrity sha512-xPJNt3ZBn5IYlp3pCP0Rvi00JYAKdTeOSLWFrkST1xqWfRZxXrI4uisVD9HQjzRN8hBHhTgTfXtb9uhWPha9eA== dependencies: app-builder-lib "20.36.2" @@ -3340,7 +3484,7 @@ electron-builder@^20.36.2: electron-chromedriver@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/electron-chromedriver/-/electron-chromedriver-3.0.0.tgz#ec0a17badb6c3529813c660bf91a43fb91407674" + resolved "https://registry.yarnpkg.com/electron-chromedriver/-/electron-chromedriver-3.0.0.tgz" integrity sha512-xWivZRiPTtDFJt+qXv7Ax/Dmhxj0iqESOxoLZ2szu3fv6k1vYDUDJUMHfdfVAke9D2gBRIgChuGb5j3YEt6hxQ== dependencies: electron-download "^4.1.0" @@ -3348,7 +3492,7 @@ electron-chromedriver@~3.0.0: electron-devtools-installer@^2.2.4: version "2.2.4" - resolved "https://registry.yarnpkg.com/electron-devtools-installer/-/electron-devtools-installer-2.2.4.tgz#261a50337e37121d338b966f07922eb4939a8763" + resolved "https://registry.yarnpkg.com/electron-devtools-installer/-/electron-devtools-installer-2.2.4.tgz" integrity sha512-b5kcM3hmUqn64+RUcHjjr8ZMpHS2WJ5YO0pnG9+P/RTdx46of/JrEjuciHWux6pE+On6ynWhHJF53j/EDJN0PA== dependencies: "7zip" "0.0.6" @@ -3358,8 +3502,7 @@ electron-devtools-installer@^2.2.4: 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= + resolved "https://registry.yarnpkg.com/electron-download/-/electron-download-3.3.0.tgz" dependencies: debug "^2.2.0" fs-extra "^0.30.0" @@ -3373,7 +3516,7 @@ electron-download@^3.0.1: electron-download@^4.1.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/electron-download/-/electron-download-4.1.1.tgz#02e69556705cc456e520f9e035556ed5a015ebe8" + resolved "https://registry.yarnpkg.com/electron-download/-/electron-download-4.1.1.tgz" integrity sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg== dependencies: debug "^3.0.0" @@ -3388,7 +3531,7 @@ electron-download@^4.1.0: electron-json-storage@^4.1.4: version "4.1.4" - resolved "https://registry.yarnpkg.com/electron-json-storage/-/electron-json-storage-4.1.4.tgz#5b2dda8e81e73b0aa473d12af3eb3052a063c78a" + resolved "https://registry.yarnpkg.com/electron-json-storage/-/electron-json-storage-4.1.4.tgz" integrity sha512-LxlpewrNo50xnueaH7JsFD1o3OImq6zV4xbKbu0tFjNHsHPLo2gj4ZmnFizEQrlVFOlA/uNQhuhlaLUXQeMVqg== dependencies: async "^2.0.0" @@ -3399,7 +3542,7 @@ electron-json-storage@^4.1.4: electron-osx-sign@0.4.11: version "0.4.11" - resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz#8377732fe7b207969f264b67582ee47029ce092f" + resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz" integrity sha512-VVd40nrnVqymvFrY9ZkOYgHJOvexHHYTR3di/SN+mjJ0OWhR1I8BRVj3U+Yamw6hnkZZNKZp52rqL5EFAAPFkQ== dependencies: bluebird "^3.5.0" @@ -3411,7 +3554,7 @@ electron-osx-sign@0.4.11: electron-publish@20.36.0: version "20.36.0" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-20.36.0.tgz#419fe994938af2b158ac4677f72839ad229e05e8" + resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-20.36.0.tgz" integrity sha512-LjJ4KoApSLtKyGWotv0B+PoTzpLEdHHXzDF9HLxatPlfoZCmrOexqm7Qiv1ODuYWPac7Zpf2OHitJp8WIOcZRQ== dependencies: bluebird-lst "^1.0.6" @@ -3424,8 +3567,7 @@ electron-publish@20.36.0: electron-redux@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/electron-redux/-/electron-redux-1.3.1.tgz#650a76cdeb12358f57b5c7db744224d08999ae08" - integrity sha1-ZQp2zesSNY9XtcfbdEIk0ImZrgg= + resolved "https://registry.yarnpkg.com/electron-redux/-/electron-redux-1.3.1.tgz" dependencies: debug "^2.3.3" flux-standard-action "^1.0.0" @@ -3433,12 +3575,12 @@ electron-redux@^1.3.1: electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.82: version "1.3.84" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.84.tgz#2e55df59e818f150a9f61b53471ebf4f0feecc65" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.84.tgz" integrity sha512-IYhbzJYOopiTaNWMBp7RjbecUBsbnbDneOP86f3qvS0G0xfzwNSvMJpTrvi5/Y1gU7tg2NAgeg8a8rCYvW9Whw== electron-webpack-js@~2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/electron-webpack-js/-/electron-webpack-js-2.3.0.tgz#38724bd20aecfbe752b485784fa4e7ce60842b41" + resolved "https://registry.yarnpkg.com/electron-webpack-js/-/electron-webpack-js-2.3.0.tgz" integrity sha512-1g8St/dFWVwg3ZPS9K+9KVtaGJY0TONTH+5XOYNQ/5ADlVqxlkEXAc8dKMTSyDDFL8h1xUPfxVnKz3xHJgQT6A== dependencies: "@babel/core" "^7.1.2" @@ -3449,7 +3591,7 @@ electron-webpack-js@~2.3.0: electron-webpack-ts@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/electron-webpack-ts/-/electron-webpack-ts-3.1.0.tgz#3b8e6635317af28e479b1dfbdcc188c6cbd0b845" + resolved "https://registry.yarnpkg.com/electron-webpack-ts/-/electron-webpack-ts-3.1.0.tgz" integrity sha512-hzbvfgX4+/ujOmVlUy4Nik1cbOhxOLnRpcQp4riC6foxNz5q2uESApyu2dsQeED26MkQ5g7Y1Z0w+ugdC8bvfg== dependencies: fork-ts-checker-webpack-plugin "^0.5.0" @@ -3457,7 +3599,7 @@ electron-webpack-ts@^3.1.0: electron-webpack@^2.6.1: version "2.6.1" - resolved "https://registry.yarnpkg.com/electron-webpack/-/electron-webpack-2.6.1.tgz#69425faa780215586f8290b55279bad1d2f6c974" + resolved "https://registry.yarnpkg.com/electron-webpack/-/electron-webpack-2.6.1.tgz" integrity sha512-PHr5/5syGsHzuFxQCzLuvBmPfE+MCDgllcR6s6nDrQC69pZ2ICACiKVVFO+Q2wVb2XBfH31jozaFZ6hscreuwg== dependencies: "@types/webpack-env" "^1.13.6" @@ -3491,7 +3633,7 @@ electron-webpack@^2.6.1: electron@3.0.10: version "3.0.10" - resolved "https://registry.yarnpkg.com/electron/-/electron-3.0.10.tgz#7d412856e8cf0d3041a612a32dd09e2af2d50f50" + resolved "https://registry.yarnpkg.com/electron/-/electron-3.0.10.tgz" integrity sha512-I39IeQP3NOlbjKzTDK8uK2JdiHDfhV5SruCS2Gttkn2MaKCY+yIzQ6Wr4DyBXLeTEkL1sbZxbqQVhCavAliv5w== dependencies: "@types/node" "^8.0.24" @@ -3500,7 +3642,7 @@ electron@3.0.10: electron@^1.7.5: version "1.8.8" - resolved "https://registry.yarnpkg.com/electron/-/electron-1.8.8.tgz#a90cddb075291f49576993e6f5c8bb4439301cae" + resolved "https://registry.yarnpkg.com/electron/-/electron-1.8.8.tgz" integrity sha512-1f9zJehcTTGjrkb06o6ds+gsRq6SYhZJyxOk6zIWjRH8hVy03y/RzUDELzNas71f5vcvXmfGVvyjeEsadDI8tg== dependencies: "@types/node" "^8.0.24" @@ -3509,7 +3651,7 @@ electron@^1.7.5: elliptic@^6.0.0: version "6.4.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz" integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== dependencies: bn.js "^4.4.0" @@ -3520,40 +3662,41 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + emojis-list@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz" enabled@1.0.x: version "1.0.2" - resolved "https://registry.yarnpkg.com/enabled/-/enabled-1.0.2.tgz#965f6513d2c2d1c5f4652b64a2e3396467fc2f93" - integrity sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M= + resolved "https://registry.yarnpkg.com/enabled/-/enabled-1.0.2.tgz" dependencies: env-variable "0.0.x" encodeurl@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" encoding@^0.1.11: version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz" dependencies: iconv-lite "~0.4.13" end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz" integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== dependencies: once "^1.4.0" enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz" integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== dependencies: graceful-fs "^4.1.2" @@ -3562,43 +3705,41 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: entities@^1.1.1, entities@~1.1.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz" integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== env-paths@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz#4168133b42bb05c38a35b1ae4397c8298ab369e0" - integrity sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA= + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz" env-variable@0.0.x: version "0.0.5" - resolved "https://registry.yarnpkg.com/env-variable/-/env-variable-0.0.5.tgz#913dd830bef11e96a039c038d4130604eba37f88" + resolved "https://registry.yarnpkg.com/env-variable/-/env-variable-0.0.5.tgz" integrity sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA== errno@^0.1.3, errno@~0.1.7: version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz" integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== dependencies: prr "~1.0.1" -error-ex@^1.2.0: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" error-stack-parser@^1.3.6: version "1.3.6" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-1.3.6.tgz#e0e73b93e417138d1cd7c0b746b1a4a14854c292" - integrity sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI= + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-1.3.6.tgz" dependencies: stackframe "^0.3.1" es-abstract@^1.5.1, es-abstract@^1.6.1: version "1.12.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz" integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA== dependencies: es-to-primitive "^1.1.1" @@ -3609,7 +3750,7 @@ es-abstract@^1.5.1, es-abstract@^1.6.1: es-to-primitive@^1.1.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz" integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== dependencies: is-callable "^1.1.4" @@ -3618,23 +3759,21 @@ es-to-primitive@^1.1.1: es6-promise@*, es6-promise@^4.0.5: version "4.2.5" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz" integrity sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg== escape-html@~1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" escodegen@^1.9.1: - version "1.11.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" - integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw== + version "1.12.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541" + integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg== dependencies: esprima "^3.1.3" estraverse "^4.2.0" @@ -3645,7 +3784,7 @@ escodegen@^1.9.1: eslint-scope@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz" integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA== dependencies: esrecurse "^4.1.0" @@ -3653,76 +3792,68 @@ eslint-scope@^4.0.0: esprima@^2.6.0: version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz" esprima@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz" esprima@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esrecurse@^4.1.0: version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz" integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== dependencies: estraverse "^4.1.0" estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz" esutils@^2.0.0, esutils@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz" etag@~1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" eventemitter3@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" - integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA== + version "3.1.2" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== events@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz" eventsource@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + resolved "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz" integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== dependencies: original "^1.0.0" evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: md5.js "^1.3.4" safe-buffer "^5.1.1" -exec-sh@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" - integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw== - dependencies: - merge "^1.2.0" +exec-sh@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" + integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg== execa@^0.10.0: version "0.10.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz" integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== dependencies: cross-spawn "^6.0.0" @@ -3735,8 +3866,7 @@ execa@^0.10.0: execa@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz" dependencies: cross-spawn "^5.0.1" get-stream "^3.0.0" @@ -3746,22 +3876,26 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + exit@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz" expand-brackets@^2.1.4: version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz" dependencies: debug "^2.3.3" define-property "^0.2.5" @@ -3771,100 +3905,84 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - -expect@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98" - integrity sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w== +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== dependencies: + "@jest/types" "^24.9.0" ansi-styles "^3.2.0" - jest-diff "^23.6.0" - jest-get-type "^22.1.0" - jest-matcher-utils "^23.6.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" -express@^4.16.2: - version "4.16.4" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" - integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== +express@^4.17.1: + version "4.17.1" + resolved "https://registry.npmjs.org/express/-/express-4.17.1.tgz" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== dependencies: - accepts "~1.3.5" + accepts "~1.3.7" array-flatten "1.1.1" - body-parser "1.18.3" - content-disposition "0.5.2" + body-parser "1.19.0" + content-disposition "0.5.3" content-type "~1.0.4" - cookie "0.3.1" + cookie "0.4.0" cookie-signature "1.0.6" debug "2.6.9" depd "~1.1.2" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.1.1" + finalhandler "~1.1.2" fresh "0.5.2" merge-descriptors "1.0.1" methods "~1.1.2" on-finished "~2.3.0" - parseurl "~1.3.2" + parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.4" - qs "6.5.2" - range-parser "~1.2.0" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" safe-buffer "5.1.2" - send "0.16.2" - serve-static "1.13.2" - setprototypeof "1.1.0" - statuses "~1.4.0" - type-is "~1.6.16" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" extend-shallow@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz" dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz" dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" extend@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== external-editor@^2.0.4: version "2.2.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz" integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== dependencies: chardet "^0.4.0" iconv-lite "^0.4.17" tmp "^0.0.33" -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - extglob@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz" integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" @@ -3878,8 +3996,7 @@ extglob@^2.0.4: extract-zip@^1.0.3, extract-zip@^1.6.5: version "1.6.7" - resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9" - integrity sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k= + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz" dependencies: concat-stream "1.6.2" debug "2.6.9" @@ -3888,64 +4005,56 @@ extract-zip@^1.0.3, extract-zip@^1.6.5: extsprintf@1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz" extsprintf@^1.2.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz" fast-deep-equal@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz" fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz" fast-levenshtein@~2.0.4: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" fast-safe-stringify@^2.0.4: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz#04b26106cc56681f51a044cfc0d76cf0008ac2c2" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz" integrity sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg== fastparse@^1.1.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz" integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== faye-websocket@^0.10.0: version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz" dependencies: websocket-driver ">=0.5.1" faye-websocket@~0.11.1: - version "0.11.1" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" - integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg= + version "0.11.3" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== dependencies: websocket-driver ">=0.5.1" fb-watchman@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" - integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz" dependencies: bser "^2.0.0" fbjs@^0.8.5: version "0.8.17" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" - integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz" dependencies: core-js "^1.0.0" isomorphic-fetch "^2.1.1" @@ -3957,31 +4066,29 @@ fbjs@^0.8.5: fd-slicer@~1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" - integrity sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU= + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz" dependencies: pend "~1.2.0" fecha@^2.3.3: version "2.3.3" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz" integrity sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg== figgy-pudding@^3.1.0, figgy-pudding@^3.5.1: version "3.5.1" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz" integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== figures@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz" dependencies: escape-string-regexp "^1.0.5" file-loader@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz" integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ== dependencies: loader-utils "^1.0.2" @@ -3989,62 +4096,36 @@ file-loader@^2.0.0: file-selector@^0.1.10: version "0.1.10" - resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-0.1.10.tgz#5e39e07fb330de63143e4be90d207358ea39e28e" + resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-0.1.10.tgz" integrity sha512-wr0KDRkIZPDUc5zHsBEbtIa0A5apzA15aYGdDFYzUnGFVF+uXO5izWTRtA3oj+HO7+RMi76XqKdcx66gNmsBcw== dependencies: tslib "^1.9.0" -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - -fileset@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" - integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA= - dependencies: - glob "^7.0.3" - minimatch "^3.0.3" - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - fill-range@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz" dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" repeat-string "^1.6.1" to-regex-range "^2.1.0" -finalhandler@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" - integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.4.0" + parseurl "~1.3.3" + statuses "~1.5.0" unpipe "~1.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= + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz" dependencies: commondir "^1.0.1" make-dir "^1.0.0" @@ -4052,7 +4133,7 @@ find-cache-dir@^1.0.0: find-cache-dir@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz" integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA== dependencies: commondir "^1.0.1" @@ -4061,34 +4142,31 @@ find-cache-dir@^2.0.0: find-up@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz" dependencies: path-exists "^2.0.0" pinkie-promise "^2.0.0" find-up@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz" dependencies: locate-path "^2.0.0" find-up@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz" integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" flatten@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" - integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz" flush-write-stream@^1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz" integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw== dependencies: inherits "^2.0.1" @@ -4096,43 +4174,32 @@ flush-write-stream@^1.0.0: flux-standard-action@^1.0.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/flux-standard-action/-/flux-standard-action-1.2.0.tgz#d2d41612dde4cebddd11a76cfead8e84fc69ebdc" - integrity sha1-0tQWEt3kzr3dEads/q2OhPxp69w= + resolved "https://registry.yarnpkg.com/flux-standard-action/-/flux-standard-action-1.2.0.tgz" dependencies: lodash "^4.0.0" follow-redirects@^1.0.0: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + version "1.9.0" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz" + integrity sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A== dependencies: - debug "=3.1.0" + debug "^3.0.0" -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz" foreach@2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.4.tgz#cc5d0d8ae1d46cc9a555c2682f910977859935df" - integrity sha1-zF0NiuHUbMmlVcJoL5EJd4WZNd8= + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.4.tgz" forever-agent@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz" fork-ts-checker-webpack-plugin@^0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-0.5.0.tgz#39de03c2579368806478024cbce6ac7f5346d590" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-0.5.0.tgz" integrity sha512-F8Xh0YBJEi1U0EGaYkTfc7IjDgQvBazGwBkoVytvcEIBeLHcqxYtwh5FkFcQdTsKZLWHGgtSJ78C3//RhpWFGw== dependencies: babel-code-frame "^6.22.0" @@ -4144,7 +4211,7 @@ fork-ts-checker-webpack-plugin@^0.5.0: form-data@~2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz" integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" @@ -4153,37 +4220,33 @@ form-data@~2.3.2: forwarded@~0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz" fragment-cache@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz" dependencies: map-cache "^0.2.2" fresh@0.5.2: version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" from2@^2.1.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz" dependencies: inherits "^2.0.1" readable-stream "^2.0.0" fs-constants@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== fs-extra-p@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/fs-extra-p/-/fs-extra-p-7.0.0.tgz#da9a72df71dc77fb938162025a5fc658713c98ab" + resolved "https://registry.yarnpkg.com/fs-extra-p/-/fs-extra-p-7.0.0.tgz" integrity sha512-5tg5jBOd0xIXjwj4PDnafOXL5TyPVzjxLby4DPKev53wurEXp7IsojBaD4Lj5M5w7jxw0pbkEU0fFEPmcKoMnA== dependencies: bluebird-lst "^1.0.6" @@ -4191,8 +4254,7 @@ fs-extra-p@^7.0.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= + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz" dependencies: graceful-fs "^4.1.2" jsonfile "^2.1.0" @@ -4202,7 +4264,7 @@ fs-extra@^0.30.0: fs-extra@^4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz" integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== dependencies: graceful-fs "^4.1.2" @@ -4211,7 +4273,7 @@ fs-extra@^4.0.1: fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== dependencies: graceful-fs "^4.1.2" @@ -4219,16 +4281,15 @@ fs-extra@^7.0.0, fs-extra@^7.0.1: universalify "^0.1.0" fs-minipass@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" - integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== + version "1.2.6" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" + integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ== dependencies: minipass "^2.2.1" 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= + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz" dependencies: graceful-fs "^4.1.2" iferr "^0.1.5" @@ -4237,33 +4298,23 @@ fs-write-stream-atomic@^1.0.8: fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.2, fsevents@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" - integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg== - dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz" -fsevents@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" - integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== +fsevents@^1.2.2, fsevents@^1.2.7: + version "1.2.9" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" + integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.0" + nan "^2.12.1" + node-pre-gyp "^0.12.0" fsm-iterator@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/fsm-iterator/-/fsm-iterator-1.1.0.tgz#337de45de19eb205788cf02e3a955ec206760dec" - integrity sha1-M33kXeGesgV4jPAuOpVewgZ2Dew= + resolved "https://registry.yarnpkg.com/fsm-iterator/-/fsm-iterator-1.1.0.tgz" function-bind@^1.1.0, function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== gauge@~2.7.3: @@ -4282,71 +4333,56 @@ gauge@~2.7.3: gaze@~1.1.2: version "1.1.3" - resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz" integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== dependencies: globule "^1.0.0" 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" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz" 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-stdin@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz" get-stream@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz" get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz" getpass@^0.1.1: version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz" dependencies: assert-plus "^1.0.0" -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= - dependencies: - is-glob "^2.0.0" - glob-parent@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz" dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1: version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: fs.realpath "^1.0.0" @@ -4358,30 +4394,23 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1: global-dirs@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" - integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz" dependencies: ini "^1.3.4" global-modules-path@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.0.tgz#b0e2bac6beac39745f7db5c59d26a36a0b94f7dc" + resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.0.tgz" integrity sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag== globals@^11.1.0: version "11.9.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz" integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg== -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - globby@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + resolved "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz" dependencies: array-union "^1.0.1" glob "^7.0.3" @@ -4391,7 +4420,7 @@ globby@^6.1.0: globule@^1.0.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz" integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ== dependencies: glob "~7.1.1" @@ -4400,8 +4429,7 @@ globule@^1.0.0: got@^6.7.1: version "6.7.1" - resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" - integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz" dependencies: create-error-class "^3.0.0" duplexer3 "^0.1.4" @@ -4417,7 +4445,7 @@ got@^6.7.1: got@^9.6.0: version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz" integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== dependencies: "@sindresorhus/is" "^0.14.0" @@ -4434,30 +4462,34 @@ got@^9.6.0: graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz" integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== +graceful-fs@^4.1.15: + version "4.2.2" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" + integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== + grapheme-splitter@^1.0.2: version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== growly@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz" -handle-thing@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" - integrity sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ= +handle-thing@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz" + integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== -handlebars@^4.0.3: - version "4.0.12" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5" - integrity sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA== +handlebars@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.2.0.tgz#57ce8d2175b9bbb3d8b3cf3e4217b1aec8ddcb2e" + integrity sha512-Kb4xn5Qh1cxAKvQnzNWZ512DhABzyFNmsaJf3OAkWNa4NkaqWcNI8Tao8Tasi0/F4JD9oyG0YxuFyvyR57d+Gw== dependencies: - async "^2.5.0" + neo-async "^2.6.0" optimist "^0.6.1" source-map "^0.6.1" optionalDependencies: @@ -4465,12 +4497,11 @@ handlebars@^4.0.3: har-schema@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz" har-validator@~5.1.0: version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz" integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== dependencies: ajv "^6.5.5" @@ -4478,30 +4509,25 @@ har-validator@~5.1.0: has-ansi@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz" dependencies: ansi-regex "^2.0.0" has-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz" has-flag@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz" has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz" has-symbols@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" - integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz" has-unicode@^2.0.0: version "2.0.1" @@ -4510,8 +4536,7 @@ has-unicode@^2.0.0: has-value@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz" dependencies: get-value "^2.0.3" has-values "^0.1.4" @@ -4519,8 +4544,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz" dependencies: get-value "^2.0.6" has-values "^1.0.0" @@ -4528,35 +4552,32 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz" has-values@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz" dependencies: is-number "^3.0.0" kind-of "^4.0.0" has@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" hash-base@^3.0.0: version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz" dependencies: inherits "^2.0.1" safe-buffer "^5.0.1" hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.5" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz" integrity sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA== dependencies: inherits "^2.0.3" @@ -4564,17 +4585,17 @@ hash.js@^1.0.0, hash.js@^1.0.3: he@1.2.x: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== highlight.js@^9.3.0: version "9.13.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.13.1.tgz#054586d53a6863311168488a0f58d6c505ce641e" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.13.1.tgz" integrity sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A== history@^4.7.2: version "4.7.2" - resolved "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz#22b5c7f31633c5b8021c7f4a8a954ac139ee8d5b" + resolved "https://registry.yarnpkg.com/history/-/history-4.7.2.tgz" integrity sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA== dependencies: invariant "^2.2.1" @@ -4585,8 +4606,7 @@ history@^4.7.2: hmac-drbg@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz" dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" @@ -4594,38 +4614,29 @@ hmac-drbg@^1.0.0: hoist-non-react-statics@^2.5.0: version "2.5.5" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz" integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== hoist-non-react-statics@^3.1.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.2.0.tgz#d21b9fc72b50fdc38c5d88f6e2c52f2c2dbe5ee2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.2.0.tgz" integrity sha512-3IascCRfaEkbmHjJnUxWSspIUE1okLPjGTMVXW8zraUo1t3yg1BadKAxAGILHwgoBzmMnzrgeeaDGBvpuPz6dA== dependencies: react-is "^16.3.2" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= - dependencies: - 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" + resolved "https://registry.yarnpkg.com/home-path/-/home-path-1.0.6.tgz" integrity sha512-wo+yjrdAtoXt43Vy92a+0IPCYViiyLAHyp0QVS4xL/tfvVz5sXIW1ubLZk3nhVkD92fQpUMKX+fzMjr5F489vw== 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" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz" integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== hpack.js@^2.1.6: version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" dependencies: inherits "^2.0.1" obuf "^1.0.0" @@ -4634,24 +4645,23 @@ hpack.js@^2.1.6: html-comment-regex@^1.1.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz" integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== html-encoding-sniffer@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz" integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== 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= + resolved "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz" html-loader@^1.0.0-alpha.0: version "1.0.0-alpha.0" - resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-1.0.0-alpha.0.tgz#3f4ae7b490a587619be6d1eaa8ce16683580c642" + resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-1.0.0-alpha.0.tgz" integrity sha512-KcuaIRWTU0kFjOJCs32a3JsGNCWkeOak0/F/uvJNp3x/N4McXdqHpcK64cYTozK7QLPKKtUqb9h7wR9K9rYRkg== dependencies: "@posthtml/esm" "^1.0.0" @@ -4662,7 +4672,7 @@ html-loader@^1.0.0-alpha.0: html-minifier@^3.2.3: version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz" integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== dependencies: camel-case "3.0.x" @@ -4675,8 +4685,7 @@ html-minifier@^3.2.3: html-webpack-plugin@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" - integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz" dependencies: html-minifier "^3.2.3" loader-utils "^0.2.16" @@ -4688,7 +4697,7 @@ html-webpack-plugin@^3.2.0: htmlnano@^0.1.6: version "0.1.10" - resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-0.1.10.tgz#a0a548eb4c76ae2cf2423ec7a25c881734d3dea6" + resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-0.1.10.tgz" integrity sha512-eTEUzz8VdWYp+w/KUdb99kwao4reR64epUySyZkQeepcyzPQ2n2EPWzibf6QDxmkGy10Kr+CKxYqI3izSbmhJQ== dependencies: cssnano "^3.4.0" @@ -4700,7 +4709,7 @@ htmlnano@^0.1.6: htmlparser2@^3.9.2: version "3.10.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz" integrity sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ== dependencies: domelementtype "^1.3.0" @@ -4712,8 +4721,7 @@ htmlparser2@^3.9.2: htmlparser2@~3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe" - integrity sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4= + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz" dependencies: domelementtype "1" domhandler "2.1" @@ -4722,42 +4730,50 @@ htmlparser2@~3.3.0: http-cache-semantics@^4.0.0: version "4.0.3" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz" integrity sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew== http-deceiver@^1.2.7: version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" + +http-errors@1.7.2, http-errors@~1.7.2: + version "1.7.2" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" -http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: +http-errors@~1.6.2: version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" dependencies: depd "~1.1.2" inherits "2.0.3" setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-parser-js@>=0.4.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8" - integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w== +"http-parser-js@>=0.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz" -http-proxy-middleware@~0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab" - integrity sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q== +http-proxy-middleware@^0.19.1: + version "0.19.1" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== dependencies: - http-proxy "^1.16.2" + http-proxy "^1.17.0" is-glob "^4.0.0" - lodash "^4.17.5" - micromatch "^3.1.9" + lodash "^4.17.11" + micromatch "^3.1.10" -http-proxy@^1.16.2: +http-proxy@^1.17.0: version "1.17.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz" integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== dependencies: eventemitter3 "^3.0.0" @@ -4766,8 +4782,7 @@ http-proxy@^1.16.2: http-signature@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz" dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" @@ -4775,20 +4790,11 @@ http-signature@~1.2.0: https-browserify@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz" humanize-plus@^1.8.1: version "1.8.2" - resolved "https://registry.yarnpkg.com/humanize-plus/-/humanize-plus-1.8.2.tgz#a65b34459ad6367adbb3707a82a3c9f916167030" - integrity sha1-pls0RZrWNnrbs3B6gqPJ+RYWcDA= - -iconv-lite@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== - dependencies: - safer-buffer ">= 2.1.2 < 3" + resolved "https://registry.yarnpkg.com/humanize-plus/-/humanize-plus-1.8.2.tgz" iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" @@ -4799,54 +4805,41 @@ iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, ic icss-replace-symbols@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz" icss-utils@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" - integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz" dependencies: postcss "^6.0.1" ieee754@^1.1.4: version "1.1.12" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz" integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA== iferr@^0.1.5: version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz" ignore-walk@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" - integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.2.tgz#99d83a246c196ea5c93ef9315ad7b0819c35069b" + integrity sha512-EXyErtpHbn75ZTsOADsfx6J/FPo6/5cjev46PXrcTpd8z3BoRkXgYu9/JVqrI7tusjmwCZutGeRJeU0Wo1e4Cw== dependencies: minimatch "^3.0.4" immutable@^3.8.1: version "3.8.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" - integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz" import-lazy@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - -import-local@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" - integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ== - dependencies: - pkg-dir "^2.0.0" - resolve-cwd "^2.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz" import-local@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + resolved "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz" integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== dependencies: pkg-dir "^3.0.0" @@ -4854,52 +4847,45 @@ import-local@^2.0.0: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz" indent-string@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz" dependencies: repeating "^2.0.0" indexes-of@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz" indexof@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz" inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz" dependencies: once "^1.3.0" wrappy "1" inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz" inherits@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz" ini@^1.3.4, ini@~1.3.0: version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== inquirer@~3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz" integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== dependencies: ansi-escapes "^3.0.0" @@ -4917,138 +4903,135 @@ inquirer@~3.3.0: strip-ansi "^4.0.0" through "^2.3.6" -internal-ip@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-3.0.1.tgz#df5c99876e1d2eb2ea2d74f520e3f669a00ece27" - integrity sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q== +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== dependencies: - default-gateway "^2.6.0" - ipaddr.js "^1.5.2" + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" interpret@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" - integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz" invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - invert-kv@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz" integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== ip-regex@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz" ip@^1.1.0, ip@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + resolved "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz" -ipaddr.js@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" - integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4= - -ipaddr.js@^1.5.2: - version "1.8.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.1.tgz#fa4b79fa47fd3def5e3b159825161c0a519c9427" - integrity sha1-+kt5+kf9Pe9eOxWYJRYcClGclCc= +ipaddr.js@1.9.0, ipaddr.js@^1.9.0: + version "1.9.0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz" + integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== is-absolute-url@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz" + +is-absolute-url@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.1.tgz" + integrity sha512-c2QjUwuMxLsld90sj3xYzpFYWJtuxkIn1f5ua9RTEYJt/vV2IsM+Py00/6qjV7qExgifUvt7qfyBGBBKm+2iBg== is-accessor-descriptor@^0.1.6: version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" dependencies: kind-of "^3.0.2" is-accessor-descriptor@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: kind-of "^6.0.0" +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz" is-arrayish@^0.3.1: version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-binary-path@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz" dependencies: binary-extensions "^1.0.0" is-buffer@^1.1.5: version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-builtin-module@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74= + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz" dependencies: builtin-modules "^1.0.0" is-callable@^1.1.3, is-callable@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== is-ci@^1.0.10, is-ci@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz" integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== dependencies: ci-info "^1.5.0" +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + is-data-descriptor@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" dependencies: kind-of "^3.0.2" is-data-descriptor@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: kind-of "^6.0.0" is-date-object@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz" is-descriptor@^0.1.0: version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz" integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" @@ -5057,710 +5040,652 @@ is-descriptor@^0.1.0: is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz" integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz" is-extendable@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz" integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= - is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" is-finite@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz" dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-generator-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" - integrity sha1-lp1J4bszKfa7fwkIm+JleLLd1Go= + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= - dependencies: - is-extglob "^1.0.0" +is-generator-fn@^2.0.0: + 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@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz" dependencies: is-extglob "^2.1.0" is-glob@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" - integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= + version "4.0.1" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" is-in-subnet@^1.9.0: version "1.9.0" - resolved "https://registry.yarnpkg.com/is-in-subnet/-/is-in-subnet-1.9.0.tgz#a581f71676ed5e2914dfa8559d23881f6a9348c8" + resolved "https://registry.yarnpkg.com/is-in-subnet/-/is-in-subnet-1.9.0.tgz" integrity sha512-zx7GdTPsGrLNIWIx978xGPP6UUjXYH/gG0vFtUARakofU2m+uiMqbSTR/bKCXooHjhW2W1KUDrhuuiaCc27sog== is-installed-globally@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" - integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz" dependencies: global-dirs "^0.1.0" is-path-inside "^1.0.0" is-npm@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" - integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= - -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz" is-number@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz" dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-obj@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz" -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== -is-path-in-cwd@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" - integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== dependencies: - is-path-inside "^1.0.0" + is-path-inside "^2.1.0" is-path-inside@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz" dependencies: path-is-inside "^1.0.1" +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + is-plain-obj@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz" -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= - is-promise@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz" is-redirect@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" - integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz" is-regex@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz" dependencies: has "^1.0.1" is-retry-allowed@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" - integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz" is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz" is-svg@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" - integrity sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk= + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz" dependencies: html-comment-regex "^1.1.0" is-symbol@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz" integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== dependencies: has-symbols "^1.0.0" is-typedarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz" is-utf8@^0.2.0: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz" is-windows@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== is-wsl@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" isarray@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz" isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz" isbinaryfile@^3.0.2, isbinaryfile@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz" integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== dependencies: buffer-alloc "^1.2.0" isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz" isobject@^2.0.0, isobject@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz" dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz" isomorphic-fetch@^2.1.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" - integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz" dependencies: node-fetch "^1.0.1" whatwg-fetch ">=0.10.0" isstream@~0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz" -istanbul-api@^1.3.1: - version "1.3.7" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa" - integrity sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA== - dependencies: - async "^2.1.4" - fileset "^2.0.2" - istanbul-lib-coverage "^1.2.1" - istanbul-lib-hook "^1.2.2" - istanbul-lib-instrument "^1.10.2" - istanbul-lib-report "^1.1.5" - istanbul-lib-source-maps "^1.2.6" - istanbul-reports "^1.5.1" - js-yaml "^3.7.0" - mkdirp "^0.5.1" - once "^1.4.0" - -istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" - integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== - -istanbul-lib-hook@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86" - integrity sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw== - dependencies: - append-transform "^0.4.0" - -istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" - integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A== - dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.18.0" - istanbul-lib-coverage "^1.2.1" - semver "^5.3.0" - -istanbul-lib-report@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" - integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw== - dependencies: - istanbul-lib-coverage "^1.2.1" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== -istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f" - integrity sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg== +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" + +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== + dependencies: + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" + +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== dependencies: - debug "^3.1.0" - istanbul-lib-coverage "^1.2.1" - mkdirp "^0.5.1" - rimraf "^2.6.1" - source-map "^0.5.3" + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" -istanbul-reports@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" - integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw== +istanbul-reports@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" + integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== dependencies: - handlebars "^4.0.3" + handlebars "^4.1.2" -jest-changed-files@^23.4.2: - version "23.4.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.2.tgz#1eed688370cd5eebafe4ae93d34bb3b64968fe83" - integrity sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA== +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== dependencies: + "@jest/types" "^24.9.0" + execa "^1.0.0" throat "^4.0.0" -jest-cli@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.6.0.tgz#61ab917744338f443ef2baa282ddffdd658a5da4" - integrity sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ== +jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== dependencies: - ansi-escapes "^3.0.0" + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.1.11" - import-local "^1.0.0" - is-ci "^1.0.10" - istanbul-api "^1.3.1" - istanbul-lib-coverage "^1.2.0" - istanbul-lib-instrument "^1.10.1" - istanbul-lib-source-maps "^1.2.4" - jest-changed-files "^23.4.2" - jest-config "^23.6.0" - jest-environment-jsdom "^23.4.0" - jest-get-type "^22.1.0" - jest-haste-map "^23.6.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - jest-resolve-dependencies "^23.6.0" - jest-runner "^23.6.0" - jest-runtime "^23.6.0" - jest-snapshot "^23.6.0" - jest-util "^23.4.0" - jest-validate "^23.6.0" - jest-watcher "^23.4.0" - jest-worker "^23.2.0" - micromatch "^2.3.11" - node-notifier "^5.2.1" - prompts "^0.1.9" - realpath-native "^1.0.0" - rimraf "^2.5.4" - slash "^1.0.0" - string-length "^2.0.0" - strip-ansi "^4.0.0" - which "^1.2.12" - yargs "^11.0.0" - -jest-config@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.6.0.tgz#f82546a90ade2d8c7026fbf6ac5207fc22f8eb1d" - integrity sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ== - dependencies: - babel-core "^6.0.0" - babel-jest "^23.6.0" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^13.3.0" + +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^23.4.0" - jest-environment-node "^23.4.0" - jest-get-type "^22.1.0" - jest-jasmine2 "^23.6.0" - jest-regex-util "^23.3.0" - jest-resolve "^23.6.0" - jest-util "^23.4.0" - jest-validate "^23.6.0" - micromatch "^2.3.11" - pretty-format "^23.6.0" - -jest-diff@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d" - integrity sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g== + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + micromatch "^3.1.10" + pretty-format "^24.9.0" + realpath-native "^1.1.0" + +jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== dependencies: chalk "^2.0.1" - diff "^3.2.0" - jest-get-type "^22.1.0" - pretty-format "^23.6.0" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" -jest-docblock@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" - integrity sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c= +jest-docblock@^24.3.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== dependencies: detect-newline "^2.1.0" -jest-each@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.6.0.tgz#ba0c3a82a8054387016139c733a05242d3d71575" - integrity sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg== +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== dependencies: + "@jest/types" "^24.9.0" chalk "^2.0.1" - pretty-format "^23.6.0" - -jest-environment-jsdom@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz#056a7952b3fea513ac62a140a2c368c79d9e6023" - integrity sha1-BWp5UrP+pROsYqFAosNox52eYCM= - dependencies: - jest-mock "^23.2.0" - jest-util "^23.4.0" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" jsdom "^11.5.1" -jest-environment-node@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.4.0.tgz#57e80ed0841dea303167cce8cd79521debafde10" - integrity sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA= +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== dependencies: - jest-mock "^23.2.0" - jest-util "^23.4.0" + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" -jest-get-type@^22.1.0: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" - integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w== +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== -jest-haste-map@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.6.0.tgz#2e3eb997814ca696d62afdb3f2529f5bbc935e16" - integrity sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg== +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" fb-watchman "^2.0.0" - graceful-fs "^4.1.11" + graceful-fs "^4.1.15" invariant "^2.2.4" - jest-docblock "^23.2.0" - jest-serializer "^23.0.1" - jest-worker "^23.2.0" - micromatch "^2.3.11" - sane "^2.0.0" - -jest-jasmine2@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz#840e937f848a6c8638df24360ab869cc718592e0" - integrity sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ== - dependencies: - babel-traverse "^6.0.0" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" + +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" co "^4.6.0" - expect "^23.6.0" - is-generator-fn "^1.0.0" - jest-diff "^23.6.0" - jest-each "^23.6.0" - jest-matcher-utils "^23.6.0" - jest-message-util "^23.4.0" - jest-snapshot "^23.6.0" - jest-util "^23.4.0" - pretty-format "^23.6.0" - -jest-leak-detector@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz#e4230fd42cf381a1a1971237ad56897de7e171de" - integrity sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg== - dependencies: - pretty-format "^23.6.0" - -jest-matcher-utils@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz#726bcea0c5294261a7417afb6da3186b4b8cac80" - integrity sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog== + expect "^24.9.0" + is-generator-fn "^2.0.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + throat "^4.0.0" + +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== + dependencies: + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== dependencies: chalk "^2.0.1" - jest-get-type "^22.1.0" - pretty-format "^23.6.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" -jest-message-util@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f" - integrity sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8= +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== dependencies: - "@babel/code-frame" "^7.0.0-beta.35" + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" chalk "^2.0.1" - micromatch "^2.3.11" - slash "^1.0.0" + micromatch "^3.1.10" + slash "^2.0.0" stack-utils "^1.0.1" -jest-mock@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" - integrity sha1-rRxg8p6HGdR8JuETgJi20YsmETQ= +jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" + +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== -jest-regex-util@^23.3.0: - version "23.3.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" - integrity sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U= +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== -jest-resolve-dependencies@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz#b4526af24c8540d9a3fab102c15081cf509b723d" - integrity sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA== +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== dependencies: - jest-regex-util "^23.3.0" - jest-snapshot "^23.6.0" + "@jest/types" "^24.9.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.9.0" -jest-resolve@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.6.0.tgz#cf1d1a24ce7ee7b23d661c33ba2150f3aebfa0ae" - integrity sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA== +jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== dependencies: + "@jest/types" "^24.9.0" browser-resolve "^1.11.3" chalk "^2.0.1" - realpath-native "^1.0.0" - -jest-runner@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.6.0.tgz#3894bd219ffc3f3cb94dc48a4170a2e6f23a5a38" - integrity sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA== - dependencies: + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.4.2" exit "^0.1.2" - graceful-fs "^4.1.11" - jest-config "^23.6.0" - jest-docblock "^23.2.0" - jest-haste-map "^23.6.0" - jest-jasmine2 "^23.6.0" - jest-leak-detector "^23.6.0" - jest-message-util "^23.4.0" - jest-runtime "^23.6.0" - jest-util "^23.4.0" - jest-worker "^23.2.0" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.6.0.tgz#059e58c8ab445917cd0e0d84ac2ba68de8f23082" - integrity sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw== - dependencies: - babel-core "^6.0.0" - babel-plugin-istanbul "^4.1.6" +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" chalk "^2.0.1" - convert-source-map "^1.4.0" exit "^0.1.2" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.11" - jest-config "^23.6.0" - jest-haste-map "^23.6.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - jest-resolve "^23.6.0" - jest-snapshot "^23.6.0" - jest-util "^23.4.0" - jest-validate "^23.6.0" - micromatch "^2.3.11" - realpath-native "^1.0.0" - slash "^1.0.0" - strip-bom "3.0.0" - write-file-atomic "^2.1.0" - yargs "^11.0.0" - -jest-serializer@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" - integrity sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU= - -jest-snapshot@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.6.0.tgz#f9c2625d1b18acda01ec2d2b826c0ce58a5aa17a" - integrity sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg== - dependencies: - babel-types "^6.0.0" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^13.3.0" + +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== + +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" - jest-diff "^23.6.0" - jest-matcher-utils "^23.6.0" - jest-message-util "^23.4.0" - jest-resolve "^23.6.0" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^23.6.0" - semver "^5.5.0" - -jest-util@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561" - integrity sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE= - dependencies: - callsites "^2.0.0" + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" chalk "^2.0.1" - graceful-fs "^4.1.11" - is-ci "^1.0.10" - jest-message-util "^23.4.0" + graceful-fs "^4.1.15" + is-ci "^2.0.0" mkdirp "^0.5.1" - slash "^1.0.0" + slash "^2.0.0" source-map "^0.6.0" -jest-validate@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474" - integrity sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A== +jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== dependencies: + "@jest/types" "^24.9.0" + camelcase "^5.3.1" chalk "^2.0.1" - jest-get-type "^22.1.0" - leven "^2.1.0" - pretty-format "^23.6.0" - -jest-watcher@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.4.0.tgz#d2e28ce74f8dad6c6afc922b92cabef6ed05c91c" - integrity sha1-0uKM50+NrWxq/JIrksq+9u0FyRw= - dependencies: + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + +jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== + dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" ansi-escapes "^3.0.0" chalk "^2.0.1" + jest-util "^24.9.0" string-length "^2.0.0" -jest-worker@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" - integrity sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk= +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== dependencies: - merge-stream "^1.0.1" + merge-stream "^2.0.0" + supports-color "^6.1.0" -jest@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-23.6.0.tgz#ad5835e923ebf6e19e7a1d7529a432edfee7813d" - integrity sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw== +jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== dependencies: - import-local "^1.0.0" - jest-cli "^23.6.0" + import-local "^2.0.0" + jest-cli "^24.9.0" js-base64@^2.1.9: version "2.4.9" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.9.tgz#748911fb04f48a60c4771b375cac45a80df11c03" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.9.tgz" integrity sha512-xcinL3AuDJk7VSzsHgb9DvvIXayBbadtMZ4HFPx8rUszbW1MuNMlwYVC4zzCZ6e1sqZpnNS5ZFYOhXqA39T7LQ== js-levenshtein@^1.1.3: version "1.1.4" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz" integrity sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-tokens@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz" js-yaml@^3.12.0, js-yaml@^3.7.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" - integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A== + version "3.13.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== dependencies: argparse "^1.0.7" esprima "^4.0.0" js-yaml@~3.7.0: version "3.7.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" - integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A= + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz" dependencies: argparse "^1.0.7" esprima "^2.6.0" jsbn@~0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz" jsdom@^11.5.1: version "11.12.0" @@ -5794,86 +5719,72 @@ jsdom@^11.5.1: ws "^5.2.0" xml-name-validator "^3.0.0" -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= - jsesc@^2.5.1: version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== jsesc@~0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz" json-buffer@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz" -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" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema@0.2.3: version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz" json-stringify-safe@~5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" json3@3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.0.tgz#0e9e7f6c5d270b758929af4d6fefdc84bd66e259" - integrity sha1-Dp5/bF0nC3WJKa9Nb+/chL1m4lk= + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.0.tgz" json3@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" - integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE= + version "3.3.3" + resolved "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== json5@2.x, json5@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz" integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ== dependencies: minimist "^1.2.0" -json5@^0.5.0, json5@^0.5.1: +json5@^0.5.0: version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz" jsonfile@^2.1.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz" optionalDependencies: graceful-fs "^4.1.6" jsonfile@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz" optionalDependencies: graceful-fs "^4.1.6" jsprim@^1.2.2: version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz" dependencies: assert-plus "1.0.0" extsprintf "1.3.0" @@ -5882,88 +5793,76 @@ jsprim@^1.2.2: keyv@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz" integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== dependencies: json-buffer "3.0.0" -killable@^1.0.0: +killable@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + resolved "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz" integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz" dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz" dependencies: is-buffer "^1.1.5" kind-of@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz" 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= + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz" optionalDependencies: graceful-fs "^4.1.9" -kleur@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" - integrity sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ== +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== kuler@1.0.x: version "1.0.1" - resolved "https://registry.yarnpkg.com/kuler/-/kuler-1.0.1.tgz#ef7c784f36c9fb6e16dd3150d152677b2b0228a6" + resolved "https://registry.yarnpkg.com/kuler/-/kuler-1.0.1.tgz" integrity sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ== dependencies: colornames "^1.1.1" latest-version@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" - integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz" dependencies: package-json "^4.0.0" lazy-val@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.3.tgz#bb97b200ef00801d94c317e29dc6ed39e31c5edc" + resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.3.tgz" integrity sha512-pjCf3BYk+uv3ZcPzEVM0BFvO9Uw58TmlrU0oG5tTrr9Kcid3+kdKxapH8CjdYmVa2nO5wOoZn2rdvZx2PKj/xg== lazystream@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz" dependencies: readable-stream "^2.0.5" -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - lcid@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz" integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== dependencies: invert-kv "^2.0.0" @@ -5973,23 +5872,21 @@ left-pad@^1.3.0: resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== -leven@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@~0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz" dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" load-json-file@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz" dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -5997,15 +5894,24 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + loader-runner@^2.3.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.1.tgz#026f12fe7c3115992896ac02ba022ba92971b979" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.1.tgz" integrity sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw== loader-utils@^0.2.16: version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz" dependencies: big.js "^3.1.3" emojis-list "^2.0.0" @@ -6014,8 +5920,7 @@ loader-utils@^0.2.16: loader-utils@^1.0.2, loader-utils@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" - integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz" dependencies: big.js "^3.1.3" emojis-list "^2.0.0" @@ -6023,15 +5928,14 @@ loader-utils@^1.0.2, loader-utils@^1.1.0: locate-path@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz" dependencies: p-locate "^2.0.0" path-exists "^3.0.0" locate-path@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz" integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" @@ -6039,54 +5943,48 @@ locate-path@^3.0.0: lockfile@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" + resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz" 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" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.11.tgz" integrity sha512-DHb1ub+rMjjrxqlB3H56/6MXtm1lSksDp2rA2cNWjG8mlDUYFhUj3Di2Zn5IwSU87xLv8tNIQ7sSwE/YOX/D/Q== lodash.debounce@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz" lodash.isequal@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz" lodash.ismatch@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" - integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= + resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz" lodash.memoize@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz" lodash.sortby@^4.7.0: version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz" 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= + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz" -lodash@^4.0.0, lodash@^4.0.1, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.8.0, lodash@~4.17.10: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== +lodash@^4.0.0, lodash@^4.0.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.3, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.8.0, lodash@~4.17.10: + version "4.17.15" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== logform@^2.1.1: version "2.1.2" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.1.2.tgz#957155ebeb67a13164069825ce67ddb5bb2dd360" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.1.2.tgz" integrity sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ== dependencies: colors "^1.2.1" @@ -6095,39 +5993,37 @@ logform@^2.1.1: ms "^2.1.1" triple-beam "^1.3.0" -loglevel@^1.4.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" - integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= +loglevel@^1.6.3: + version "1.6.4" + resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.6.4.tgz" + integrity sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g== loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" loud-rejection@^1.0.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz" dependencies: currently-unhandled "^0.4.1" signal-exit "^3.0.0" lower-case@^1.1.1: version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz" lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== lru-cache@^4.0.1, lru-cache@^4.1.3: version "4.1.4" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.4.tgz#51cc46e8e6d9530771c857e24ccc720ecdbcc031" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.4.tgz" integrity sha512-EPstzZ23znHUVLKj+lcXO1KvZkrlw+ZirdwvOmnAnA/1PB4ggyXJ77LRkCqkff+ShQ+cqoxCxLQOh4cKITO5iA== dependencies: pseudomap "^1.0.2" @@ -6135,60 +6031,58 @@ lru-cache@^4.0.1, lru-cache@^4.1.3: make-dir@^1.0.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz" integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== dependencies: pify "^3.0.0" +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + make-error@1.x: version "1.3.5" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz" integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== makeerror@1.0.x: version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz" dependencies: tmpl "1.0.x" map-age-cleaner@^0.1.1: version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz" integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== dependencies: p-defer "^1.0.0" map-cache@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz" map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz" map-visit@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz" dependencies: object-visit "^1.0.0" math-expression-evaluator@^1.2.14: version "1.2.17" - resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" - integrity sha1-3oGf282E3M2PrlnGrreWFbnSZqw= - -math-random@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" - integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w= + resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz" md5.js@^1.3.4: version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz" integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: hash-base "^3.0.0" @@ -6197,24 +6091,16 @@ md5.js@^1.3.4: mdn-data@~1.1.0: version "1.1.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz" integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== 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" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" mem@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz" integrity sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA== dependencies: map-age-cleaner "^0.1.1" @@ -6223,21 +6109,19 @@ mem@^4.0.0: memoize-one@^5.0.0: version "5.0.4" - resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.0.4.tgz#005928aced5c43d890a4dfab18ca908b0ec92cbc" + resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.0.4.tgz" integrity sha512-P0z5IeAH6qHHGkJIXWw0xC2HNEgkx/9uWWBQw64FJj3/ol14VYdfVGWWr0fXfjhhv3TKVIqUq65os6O4GUNksA== -memory-fs@^0.4.0, memory-fs@~0.4.1: +memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz" dependencies: errno "^0.1.3" readable-stream "^2.0.1" meow@^3.1.0: version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz" dependencies: camelcase-keys "^2.0.0" decamelize "^1.1.2" @@ -6252,48 +6136,20 @@ meow@^3.1.0: merge-descriptors@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= - dependencies: - readable-stream "^2.0.1" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" -merge@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" - integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== methods@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^2.3.11: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: +micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: arr-diff "^4.0.0" @@ -6312,59 +6168,81 @@ micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: miller-rabin@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz" integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== dependencies: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.36.0 < 2", mime-db@~1.37.0: +mime-db@1.40.0: + version "1.40.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz" + integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== + +"mime-db@>= 1.40.0 < 2": + version "1.41.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.41.0.tgz" + integrity sha512-B5gxBI+2K431XW8C2rcc/lhppbuji67nf9v39eH8pkWoZDxnAL0PxdpH32KYRScniF8qDHBDlI+ipgg5WrCUYw== + +mime-db@~1.37.0: version "1.37.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz" integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg== mime-db@~1.38.0: version "1.38.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz" integrity sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg== -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19: +mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.21" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz" integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg== dependencies: mime-db "~1.37.0" -mime-types@^2.1.22: +mime-types@^2.1.22, mime-types@~2.1.17: version "2.1.22" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.22.tgz#fe6b355a190926ab7698c9a0556a11199b2199bd" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.22.tgz" integrity sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog== dependencies: - mime-db "~1.38.0" + mime-db "~1.38.0" + +mime-types@~2.1.24: + version "2.1.24" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz" + integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== + dependencies: + mime-db "1.40.0" -mime@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mime@^2.0.3, mime@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz" integrity sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg== +mime@^2.4.4: + version "2.4.4" + resolved "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz" + integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== + mimic-fn@^1.0.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== mini-css-extract-plugin@^0.4.5: version "0.4.5" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.5.tgz#c99e9e78d54f3fa775633aee5933aeaa4e80719a" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.5.tgz" integrity sha512-dqBanNfktnp2hwL2YguV9Jh91PFX7gu7nRLs4TGsbAfAG6WOtlynFRYzwDwmmeSb5uIwHo9nx1ta0f7vAZVp2w== dependencies: loader-utils "^1.1.0" @@ -6373,54 +6251,50 @@ mini-css-extract-plugin@^0.4.5: minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" -minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: +minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimist@0.0.8: version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz" minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz" minimist@~0.0.1: version "0.0.10" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz" -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== +minipass@^2.2.1, minipass@^2.3.5: + version "2.5.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.5.1.tgz#cf435a9bf9408796ca3a3525a8b851464279c9b8" + integrity sha512-dmpSnLJtNQioZFI5HfQ55Ad0DzzsMAb+HfokwRTNXwEQjepbTkl5mtIlSVxGIkOkxlpX7wIn5ET/oAd9fZ/Y/Q== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" -minizlib@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.1.tgz#6734acc045a46e61d596a43bb9d9cd326e19cc42" - integrity sha512-TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg== +minizlib@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== dependencies: minipass "^2.2.1" mississippi@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz" integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== dependencies: concat-stream "^1.5.0" @@ -6435,24 +6309,22 @@ mississippi@^3.0.0: through2 "^2.0.0" mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== + version "1.3.2" + resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz" dependencies: minimist "0.0.8" move-concurrently@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz" dependencies: aproba "^1.1.1" copy-concurrently "^1.0.0" @@ -6463,22 +6335,20 @@ move-concurrently@^1.0.1: ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz" -ms@^2.1.1: +ms@2.1.1, ms@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== multicast-dns-service-types@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + resolved "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz" multicast-dns@^6.0.1: version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz" integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== dependencies: dns-packet "^1.3.1" @@ -6486,17 +6356,16 @@ multicast-dns@^6.0.1: mute-stream@0.0.7: version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz" -nan@^2.9.2: - version "2.11.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766" - integrity sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA== +nan@^2.12.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== nanomatch@^1.2.9: version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz" integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: arr-diff "^4.0.0" @@ -6513,61 +6382,59 @@ nanomatch@^1.2.9: natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz" 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.4.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== dependencies: - debug "^2.1.2" + debug "^3.2.6" iconv-lite "^0.4.4" sax "^1.2.4" -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0: +neo-async@^2.5.0, neo-async@^2.6.0: version "2.6.0" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz" integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== nice-try@^1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== no-case@^2.2.0: version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz" integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== dependencies: lower-case "^1.1.1" node-fetch@^1.0.1: version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz" integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== dependencies: encoding "^0.1.11" is-stream "^1.0.1" -node-forge@0.7.5: - version "0.7.5" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" - integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ== +node-forge@0.8.2: + version "0.8.2" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-0.8.2.tgz" + integrity sha512-mXQ9GBq1N3uDCyV1pdSzgIguwgtVpM7f5/5J4ipz12PKWElmPpVWLDuWl8iXmhysr21+WmX/OJ5UKx82wjomgg== node-int64@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz" node-libs-browser@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz" integrity sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg== dependencies: assert "^1.1.1" @@ -6596,23 +6463,28 @@ node-libs-browser@^2.0.0: node-loader@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/node-loader/-/node-loader-0.6.0.tgz#c797ef51095ed5859902b157f6384f6361e05ae8" - integrity sha1-x5fvUQle1YWZArFX9jhPY2HgWug= + resolved "https://registry.yarnpkg.com/node-loader/-/node-loader-0.6.0.tgz" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^5.2.1: - version "5.3.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.3.0.tgz#c77a4a7b84038733d5fb351aafd8a268bfe19a01" - integrity sha512-AhENzCSGZnZJgBARsUjnQ7DnZbzyP+HxlVXuD0xqAnvL8q+OqtSX7lGg9e8nHzwXkMMXNdVeqq4E2M3EUAqX6Q== +node-notifier@^5.4.2: + version "5.4.3" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== dependencies: growly "^1.3.0" + is-wsl "^1.1.0" semver "^5.5.0" shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" - integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -6627,7 +6499,7 @@ node-pre-gyp@^0.10.0: node-releases@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.4.tgz#2d585de8c6c81d00017e063e7810a63889aa6756" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.4.tgz" integrity sha512-GqRV9GcHw8JCRDaP/JoeNMNzEGzHAknMvIHqMb2VeTOmg1Cf9+ej8bkV12tHfzWHQMCkQ5zUFgwFUkfraynNCw== dependencies: semver "^5.3.0" @@ -6642,7 +6514,7 @@ nopt@^4.0.1: normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz" integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw== dependencies: hosted-git-info "^2.1.4" @@ -6650,27 +6522,24 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.0.0, normalize-path@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz" dependencies: remove-trailing-separator "^1.0.1" normalize-path@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== normalize-range@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz" normalize-url@^1.4.0, normalize-url@^1.9.1: version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz" dependencies: object-assign "^4.0.1" prepend-http "^1.0.0" @@ -6679,31 +6548,29 @@ normalize-url@^1.4.0, normalize-url@^1.9.1: normalize-url@^3.1.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz" integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== npm-bundled@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" - integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g== + 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-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= + resolved "https://registry.yarnpkg.com/npm-install-package/-/npm-install-package-2.1.0.tgz" npm-packlist@^1.1.6: - version "1.1.12" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" - integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g== + version "1.4.4" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" + integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" npm-run-path@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz" dependencies: path-key "^2.0.0" @@ -6719,15 +6586,14 @@ npmlog@^4.0.2: nth-check@^1.0.2, nth-check@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== dependencies: boolbase "~1.0.0" nugget@^2.0.0, nugget@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz#201095a487e1ad36081b3432fa3cada4f8d071b0" - integrity sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA= + resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz" dependencies: debug "^2.1.3" minimist "^1.1.0" @@ -6739,148 +6605,133 @@ nugget@^2.0.0, nugget@^2.0.1: num2fraction@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz" number-is-nan@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz" nwsapi@^2.0.7: - version "2.0.9" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016" - integrity sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ== + version "2.1.4" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f" + integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw== oauth-sign@~0.9.0: version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz" object-copy@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz" dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" kind-of "^3.0.3" +object-is@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz" + object-keys@0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.5.0.tgz#09e211f3e00318afc4f592e36e7cdc10d9ad7293" - integrity sha1-CeIR8+ADGK/E9ZLjbnzcENmtcpM= + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.5.0.tgz" object-keys@^1.0.12: version "1.0.12" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz" integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + 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= + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz" object-visit@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz" dependencies: isobject "^3.0.0" object.getownpropertydescriptors@^2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz" dependencies: define-properties "^1.1.2" es-abstract "^1.5.1" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - object.pick@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz" dependencies: isobject "^3.0.1" object.values@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a" - integrity sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo= + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz" dependencies: define-properties "^1.1.2" es-abstract "^1.6.1" function-bind "^1.1.0" has "^1.0.1" -obuf@^1.0.0, obuf@^1.1.1: +obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== on-finished@~2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" dependencies: ee-first "1.1.1" -on-headers@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" - integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c= +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== 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= + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz" dependencies: wrappy "1" one-time@0.0.4: version "0.0.4" - resolved "https://registry.yarnpkg.com/one-time/-/one-time-0.0.4.tgz#f8cdf77884826fe4dff93e3a9cc37b1e4480742e" - integrity sha1-+M33eISCb+Tf+T46nMN7HkSAdC4= + resolved "https://registry.yarnpkg.com/one-time/-/one-time-0.0.4.tgz" onetime@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz" dependencies: mimic-fn "^1.0.0" -opn@^5.1.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035" - integrity sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw== +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== dependencies: is-wsl "^1.1.0" optimist@^0.6.1, optimist@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz" dependencies: minimist "~0.0.1" wordwrap "~0.0.2" optionator@^0.8.1: version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz" dependencies: deep-is "~0.1.3" fast-levenshtein "~2.0.4" @@ -6891,40 +6742,29 @@ optionator@^0.8.1: original@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + resolved "https://registry.npmjs.org/original/-/original-1.0.2.tgz" integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== dependencies: url-parse "^1.4.3" os-browserify@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz" os-homedir@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -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" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz" os-locale@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz" integrity sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw== dependencies: execa "^0.10.0" lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -6939,71 +6779,84 @@ osenv@^0.1.4: p-cancelable@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== p-defer@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz" + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" p-finally@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz" p-is-promise@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" - integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz" p-limit@^1.1.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz" integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: p-try "^1.0.0" p-limit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" - integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A== + version "2.2.1" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz" + integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== dependencies: p-try "^2.0.0" p-locate@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz" dependencies: p-limit "^1.1.0" p-locate@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz" integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" -p-map@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" - integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" p-try@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz" p-try@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" - integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== package-json@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" - integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz" dependencies: got "^6.7.1" registry-auth-token "^3.0.1" @@ -7012,13 +6865,12 @@ package-json@^4.0.0: pako@~1.0.5: version "1.0.6" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz" integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== parallel-transform@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" - integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz" dependencies: cyclist "~0.2.2" inherits "^2.0.3" @@ -7026,14 +6878,13 @@ parallel-transform@^1.1.0: param-case@2.1.x: version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz" dependencies: no-case "^2.2.0" parse-asn1@^5.0.0: version "5.1.1" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz" integrity sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw== dependencies: asn1.js "^4.0.0" @@ -7044,109 +6895,101 @@ parse-asn1@^5.0.0: parse-color@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-color/-/parse-color-1.0.0.tgz#7b748b95a83f03f16a94f535e52d7f3d94658619" - integrity sha1-e3SLlag/A/FqlPU15S1/PZRlhhk= + resolved "https://registry.yarnpkg.com/parse-color/-/parse-color-1.0.0.tgz" dependencies: color-convert "~0.5.0" -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - parse-json@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz" dependencies: error-ex "^1.2.0" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== -parseurl@~1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" - integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== pascalcase@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz" path-browserify@0.0.0: version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" - integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz" path-dirname@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz" path-exists@^2.0.0, path-exists@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz" dependencies: pinkie-promise "^2.0.0" path-exists@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz" -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz" -path-is-inside@^1.0.1: +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= + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz" path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz" path-parse@^1.0.5: version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== path-to-regexp@0.1.7: version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" path-to-regexp@^1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d" - integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30= + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz" dependencies: isarray "0.0.1" path-type@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz" dependencies: graceful-fs "^4.1.2" pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + pbkdf2@^3.0.3: version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz" integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== dependencies: create-hash "^1.1.2" @@ -7157,58 +7000,58 @@ pbkdf2@^3.0.3: pend@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz" performance-now@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz" pify@^2.0.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz" pify@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz" pify@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pinkie-promise@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz" dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz" + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" pkg-dir@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz" dependencies: find-up "^2.1.0" pkg-dir@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: find-up "^3.0.0" plist@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.1.tgz#a9b931d17c304e8912ef0ba3bdd6182baf2e1f8c" + resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.1.tgz" integrity sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ== dependencies: base64-js "^1.2.3" @@ -7217,13 +7060,13 @@ plist@^3.0.1: pn@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== -portfinder@^1.0.9: - version "1.0.19" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.19.tgz#07e87914a55242dcda5b833d42f018d6875b595f" - integrity sha512-23aeQKW9KgHe6citUrG3r9HjeX6vls0h713TAa+CwTKZwNIr/pD2ApaxYF4Um3ZZyq4ar+Siv3+fhoHaIwSOSw== +portfinder@^1.0.21: + version "1.0.24" + resolved "https://registry.npmjs.org/portfinder/-/portfinder-1.0.24.tgz" + integrity sha512-ekRl7zD2qxYndYflwiryJwMioBI7LI7rVXg3EnLK3sjkouT5eOuhS3gS255XxBksa30VG8UPZYZCdgfGOfkSUg== dependencies: async "^1.5.2" debug "^2.2.0" @@ -7231,13 +7074,11 @@ portfinder@^1.0.9: posix-character-classes@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz" postcss-calc@^5.2.0: version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" - integrity sha1-d7rnypKK2FcW4v2kLyYb98HWW14= + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz" dependencies: postcss "^5.0.2" postcss-message-helpers "^2.0.0" @@ -7245,8 +7086,7 @@ postcss-calc@^5.2.0: postcss-colormin@^2.1.8: version "2.2.2" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" - integrity sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks= + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz" dependencies: colormin "^1.0.5" postcss "^5.0.13" @@ -7254,59 +7094,52 @@ postcss-colormin@^2.1.8: postcss-convert-values@^2.3.4: version "2.6.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" - integrity sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0= + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz" dependencies: postcss "^5.0.11" postcss-value-parser "^3.1.2" postcss-discard-comments@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" - integrity sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0= + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz" dependencies: postcss "^5.0.14" postcss-discard-duplicates@^2.0.1: version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" - integrity sha1-uavye4isGIFYpesSq8riAmO5GTI= + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz" dependencies: postcss "^5.0.4" postcss-discard-empty@^2.0.1: version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" - integrity sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU= + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz" dependencies: postcss "^5.0.14" postcss-discard-overridden@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" - integrity sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg= + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz" dependencies: postcss "^5.0.16" postcss-discard-unused@^2.2.1: version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" - integrity sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM= + resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz" dependencies: postcss "^5.0.14" uniqs "^2.0.0" postcss-filter-plugins@^2.0.0: version "2.0.3" - resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec" + resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz" integrity sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ== dependencies: postcss "^5.0.4" postcss-merge-idents@^2.1.5: version "2.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" - integrity sha1-TFUwMTwI4dWzu/PSu8dH4njuonA= + resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz" dependencies: has "^1.0.1" postcss "^5.0.10" @@ -7314,15 +7147,13 @@ postcss-merge-idents@^2.1.5: postcss-merge-longhand@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" - integrity sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg= + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz" dependencies: postcss "^5.0.4" postcss-merge-rules@^2.0.3: version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" - integrity sha1-0d9d+qexrMO+VT8OnhDofGG19yE= + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz" dependencies: browserslist "^1.5.2" caniuse-api "^1.5.2" @@ -7332,13 +7163,11 @@ postcss-merge-rules@^2.0.3: postcss-message-helpers@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" - integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4= + resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz" postcss-minify-font-values@^1.0.2: version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" - integrity sha1-S1jttWZB66fIR0qzUmyv17vey2k= + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz" dependencies: object-assign "^4.0.1" postcss "^5.0.4" @@ -7346,16 +7175,14 @@ postcss-minify-font-values@^1.0.2: postcss-minify-gradients@^1.0.1: version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" - integrity sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE= + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz" dependencies: postcss "^5.0.12" postcss-value-parser "^3.3.0" postcss-minify-params@^1.0.4: version "1.2.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" - integrity sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM= + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz" dependencies: alphanum-sort "^1.0.1" postcss "^5.0.2" @@ -7364,8 +7191,7 @@ postcss-minify-params@^1.0.4: postcss-minify-selectors@^2.0.4: version "2.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" - integrity sha1-ssapjAByz5G5MtGkllCBFDEXNb8= + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz" dependencies: alphanum-sort "^1.0.2" has "^1.0.1" @@ -7374,46 +7200,41 @@ postcss-minify-selectors@^2.0.4: postcss-modules-extract-imports@^1.2.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz" integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== dependencies: postcss "^6.0.1" postcss-modules-local-by-default@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" - integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz" dependencies: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" postcss-modules-scope@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" - integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz" dependencies: css-selector-tokenizer "^0.7.0" postcss "^6.0.1" postcss-modules-values@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" - integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz" dependencies: icss-replace-symbols "^1.1.0" postcss "^6.0.1" postcss-normalize-charset@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" - integrity sha1-757nEhLX/nWceO0WL2HtYrXLk/E= + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz" dependencies: postcss "^5.0.5" postcss-normalize-url@^3.0.7: version "3.0.8" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" - integrity sha1-EI90s/L82viRov+j6kWSJ5/HgiI= + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz" dependencies: is-absolute-url "^2.0.0" normalize-url "^1.4.0" @@ -7422,31 +7243,27 @@ postcss-normalize-url@^3.0.7: postcss-ordered-values@^2.1.0: version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" - integrity sha1-7sbCpntsQSqNsgQud/6NpD+VwR0= + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz" dependencies: postcss "^5.0.4" postcss-value-parser "^3.0.1" postcss-reduce-idents@^2.2.2: version "2.4.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" - integrity sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM= + resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz" dependencies: postcss "^5.0.4" postcss-value-parser "^3.0.2" postcss-reduce-initial@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" - integrity sha1-aPgGlfBF0IJjqHmtJA343WT2ROo= + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz" dependencies: postcss "^5.0.4" postcss-reduce-transforms@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" - integrity sha1-/3b02CEkN7McKYpC0uFEQCV3GuE= + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz" dependencies: has "^1.0.1" postcss "^5.0.8" @@ -7454,8 +7271,7 @@ postcss-reduce-transforms@^1.0.3: postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" - integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A= + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz" dependencies: flatten "^1.0.2" indexes-of "^1.0.1" @@ -7463,8 +7279,7 @@ postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: postcss-svgo@^2.1.1: version "2.1.6" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" - integrity sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0= + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz" dependencies: is-svg "^2.0.0" postcss "^5.0.14" @@ -7473,8 +7288,7 @@ postcss-svgo@^2.1.1: postcss-unique-selectors@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" - integrity sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0= + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz" dependencies: alphanum-sort "^1.0.1" postcss "^5.0.4" @@ -7482,13 +7296,12 @@ postcss-unique-selectors@^2.0.2: postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== postcss-zindex@^2.0.1: version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" - integrity sha1-0hCd3AVbka9n/EyzsCWUZjnSryI= + resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz" dependencies: has "^1.0.1" postcss "^5.0.4" @@ -7496,7 +7309,7 @@ postcss-zindex@^2.0.1: postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.8, postcss@^5.2.16: version "5.2.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz" integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== dependencies: chalk "^1.1.3" @@ -7506,7 +7319,7 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0 postcss@^6.0.1, postcss@^6.0.23: version "6.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz" integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== dependencies: chalk "^2.4.1" @@ -7515,7 +7328,7 @@ postcss@^6.0.1, postcss@^6.0.23: posthtml-parser@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.3.3.tgz#3fe986fca9f00c0f109d731ba590b192f26e776d" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.3.3.tgz" integrity sha512-H/Z/yXGwl49A7hYQLV1iQ3h87NE0aZ/PMZhFwhw3lKeCAN+Ti4idrHvVvh4/GX10I7u77aQw+QB4vV5/Lzvv5A== dependencies: htmlparser2 "^3.9.2" @@ -7524,12 +7337,12 @@ posthtml-parser@^0.3.3: posthtml-render@^1.1.0, posthtml-render@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.1.4.tgz#95dac09892f4f183fad5ac823f08f42c0256551e" + resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.1.4.tgz" integrity sha512-jL6eFIzoN3xUEvbo33OAkSDE2VIKU4JQ1wENOows1DpfnrdapR/K3Q1/fB43Mq7wQlcSgRm23nFrvoioufM7eA== posthtml@^0.11.2, posthtml@^0.11.3: version "0.11.3" - resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.11.3.tgz#17ea2921b0555b7455f33c977bd16d8b8cb74f27" + resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.11.3.tgz" integrity sha512-quMHnDckt2DQ9lRi6bYLnuyBDnVzK+McHa8+ar4kTdYbWEo/92hREOu3h70ZirudOOp/my2b3r0m5YtxY52yrA== dependencies: object-assign "^4.1.1" @@ -7538,134 +7351,129 @@ posthtml@^0.11.2, posthtml@^0.11.3: prelude-ls@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz" prepend-http@^1.0.0, prepend-http@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz" 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= - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz" pretty-bytes@^1.0.2: version "1.0.4" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84" - integrity sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ= + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz" dependencies: get-stdin "^4.0.1" meow "^3.1.0" pretty-error@^2.0.2: version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz" dependencies: renderkid "^2.0.1" utila "~0.4" -pretty-format@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" - integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw== +pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== dependencies: - ansi-regex "^3.0.0" + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" ansi-styles "^3.2.0" + react-is "^16.8.4" -private@^0.1.6, private@^0.1.8: +private@^0.1.6: version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== process-nextick-args@~2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz" integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== process@^0.11.10: version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz" progress-stream@^1.1.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77" - integrity sha1-LNPP6jO6OonJwSHsM0er6asSX3c= + resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz" dependencies: speedometer "~0.1.2" through2 "~0.2.3" +progress-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-2.0.0.tgz#fac63a0b3d11deacbb0969abcc93b214bce19ed5" + integrity sha1-+sY6Cz0R3qy7CWmrzJOyFLzhntU= + dependencies: + speedometer "~1.0.0" + through2 "~2.0.3" + 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= + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz" promise@^7.1.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz" integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== dependencies: asap "~2.0.3" -prompts@^0.1.9: - version "0.1.14" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" - integrity sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w== +prompts@^2.0.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.2.1.tgz#f901dd2a2dfee080359c0e20059b24188d75ad35" + integrity sha512-VObPvJiWPhpZI6C5m60XOzTfnYg/xc/an+r9VYymj9WJW3B/DIH+REzjpAACPf8brwPeP+7vz3bIim3S+AaMjw== dependencies: - kleur "^2.0.1" - sisteransi "^0.1.1" + kleur "^3.0.3" + sisteransi "^1.0.3" prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.6.1, prop-types@^15.6.2: version "15.6.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz" integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== dependencies: loose-envify "^1.3.1" object-assign "^4.1.1" -prop-types@^15.7.2: +prop-types@^15.5.8, prop-types@^15.7.2: version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== dependencies: loose-envify "^1.4.0" object-assign "^4.1.1" react-is "^16.8.1" -proxy-addr@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" - integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA== +proxy-addr@~2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz" + integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== dependencies: forwarded "~0.1.2" - ipaddr.js "1.8.0" + ipaddr.js "1.9.0" prr@~1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz" pseudomap@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz" psl@^1.1.24, psl@^1.1.28: version "1.1.29" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz" integrity sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ== public-encrypt@^4.0.0: version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz" integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== dependencies: bn.js "^4.1.0" @@ -7677,7 +7485,7 @@ public-encrypt@^4.0.0: pump@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz" integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== dependencies: end-of-stream "^1.1.0" @@ -7685,7 +7493,7 @@ pump@^2.0.0: pump@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" @@ -7693,7 +7501,7 @@ pump@^3.0.0: pumpify@^1.3.3: version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz" integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== dependencies: duplexify "^3.6.0" @@ -7702,89 +7510,84 @@ pumpify@^1.3.3: punycode@1.3.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz" punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz" punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== q@^1.1.2, q@~1.5.0: version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz" + +qrcode-generator@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/qrcode-generator/-/qrcode-generator-1.4.3.tgz#4876e8f280e65b6c94615f4c19c484f6b964b199" + integrity sha512-++rVRvMRq5BlHfmAafl8a4ppUntzUxCCUTT2t0siUgqKwdnqRzY8IH6f6WSX5dZUhD2Ul5/MIKuTJddflwrGzw== + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -qs@6.5.2, qs@~6.5.2: +qs@~6.5.2: version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== query-string@^4.1.0: version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz" dependencies: 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" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz" querystring@0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz" -querystringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz#7ded8dfbf7879dcc60d0a644ac6754b283ad17ef" - integrity sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg== - -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" +querystringify@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz" + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.0.6" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz" integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A== dependencies: safe-buffer "^5.1.0" randomfill@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz" integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== dependencies: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@^1.0.3, range-parser@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" unpipe "1.0.0" rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.2.1, rc@^1.2.7: @@ -7797,9 +7600,17 @@ rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.2.1, rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-copy-to-clipboard@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.1.tgz#8eae107bb400be73132ed3b6a7b4fb156090208e" + integrity sha512-ELKq31/E3zjFs5rDWNCfFL4NvNFQvGRoJdAKReD/rUPA+xxiLPQmZBZBvy2vgH7V0GE9isIQpT9WXbwIVErYdA== + dependencies: + copy-to-clipboard "^3" + prop-types "^15.5.8" + react-dom@^16.8.6: version "16.8.6" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz#71d6303f631e8b0097f56165ef608f051ff6e10f" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.8.6.tgz" integrity sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA== dependencies: loose-envify "^1.1.0" @@ -7809,7 +7620,7 @@ react-dom@^16.8.6: react-dropzone@^10.0.0: version "10.0.0" - resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-10.0.0.tgz#7ced4a3cde9e0ab3e8073570a0e4f0edbf004a34" + resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-10.0.0.tgz" integrity sha512-5PPPH0reRDStgISi5tKZgez67VP+t1hKD9cuH+2Y3t+ddmBzaVdd4KEhBXSsBdod73T4XqUMKgAJSTH0iOqZhw== dependencies: attr-accept "^1.1.3" @@ -7818,22 +7629,27 @@ react-dropzone@^10.0.0: react-is@^16.3.2, react-is@^16.6.0: version "16.6.3" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.6.3.tgz#d2d7462fcfcbe6ec0da56ad69047e47e56e7eac0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.6.3.tgz" integrity sha512-u7FDWtthB4rWibG/+mFbVd5FvdI20yde86qKGx4lVUTWmPlSWQ4QxbBIrrs+HnXGbxOUlUzTAP/VDmvCwaP2yA== react-is@^16.8.1: version "16.8.4" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.4.tgz#90f336a68c3a29a096a3d648ab80e87ec61482a2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.4.tgz" integrity sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA== +react-is@^16.8.4: + version "16.9.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb" + integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw== + react-lifecycles-compat@^3.0.0: version "3.0.4" - resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== react-redux@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.1.1.tgz#88e368682c7fa80e34e055cd7ac56f5936b0f52f" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-5.1.1.tgz" integrity sha512-LE7Ned+cv5qe7tMV5BPYkGQ5Lpg8gzgItK07c67yHvJ8t0iaD9kPFPAli/mYkiyJYrs2pJgExR2ZgsGqlrOApg== dependencies: "@babel/runtime" "^7.1.2" @@ -7846,7 +7662,7 @@ react-redux@^5.1.1: react-router-dom@^4.3.1: version "4.3.1" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz#4c2619fc24c4fa87c9fd18f4fb4a43fe63fbd5c6" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.3.1.tgz" integrity sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA== dependencies: history "^4.7.2" @@ -7858,7 +7674,7 @@ react-router-dom@^4.3.1: react-router@^4.3.1: version "4.3.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.3.1.tgz#aada4aef14c809cb2e686b05cee4742234506c4e" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-4.3.1.tgz" integrity sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg== dependencies: history "^4.7.2" @@ -7871,7 +7687,7 @@ react-router@^4.3.1: react-transition-group@1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-1.2.1.tgz#e11f72b257f921b213229a774df46612346c7ca6" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-1.2.1.tgz" integrity sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q== dependencies: chain-function "^1.0.0" @@ -7882,7 +7698,7 @@ react-transition-group@1.2.1: react@^16.8.6: version "16.8.6" - resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" + resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz" integrity sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw== dependencies: loose-envify "^1.1.0" @@ -7892,7 +7708,7 @@ react@^16.8.6: read-config-file@3.2.0, read-config-file@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-3.2.0.tgz#50a2756a9a128ab9dcbe087e2724c512e3d0ccd1" + resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-3.2.0.tgz" integrity sha512-i1QRc5jy4sHm9YBGb6ArA5SU1mDrc5wu2mnm3r9gPnm+LVZhBGbpTCKqAXyvV4TJHnBR3Yaaww+9b3DyRZcfww== dependencies: ajv "^6.5.5" @@ -7907,24 +7723,39 @@ read-config-file@3.2.0, read-config-file@^3.2.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" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz" dependencies: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + read-pkg@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz" dependencies: load-json-file "^1.0.0" normalize-package-data "^2.3.2" path-type "^1.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, 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: +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, 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" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== dependencies: core-util-is "~1.0.0" @@ -7937,8 +7768,7 @@ read-pkg@^1.0.0: readable-stream@1.0: version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz" dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -7946,9 +7776,9 @@ readable-stream@1.0: string_decoder "~0.10.x" readable-stream@^3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.0.6.tgz#351302e4c68b5abd6a2ed55376a7f9a25be3057a" - integrity sha512-9E1oLoOWfhSXHGv6QlwXJim7uNzd9EVlWK+21tCU9Ju/kR0/p2AZYPz4qSchgO8PlLIH4FpZYfzwS+rEksZjIg== + version "3.4.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz" + integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -7956,7 +7786,7 @@ readable-stream@^3.0.6: readable-stream@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz#ed6bbc6c5ba58b090039ff18ce670515795aeb06" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz" integrity sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA== dependencies: inherits "^2.0.3" @@ -7965,8 +7795,7 @@ readable-stream@^3.1.1: 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= + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz" dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -7975,23 +7804,23 @@ readable-stream@~1.1.9: readdirp@^2.0.0, readdirp@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== dependencies: graceful-fs "^4.1.11" micromatch "^3.1.10" readable-stream "^2.0.2" -realpath-native@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.2.tgz#cd51ce089b513b45cf9b1516c82989b51ccc6560" - integrity sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g== +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== dependencies: util.promisify "^1.0.0" redbox-react@^1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/redbox-react/-/redbox-react-1.6.0.tgz#e753ac02595bc1bf695b3935889a4f5b1b5a21a1" + resolved "https://registry.yarnpkg.com/redbox-react/-/redbox-react-1.6.0.tgz" integrity sha512-mLjM5eYR41yOp5YKHpd3syFeGq6B4Wj5vZr64nbLvTZW5ZLff4LYk7VE4ITpVxkZpCY6OZuqh0HiP3A3uEaCpg== dependencies: error-stack-parser "^1.3.6" @@ -8001,16 +7830,14 @@ redbox-react@^1.6.0: redent@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz" dependencies: indent-string "^2.1.0" strip-indent "^1.0.1" reduce-css-calc@^1.2.6: version "1.3.0" - resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" - integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY= + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz" dependencies: balanced-match "^0.4.2" math-expression-evaluator "^1.2.14" @@ -8018,29 +7845,26 @@ reduce-css-calc@^1.2.6: reduce-function-call@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99" - integrity sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk= + resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz" dependencies: balanced-match "^0.4.2" redux-devtools-extension@^2.13.7: version "2.13.7" - resolved "https://registry.yarnpkg.com/redux-devtools-extension/-/redux-devtools-extension-2.13.7.tgz#14bd7a1a7c8bee7f397beb1116fd16fc9633b752" + resolved "https://registry.yarnpkg.com/redux-devtools-extension/-/redux-devtools-extension-2.13.7.tgz" integrity sha512-F2GlWMWxCTJGRjJ+GSZcGDcVAj6Pbf77FKb4C9S8eni5Eah6UBGNwxNj8K1MTtmItdZH1Wx+EvIifHN2KKcQrw== redux-localstorage-filter@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/redux-localstorage-filter/-/redux-localstorage-filter-0.1.1.tgz#94c5ab68d8cda479bb3cc6cdf03569f8f63a188d" - integrity sha1-lMWraNjNpHm7PMbN8DVp+PY6GI0= + resolved "https://registry.yarnpkg.com/redux-localstorage-filter/-/redux-localstorage-filter-0.1.1.tgz" redux-localstorage@^1.0.0-rc5: version "1.0.0-rc5" - resolved "https://registry.yarnpkg.com/redux-localstorage/-/redux-localstorage-1.0.0-rc5.tgz#7067bc4cb0b03b5c791025ac33dde6175d50d5d1" - integrity sha1-cGe8TLCwO1x5ECWsM93mF11Q1dE= + resolved "https://registry.yarnpkg.com/redux-localstorage/-/redux-localstorage-1.0.0-rc5.tgz" redux-saga-test-plan@^3.7.0: version "3.7.0" - resolved "https://registry.yarnpkg.com/redux-saga-test-plan/-/redux-saga-test-plan-3.7.0.tgz#c8f513b1c6e13eef526a6b8a2e9076b6f26f5698" + resolved "https://registry.yarnpkg.com/redux-saga-test-plan/-/redux-saga-test-plan-3.7.0.tgz" integrity sha512-et9kCnME01kjoKXFfSk4FkozgOPPvllt9TlpL6A7ZYIS/WgoEFMLXk/UYww8KWXbmk5Qo2IF6xCc/IS1KmvP6A== dependencies: core-js "^2.4.1" @@ -8052,12 +7876,12 @@ redux-saga-test-plan@^3.7.0: redux-saga@^0.16.2: version "0.16.2" - resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-0.16.2.tgz#993662e86bc945d8509ac2b8daba3a8c615cc971" + resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-0.16.2.tgz" integrity sha512-iIjKnRThI5sKPEASpUvySemjzwqwI13e3qP7oLub+FycCRDysLSAOwt958niZW6LhxfmS6Qm1BzbU70w/Koc4w== redux@^3.4.0: version "3.7.2" - resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b" + resolved "https://registry.yarnpkg.com/redux/-/redux-3.7.2.tgz" integrity sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A== dependencies: lodash "^4.2.1" @@ -8067,7 +7891,7 @@ redux@^3.4.0: redux@^4.0.0, redux@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz#436cae6cc40fbe4727689d7c8fae44808f1bfef5" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.1.tgz" integrity sha512-R7bAtSkk7nY6O/OYMVR9RiBI+XghjF9rlbl5806HJbQph0LJVHZrU5oaO4q70eUKiqMRqm4y07KLTlMZ2BlVmg== dependencies: loose-envify "^1.4.0" @@ -8075,52 +7899,51 @@ redux@^4.0.0, redux@^4.0.1: regenerate-unicode-properties@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz" integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw== dependencies: regenerate "^1.4.0" regenerate@^1.2.1, regenerate@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== regenerator-runtime@^0.11.0: version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regenerator-runtime@^0.12.0: version "0.12.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz" integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== regenerator-transform@^0.13.3: version "0.13.3" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz" integrity sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA== dependencies: private "^0.1.6" -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz" integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz" + integrity sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA== + dependencies: + define-properties "^1.1.2" + regexpu-core@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" - integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz" dependencies: regenerate "^1.2.1" regjsgen "^0.2.0" @@ -8128,7 +7951,7 @@ regexpu-core@^1.0.0: regexpu-core@^4.1.3, regexpu-core@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz" integrity sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw== dependencies: regenerate "^1.4.0" @@ -8140,7 +7963,7 @@ regexpu-core@^4.1.3, regexpu-core@^4.2.0: registry-auth-token@^3.0.1: version "3.3.2" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz" integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== dependencies: rc "^1.1.6" @@ -8148,48 +7971,43 @@ registry-auth-token@^3.0.1: registry-url@^3.0.3: version "3.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" - integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz" dependencies: rc "^1.0.1" regjsgen@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz" regjsgen@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz" integrity sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA== regjsparser@^0.1.4: version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz" dependencies: jsesc "~0.5.0" regjsparser@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz" integrity sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA== dependencies: jsesc "~0.5.0" relateurl@0.2.x: version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz" remove-trailing-separator@^1.0.1: version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" renderkid@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.2.tgz#12d310f255360c07ad8fde253f6c9e9de372d2aa" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.2.tgz" integrity sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg== dependencies: css-select "^1.1.0" @@ -8200,40 +8018,38 @@ renderkid@^2.0.1: repeat-element@^1.1.2: version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.5.2, repeat-string@^1.6.1: +repeat-string@^1.6.1: version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz" repeating@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz" dependencies: is-finite "^1.0.0" -request-promise-core@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" - integrity sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY= +request-promise-core@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" + integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== dependencies: - lodash "^4.13.1" + lodash "^4.17.11" request-promise-native@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" - integrity sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU= + version "1.0.7" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" + integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== dependencies: - request-promise-core "1.1.1" - stealthy-require "^1.1.0" - tough-cookie ">=2.3.3" + request-promise-core "1.1.2" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" request@^2.45.0, request@^2.83.0, request@^2.87.0: version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== dependencies: aws-sign2 "~0.7.0" @@ -8259,184 +8075,184 @@ request@^2.45.0, request@^2.83.0, request@^2.87.0: require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz" require-main-filename@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz" + +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== requires-port@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" reselect@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz" integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== resolve-cwd@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz" dependencies: resolve-from "^3.0.0" resolve-from@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz" resolve-pathname@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz" integrity sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg== resolve-url@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz" resolve@1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz" resolve@1.x, resolve@^1.3.2: version "1.8.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz" integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== dependencies: path-parse "^1.0.5" responselike@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz" dependencies: lowercase-keys "^1.0.0" restore-cursor@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz" dependencies: onetime "^2.0.0" signal-exit "^3.0.2" ret@~0.1.10: version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" + rgb2hex@^0.1.9: version "0.1.9" - resolved "https://registry.yarnpkg.com/rgb2hex/-/rgb2hex-0.1.9.tgz#5d3e0e14b0177b568e6f0d5b43e34fbfdb670346" + resolved "https://registry.yarnpkg.com/rgb2hex/-/rgb2hex-0.1.9.tgz" integrity sha512-32iuQzhOjyT+cv9aAFRBJ19JgHwzQwbjUhH3Fj2sWW2EEGAW8fpFrDFP5ndoKDxJaLO06x1hE3kyuIFrUQtybQ== rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz" integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w== dependencies: glob "^7.0.5" +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz" integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: hash-base "^3.0.0" inherits "^2.0.1" -rsvp@^3.3.3: - version "3.6.2" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" - integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== run-async@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz" dependencies: is-promise "^2.1.0" run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz" dependencies: aproba "^1.1.1" rx-lite-aggregates@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" - integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz" dependencies: rx-lite "*" rx-lite@*, rx-lite@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz" rxjs@^6.3.3: version "6.3.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz" integrity sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw== dependencies: tslib "^1.9.0" -safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-regex@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz" dependencies: ret "~0.1.10" "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sane@^2.0.0: - version "2.5.2" - resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" - integrity sha1-tNwYYcIbQn6SlQej51HiosuKs/o= +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== dependencies: + "@cnakazawa/watch" "^1.0.3" anymatch "^2.0.0" - capture-exit "^1.2.0" - exec-sh "^0.2.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" fb-watchman "^2.0.0" micromatch "^3.1.4" minimist "^1.1.1" walker "~1.0.5" - watch "~0.18.0" - optionalDependencies: - fsevents "^1.2.3" sanitize-filename@^1.6.1: version "1.6.1" - resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.1.tgz#612da1c96473fa02dccda92dcd5b4ab164a6772a" - integrity sha1-YS2hyWRz+gLczaktzVtKsWSmdyo= + resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.1.tgz" dependencies: truncate-utf8-bytes "^1.0.0" sax@^1.2.4, sax@~1.2.1, sax@~1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== scheduler@^0.13.6: version "0.13.6" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz#466a4ec332467b31a91b9bf74e5347072e4cd889" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.6.tgz" integrity sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ== dependencies: loose-envify "^1.1.0" @@ -8444,7 +8260,7 @@ scheduler@^0.13.6: schema-utils@^0.4.3, schema-utils@^0.4.4: version "0.4.7" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz" integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== dependencies: ajv "^6.1.0" @@ -8452,7 +8268,7 @@ schema-utils@^0.4.3, schema-utils@^0.4.4: schema-utils@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz" integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: ajv "^6.1.0" @@ -8461,42 +8277,45 @@ schema-utils@^1.0.0: seamless-immutable@^7.1.3: version "7.1.4" - resolved "https://registry.yarnpkg.com/seamless-immutable/-/seamless-immutable-7.1.4.tgz#6e9536def083ddc4dea0207d722e0e80d0f372f8" + resolved "https://registry.yarnpkg.com/seamless-immutable/-/seamless-immutable-7.1.4.tgz" integrity sha512-XiUO1QP4ki4E2PHegiGAlu6r82o5A+6tRh7IkGGTVg/h+UoeX4nFBeCGPOhb4CYjvkqsfm/TUtvOMYC1xmV30A== seedrandom@^2.4.4: version "2.4.4" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.4.tgz#b25ea98632c73e45f58b77cfaa931678df01f9ba" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.4.tgz" integrity sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA== select-hose@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" -selfsigned@^1.9.1: - version "1.10.4" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" - integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw== +selfsigned@^1.10.4: + version "1.10.6" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.6.tgz" + integrity sha512-i3+CeqxL7DpAazgVpAGdKMwHuL63B5nhJMh9NQ7xmChGkA3jNFflq6Jyo1LLJYcr3idWiNOPWHCrm4zMayLG4w== dependencies: - node-forge "0.7.5" + node-forge "0.8.2" semver-diff@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" - integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz" dependencies: semver "^5.0.3" "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.6.0: version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz" integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== -send@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" - integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== +semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.npmjs.org/send/-/send-0.17.1.tgz" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== dependencies: debug "2.6.9" depd "~1.1.2" @@ -8505,22 +8324,21 @@ send@0.16.2: escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.6.2" - mime "1.4.1" - ms "2.0.0" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" + range-parser "~1.2.1" + statuses "~1.5.0" serialize-javascript@^1.4.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz" integrity sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ== -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= + resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" dependencies: accepts "~1.3.4" batch "0.6.1" @@ -8530,35 +8348,25 @@ serve-index@^1.7.2: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" - integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.2" + parseurl "~1.3.3" + send "0.17.1" set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" - -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -8567,17 +8375,21 @@ set-value@^2.0.0: setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz" setprototypeof@1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" @@ -8585,57 +8397,52 @@ sha.js@^2.4.0, sha.js@^2.4.8: shebang-command@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz" dependencies: shebang-regex "^1.0.0" shebang-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz" shellwords@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz" simple-swizzle@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz" dependencies: is-arrayish "^0.3.1" single-line-log@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/single-line-log/-/single-line-log-1.1.2.tgz#c2f83f273a3e1a16edb0995661da0ed5ef033364" - integrity sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q= + resolved "https://registry.yarnpkg.com/single-line-log/-/single-line-log-1.1.2.tgz" dependencies: string-width "^1.0.1" -sisteransi@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" - integrity sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g== +sisteransi@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.3.tgz#98168d62b79e3a5e758e27ae63c4a053d748f4eb" + integrity sha512-SbEG75TzH8G7eVXFSN5f9EExILKfly7SUvVY5DhhYLvfhKqhDFY0OzevWa/zwak0RLRfWS5AvfMWpd9gJvr5Yg== "sjcl-git@https://github.com/bitwiseshiftleft/sjcl.git#1.0.8": version "1.0.8" resolved "https://github.com/bitwiseshiftleft/sjcl.git#2a6ed4a22449334de2dd9b4e960af679e0e87303" -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== snapdragon-node@^2.0.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz" integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" @@ -8644,14 +8451,14 @@ snapdragon-node@^2.0.1: snapdragon-util@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz" integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: kind-of "^3.2.0" snapdragon@^0.8.1: version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz" integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: base "^0.11.1" @@ -8665,7 +8472,7 @@ snapdragon@^0.8.1: sockjs-client@1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" + resolved "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz" integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== dependencies: debug "^3.2.5" @@ -8677,7 +8484,7 @@ sockjs-client@1.3.0: sockjs@0.3.19: version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz" integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== dependencies: faye-websocket "^0.10.0" @@ -8685,19 +8492,18 @@ sockjs@0.3.19: sort-keys@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz" dependencies: is-plain-obj "^1.0.0" source-list-map@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz" integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== dependencies: atob "^2.1.1" @@ -8706,16 +8512,9 @@ source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - source-map-support@^0.5.6, source-map-support@^0.5.9, source-map-support@~0.5.6: version "0.5.9" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz" integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA== dependencies: buffer-from "^1.0.0" @@ -8723,34 +8522,31 @@ source-map-support@^0.5.6, source-map-support@^0.5.9, source-map-support@~0.5.6: source-map-url@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz" source-map@0.5.6: version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz" -source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6: version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz" 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" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== sourcemapped-stacktrace@^1.1.6: version "1.1.9" - resolved "https://registry.yarnpkg.com/sourcemapped-stacktrace/-/sourcemapped-stacktrace-1.1.9.tgz#c744a99936b33b6891409f4d45c3d2b28ecded4a" + resolved "https://registry.yarnpkg.com/sourcemapped-stacktrace/-/sourcemapped-stacktrace-1.1.9.tgz" integrity sha512-N6SLOT+9OQZdoSpu1PkSjyrxx/B2SGom9LuxjbwZFNNz7+FpMEUpwb3JV+UpaxWvoGM/8k7guuOJxcB6BWEU9Q== dependencies: source-map "0.5.6" spdx-correct@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz" integrity sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ== dependencies: spdx-expression-parse "^3.0.0" @@ -8758,12 +8554,12 @@ spdx-correct@^3.0.0: spdx-exceptions@^2.1.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz" integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== spdx-expression-parse@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz" integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== dependencies: spdx-exceptions "^2.1.0" @@ -8771,37 +8567,35 @@ spdx-expression-parse@^3.0.0: spdx-license-ids@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz#a59efc09784c2a5bada13cfeaf5c75dd214044d2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz" integrity sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg== -spdy-transport@^2.0.18: - version "2.1.1" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.1.tgz#c54815d73858aadd06ce63001e7d25fa6441623b" - integrity sha512-q7D8c148escoB3Z7ySCASadkegMmUZW8Wb/Q1u0/XBgDKMO880rLQDj8Twiew/tYi7ghemKUi/whSYOwE17f5Q== +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== dependencies: - debug "^2.6.8" - detect-node "^2.0.3" + debug "^4.1.0" + detect-node "^2.0.4" hpack.js "^2.1.6" - obuf "^1.1.1" - readable-stream "^2.2.9" - safe-buffer "^5.0.1" - wbuf "^1.7.2" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" -spdy@^3.4.1: - version "3.4.7" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" - integrity sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw= +spdy@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz" + integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== dependencies: - debug "^2.6.8" - handle-thing "^1.2.5" + debug "^4.1.0" + handle-thing "^2.0.0" http-deceiver "^1.2.7" - safe-buffer "^5.0.1" select-hose "^2.0.0" - spdy-transport "^2.0.18" + spdy-transport "^3.0.0" spectron@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/spectron/-/spectron-5.0.0.tgz#602440da0c892f8d73471652ae68000b98d7769c" + resolved "https://registry.yarnpkg.com/spectron/-/spectron-5.0.0.tgz" integrity sha512-wJrFe8EZ7xvarYawBPd1pDegmSz81U1jG0rSCx+yXqD1TISUH9ASB21KysLXkPylAnc2vhbpGiWQxrqVFtsiJg== dependencies: dev-null "^0.1.1" @@ -8812,31 +8606,34 @@ spectron@^5.0.0: speedometer@~0.1.2: version "0.1.4" - resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d" - integrity sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0= + resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz" + +speedometer@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-1.0.0.tgz#cd671cb06752c22bca3370e2f334440be4fc62e2" + integrity sha1-zWccsGdSwivKM3Di8zREC+T8YuI= split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz" integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: extend-shallow "^3.0.0" split@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz" integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== dependencies: through "2" sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz" sshpk@^1.7.0: version "1.15.2" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.15.2.tgz#c946d6bd9b1a39d0e8635763f5242d6ed6dcb629" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.15.2.tgz" integrity sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA== dependencies: asn1 "~0.2.3" @@ -8851,70 +8648,64 @@ sshpk@^1.7.0: ssri@^6.0.0: version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz" integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== dependencies: figgy-pudding "^3.5.1" stable@~0.1.6: version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== stack-trace@0.0.x: version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz" stack-utils@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz" integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== stackframe@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-0.3.1.tgz#33aa84f1177a5548c8935533cbfeb3420975f5a4" - integrity sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ= + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-0.3.1.tgz" stat-mode@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz#e6c80b623123d7d80cf132ce538f346289072502" - integrity sha1-5sgLYjEj19gM8TLOU480YokHJQI= + resolved "https://registry.yarnpkg.com/stat-mode/-/stat-mode-0.2.2.tgz" static-extend@^0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz" dependencies: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.4.0 < 2": +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -statuses@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" -stealthy-require@^1.1.0: +stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= stream-browserify@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" - integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds= + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz" dependencies: inherits "~2.0.1" readable-stream "^2.0.2" +stream-buffers@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-3.0.2.tgz#5249005a8d5c2d00b3a32e6e0a6ea209dc4f3521" + integrity sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ== + stream-each@^1.1.0: version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz" integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== dependencies: end-of-stream "^1.1.0" @@ -8922,7 +8713,7 @@ stream-each@^1.1.0: stream-http@^2.7.2: version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz" integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== dependencies: builtin-status-codes "^3.0.0" @@ -8933,13 +8724,11 @@ stream-http@^2.7.2: 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= + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz" 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= + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" string-length@^2.0.0: version "2.0.0" @@ -8951,8 +8740,7 @@ string-length@^2.0.0: string-width@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz" dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" @@ -8966,64 +8754,73 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" string_decoder@~0.10.x: version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz" dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz" dependencies: ansi-regex "^3.0.0" -strip-bom@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" strip-bom@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz" dependencies: is-utf8 "^0.2.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + strip-eof@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz" strip-indent@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz" dependencies: get-stdin "^4.0.1" strip-json-comments@~2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz" style-loader@^0.23.1: version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz" integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== dependencies: loader-utils "^1.1.0" @@ -9031,7 +8828,7 @@ style-loader@^0.23.1: styled-components@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-4.2.0.tgz#811fbbec4d64c7189f6c7482b9eb6fefa7fefef7" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-4.2.0.tgz" integrity sha512-L/LzkL3ZbBhqIVHdR7DbYujy4tqvTNRfc+4JWDCYyhTatI+8CRRQUmdaR0+ARl03DWsfKLhjewll5uNLrqrl4A== dependencies: "@babel/helper-module-imports" "^7.0.0" @@ -9048,59 +8845,61 @@ styled-components@^4.2.0: stylis-rule-sheet@^0.0.10: version "0.0.10" - resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430" + resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz" integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw== stylis@^3.5.0: version "3.5.4" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz" integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== sumchecker@^1.2.0: version "1.3.1" - resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-1.3.1.tgz#79bb3b4456dd04f18ebdbc0d703a1d1daec5105d" - integrity sha1-ebs7RFbdBPGOvbwNcDodHa7FEF0= + resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-1.3.1.tgz" dependencies: debug "^2.2.0" es6-promise "^4.0.5" sumchecker@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-2.0.2.tgz#0f42c10e5d05da5d42eea3e56c3399a37d6c5b3e" - integrity sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4= + resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-2.0.2.tgz" dependencies: debug "^2.2.0" supports-color@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz" -supports-color@^3.1.2, supports-color@^3.2.3: +supports-color@^3.2.3: version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz" dependencies: has-flag "^1.0.0" -supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: +supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + supports-color@~5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.0.1.tgz#1c5331f22250c84202805b2f17adf16699f3a39a" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.0.1.tgz" integrity sha512-7FQGOlSQ+AQxBNXJpVDj8efTA/FtyB5wcNE1omXXJ0cq6jm1jjDwuROlYDbnzHqdNPqliWFhcioCWSyav+xBnA== dependencies: has-flag "^2.0.0" svgo@^0.7.0: version "0.7.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" - integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U= + resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz" dependencies: coa "~1.0.1" colors "~1.1.2" @@ -9112,7 +8911,7 @@ svgo@^0.7.0: svgo@^1.0.5: version "1.1.1" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz#12384b03335bcecd85cfa5f4e3375fed671cb985" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz" integrity sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g== dependencies: coa "~2.0.1" @@ -9132,22 +8931,21 @@ svgo@^1.0.5: symbol-observable@^1.0.3, symbol-observable@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== symbol-tree@^3.2.2: version "3.2.2" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" - integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz" tapable@^1.0.0, tapable@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz#0d076a172e3d9ba088fd2272b2668fb8d194b78c" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.0.tgz" integrity sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA== tar-stream@^1.5.0: version "1.6.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz" integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== dependencies: bl "^1.0.0" @@ -9159,21 +8957,21 @@ tar-stream@^1.5.0: xtend "^4.0.0" tar@^4: - version "4.4.8" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" - integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== + version "4.4.10" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" + integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" - minipass "^2.3.4" - minizlib "^1.1.1" + minipass "^2.3.5" + minizlib "^1.2.1" mkdirp "^0.5.0" safe-buffer "^5.1.2" - yallist "^3.0.2" + yallist "^3.0.3" temp-file@^3.2.0: version "3.3.2" - resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.3.2.tgz#69b6daf1bbe23231d0a5d03844e3d96f3f531aaa" + resolved "https://registry.yarnpkg.com/temp-file/-/temp-file-3.3.2.tgz" integrity sha512-FGKccAW0Mux9hC/2bdUIe4bJRv4OyVo4RpVcuplFird1V/YoplIFbnPZjfzbJSf/qNvRZIRB9/4n/RkI0GziuQ== dependencies: async-exit-hook "^2.0.1" @@ -9182,14 +8980,13 @@ temp-file@^3.2.0: term-size@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" - integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= + resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz" dependencies: execa "^0.7.0" terser-webpack-plugin@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz#cf7c25a1eee25bf121f4a587bb9e004e3f80e528" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz" integrity sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA== dependencies: cacache "^11.0.2" @@ -9203,27 +9000,26 @@ terser-webpack-plugin@^1.1.0: terser@^3.8.1: version "3.10.12" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.10.12.tgz#06d40765e40b33fd97977c0896c75b2b5d42142d" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.10.12.tgz" integrity sha512-3ODPC1eVt25EVNb04s/PkHxOmzKBQUF6bwwuR6h2DbEF8/j265Y1UkwNtOk9am/pRxfJ5HPapOlUlO6c16mKQQ== dependencies: commander "~2.17.1" source-map "~0.6.1" source-map-support "~0.5.6" -test-exclude@^4.2.1: - version "4.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.3.tgz#a9a5e64474e4398339245a0a769ad7c2f4a97c20" - integrity sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA== +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== dependencies: - arrify "^1.0.1" - micromatch "^2.3.11" - object-assign "^4.1.0" - read-pkg-up "^1.0.1" - require-main-filename "^1.0.1" + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" text-hex@1.0.x: version "1.0.0" - resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz" integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== throat@^4.0.0: @@ -9233,12 +9029,11 @@ throat@^4.0.0: throttleit@0.0.2: version "0.0.2" - resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf" - integrity sha1-z+34jmDADdlpe2H90qg0OptoDq8= + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz" -through2@^2.0.0: +through2@^2.0.0, through2@~2.0.3: version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: readable-stream "~2.3.6" @@ -9246,89 +9041,76 @@ through2@^2.0.0: through2@~0.2.3: version "0.2.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f" - integrity sha1-6zKE2k6jEbbMis42U3SKUqvyWj8= + resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz" dependencies: readable-stream "~1.1.9" xtend "~2.1.1" through@2, through@^2.3.6: version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz" thunky@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz" integrity sha512-YwT8pjmNcAXBZqrubu22P4FYsh2D4dxRmnWBOL8Jk8bUcRUtc5326kx32tuTmFDAZtLOGEVNl8POAR8j896Iow== timed-out@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz" timers-browserify@^2.0.4: version "2.0.10" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz" integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg== dependencies: setimmediate "^1.0.4" tmp@^0.0.33: version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" tmpl@1.0.x: version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz" to-arraybuffer@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" to-buffer@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz" integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - to-fast-properties@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz" to-object-path@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz" dependencies: kind-of "^3.0.2" to-readable-stream@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz" integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== to-regex-range@^2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz" dependencies: is-number "^3.0.0" repeat-string "^1.6.1" to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz" integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" @@ -9336,12 +9118,21 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" + integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + toposort@^1.0.0: version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= + resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz" -tough-cookie@>=2.3.3, tough-cookie@^2.3.4: +tough-cookie@^2.3.3, tough-cookie@^2.3.4: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== @@ -9351,7 +9142,7 @@ tough-cookie@>=2.3.3, tough-cookie@^2.3.4: tough-cookie@~2.4.3: version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz" integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== dependencies: psl "^1.1.24" @@ -9359,49 +9150,45 @@ tough-cookie@~2.4.3: tr46@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz" dependencies: punycode "^2.1.0" trim-newlines@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz" trim-right@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz" triple-beam@^1.2.0, triple-beam@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz" integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== truncate-utf8-bytes@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" - integrity sha1-QFkjkJWS1W94pYGENLC3hInKXys= + resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz" dependencies: utf8-byte-length "^1.0.1" ts-deep-equal@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/ts-deep-equal/-/ts-deep-equal-1.1.1.tgz#a7cf51e4893049b03445a77b06ca8b60e50b904c" + resolved "https://registry.yarnpkg.com/ts-deep-equal/-/ts-deep-equal-1.1.1.tgz" integrity sha512-x8lWnFl/TigvevxjFMvQ8Gq+SbzBg2AgkRJB+ggGosqwIqL92FwIKyn0bMPMqPyFOZiwBPBJMSqMiMU7blgPng== dependencies: ts-entries "^1.1.0" ts-entries@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/ts-entries/-/ts-entries-1.1.0.tgz#915544e408402919dcc79c20d7d9be776cd8c623" + resolved "https://registry.yarnpkg.com/ts-entries/-/ts-entries-1.1.0.tgz" integrity sha512-IOrmt/2+Yfd12GVybSyj7RvsrpD8kpCfTxzk/W9YDBkU9DRtTzKeQh9AqwN4KmNCBUT4L5Vbuo7wRL2ckAzklg== -ts-jest@^23.10.5: - version "23.10.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.10.5.tgz#cdb550df4466a30489bf70ba867615799f388dd5" - integrity sha512-MRCs9qnGoyKgFc8adDEntAOP64fWK1vZKnOYU1o2HxaqjdJvGqmkLCPCnVq1/If4zkUmEjKPnCiUisTrlX2p2A== +ts-jest@^24.0.2: + version "24.0.2" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.0.2.tgz#8dde6cece97c31c03e80e474c749753ffd27194d" + integrity sha512-h6ZCZiA1EQgjczxq+uGLXQlNgeg02WWJBbeT8j6nyIBRQdglqbvzDoHahTEIiS6Eor6x8mK6PfZ7brQ9Q6tzHw== dependencies: bs-logger "0.x" buffer-from "1.x" @@ -9415,7 +9202,7 @@ ts-jest@^23.10.5: ts-loader@^5.3.0: version "5.3.1" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-5.3.1.tgz#70614c8ec4354a9c8b89c9f97b2becb7a98a3980" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-5.3.1.tgz" integrity sha512-fDDgpBH3SR8xlt2MasLdz3Yy611PQ/UY/KGyo7TgXhTRU/6sS8uGG0nJYnU1OdFBNKcoYbId1UTNaAOUn+i41g== dependencies: chalk "^2.3.0" @@ -9426,13 +9213,12 @@ ts-loader@^5.3.0: tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz" integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== tslint@^5.11.0: version "5.11.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.11.0.tgz#98f30c02eae3cde7006201e4c33cb08b48581eed" - integrity sha1-mPMMAurjzecAYgHkwzywi0hYHu0= + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.11.0.tgz" dependencies: babel-code-frame "^6.22.0" builtin-modules "^1.1.1" @@ -9449,71 +9235,66 @@ tslint@^5.11.0: tsutils@^2.27.2: version "2.29.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz" integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== dependencies: tslib "^1.8.1" tty-browserify@0.0.0: version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz" tunnel-agent@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz" dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz" type-check@~0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz" dependencies: prelude-ls "~1.1.2" -type-is@~1.6.16: - version "1.6.16" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" - integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" - mime-types "~2.1.18" + mime-types "~2.1.24" typedarray@^0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz" typesafe-actions@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/typesafe-actions/-/typesafe-actions-2.0.4.tgz#31c8f8df3566d549eb52edb64a75997e970c17d0" + resolved "https://registry.yarnpkg.com/typesafe-actions/-/typesafe-actions-2.0.4.tgz" integrity sha512-3qnSDBNtH3mfekmM9w/IVlsqiUT4I5m+mpLp5tV2Ua/28BfaehqUg6eQNC8+cTk+oufbXcubLiWvKS/61qgleQ== typescript-collections@^1.3.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/typescript-collections/-/typescript-collections-1.3.2.tgz#b2476373d2976eb3dc8be931292a20a30d23677d" + resolved "https://registry.yarnpkg.com/typescript-collections/-/typescript-collections-1.3.2.tgz" integrity sha512-Frfvtwym0VebbueXWEJlVkGiWjKEFStsRwusuzjh8lX8OEJ9ZbFqpYLNfPvZcxw/+nqW0cRNBeBq6SVoTjymcQ== typescript@^3.2.4: version "3.2.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.4.tgz#c585cb952912263d915b462726ce244ba510ef3d" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.4.tgz" integrity sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg== ua-parser-js@^0.7.18: version "0.7.19" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz#94151be4c0a7fb1d001af7022fdaca4642659e4b" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz" integrity sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ== uglify-js@3.4.x, uglify-js@^3.1.4: version "3.4.9" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz" integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== dependencies: commander "~2.17.1" @@ -9521,12 +9302,12 @@ uglify-js@3.4.x, uglify-js@^3.1.4: unicode-canonical-property-names-ecmascript@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz" integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== unicode-match-property-ecmascript@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz" integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== dependencies: unicode-canonical-property-names-ecmascript "^1.0.4" @@ -9534,96 +9315,89 @@ unicode-match-property-ecmascript@^1.0.4: unicode-match-property-value-ecmascript@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz" integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ== unicode-property-aliases-ecmascript@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz" integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= + version "1.0.1" + resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== dependencies: arr-union "^3.1.0" get-value "^2.0.6" is-extendable "^0.1.1" - set-value "^0.4.3" + set-value "^2.0.1" uniq@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz" uniqs@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz" unique-filename@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz" integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz" integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg== dependencies: imurmurhash "^0.1.4" unique-string@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz" dependencies: crypto-random-string "^1.0.0" universalify@^0.1.0: version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" unquote@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz" unset-value@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz" dependencies: has-value "^0.3.1" isobject "^3.0.0" unzip-response@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" - integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz" upath@^1.0.5: version "1.1.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz" integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== -upath@^1.1.0: +upath@^1.1.0, upath@^1.1.1: version "1.1.2" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz" integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== update-notifier@^2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz" integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== dependencies: boxen "^1.2.1" @@ -9639,24 +9413,22 @@ update-notifier@^2.5.0: upper-case@^1.1.1: version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz" uri-js@^4.2.2: version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz" integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== dependencies: punycode "^2.1.0" urix@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz" url-loader@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz" integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== dependencies: loader-utils "^1.1.0" @@ -9665,53 +9437,47 @@ url-loader@^1.1.2: url-parse-lax@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz" dependencies: prepend-http "^1.0.1" url-parse-lax@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz" dependencies: prepend-http "^2.0.0" url-parse@^1.4.3: - version "1.4.4" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8" - integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg== + version "1.4.7" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== dependencies: - querystringify "^2.0.0" + querystringify "^2.1.1" requires-port "^1.0.0" url@^0.11.0, url@~0.11.0: version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz" dependencies: punycode "1.3.2" querystring "0.2.0" use@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== utf8-byte-length@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" - integrity sha1-9F8VDExm7uloGGUFq5P8u4rWv2E= + resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz" util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz" util-inspect@^0.1.8: version "0.1.8" - resolved "https://registry.yarnpkg.com/util-inspect/-/util-inspect-0.1.8.tgz#2b39dbcd2d921f2d8430923caff40f4b5cea5db1" - integrity sha1-KznbzS2SHy2EMJI8r/QPS1zqXbE= + resolved "https://registry.yarnpkg.com/util-inspect/-/util-inspect-0.1.8.tgz" dependencies: array-map "0.0.0" array-reduce "0.0.0" @@ -9723,7 +9489,7 @@ util-inspect@^0.1.8: util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz" integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== dependencies: define-properties "^1.1.2" @@ -9731,41 +9497,38 @@ util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0: util@0.10.3: version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz" dependencies: inherits "2.0.1" util@^0.10.3: version "0.10.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz" integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== dependencies: inherits "2.0.3" utila@^0.4.0, utila@~0.4: version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz" utils-merge@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" uuid@^3.0.1, uuid@^3.3.2: version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== v8-compile-cache@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz" integrity sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw== 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" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" @@ -9773,23 +9536,21 @@ validate-npm-package-license@^3.0.1: value-equal@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz" integrity sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw== vary@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" vendors@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz" integrity sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ== verror@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz" dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -9797,71 +9558,59 @@ verror@1.10.0: vm-browserify@0.0.4: version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" - integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz" dependencies: indexof "0.0.1" w3c-hr-time@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" - integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz" dependencies: browser-process-hrtime "^0.1.2" -walker@~1.0.5: +walker@^1.0.7, walker@~1.0.5: version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz" dependencies: makeerror "1.0.x" warning@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" - integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= + resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz" dependencies: loose-envify "^1.0.0" warning@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.2.tgz#aa6876480872116fa3e11d434b0d0d8d91e44607" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.2.tgz" integrity sha512-wbTp09q/9C+jJn4KKJfJfoS6VleK/Dti0yqWSm6KMvJ4MRCXFQNapHuJXutJIrWV0Cf4AhTdeIe4qdKHR1+Hug== dependencies: loose-envify "^1.0.0" -watch@~0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" - integrity sha1-KAlUdsbffJDJYxOJkMClQj60uYY= - dependencies: - exec-sh "^0.2.0" - minimist "^1.2.0" - watchpack@^1.5.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz" integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== dependencies: chokidar "^2.0.2" graceful-fs "^4.1.2" neo-async "^2.5.0" -wbuf@^1.1.0, wbuf@^1.7.2: +wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== dependencies: minimalistic-assert "^1.0.0" 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" + resolved "https://registry.yarnpkg.com/wdio-dot-reporter/-/wdio-dot-reporter-0.0.10.tgz" integrity sha512-A0TCk2JdZEn3M1DSG9YYbNRcGdx/YRw19lTiRpgwzH4qqWkO/oRDZRmi3Snn4L2j54KKTfPalBhlOtc8fojVgg== webdriverio@^4.13.0, webdriverio@^4.14.1: version "4.14.1" - resolved "https://registry.yarnpkg.com/webdriverio/-/webdriverio-4.14.1.tgz#50fdb010d37233c77c48e5f0497a63ab875cdfc1" + resolved "https://registry.yarnpkg.com/webdriverio/-/webdriverio-4.14.1.tgz" integrity sha512-Gjb5ft6JtO7WdoZifedeM6U941UZi03IlG0t3Xq9M9SxSm6FuyqMEmNZ4HI3UcBRkSbWxdOWGAvpFShYxVr7iA== dependencies: archiver "~2.1.0" @@ -9889,12 +9638,12 @@ webdriverio@^4.13.0, webdriverio@^4.14.1: webidl-conversions@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== webpack-cli@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.1.2.tgz#17d7e01b77f89f884a2bbf9db545f0f6a648e746" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.1.2.tgz" integrity sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ== dependencies: chalk "^2.4.1" @@ -9908,53 +9657,59 @@ webpack-cli@^3.1.2: v8-compile-cache "^2.0.2" yargs "^12.0.2" -webpack-dev-middleware@3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz#1132fecc9026fd90f0ecedac5cbff75d1fb45890" - integrity sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA== +webpack-dev-middleware@^3.7.0: + version "3.7.1" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.1.tgz" + integrity sha512-5MWu9SH1z3hY7oHOV6Kbkz5x7hXbxK56mGHNqHTe6d+ewxOwKUxoUJBs7QIaJb33lPjl9bJZ3X0vCoooUzC36A== dependencies: - memory-fs "~0.4.1" - mime "^2.3.1" - range-parser "^1.0.3" + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" webpack-log "^2.0.0" webpack-dev-server@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.10.tgz#507411bee727ee8d2fdffdc621b66a64ab3dea2b" - integrity sha512-RqOAVjfqZJtQcB0LmrzJ5y4Jp78lv9CK0MZ1YJDTaTmedMZ9PU9FLMQNrMCfVu8hHzaVLVOJKBlGEHMN10z+ww== + version "3.8.0" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.8.0.tgz" + integrity sha512-Hs8K9yI6pyMvGkaPTeTonhD6JXVsigXDApYk9JLW4M7viVBspQvb1WdAcWxqtmttxNW4zf2UFLsLNe0y87pIGQ== 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" - debug "^3.1.0" - del "^3.0.0" - express "^4.16.2" - html-entities "^1.2.0" - http-proxy-middleware "~0.18.0" + chokidar "^2.1.6" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.2.1" + http-proxy-middleware "^0.19.1" import-local "^2.0.0" - internal-ip "^3.0.1" + internal-ip "^4.3.0" ip "^1.1.5" - killable "^1.0.0" - loglevel "^1.4.1" - opn "^5.1.0" - portfinder "^1.0.9" + is-absolute-url "^3.0.0" + killable "^1.0.1" + loglevel "^1.6.3" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.21" schema-utils "^1.0.0" - selfsigned "^1.9.1" - serve-index "^1.7.2" + selfsigned "^1.10.4" + semver "^6.3.0" + serve-index "^1.9.1" sockjs "0.3.19" sockjs-client "1.3.0" - spdy "^3.4.1" - strip-ansi "^3.0.0" - supports-color "^5.1.0" - webpack-dev-middleware "3.4.0" + spdy "^4.0.1" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.0" webpack-log "^2.0.0" - yargs "12.0.2" + ws "^6.2.1" + yargs "12.0.5" webpack-log@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + resolved "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz" integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== dependencies: ansi-colors "^3.0.0" @@ -9962,14 +9717,14 @@ webpack-log@^2.0.0: webpack-merge@^4.1.4: version "4.1.4" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.4.tgz#0fde38eabf2d5fd85251c24a5a8c48f8a3f4eb7b" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.4.tgz" integrity sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ== dependencies: lodash "^4.17.5" webpack-sources@^1.1.0, webpack-sources@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz" integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== dependencies: source-list-map "^2.0.0" @@ -9977,7 +9732,7 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0: webpack@^4.26.0: version "4.26.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.26.0.tgz#adbe80b869148c8d108b7d88965d00d72b3178de" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.26.0.tgz" integrity sha512-J/dP9SJIc5OtX2FZ/+U9ikQtd6H6Mcbqt0xeXtmPwYGDKf8nkbOQQA9KL2Y0rJOsN1Al9Pdn+/j63X58ub8gvQ== dependencies: "@webassemblyjs/ast" "1.7.11" @@ -10006,33 +9761,33 @@ webpack@^4.26.0: webpack-sources "^1.3.0" websocket-driver@>=0.5.1: - version "0.7.0" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb" - integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs= + version "0.7.3" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz" + integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== dependencies: - http-parser-js ">=0.4.0" + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" websocket-extensions ">=0.1.1" websocket-extensions@>=0.1.1: version "0.1.3" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz" integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== wgxpath@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/wgxpath/-/wgxpath-1.0.0.tgz#eef8a4b9d558cc495ad3a9a2b751597ecd9af690" - integrity sha1-7vikudVYzEla06mit1FZfs2a9pA= + resolved "https://registry.yarnpkg.com/wgxpath/-/wgxpath-1.0.0.tgz" whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" whatwg-fetch@>=0.10.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz" integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: @@ -10051,7 +9806,7 @@ whatwg-url@^6.4.1: whatwg-url@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz" integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== dependencies: lodash.sortby "^4.7.0" @@ -10060,17 +9815,15 @@ whatwg-url@^7.0.0: whet.extend@~0.9.9: version "0.9.9" - resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" - integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= + resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz" which-module@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz" -which@^1.2.12, which@^1.2.4, which@^1.2.9, which@^1.3.0: +which@^1.2.4, which@^1.2.9, which@^1.3.0: version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" @@ -10084,14 +9837,14 @@ wide-align@^1.1.0: widest-line@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz" integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== dependencies: string-width "^2.1.1" winston-transport@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.3.0.tgz#df68c0c202482c448d9b47313c07304c2d7c2c66" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.3.0.tgz" integrity sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A== dependencies: readable-stream "^2.3.6" @@ -10099,7 +9852,7 @@ winston-transport@^4.3.0: winston@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.2.1.tgz#63061377976c73584028be2490a1846055f77f07" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.2.1.tgz" integrity sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw== dependencies: async "^2.6.1" @@ -10114,37 +9867,51 @@ winston@^3.2.1: wordwrap@~0.0.2: version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz" wordwrap@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz" worker-farm@^1.5.2: version "1.6.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz" integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ== dependencies: errno "~0.1.7" wrap-ansi@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz" dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz" + +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" -write-file-atomic@^2.0.0, write-file-atomic@^2.1.0: +write-file-atomic@^2.0.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz" integrity sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA== dependencies: graceful-fs "^4.1.11" @@ -10158,100 +9925,91 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" +ws@^6.2.1: + version "6.2.1" + resolved "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + xdg-basedir@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" - integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz" xml-name-validator@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== xmlbuilder@^9.0.7: version "9.0.7" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" - integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz" xmldom@0.1.x: version "0.1.27" - resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" - integrity sha1-1QH5ezvbQDr4757MIFcxh6rawOk= + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz" xpipe@*: version "1.0.5" - resolved "https://registry.yarnpkg.com/xpipe/-/xpipe-1.0.5.tgz#8dd8bf45fc3f7f55f0e054b878f43a62614dafdf" - integrity sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98= - -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== + resolved "https://registry.yarnpkg.com/xpipe/-/xpipe-1.0.5.tgz" xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz" xtend@~2.1.1: version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz" dependencies: object-keys "~0.4.0" xvfb-maybe@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/xvfb-maybe/-/xvfb-maybe-0.2.1.tgz#ed8cb132957b7848b439984c66f010ea7f24361b" - integrity sha1-7YyxMpV7eEi0OZhMZvAQ6n8kNhs= + resolved "https://registry.yarnpkg.com/xvfb-maybe/-/xvfb-maybe-0.2.1.tgz" dependencies: debug "^2.2.0" which "^1.2.4" -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= - "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yallist@^3.0.0, yallist@^3.0.2: +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== -yargs-parser@10.x, yargs-parser@^10.1.0: +yargs-parser@10.x: version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz" integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== dependencies: camelcase "^4.1.0" yargs-parser@^11.1.1: version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz" integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.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= +yargs-parser@^13.1.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== dependencies: - camelcase "^4.1.0" + camelcase "^5.0.0" + decamelize "^1.2.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.2, yargs@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz" + 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" @@ -10261,55 +10019,33 @@ 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.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.3.0: + version "13.3.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" + integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" + cliui "^5.0.0" find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" + get-caller-file "^2.0.1" 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.1.1" yauzl@2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005" - integrity sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU= + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz" dependencies: fd-slicer "~1.0.1" zip-stream@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.2.0.tgz#a8bc45f4c1b49699c6b90198baacaacdbcd4ba04" - integrity sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ= + resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.2.0.tgz" dependencies: archiver-utils "^1.3.0" compress-commons "^1.2.0"