Commit 1003dd38 authored by Evan You's avatar Evan You

use html-webpack-plugin, better caching, handle 404

parent 95de8852
...@@ -3,11 +3,22 @@ const vueConfig = require('./vue-loader.config') ...@@ -3,11 +3,22 @@ const vueConfig = require('./vue-loader.config')
module.exports = { module.exports = {
devtool: '#source-map', devtool: '#source-map',
entry: './src/client-entry.js', entry: {
app: './src/client-entry.js',
vendor: [
'es6-promise',
'firebase/app',
'firebase/database',
'vue',
'vue-router',
'vuex',
'vuex-router-sync'
]
},
output: { output: {
path: path.resolve(__dirname, '../dist'), path: path.resolve(__dirname, '../dist'),
publicPath: '/dist/', publicPath: '/dist/',
filename: 'client-bundle.js' filename: '[name].[chunkhash].js'
}, },
module: { module: {
noParse: /es6-promise\.js$/, // avoid webpack shimming process noParse: /es6-promise\.js$/, // avoid webpack shimming process
......
const webpack = require('webpack') const webpack = require('webpack')
const base = require('./webpack.base.config') const base = require('./webpack.base.config')
const vueConfig = require('./vue-loader.config') const vueConfig = require('./vue-loader.config')
const HTMLPlugin = require('html-webpack-plugin')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const SWPrecachePlugin = require('sw-precache-webpack-plugin')
const config = Object.assign({}, base, { const config = Object.assign({}, base, {
resolve: { resolve: {
...@@ -12,16 +15,22 @@ const config = Object.assign({}, base, { ...@@ -12,16 +15,22 @@ const config = Object.assign({}, base, {
// strip comments in Vue code // strip comments in Vue code
new webpack.DefinePlugin({ new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development') 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
}),
// extract vendor chunks for better caching
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
filename: '[name].[chunkhash].js'
}),
// generate output HTML
new HTMLPlugin({
template: 'src/index.template.html'
}) })
]) ])
}) })
if (process.env.NODE_ENV === 'production') { if (process.env.NODE_ENV === 'production') {
// Use ExtractTextPlugin to extract CSS into a single file // Use ExtractTextPlugin to extract CSS into a single file
// so it's applied on initial render // so it's applied on initial render.
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const SWPrecachePlugin = require('sw-precache-webpack-plugin')
// vueConfig is already included in the config via LoaderOptionsPlugin // vueConfig is already included in the config via LoaderOptionsPlugin
// here we overwrite the loader config for <style lang="stylus"> // here we overwrite the loader config for <style lang="stylus">
// so they are extracted. // so they are extracted.
...@@ -33,7 +42,7 @@ if (process.env.NODE_ENV === 'production') { ...@@ -33,7 +42,7 @@ if (process.env.NODE_ENV === 'production') {
} }
config.plugins.push( config.plugins.push(
new ExtractTextPlugin('styles.css'), new ExtractTextPlugin('styles.[hash].css'),
// this is needed in webpack 2 for minifying CSS // this is needed in webpack 2 for minifying CSS
new webpack.LoaderOptionsPlugin({ new webpack.LoaderOptionsPlugin({
minimize: true minimize: true
......
...@@ -19,10 +19,10 @@ ...@@ -19,10 +19,10 @@
"es6-promise": "^3.2.1", "es6-promise": "^3.2.1",
"express": "^4.14.0", "express": "^4.14.0",
"firebase": "^3.4.1", "firebase": "^3.4.1",
"html-webpack-plugin": "^2.24.1",
"lru-cache": "^4.0.1", "lru-cache": "^4.0.1",
"serialize-javascript": "^1.3.0", "serialize-javascript": "^1.3.0",
"serve-favicon": "^2.3.0", "serve-favicon": "^2.3.0",
"sw-precache-webpack-plugin": "^0.5.1",
"vue": "^2.0.0", "vue": "^2.0.0",
"vue-router": "^2.0.0", "vue-router": "^2.0.0",
"vue-server-renderer": "^2.0.0", "vue-server-renderer": "^2.0.0",
...@@ -31,14 +31,15 @@ ...@@ -31,14 +31,15 @@
}, },
"devDependencies": { "devDependencies": {
"autoprefixer": "^6.4.0", "autoprefixer": "^6.4.0",
"cross-env": "^2.0.0",
"css-loader": "^0.25.0",
"buble": "^0.14.2", "buble": "^0.14.2",
"buble-loader": "^0.3.2", "buble-loader": "^0.3.2",
"cross-env": "^2.0.0",
"css-loader": "^0.25.0",
"extract-text-webpack-plugin": "^2.0.0-beta.3", "extract-text-webpack-plugin": "^2.0.0-beta.3",
"file-loader": "^0.9.0", "file-loader": "^0.9.0",
"stylus": "^0.54.5", "stylus": "^0.54.5",
"stylus-loader": "^2.1.2", "stylus-loader": "^2.1.2",
"sw-precache-webpack-plugin": "^0.5.1",
"url-loader": "^0.5.7", "url-loader": "^0.5.7",
"vue-loader": "^9.7.0", "vue-loader": "^9.7.0",
"webpack": "^2.1.0-beta.25", "webpack": "^2.1.0-beta.25",
......
...@@ -3,11 +3,11 @@ const isProd = process.env.NODE_ENV === 'production' ...@@ -3,11 +3,11 @@ const isProd = process.env.NODE_ENV === 'production'
const fs = require('fs') const fs = require('fs')
const path = require('path') const path = require('path')
const resolve = file => path.resolve(__dirname, file)
const express = require('express') const express = require('express')
const favicon = require('serve-favicon') const favicon = require('serve-favicon')
const serialize = require('serialize-javascript')
const compression = require('compression') const compression = require('compression')
const serialize = require('serialize-javascript')
const resolve = file => path.resolve(__dirname, file)
// https://github.com/vuejs/vue/blob/next/packages/vue-server-renderer/README.md#why-use-bundlerenderer // https://github.com/vuejs/vue/blob/next/packages/vue-server-renderer/README.md#why-use-bundlerenderer
const createBundleRenderer = require('vue-server-renderer').createBundleRenderer const createBundleRenderer = require('vue-server-renderer').createBundleRenderer
...@@ -16,13 +16,12 @@ const app = express() ...@@ -16,13 +16,12 @@ const app = express()
// parse index.html template // parse index.html template
const html = (() => { const html = (() => {
const template = fs.readFileSync(resolve('./index.html'), 'utf-8') const contentMarker = '<!-- APP -->'
const i = template.indexOf('{{ APP }}') const template = fs.readFileSync(resolve('./dist/index.html'), 'utf-8')
// styles are injected dynamically via vue-style-loader in development const i = template.indexOf(contentMarker)
const style = isProd ? '<link rel="stylesheet" href="/dist/styles.css">' : ''
return { return {
head: template.slice(0, i).replace('{{ STYLE }}', style), head: template.slice(0, i),
tail: template.slice(i + '{{ APP }}'.length) tail: template.slice(i + contentMarker.length)
} }
})() })()
...@@ -47,8 +46,8 @@ function createRenderer (bundle) { ...@@ -47,8 +46,8 @@ function createRenderer (bundle) {
}) })
} }
app.use(compression({threshold: 0})) app.use(compression({ threshold: 0 }))
app.use('/dist', express.static(resolve('./dist'))) app.use('/dist', express.static(resolve('./dist'), { maxAge: 60 * 60 * 24 * 30 }))
app.use(favicon(resolve('./src/assets/logo.png'))) app.use(favicon(resolve('./src/assets/logo.png')))
app.get('*', (req, res) => { app.get('*', (req, res) => {
...@@ -61,7 +60,9 @@ app.get('*', (req, res) => { ...@@ -61,7 +60,9 @@ app.get('*', (req, res) => {
const context = { url: req.url } const context = { url: req.url }
const renderStream = renderer.renderToStream(context) const renderStream = renderer.renderToStream(context)
renderStream.once('data', () => {
res.write(html.head) res.write(html.head)
})
renderStream.on('data', chunk => { renderStream.on('data', chunk => {
res.write(chunk) res.write(chunk)
...@@ -81,6 +82,10 @@ app.get('*', (req, res) => { ...@@ -81,6 +82,10 @@ app.get('*', (req, res) => {
}) })
renderStream.on('error', err => { renderStream.on('error', err => {
if (err && err.code === '404') {
res.status(404).end('404 | Page Not Found')
return
}
// Render Error Page or Redirect // Render Error Page or Redirect
res.status(500).end('Internal Error 500') res.status(500).end('Internal Error 500')
console.error(`error during render : ${req.url}`) console.error(`error during render : ${req.url}`)
......
...@@ -6,10 +6,8 @@ ...@@ -6,10 +6,8 @@
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
<link href='https://fonts.googleapis.com/css?family=Roboto:300,400,700' rel='stylesheet' type='text/css'> <link href='https://fonts.googleapis.com/css?family=Roboto:300,400,700' rel='stylesheet' type='text/css'>
{{ STYLE }}
</head> </head>
<body> <body>
{{ APP }} <!-- APP -->
<script src="/dist/client-bundle.js"></script>
</body> </body>
</html> </html>
...@@ -18,6 +18,6 @@ export default new Router({ ...@@ -18,6 +18,6 @@ export default new Router({
{ path: '/job/:page(\\d+)?', component: createListView('job') }, { path: '/job/:page(\\d+)?', component: createListView('job') },
{ path: '/item/:id(\\d+)', component: ItemView }, { path: '/item/:id(\\d+)', component: ItemView },
{ path: '/user/:id', component: UserView }, { path: '/user/:id', component: UserView },
{ path: '*', redirect: '/top' } { path: '/', redirect: '/top' }
] ]
}) })
...@@ -8,16 +8,22 @@ const isDev = process.env.NODE_ENV !== 'production' ...@@ -8,16 +8,22 @@ const isDev = process.env.NODE_ENV !== 'production'
// Since data fetching is async, this function is expected to // Since data fetching is async, this function is expected to
// return a Promise that resolves to the app instance. // return a Promise that resolves to the app instance.
export default context => { export default context => {
const s = isDev && Date.now()
// set router's location // set router's location
router.push(context.url) router.push(context.url)
const matchedComponents = router.getMatchedComponents()
const s = isDev && Date.now() // no matched routes
if (!matchedComponents.length) {
return Promise.reject({ code: '404' })
}
// Call preFetch hooks on components matched by the route. // Call preFetch hooks on components matched by the route.
// A preFetch hook dispatches a store action and returns a Promise, // A preFetch hook dispatches a store action and returns a Promise,
// which is resolved when the action is complete and store state has been // which is resolved when the action is complete and store state has been
// updated. // updated.
return Promise.all(router.getMatchedComponents().map(component => { return Promise.all(matchedComponents.map(component => {
if (component.preFetch) { if (component.preFetch) {
return component.preFetch(store) return component.preFetch(store)
} }
......
...@@ -255,7 +255,7 @@ block-stream@*: ...@@ -255,7 +255,7 @@ block-stream@*:
dependencies: dependencies:
inherits "~2.0.0" inherits "~2.0.0"
bluebird@^3.0.5, bluebird@^3.1.1: bluebird@^3.0.5, bluebird@^3.1.1, bluebird@^3.4.6:
version "3.4.6" version "3.4.6"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f"
...@@ -263,6 +263,10 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: ...@@ -263,6 +263,10 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
version "4.11.6" version "4.11.6"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
boolbase@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
boom@2.x.x: boom@2.x.x:
version "2.10.1" version "2.10.1"
resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
...@@ -391,6 +395,13 @@ bytes@2.3.0: ...@@ -391,6 +395,13 @@ bytes@2.3.0:
version "2.3.0" version "2.3.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070" resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070"
camel-case@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
dependencies:
no-case "^2.2.0"
upper-case "^1.1.1"
camelcase-keys@^2.0.0: camelcase-keys@^2.0.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
...@@ -435,6 +446,29 @@ chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: ...@@ -435,6 +446,29 @@ chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
strip-ansi "^3.0.0" strip-ansi "^3.0.0"
supports-color "^2.0.0" supports-color "^2.0.0"
change-case@3.0.x:
version "3.0.0"
resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.0.tgz#6c9c8e35f8790870a82b6b0745be8c3cbef9b081"
dependencies:
camel-case "^3.0.0"
constant-case "^2.0.0"
dot-case "^2.1.0"
header-case "^1.0.0"
is-lower-case "^1.1.0"
is-upper-case "^1.1.0"
lower-case "^1.1.1"
lower-case-first "^1.0.0"
no-case "^2.2.0"
param-case "^2.1.0"
pascal-case "^2.0.0"
path-case "^2.1.0"
sentence-case "^2.1.0"
snake-case "^2.1.0"
swap-case "^1.1.0"
title-case "^2.1.0"
upper-case "^1.1.1"
upper-case-first "^1.1.0"
chokidar@^1.4.3: chokidar@^1.4.3:
version "1.6.1" version "1.6.1"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
...@@ -462,6 +496,13 @@ clap@^1.0.9: ...@@ -462,6 +496,13 @@ clap@^1.0.9:
dependencies: dependencies:
chalk "^1.1.3" chalk "^1.1.3"
clean-css@3.4.x:
version "3.4.20"
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.20.tgz#c0d8963b5448e030f0bcd3ddd0dac4dfe3dea501"
dependencies:
commander "2.8.x"
source-map "0.4.x"
cliui@^2.1.0: cliui@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
...@@ -538,12 +579,18 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: ...@@ -538,12 +579,18 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
dependencies: dependencies:
delayed-stream "~1.0.0" delayed-stream "~1.0.0"
commander@^2.9.0: commander@^2.9.0, commander@2.9.x:
version "2.9.0" version "2.9.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
dependencies: dependencies:
graceful-readlink ">= 1.0.0" graceful-readlink ">= 1.0.0"
commander@2.8.x:
version "2.8.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4"
dependencies:
graceful-readlink ">= 1.0.0"
compressible@~2.0.8: compressible@~2.0.8:
version "2.0.9" version "2.0.9"
resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425"
...@@ -588,6 +635,13 @@ consolidate@^0.14.0: ...@@ -588,6 +635,13 @@ consolidate@^0.14.0:
dependencies: dependencies:
bluebird "^3.1.1" bluebird "^3.1.1"
constant-case@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46"
dependencies:
snake-case "^2.1.0"
upper-case "^1.1.1"
constants-browserify@^1.0.0: constants-browserify@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
...@@ -695,6 +749,15 @@ css-parse@1.7.x: ...@@ -695,6 +749,15 @@ css-parse@1.7.x:
version "1.7.0" version "1.7.0"
resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b" resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b"
css-select@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
dependencies:
boolbase "~1.0.0"
css-what "2.1"
domutils "1.5.1"
nth-check "~1.0.1"
css-selector-tokenizer@^0.6.0: css-selector-tokenizer@^0.6.0:
version "0.6.0" version "0.6.0"
resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152" resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152"
...@@ -703,6 +766,10 @@ css-selector-tokenizer@^0.6.0: ...@@ -703,6 +766,10 @@ css-selector-tokenizer@^0.6.0:
fastparse "^1.1.1" fastparse "^1.1.1"
regexpu-core "^1.0.0" regexpu-core "^1.0.0"
css-what@2.1:
version "2.1.0"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
cssesc@^0.1.0: cssesc@^0.1.0:
version "0.1.0" version "0.1.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
...@@ -838,6 +905,19 @@ diffie-hellman@^5.0.0: ...@@ -838,6 +905,19 @@ diffie-hellman@^5.0.0:
miller-rabin "^4.0.0" miller-rabin "^4.0.0"
randombytes "^2.0.0" randombytes "^2.0.0"
dom-converter@~0.1:
version "0.1.4"
resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b"
dependencies:
utila "~0.3"
dom-serializer@0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
dependencies:
domelementtype "~1.1.1"
entities "~1.1.1"
dom-storage@2.0.2: dom-storage@2.0.2:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/dom-storage/-/dom-storage-2.0.2.tgz#ed17cbf68abd10e0aef8182713e297c5e4b500b0" resolved "https://registry.yarnpkg.com/dom-storage/-/dom-storage-2.0.2.tgz#ed17cbf68abd10e0aef8182713e297c5e4b500b0"
...@@ -852,6 +932,39 @@ domain-browser@^1.1.1: ...@@ -852,6 +932,39 @@ domain-browser@^1.1.1:
version "1.1.7" version "1.1.7"
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
domelementtype@~1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
domelementtype@1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
domhandler@2.1:
version "2.1.0"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594"
dependencies:
domelementtype "1"
domutils@1.1:
version "1.1.6"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485"
dependencies:
domelementtype "1"
domutils@1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
dependencies:
dom-serializer "0"
domelementtype "1"
dot-case@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.0.tgz#4b43dd0d7403c34cb645424add397e80bfe85ca6"
dependencies:
no-case "^2.2.0"
ecc-jsbn@~0.1.1: ecc-jsbn@~0.1.1:
version "0.1.1" version "0.1.1"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
...@@ -903,6 +1016,10 @@ enhanced-resolve@^2.2.0: ...@@ -903,6 +1016,10 @@ enhanced-resolve@^2.2.0:
object-assign "^4.0.1" object-assign "^4.0.1"
tapable "^0.2.3" tapable "^0.2.3"
entities@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
errno@^0.1.3: errno@^0.1.3:
version "0.1.4" version "0.1.4"
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
...@@ -1285,10 +1402,17 @@ hawk@~3.1.3: ...@@ -1285,10 +1402,17 @@ hawk@~3.1.3:
hoek "2.x.x" hoek "2.x.x"
sntp "1.x.x" sntp "1.x.x"
he@^1.1.0: he@^1.1.0, he@1.1.x:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.1.0.tgz#29319d49beec13a9b1f3c4f9b2a6dde4859bb2a7" resolved "https://registry.yarnpkg.com/he/-/he-1.1.0.tgz#29319d49beec13a9b1f3c4f9b2a6dde4859bb2a7"
header-case@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.0.tgz#d9e335909505d56051ec16a0106821889e910781"
dependencies:
no-case "^2.2.0"
upper-case "^1.1.3"
hoek@2.x.x: hoek@2.x.x:
version "2.16.3" version "2.16.3"
resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
...@@ -1305,6 +1429,38 @@ html-entities@^1.2.0: ...@@ -1305,6 +1429,38 @@ html-entities@^1.2.0:
version "1.2.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.0.tgz#41948caf85ce82fed36e4e6a0ed371a6664379e2"
html-minifier@^3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.1.1.tgz#73bd0600fc9d68f536b13a788360245b6d76eb9c"
dependencies:
change-case "3.0.x"
clean-css "3.4.x"
commander "2.9.x"
he "1.1.x"
ncname "1.0.x"
relateurl "0.2.x"
uglify-js "2.7.x"
html-webpack-plugin:
version "2.24.1"
resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.24.1.tgz#7f45fc678f66eac2d433f22336b4399da023b57e"
dependencies:
bluebird "^3.4.6"
html-minifier "^3.1.0"
loader-utils "^0.2.16"
lodash "^4.16.4"
pretty-error "^2.0.2"
toposort "^1.0.0"
htmlparser2@~3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe"
dependencies:
domelementtype "1"
domhandler "2.1"
domutils "1.1"
readable-stream "1.0"
http-browserify@^1.3.2: http-browserify@^1.3.2:
version "1.7.0" version "1.7.0"
resolved "https://registry.yarnpkg.com/http-browserify/-/http-browserify-1.7.0.tgz#33795ade72df88acfbfd36773cefeda764735b20" resolved "https://registry.yarnpkg.com/http-browserify/-/http-browserify-1.7.0.tgz#33795ade72df88acfbfd36773cefeda764735b20"
...@@ -1445,6 +1601,12 @@ is-glob@^2.0.0, is-glob@^2.0.1: ...@@ -1445,6 +1601,12 @@ is-glob@^2.0.0, is-glob@^2.0.1:
dependencies: dependencies:
is-extglob "^1.0.0" is-extglob "^1.0.0"
is-lower-case@^1.1.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393"
dependencies:
lower-case "^1.1.0"
is-my-json-valid@^2.12.4: is-my-json-valid@^2.12.4:
version "2.15.0" version "2.15.0"
resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
...@@ -1502,6 +1664,12 @@ is-typedarray@~1.0.0: ...@@ -1502,6 +1664,12 @@ is-typedarray@~1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
is-upper-case@^1.1.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f"
dependencies:
upper-case "^1.1.0"
is-utf8@^0.2.0: is-utf8@^0.2.0:
version "0.2.1" version "0.2.1"
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
...@@ -1781,6 +1949,10 @@ lodash@^4.14.0, lodash@^4.3.0: ...@@ -1781,6 +1949,10 @@ lodash@^4.14.0, lodash@^4.3.0:
version "4.16.6" version "4.16.6"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.6.tgz#d22c9ac660288f3843e16ba7d2b5d06cca27d777"
lodash@^4.16.4:
version "4.17.0"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.0.tgz#93f4466e5ab73e5a1f1216c34eea11535f0a8df5"
longest@^1.0.1: longest@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
...@@ -1792,6 +1964,16 @@ loud-rejection@^1.0.0: ...@@ -1792,6 +1964,16 @@ loud-rejection@^1.0.0:
currently-unhandled "^0.4.1" currently-unhandled "^0.4.1"
signal-exit "^3.0.0" signal-exit "^3.0.0"
lower-case-first@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1"
dependencies:
lower-case "^1.1.2"
lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2:
version "1.1.3"
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.3.tgz#c92393d976793eee5ba4edb583cf8eae35bd9bfb"
lru-cache@^3.2.0: lru-cache@^3.2.0:
version "3.2.0" version "3.2.0"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee"
...@@ -1942,10 +2124,22 @@ nan@^2.3.0: ...@@ -1942,10 +2124,22 @@ nan@^2.3.0:
version "2.4.0" version "2.4.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232" resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232"
ncname@1.0.x:
version "1.0.0"
resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c"
dependencies:
xml-char-classes "^1.0.0"
negotiator@0.6.1: negotiator@0.6.1:
version "0.6.1" version "0.6.1"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
no-case@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.0.tgz#ca2825ccb76b18e6f79d573dcfbf1eace33dd164"
dependencies:
lower-case "^1.1.1"
node-libs-browser@^1.0.0: node-libs-browser@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-1.0.0.tgz#ff8ad6c2cfa78043bdd0091ec07f0aaa581620fc" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-1.0.0.tgz#ff8ad6c2cfa78043bdd0091ec07f0aaa581620fc"
...@@ -2033,6 +2227,12 @@ npmlog@^4.0.0: ...@@ -2033,6 +2227,12 @@ npmlog@^4.0.0:
gauge "~2.6.0" gauge "~2.6.0"
set-blocking "~2.0.0" set-blocking "~2.0.0"
nth-check@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4"
dependencies:
boolbase "~1.0.0"
num2fraction@^1.2.2: num2fraction@^1.2.2:
version "1.2.2" version "1.2.2"
resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
...@@ -2096,6 +2296,12 @@ pako@~0.2.0: ...@@ -2096,6 +2296,12 @@ pako@~0.2.0:
version "0.2.9" version "0.2.9"
resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
param-case@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a"
dependencies:
no-case "^2.2.0"
parse-asn1@^5.0.0: parse-asn1@^5.0.0:
version "5.0.0" version "5.0.0"
resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23"
...@@ -2125,10 +2331,23 @@ parseurl@~1.3.0, parseurl@~1.3.1: ...@@ -2125,10 +2331,23 @@ parseurl@~1.3.0, parseurl@~1.3.1:
version "1.3.1" version "1.3.1"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56"
pascal-case@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.0.tgz#39c248bde5a8dc02d5160696bdb01e044d016ee1"
dependencies:
camel-case "^3.0.0"
upper-case-first "^1.1.0"
path-browserify@0.0.0: path-browserify@0.0.0:
version "0.0.0" version "0.0.0"
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
path-case@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.0.tgz#5ac491de642936e5dfe0e18d16c461b8be8cf073"
dependencies:
no-case "^2.2.0"
path-exists@^2.0.0: path-exists@^2.0.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
...@@ -2429,6 +2648,13 @@ pretty-bytes@^3.0.1: ...@@ -2429,6 +2648,13 @@ pretty-bytes@^3.0.1:
dependencies: dependencies:
number-is-nan "^1.0.0" number-is-nan "^1.0.0"
pretty-error@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23"
dependencies:
renderkid "~2.0.0"
utila "~0.4"
process-nextick-args@~1.0.6: process-nextick-args@~1.0.6:
version "1.0.7" version "1.0.7"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
...@@ -2564,6 +2790,15 @@ readable-stream@~2.1.4: ...@@ -2564,6 +2790,15 @@ readable-stream@~2.1.4:
string_decoder "~0.10.x" string_decoder "~0.10.x"
util-deprecate "~1.0.1" util-deprecate "~1.0.1"
readable-stream@1.0:
version "1.0.34"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.1"
isarray "0.0.1"
string_decoder "~0.10.x"
readdirp@^2.0.0: readdirp@^2.0.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
...@@ -2623,6 +2858,20 @@ regjsparser@^0.1.4: ...@@ -2623,6 +2858,20 @@ regjsparser@^0.1.4:
dependencies: dependencies:
jsesc "~0.5.0" jsesc "~0.5.0"
relateurl@0.2.x:
version "0.2.7"
resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
renderkid@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85"
dependencies:
css-select "^1.1.0"
dom-converter "~0.1"
htmlparser2 "~3.3.0"
strip-ansi "^3.0.0"
utila "~0.3"
repeat-element@^1.1.2: repeat-element@^1.1.2:
version "1.1.2" version "1.1.2"
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
...@@ -2724,6 +2973,13 @@ send@0.14.1: ...@@ -2724,6 +2973,13 @@ send@0.14.1:
range-parser "~1.2.0" range-parser "~1.2.0"
statuses "~1.3.0" statuses "~1.3.0"
sentence-case@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.0.tgz#d592fbed457fd1a59e3af0ee17e99f6fd70d7efd"
dependencies:
no-case "^2.2.0"
upper-case-first "^1.1.2"
serialize-javascript@^1.3.0: serialize-javascript@^1.3.0:
version "1.3.0" version "1.3.0"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.3.0.tgz#86a4f3752f5c7e47295449b0bbb63d64ba533f05" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.3.0.tgz#86a4f3752f5c7e47295449b0bbb63d64ba533f05"
...@@ -2776,6 +3032,12 @@ signal-exit@^3.0.0: ...@@ -2776,6 +3032,12 @@ signal-exit@^3.0.0:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.1.tgz#5a4c884992b63a7acd9badb7894c3ee9cfccad81" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.1.tgz#5a4c884992b63a7acd9badb7894c3ee9cfccad81"
snake-case@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f"
dependencies:
no-case "^2.2.0"
sntp@1.x.x: sntp@1.x.x:
version "1.0.9" version "1.0.9"
resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
...@@ -2802,6 +3064,12 @@ source-map@0.1.x: ...@@ -2802,6 +3064,12 @@ source-map@0.1.x:
dependencies: dependencies:
amdefine ">=0.0.4" amdefine ">=0.0.4"
source-map@0.4.x:
version "0.4.4"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
dependencies:
amdefine ">=0.0.4"
spdx-correct@~1.0.0: spdx-correct@~1.0.0:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
...@@ -2956,6 +3224,13 @@ sw-toolbox@^3.4.0: ...@@ -2956,6 +3224,13 @@ sw-toolbox@^3.4.0:
path-to-regexp "^1.0.1" path-to-regexp "^1.0.1"
serviceworker-cache-polyfill "^4.0.0" serviceworker-cache-polyfill "^4.0.0"
swap-case@^1.1.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3"
dependencies:
lower-case "^1.1.1"
upper-case "^1.1.1"
tapable@^0.2.3, tapable@~0.2.3: tapable@^0.2.3, tapable@~0.2.3:
version "0.2.4" version "0.2.4"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.4.tgz#a7814605089d4ba896c33c7e3566e13dcd194aa5" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.4.tgz#a7814605089d4ba896c33c7e3566e13dcd194aa5"
...@@ -2987,6 +3262,17 @@ timers-browserify@^1.0.1: ...@@ -2987,6 +3262,17 @@ timers-browserify@^1.0.1:
dependencies: dependencies:
process "~0.11.0" process "~0.11.0"
title-case@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.0.tgz#c68ccb4232079ded64f94b91b4941ade91391979"
dependencies:
no-case "^2.2.0"
upper-case "^1.0.3"
toposort@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.0.tgz#b66cf385a1a8a8e68e45b8259e7f55875e8b06ef"
tough-cookie@~2.3.0: tough-cookie@~2.3.0:
version "2.3.2" version "2.3.2"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
...@@ -3016,7 +3302,7 @@ type-is@~1.6.13: ...@@ -3016,7 +3302,7 @@ type-is@~1.6.13:
media-typer "0.3.0" media-typer "0.3.0"
mime-types "~2.1.11" mime-types "~2.1.11"
uglify-js@~2.7.3: uglify-js@~2.7.3, uglify-js@2.7.x:
version "2.7.4" version "2.7.4"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.4.tgz#a295a0de12b6a650c031c40deb0dc40b14568bd2" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.4.tgz#a295a0de12b6a650c031c40deb0dc40b14568bd2"
dependencies: dependencies:
...@@ -3051,6 +3337,16 @@ unpipe@~1.0.0: ...@@ -3051,6 +3337,16 @@ unpipe@~1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
upper-case-first@^1.1.0, upper-case-first@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115"
dependencies:
upper-case "^1.1.1"
upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
urijs@^1.16.1: urijs@^1.16.1:
version "1.18.2" version "1.18.2"
resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.18.2.tgz#c2791fa9fb52f4603caf36032d9666432a1dda33" resolved "https://registry.yarnpkg.com/urijs/-/urijs-1.18.2.tgz#c2791fa9fb52f4603caf36032d9666432a1dda33"
...@@ -3079,6 +3375,14 @@ util@~0.10.3, util@0.10.3: ...@@ -3079,6 +3375,14 @@ util@~0.10.3, util@0.10.3:
dependencies: dependencies:
inherits "2.0.1" inherits "2.0.1"
utila@~0.3:
version "0.3.3"
resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226"
utila@~0.4:
version "0.4.0"
resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
utils-merge@1.0.0: utils-merge@1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8"
...@@ -3289,6 +3593,10 @@ wrappy@1: ...@@ -3289,6 +3593,10 @@ wrappy@1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
xml-char-classes@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d"
xmlhttprequest@1.8.0: xmlhttprequest@1.8.0:
version "1.8.0" version "1.8.0"
resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment