diff options
| author | Andrej Mihajlov <and@codeispoetry.ru> | 2017-07-24 12:47:52 +0100 |
|---|---|---|
| committer | Andrej Mihajlov <and@codeispoetry.ru> | 2017-07-24 12:47:52 +0100 |
| commit | b6be7d02c032830625f3ab48f5ee517d72b4d66e (patch) | |
| tree | e6f072f283c3530a72d78b8bec3d775db9bad95d | |
| parent | 55869981e0fb60a17890b2a3b9d065e03b7d3da4 (diff) | |
| parent | e79f5b709adb3b977ca73dcccf08c9f4748d0eb4 (diff) | |
| download | mullvadvpn-b6be7d02c032830625f3ab48f5ee517d72b4d66e.tar.xz mullvadvpn-b6be7d02c032830625f3ab48f5ee517d72b4d66e.zip | |
Merge branch 'routes-flow-annotations'
| -rw-r--r-- | app/routes.js | 79 | ||||
| -rw-r--r-- | package.json | 4 | ||||
| -rw-r--r-- | yarn.lock | 185 |
3 files changed, 181 insertions, 87 deletions
diff --git a/app/routes.js b/app/routes.js index 5440027c6b..60fb412003 100644 --- a/app/routes.js +++ b/app/routes.js @@ -1,3 +1,5 @@ +// @flow + import React from 'react'; import { Switch, Route, Redirect } from 'react-router'; import { CSSTransitionGroup } from 'react-transition-group'; @@ -9,55 +11,47 @@ import AccountPage from './containers/AccountPage'; import SelectLocationPage from './containers/SelectLocationPage'; import { getTransitionProps } from './transitions'; -/** - * Create routes - * - * @export - * @param {function} getState - function to get redux state - * @param {object} componentProps - extra props to propagate across components - * @returns {React.element} - */ -export default function makeRoutes(getState, componentProps) { +import type { ReduxGetStateFn } from './redux/store'; +import type { Backend } from './lib/backend'; + +export type SharedRouteProps = { + backend: Backend +}; + +type CustomRouteProps = { + component: ReactClass<*> +}; + +export default function makeRoutes(getState: ReduxGetStateFn, componentProps: SharedRouteProps): React.Element<*> { - /** - * Merge props and render component - * @param {React.Component} component - component class - * @param {...} rest - props - * @private - */ - const renderMergedProps = (component, ...rest) => { + // Merge props and render component + const renderMergedProps = (ComponentClass: ReactClass<*>, ...rest: Array<Object>): React.Element<*> => { const finalProps = Object.assign({}, componentProps, ...rest); return ( - React.createElement(component, finalProps) + <ComponentClass { ...finalProps } /> ); }; - /** - * Renders public route - * Example: <PublicRoute path="/" component={ MyComponent } /> - * @private - */ - const PublicRoute = ({ component, ...rest }) => { + // Renders public route + // example: <PublicRoute path="/" component={ MyComponent } /> + const PublicRoute = ({ component, ...otherProps }: CustomRouteProps) => { return ( - <Route {...rest} render={ (routeProps) => { - return renderMergedProps(component, routeProps, ...rest); + <Route { ...otherProps } render={ (routeProps) => { + return renderMergedProps(component, routeProps, otherProps); }} /> ); }; - /** - * Renders protected route that requires authentication, otherwise redirects to / - * Example: <PrivateRoute path="/protected" component={ MyComponent } /> - * @private - */ - const PrivateRoute = ({ component, ...rest }) => { + // Renders protected route that requires authentication, otherwise redirects to / + // example: <PrivateRoute path="/protected" component={ MyComponent } /> + const PrivateRoute = ({ component, ...otherProps }: CustomRouteProps) => { return ( - <Route {...rest} render={ (routeProps) => { + <Route { ...otherProps } render={ (routeProps) => { const { account } = getState(); const isLoggedIn = account.status === 'ok'; if(isLoggedIn) { - return renderMergedProps(component, routeProps, ...rest); + return renderMergedProps(component, routeProps, otherProps); } else { return (<Redirect to={ '/' } />); } @@ -65,32 +59,29 @@ export default function makeRoutes(getState, componentProps) { ); }; - /** - * Renders login route that is only available to non-authenticated - * users. Otherwise this route redirects user to /connect. - * Example: <LoginRoute path="/login" component={ MyComponent } /> - * @private - */ - const LoginRoute = ({ component, ...rest }) => { + // Renders login route that is only available to non-authenticated + // users. Otherwise this route redirects user to /connect. + // example: <LoginRoute path="/login" component={ MyComponent } /> + const LoginRoute = ({ component, ...otherProps }: CustomRouteProps) => { return ( - <Route {...rest} render={ (routeProps) => { + <Route { ...otherProps } render={ (routeProps) => { const { account } = getState(); const isLoggedIn = account.status === 'ok'; if(isLoggedIn) { return (<Redirect to={ '/connect' } />); } else { - return renderMergedProps(component, routeProps, ...rest); + return renderMergedProps(component, routeProps, otherProps); } }} /> ); }; // store previous route - let previousRoute; + let previousRoute: ?string; return ( - <Route render={({location}) => { + <Route render={({ location }) => { const toRoute = location.pathname; const fromRoute = previousRoute; const transitionProps = getTransitionProps(fromRoute, toRoute); diff --git a/package.json b/package.json index 70f1e313b1..63a7092ffe 100644 --- a/package.json +++ b/package.json @@ -56,8 +56,8 @@ "eslint": "^4.1.1", "eslint-plugin-flowtype": "^2.34.1", "eslint-plugin-react": "^7.1.0", - "flow-bin": "^0.49.1", - "flow-typed": "^2.1.2", + "flow-bin": "^0.50.0", + "flow-typed": "^2.1.5", "isomorphic-fetch": "^2.2.1", "jsdom": "^11.1.0", "mocha": "^3.2.0", @@ -131,6 +131,13 @@ after@0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/after/-/after-0.8.1.tgz#ab5d4fb883f596816d3515f8f791c0af486dd627" +agent-base@2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.1.1.tgz#d6de10d5af6132d5bd692427d46fc538539094c7" + dependencies: + extend "~3.0.0" + semver "~5.0.1" + ajv-keywords@^1.0.0: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" @@ -902,7 +909,7 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-polyfill@^6.23.0, babel-polyfill@^6.6.1: +babel-polyfill@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" dependencies: @@ -1751,6 +1758,12 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +debug@2, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.6.1, debug@^2.6.6, debug@^2.6.8: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + dependencies: + ms "2.0.0" + debug@2.2.0, debug@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" @@ -1775,16 +1788,16 @@ debug@2.6.4: dependencies: ms "0.7.3" -debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.6.1, debug@^2.6.6, debug@^2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - dependencies: - ms "2.0.0" - decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +decompress-response@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + dependencies: + mimic-response "^1.0.0" + deep-eql@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-2.0.2.tgz#b1bac06e56f0a76777686d50c9feb75c2ed7679a" @@ -2452,7 +2465,7 @@ express@2.5.x: mkdirp "0.3.0" qs "0.4.x" -extend@~3.0.0: +extend@3, extend@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" @@ -2581,9 +2594,9 @@ flat-cache@^1.2.1: graceful-fs "^4.1.2" write "^0.2.1" -flow-bin@^0.49.1: - version "0.49.1" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.49.1.tgz#c9e456b3173a7535a4ffaf28956352c63bb8e3e9" +flow-bin@^0.50.0: + version "0.50.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.50.0.tgz#d4cdb2430dee1a3599f0eb6fe551146e3027256a" flow-remove-types@^1.1.2: version "1.2.1" @@ -2592,26 +2605,34 @@ flow-remove-types@^1.1.2: babylon "^6.15.0" vlq "^0.2.1" -flow-typed@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/flow-typed/-/flow-typed-2.1.2.tgz#468f7a8b6bc18689856a1d101713b23bb39f01e4" +flow-typed@^2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/flow-typed/-/flow-typed-2.1.5.tgz#c96912807a286357340042783c9369360f384bbd" dependencies: - babel-polyfill "^6.6.1" + babel-polyfill "^6.23.0" colors "^1.1.2" - fs-extra "^2.0.0" - github "^0.2.4" - glob "^7.0.6" + fs-extra "^4.0.0" + github "^9.2.0" + glob "^7.1.2" + got "^7.1.0" md5 "^2.1.0" mkdirp "^0.5.1" - request "^2.69.0" - rimraf "^2.6.0" + request "^2.81.0" + rimraf "^2.6.1" semver "^5.1.0" - table "^3.7.8" + table "^4.0.1" through "^2.3.8" unzip "^0.1.11" - which "^1.2.11" + which "^1.2.14" yargs "^4.2.0" +follow-redirects@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-0.0.7.tgz#34b90bab2a911aa347571da90f22bd36ecd8a919" + dependencies: + debug "^2.2.0" + stream-consume "^0.1.0" + for-in@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -2687,13 +2708,21 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^2.0.0, fs-extra@^2.1.2: +fs-extra@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-2.1.2.tgz#046c70163cef9aad46b0e4a7fa467fb22d71de35" dependencies: graceful-fs "^4.1.2" jsonfile "^2.1.0" +fs-extra@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.0.tgz#414fb4ca2d2170ba0014159d3a8aec3303418d9e" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^3.0.0" + universalify "^0.1.0" + fs-readdir-recursive@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560" @@ -2809,11 +2838,14 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -github@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/github/-/github-0.2.4.tgz#24fa7f0e13fa11b946af91134c51982a91ce538b" +github@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/github/-/github-9.2.0.tgz#8a886dc40dd63636707dcaf99df3df26c59f16fc" dependencies: + follow-redirects "0.0.7" + https-proxy-agent "^1.0.0" mime "^1.2.11" + netrc "^0.1.4" glob-base@^0.3.0: version "0.3.0" @@ -2839,7 +2871,7 @@ glob@7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.2: +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -2885,6 +2917,25 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" +got@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -2957,6 +3008,16 @@ has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +has-symbol-support-x@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.0.tgz#442d89b1d0ac6cf5ff2f7b916ee539869b93a256" + +has-to-string-tag-x@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.0.tgz#49d7bcde85c2409be38ac327e3e119a451657c7b" + dependencies: + has-symbol-support-x "^1.4.0" + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -3068,6 +3129,14 @@ http-signature@~1.1.0: jsprim "^1.2.2" sshpk "^1.7.0" +https-proxy-agent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6" + dependencies: + agent-base "2" + debug "2" + extend "3" + ice-cap@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/ice-cap/-/ice-cap-0.0.4.tgz#8a6d31ab4cac8d4b56de4fa946df3352561b6e18" @@ -3265,6 +3334,10 @@ is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" +is-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + 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" @@ -3281,6 +3354,10 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + 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" @@ -3366,6 +3443,13 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + js-tokens@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" @@ -3874,6 +3958,10 @@ mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" +mimic-response@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e" + minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -3974,6 +4062,10 @@ negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" +netrc@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/netrc/-/netrc-0.1.4.tgz#6be94fcaca8d77ade0a9670dc460914c94472444" + node-emoji@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.5.1.tgz#fd918e412769bf8c448051238233840b2aff16a1" @@ -4222,6 +4314,10 @@ output-file-sync@^1.1.0: version "0.0.5" resolved "https://registry.yarnpkg.com/over/-/over-0.0.5.tgz#f29852e70fd7e25f360e013a8ec44c82aedb5708" +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -4236,6 +4332,12 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-timeout@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.0.tgz#9820f99434c5817868b4f34809ee5291660d5b6c" + dependencies: + p-finally "^1.0.0" + package-json-versionify@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/package-json-versionify/-/package-json-versionify-1.0.4.tgz#5860587a944873a6b7e6d26e8e51ffb22315bf17" @@ -4876,7 +4978,7 @@ request@2.78.0: tough-cookie "~2.3.0" tunnel-agent "~0.4.1" -request@^2.45.0, request@^2.55.0, request@^2.69.0, request@^2.79.0, request@^2.81.0: +request@^2.45.0, request@^2.55.0, request@^2.79.0, request@^2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" dependencies: @@ -4960,7 +5062,7 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" dependencies: @@ -5014,6 +5116,10 @@ semver-diff@^2.0.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" +semver@~5.0.1: + version "5.0.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" + send@0.15.2: version "0.15.2" resolved "https://registry.yarnpkg.com/send/-/send-0.15.2.tgz#f91fab4403bcf87e716f70ceb5db2f578bdc17d6" @@ -5282,6 +5388,10 @@ stream-combiner@~0.0.4: dependencies: duplexer "~0.1.1" +stream-consume@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" + stream-throttle@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" @@ -5415,17 +5525,6 @@ symbol-observable@^1.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" -table@^3.7.8: - version "3.8.3" - resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" - dependencies: - ajv "^4.7.0" - ajv-keywords "^1.0.0" - chalk "^1.1.1" - lodash "^4.0.0" - slice-ansi "0.0.4" - string-width "^2.0.0" - table@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435" @@ -5715,6 +5814,10 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + user-home@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" @@ -5862,7 +5965,7 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@^1.1.1, which@^1.2.11, which@^1.2.8, which@^1.2.9: +which@^1.1.1, which@^1.2.14, which@^1.2.8, which@^1.2.9: version "1.2.14" resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" dependencies: |
