From 40b8cd9853dd87deb90afdda0f5af78faa414f2b Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Wed, 27 Jun 2018 14:33:34 +0300 Subject: fetch -> axios --- vnext/package.json | 4 +- vnext/src/api/index.js | 63 +++++++++++++++++++++++ vnext/src/components/Chat.js | 24 +++------ vnext/src/components/Contacts.js | 9 ++-- vnext/src/components/Feeds.js | 15 +++--- vnext/src/components/LoginButton.js | 16 ++---- vnext/src/components/Thread.js | 26 +++------- vnext/src/index.js | 34 +++---------- vnext/webpack.config.js | 1 - vnext/yarn.lock | 99 +++++++++++++++++++++---------------- 10 files changed, 159 insertions(+), 132 deletions(-) create mode 100644 vnext/src/api/index.js diff --git a/vnext/package.json b/vnext/package.json index a3c694c6..7833941c 100644 --- a/vnext/package.json +++ b/vnext/package.json @@ -35,8 +35,7 @@ "style-loader": "^0.21.0", "webpack": "^4.12.1", "webpack-command": "^0.3.0", - "webpack-serve": "^1.0.4", - "whatwg-fetch": "^2.0.4" + "webpack-serve": "^1.0.4" }, "babel": { "plugins": [ @@ -53,6 +52,7 @@ ] }, "dependencies": { + "axios": "^0.18.0", "moment": "^2.22.2", "query-string": "^6.1.0", "react": "^16.4.1", diff --git a/vnext/src/api/index.js b/vnext/src/api/index.js new file mode 100644 index 00000000..130a5dc2 --- /dev/null +++ b/vnext/src/api/index.js @@ -0,0 +1,63 @@ +import axios from 'axios'; + +const client = axios.create({ + baseURL: 'https://api.juick.com/' +}); +client.interceptors.request.use(config => { + if (localStorage.visitor) { + config.params = Object.assign(config.params || {}, { + hash: JSON.parse(localStorage.visitor).hash + }); + } + return config; +}) + +export function auth(username, password) { + return new Promise((resolve, reject) => { + client.get('/me', { + headers: { + 'Authorization': 'Basic ' + window.btoa(unescape(encodeURIComponent(username + ":" + password))) + } + }).then(response => { + localStorage.visitor = JSON.stringify(response.data); + resolve(response.data) + }).catch(reason => { + localStorage.clear() + reject(reason) + }) + }); +} + +export function getChats() { + return client.get('/groups_pms') +} + +export function getChat(userName) { + return client.get('/pm', { + params: { + 'uname': userName + } + }) +} + +export function pm(userName, body) { + let form = new FormData(); + form.set('uname', userName); + form.set('body', body); + return client.post('/pm', form) +} + +export function getMessages(path, params) { + return client.get(path, { + params: params + }) +} + +export function comment(mid, rid, body, attach) { + let form = new FormData(); + form.append('mid', mid); + form.append('rid', rid); + form.append('body', body); + form.append('attach', attach); + return client.post('/comment', form) +} \ No newline at end of file diff --git a/vnext/src/components/Chat.js b/vnext/src/components/Chat.js index 8f3a26c0..c7a5c3ff 100644 --- a/vnext/src/components/Chat.js +++ b/vnext/src/components/Chat.js @@ -4,6 +4,8 @@ import moment from 'moment'; import PM from './PM'; import MessageInput from './MessageInput'; +import { getChat, pm } from '../api'; + export default class Chat extends React.Component { constructor(props) { super(props); @@ -22,30 +24,20 @@ export default class Chat extends React.Component { chats: [] }); if (hash && uname) { - fetch(`https://api.juick.com/pm?uname=${uname}&hash=${hash}`) - .then(response => response.json()) - .then(jsonResponse => { + getChat(uname) + .then(response => { this.setState({ - chats: jsonResponse + chats: response.data }); }); } } onSend = (template) => { - const url = `https://api.juick.com/pm?hash=${this.props.visitor.hash}`; - let form = new FormData(); - form.append('body', template.body); - form.append('uname', template.to.uname); - fetch(url, { - method: 'POST', - body: form - }).then(response => { - return response.json() - }).then(res => { + pm(template.to.uname, template.body) + .then(res => { this.loadChat(this.props.match.params.user); - }) - .catch(console.log) + }).catch(console.log) } render() { diff --git a/vnext/src/components/Contacts.js b/vnext/src/components/Contacts.js index 300e60eb..aea537d4 100644 --- a/vnext/src/components/Contacts.js +++ b/vnext/src/components/Contacts.js @@ -1,5 +1,5 @@ import React from 'react'; -import { Link } from 'react-router-dom'; +import { getChats } from '../api'; import Contact from './Contact.js'; @@ -16,12 +16,11 @@ export default class Contacts extends React.Component { } refreshChats() { - fetch(`https://api.juick.com/groups_pms?hash=${this.props.visitor.hash}`) - .then(response => response.json()) - .then(jsonResponse => { + getChats() + .then(response => { this.setState({ isLoading: false, - pms: jsonResponse.pms + pms: response.data.pms }); }); } diff --git a/vnext/src/components/Feeds.js b/vnext/src/components/Feeds.js index 5e9c14d0..0a27ed3d 100644 --- a/vnext/src/components/Feeds.js +++ b/vnext/src/components/Feeds.js @@ -7,6 +7,8 @@ import moment from 'moment'; import Message from './Message'; import Spinner from './Spinner'; +import { getMessages } from '../api'; + export function Discover(props) { const query = { baseUrl: "https://api.juick.com/messages", @@ -38,7 +40,7 @@ export function Blog(props) { export function Tag(props) { const { tag } = props.match.params; const query = { - baseUrl: `https://api.juick.com/messages`, + baseUrl: '/messages', search: { tag: tag }, @@ -49,7 +51,7 @@ export function Tag(props) { export function Home(props) { const query = { - baseUrl: `https://api.juick.com/home`, + baseUrl: '/home', pageParam: 'before_mid' }; return () @@ -81,17 +83,12 @@ class Feed extends React.Component { if (hash) { params.hash = hash; } - if (Object.keys(params).length > 0) { - url = `${url}?${qs.stringify(params)}`; - } if (!params.hash && this.props.authRequired) { this.props.history.push('/') } - fetch(url) + getMessages(url, params) .then(response => { - return response.json() - }) - .then(data => { + const { data } = response; const { pageParam } = this.props.query; const lastMessage = data.slice(-1)[0] || {}; const pageValue = pageParam === 'before_mid' ? lastMessage.mid : moment.utc(lastMessage.updated).valueOf(); diff --git a/vnext/src/components/LoginButton.js b/vnext/src/components/LoginButton.js index fb3c087e..fbce6982 100644 --- a/vnext/src/components/LoginButton.js +++ b/vnext/src/components/LoginButton.js @@ -3,6 +3,8 @@ import PropTypes from 'prop-types'; import Icon from './Icon'; import Modal from './Modal'; +import { auth } from '../api'; + export default class LoginButton extends React.Component { constructor(props) { super(props); @@ -30,18 +32,10 @@ export default class LoginButton extends React.Component { } login = (event) => { event.preventDefault(); - let headers = new Headers(); - headers.append('Authorization', 'Basic ' + window.btoa(unescape(encodeURIComponent(this.state.username + ":" + this.state.password)))); - fetch('https://api.juick.com/auth', { - method: 'GET', - credentials: 'omit', - headers: headers - }).then(response => { - return response.text() - }) - .then(data => { + auth(this.state.username, this.state.password) + .then(response => { this.toggleModal(); - this.props.onAuth(data); + this.props.onAuth(response); } ).catch(ex => { console.log(ex); diff --git a/vnext/src/components/Thread.js b/vnext/src/components/Thread.js index 17c5b55c..b1e1abb3 100644 --- a/vnext/src/components/Thread.js +++ b/vnext/src/components/Thread.js @@ -12,6 +12,8 @@ import Button from './Button'; import { format } from '../utils/embed'; +import { getMessages, comment } from '../api'; + export default class Thread extends React.Component { constructor(props) { super(props); @@ -36,16 +38,12 @@ export default class Thread extends React.Component { if (this.props.visitor && this.props.visitor.hash) { params.hash = this.props.visitor.hash }; - const url = `https://api.juick.com/thread?${qs.stringify(params)}`; - fetch(url) + getMessages('/thread', params) .then(response => { - return response.json() - }) - .then(data => { - let msg = data.shift(); + let msg = response.data.shift(); this.setState({ msg: msg, - replies: data, + replies: response.data, active: 0 }) } @@ -62,18 +60,8 @@ export default class Thread extends React.Component { }) } postComment = (template) => { - const url = `https://api.juick.com/comment?hash=${this.props.visitor.hash}`; - let form = new FormData(); - form.append('mid', template.mid); - form.append('rid', template.rid); - form.append('body', template.body); - form.append('attach', template.attach); - fetch(url, { - method: 'POST', - body: form - }).then(response => { - return response.json() - }).then(res => { + const { mid, rid, body, attach } = template; + comment(mid, rid, body, attach).then(res => { this.loadReplies() }) .catch(console.log) diff --git a/vnext/src/index.js b/vnext/src/index.js index aeb5357f..9527178e 100644 --- a/vnext/src/index.js +++ b/vnext/src/index.js @@ -20,19 +20,16 @@ class App extends React.Component { super(props); let params = qs.parse(window.location.search) if (params.hash) { - window.localStorage.hash = params.hash window.history.replaceState({}, document.title, `${window.location.protocol}//${window.location.host}${window.location.pathname}`) } this.state = { - visitor: { - uid: Number(window.localStorage.uid) || 0, - hash: window.localStorage.hash || params.hash || '' + visitor: localStorage.visitor ? JSON.parse(localStorage.visitor) : { + uid: 0, + hash: params.hash || '' } }; } - componentDidMount() { - this.auth(this.state.visitor.hash) - } + render() { const user = this.state.visitor; return ( @@ -156,25 +153,10 @@ class App extends React.Component { ) } - auth = (data) => { - if (data) { - window.localStorage.hash = data; - fetch(`https://api.juick.com/users?hash=${data}`) - .then(response => { - return response.json() - }) - .then(users => { - let visitor = users[0]; - visitor.hash = data; - window.localStorage.uid = visitor.uid; - this.setState({ - visitor: visitor - }) - }).catch(reason => { - window.localStorage.clear() - window.location.reload() - }) - } + auth = (visitor) => { + this.setState({ + visitor: visitor + }) } } diff --git a/vnext/webpack.config.js b/vnext/webpack.config.js index f63beb4c..a43afc63 100644 --- a/vnext/webpack.config.js +++ b/vnext/webpack.config.js @@ -13,7 +13,6 @@ module.exports = { mode: process.env.WEBPACK_SERVE ? 'development' : 'production', entry: { 'Juick': [ - 'whatwg-fetch', __dirname + '/src/index.js', __dirname + '/src/style/main.css' ] diff --git a/vnext/yarn.lock b/vnext/yarn.lock index 8bb63672..b0412eb0 100644 --- a/vnext/yarn.lock +++ b/vnext/yarn.lock @@ -33,8 +33,8 @@ debug "^2.6.8" "@types/node@*": - version "10.3.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.3.4.tgz#c74e8aec19e555df44609b8057311052a2c84d9e" + version "10.3.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.3.6.tgz#ea8aab9439b59f40d19ec5f13b44642344872b11" "@webassemblyjs/ast@1.5.12": version "1.5.12" @@ -305,8 +305,8 @@ anymatch@^2.0.0: normalize-path "^2.1.1" app-root-path@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" + version "2.1.0" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.1.0.tgz#98bf6599327ecea199309866e8140368fd2e646a" append-transform@^1.0.0: version "1.0.0" @@ -446,6 +446,13 @@ aws4@^1.6.0: version "1.7.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" +axios@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102" + dependencies: + follow-redirects "^1.3.0" + is-buffer "^1.1.5" + 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" @@ -1291,12 +1298,12 @@ caniuse-api@^1.5.2: lodash.uniq "^4.5.0" caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000856" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000856.tgz#fbebb99abe15a5654fc7747ebb5315bdfde3358f" + version "1.0.30000859" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000859.tgz#6e813a1757f19a93cb3675f6b5037aca80bea062" caniuse-lite@^1.0.30000844: - version "1.0.30000856" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000856.tgz#ecc16978135a6f219b138991eb62009d25ee8daa" + version "1.0.30000859" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000859.tgz#da974adc5348fffe94724877a7ef8cb5d6d3d777" capture-exit@^1.2.0: version "1.2.0" @@ -2101,8 +2108,8 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.47: - version "1.3.48" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz#d3b0d8593814044e092ece2108fc3ac9aea4b900" + version "1.3.50" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.50.tgz#7438b76f92b41b919f3fbdd350fbd0757dacddf7" elliptic@^6.0.0: version "6.4.0" @@ -2313,10 +2320,10 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: safe-buffer "^5.1.1" exec-sh@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" + version "0.2.2" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" dependencies: - merge "^1.1.3" + merge "^1.2.0" execa@^0.10.0: version "0.10.0" @@ -2512,6 +2519,12 @@ flush-write-stream@^1.0.0: inherits "^2.0.1" readable-stream "^2.0.4" +follow-redirects@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.0.tgz#234f49cf770b7f35b40e790f636ceba0c3a0ab77" + dependencies: + debug "^3.1.0" + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -2798,8 +2811,8 @@ home-or-tmp@^2.0.0: os-tmpdir "^1.0.1" hosted-git-info@^2.1.4: - version "2.6.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" + version "2.6.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.1.tgz#6e4cee78b01bb849dcf93527708c69fdbee410df" html-comment-regex@^1.1.0: version "1.1.1" @@ -2822,8 +2835,8 @@ html-loader@^0.5.5: object-assign "^4.1.1" html-minifier@^3.2.3, html-minifier@^3.5.8: - version "3.5.16" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.16.tgz#39f5aabaf78bdfc057fe67334226efd7f3851175" + version "3.5.17" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.17.tgz#fe9834c4288e4d5b4dfe18fbc7f3f811c108e5ea" dependencies: camel-case "3.0.x" clean-css "4.1.x" @@ -2831,7 +2844,7 @@ html-minifier@^3.2.3, html-minifier@^3.5.8: he "1.1.x" param-case "2.1.x" relateurl "0.2.x" - uglify-js "3.3.x" + uglify-js "3.4.x" html-webpack-plugin@^3.2.0: version "3.2.0" @@ -4069,7 +4082,7 @@ merge-stream@^1.0.1: dependencies: readable-stream "^2.0.1" -merge@^1.1.3: +merge@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" @@ -4361,8 +4374,8 @@ node-notifier@^5.2.1: which "^1.3.0" node-pre-gyp@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46" + version "0.10.2" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.2.tgz#e8945c20ef6795a20aac2b44f036eb13cf5146e3" dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -4370,7 +4383,7 @@ node-pre-gyp@^0.10.0: nopt "^4.0.1" npm-packlist "^1.1.6" npmlog "^4.0.2" - rc "^1.1.7" + rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" tar "^4" @@ -4571,8 +4584,8 @@ optimist@^0.6.1: wordwrap "~0.0.2" optimize-css-assets-webpack-plugin@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-4.0.2.tgz#813d511d20fe5d9a605458441ed97074d79c1122" + version "4.0.3" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-4.0.3.tgz#4f714e276b279700892c4a6202b7e22812d6f683" dependencies: cssnano "^3.10.0" last-call-webpack-plugin "^3.0.0" @@ -5090,8 +5103,8 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0 supports-color "^3.2.3" postcss@^6.0.0, postcss@^6.0.1: - version "6.0.22" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.22.tgz#e23b78314905c3b90cbd61702121e7a78848f2a3" + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" dependencies: chalk "^2.4.1" source-map "^0.6.1" @@ -5276,7 +5289,7 @@ range-parser@^1.0.3: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" -rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: +rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" dependencies: @@ -5793,8 +5806,8 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" sisteransi@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.0.tgz#2e6706ac427019b84e60f751d588d87920484f25" + version "0.1.1" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" slash@^1.0.0: version "1.0.0" @@ -6211,8 +6224,8 @@ toposort@^1.0.0: resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" tough-cookie@>=2.3.3, tough-cookie@^2.3.3: - version "2.4.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.2.tgz#aa9133154518b494efab98a58247bfc38818c00c" + version "2.4.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" dependencies: psl "^1.1.24" punycode "^1.4.1" @@ -6238,8 +6251,8 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" tslib@^1.9.0: - version "1.9.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.2.tgz#8be0cc9a1f6dc7727c38deb16c2ebd1a2892988e" + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" tty-browserify@0.0.0: version "0.0.0" @@ -6283,9 +6296,9 @@ uglify-es@^3.3.4: commander "~2.13.0" source-map "~0.6.1" -uglify-js@3.3.x: - version "3.3.28" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.28.tgz#0efb9a13850e11303361c1051f64d2ec68d9be06" +uglify-js@3.4.x: + version "3.4.2" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.2.tgz#70511a390eb62423675ba63c374ba1abf045116c" dependencies: commander "~2.15.0" source-map "~0.6.1" @@ -6304,8 +6317,8 @@ uglify-to-browserify@~1.0.0: resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" uglifyjs-webpack-plugin@^1.2.4: - version "1.2.6" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.6.tgz#f4bb44f02431e82b301d8d4624330a6a35729381" + version "1.2.7" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.7.tgz#57638dd99c853a1ebfe9d97b42160a8a507f9d00" dependencies: cacache "^10.0.4" find-cache-dir "^1.0.0" @@ -6458,8 +6471,8 @@ utila@~0.4: resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" uuid@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + version "3.3.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.0.tgz#b237147804881d7b86f40a7ff8f590f15c37de32" v8-compile-cache@^2.0.0: version "2.0.0" @@ -6648,8 +6661,8 @@ webpack-sources@^1.0.1, webpack-sources@^1.1.0: source-map "~0.6.1" webpack@^4.12.1: - version "4.12.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.12.1.tgz#9108078c67fdd72c2609cea22af87d7aed2acb08" + version "4.12.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.12.2.tgz#d2b8418eb40cedcbf2c1f5905d23a99546011ce9" dependencies: "@webassemblyjs/ast" "1.5.12" "@webassemblyjs/helper-module-context" "1.5.12" @@ -6683,7 +6696,7 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: dependencies: iconv-lite "0.4.19" -whatwg-fetch@>=0.10.0, whatwg-fetch@^2.0.4: +whatwg-fetch@>=0.10.0: version "2.0.4" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" -- cgit v1.2.3