diff --git a/examples/with-sockets/pages/index.vue b/examples/with-sockets/pages/index.vue
index 7184116d06..7e96f5e16b 100644
--- a/examples/with-sockets/pages/index.vue
+++ b/examples/with-sockets/pages/index.vue
@@ -4,7 +4,9 @@
- - {{ message.date.split('T')[1].slice(0, -2) }}: {{ message.text }}
+ -
+ {{ message.date.split('T')[1].slice(0, -2) }}: {{ message.text }}
+
diff --git a/examples/with-vue-material/README.md b/examples/with-vue-material/README.md
new file mode 100644
index 0000000000..2cd080e524
--- /dev/null
+++ b/examples/with-vue-material/README.md
@@ -0,0 +1,7 @@
+# Nuxt With Vue-Material
+
+## Compatibility
+
+Vue-Material >= 1.0.0beta
+
+[View Demo](https://nuxt-vue-material.now.sh)
diff --git a/examples/with-vue-material/nuxt.config.js b/examples/with-vue-material/nuxt.config.js
new file mode 100644
index 0000000000..38d84fe8c0
--- /dev/null
+++ b/examples/with-vue-material/nuxt.config.js
@@ -0,0 +1,25 @@
+module.exports = {
+ head: {
+ meta: [
+ {
+ name: 'viewport',
+ content: 'width=device-width, initial-scale=1, minimal-ui'
+ }
+ ],
+ link: [
+ {
+ rel: 'stylesheet',
+ href: 'https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic|Material+Icons'
+ },
+ {
+ rel: 'stylesheet',
+ href: 'https://unpkg.com/vue-material@beta/dist/vue-material.min.css'
+ },
+ {
+ rel: 'stylesheet',
+ href: 'https://unpkg.com/vue-material@beta/dist/theme/default.css'
+ }
+ ]
+ },
+ plugins: ['~/plugins/vue-material']
+}
diff --git a/examples/with-vue-material/package.json b/examples/with-vue-material/package.json
new file mode 100644
index 0000000000..0363fc255b
--- /dev/null
+++ b/examples/with-vue-material/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "with-vue-material",
+ "version": "1.0.0",
+ "dependencies": {
+ "nuxt": "latest",
+ "vue": "~2.4.4",
+ "vue-material": "beta"
+ },
+ "scripts": {
+ "dev": "nuxt",
+ "build": "nuxt build",
+ "start": "nuxt start"
+ }
+}
diff --git a/examples/with-vue-material/pages/index.vue b/examples/with-vue-material/pages/index.vue
new file mode 100644
index 0000000000..f24b6c078d
--- /dev/null
+++ b/examples/with-vue-material/pages/index.vue
@@ -0,0 +1,106 @@
+
+
+
+
+ menu
+
+ Nuxt + Vue Material
+
+
+ Favorites
+
+
+
+
+
+ My App name
+
+
+
+
+ move_to_inbox
+ Inbox
+
+
+
+ send
+ Sent Mail
+
+
+
+ delete
+ Trash
+
+
+
+ error
+ Spam
+
+
+
+
+
+
+ Favorites
+
+
+
+
+ Abbey Christansen
+
+
+ chat_bubble
+
+
+
+
+ Alex Nelson
+
+
+ chat_bubble
+
+
+
+
+ Mary Johnson
+
+
+ chat_bubble
+
+
+
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Error quibusdam, non molestias et! Earum magnam, similique, quo recusandae placeat dicta asperiores modi sint ea repudiandae maxime? Quae non explicabo, neque.
+
+
+
+
+
+
+
diff --git a/examples/with-vue-material/plugins/vue-material.js b/examples/with-vue-material/plugins/vue-material.js
new file mode 100644
index 0000000000..3f64c62cc1
--- /dev/null
+++ b/examples/with-vue-material/plugins/vue-material.js
@@ -0,0 +1,4 @@
+import Vue from 'vue'
+import VueMaterial from 'vue-material'
+
+Vue.use(VueMaterial)
diff --git a/examples/with-vuetify/assets/app.styl b/examples/with-vuetify/assets/app.styl
index 66d746eb17..784fd9c898 100644
--- a/examples/with-vuetify/assets/app.styl
+++ b/examples/with-vuetify/assets/app.styl
@@ -1,14 +1,27 @@
// Specify overrides (theme and/or base variables etc.)
// See https://vuetifyjs.com/quick-start
+// And for themes customizing: https://vuetifyjs.com/style/theme
+
+// Color Palette: https://vuetifyjs.com/style/colors
+
+// Although, since version https://github.com/vuetifyjs/vuetify/releases/tag/v0.17.0, colors are no
+// longer defined **explicitly** in the stylus files.
+// you can use `import colors from 'vuetify/es5/util/colors'` in the vuetify instance, under `plugins`
+// if you only want to define your color palette.
+
+// you have to define the same palette colors just if you want to use them inside your own stylus files.
+
+@require '~vuetify/src/stylus/settings/_colors'
+
$theme := {
- primary: #9c27b0
- accent: #ce93d8
- secondary: #424242
- info: #0D47A1
- warning: #ffb300
- error: #B71C1C
- success: #2E7D32
+ primary: $red.darken-2
+ accent: $red.accent-2
+ secondary: $grey.lighten-1
+ info: $blue.lighten-1
+ warning: $amber.darken-2
+ error: $red.accent-4
+ success: $green.lighten-2
}
// Import Vuetify styling
-@require '~vuetify/src/stylus/main.styl'
\ No newline at end of file
+@require '~vuetify/src/stylus/main'
diff --git a/examples/with-vuetify/nuxt.config.js b/examples/with-vuetify/nuxt.config.js
index df74955493..a3b50d43bf 100644
--- a/examples/with-vuetify/nuxt.config.js
+++ b/examples/with-vuetify/nuxt.config.js
@@ -1,3 +1,5 @@
+const nodeExternals = require('webpack-node-externals')
+
module.exports = {
/*
** Head elements
@@ -13,7 +15,16 @@ module.exports = {
*/
build: {
vendor: ['vuetify'],
- extractCSS: true
+ extractCSS: true,
+ extend(config, ctx) {
+ if (ctx.isServer) {
+ config.externals = [
+ nodeExternals({
+ whitelist: [/^vuetify/]
+ })
+ ]
+ }
+ }
},
/*
** Load Vuetify into the app
diff --git a/examples/with-vuetify/plugins/vuetify.js b/examples/with-vuetify/plugins/vuetify.js
index a91ae689bb..0a5a2acc45 100644
--- a/examples/with-vuetify/plugins/vuetify.js
+++ b/examples/with-vuetify/plugins/vuetify.js
@@ -1,4 +1,19 @@
import Vue from 'vue'
import Vuetify from 'vuetify'
+import colors from 'vuetify/es5/util/colors'
-Vue.use(Vuetify)
+// You can also specify those components you are going to use for "a la carte" build:
+// https://github.com/vuetifyjs/nuxt/blob/master/template/plugins/vuetify.js
+// https://github.com/vuetifyjs/a-la-carte/blob/master/template/src/main.js
+
+Vue.use(Vuetify, {
+ theme: {
+ primary: '#121212', // a color that is not in the material colors palette
+ accent: colors.grey.darken3,
+ secondary: colors.amber.darken3,
+ info: colors.teal.lighten1,
+ warning: colors.amber,
+ error: colors.deepOrange.accent4,
+ success: colors.green.accent3
+ }
+})
diff --git a/index.js b/index.js
deleted file mode 100644
index 24e035805e..0000000000
--- a/index.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/*!
- * Nuxt.js
- * (c) 2016-2017 Chopin Brothers
- * Core maintainer: Pooya (@pi0)
- * Released under the MIT License.
- */
-
-// Node Source Map Support
-// https://github.com/evanw/node-source-map-support
-require('source-map-support').install()
-
-// Fix babel flag
-/* istanbul ignore else */
-process.noDeprecation = true
-
-module.exports = require('./dist/nuxt')
diff --git a/lib/app/components/nuxt.js b/lib/app/components/nuxt.js
index 243eec2023..380bf5f110 100644
--- a/lib/app/components/nuxt.js
+++ b/lib/app/components/nuxt.js
@@ -1,12 +1,15 @@
import Vue from 'vue'
import NuxtChild from './nuxt-child'
-import NuxtError from '<%= components.ErrorPage ? ((components.ErrorPage.includes('~') || components.ErrorPage.includes('@')) ? components.ErrorPage : "../" + components.ErrorPage) : "./nuxt-error.vue" %>'
+import NuxtError from '<%= components.ErrorPage ? ((components.ErrorPage.indexOf('~') === 0 || components.ErrorPage.indexOf('@') === 0) ? components.ErrorPage : "../" + components.ErrorPage) : "./nuxt-error.vue" %>'
import { compile } from '../utils'
export default {
name: 'nuxt',
props: ['nuxtChildKey'],
render(h) {
+ if (this.nuxt._redirected) {
+ return h('div', [ '<%= messages.redirect %>' ])
+ }
// If there is some error
if (this.nuxt.err) {
return h('nuxt-error', {
diff --git a/lib/app/index.js b/lib/app/index.js
index 986ad113ec..bfcecfd48c 100644
--- a/lib/app/index.js
+++ b/lib/app/index.js
@@ -8,13 +8,12 @@ import NuxtLink from './components/nuxt-link.js'
import NuxtError from '<%= components.ErrorPage ? components.ErrorPage : "./components/nuxt-error.vue" %>'
import Nuxt from './components/nuxt.js'
import App from '<%= appPath %>'
-import { setContext, getLocation } from './utils'
+import { setContext, getLocation, getRouteData } from './utils'
<% if (store) { %>import { createStore } from './store.js'<% } %>
/* Plugins */
-
-<% plugins.forEach(plugin => { %>// <%= plugin.src %><%= (plugin.ssr===false) ? ' (Only included in client bundle)' : '' %>
-import <%= plugin.name %> from '<%= plugin.name %>'<% }) %>
+<% plugins.forEach(plugin => { %>import <%= plugin.name %> from '<%= plugin.name %>' // Source: <%= relativeToBuild(plugin.src) %><%= (plugin.ssr===false) ? ' (ssr: false)' : '' %>
+<% }) %>
// Component:
Vue.component(NoSSR.name, NoSSR)
@@ -167,7 +166,17 @@ async function createApp (ssrContext) {
// If server-side, wait for async component to be resolved first
if (process.server && ssrContext && ssrContext.url) {
await new Promise((resolve, reject) => {
- router.push(ssrContext.url, resolve, reject)
+ router.push(ssrContext.url, resolve, () => {
+ // navigated to a different route in router guard
+ const unregister = router.afterEach(async (to, from, next) => {
+ ssrContext.url = to.fullPath
+ app.context.route = await getRouteData(to)
+ app.context.params = to.params || {}
+ app.context.query = to.query || {}
+ unregister()
+ resolve()
+ })
+ })
})
}
diff --git a/lib/app/utils.js b/lib/app/utils.js
index f2a707f0f3..cb2642ced0 100644
--- a/lib/app/utils.js
+++ b/lib/app/utils.js
@@ -85,7 +85,7 @@ export function resolveRouteComponents(route) {
)
}
-async function getRouteData(route) {
+export async function getRouteData(route) {
// Make sure the components are resolved (code-splitting)
await resolveRouteComponents(route)
// Send back a copy of route with meta based on Component definition
@@ -132,11 +132,24 @@ export async function setContext(app, context) {
path = status
status = 302
}
- app.context.next({
- path: path,
- query: query,
- status: status
- })
+ // "/absolute/route", "./relative/route" or "../relative/route"
+ if (/(^[.]{1,2}\/)|(^\/(?!\/))/.test(path)) {
+ app.context.next({
+ path: path,
+ query: query,
+ status: status
+ })
+ } else {
+ path = formatUrl(path, query)
+ if (process.server) {
+ app.context.res.setHeader('Location', path)
+ app.context.res.statusCode = status
+ app.nuxt._redirected = true
+ }
+ if (process.client) {
+ window.location = path
+ }
+ }
}
if (process.server) app.context.beforeNuxtRender = (fn) => context.beforeRenderFns.push(fn)
if (process.client) app.context.nuxtState = window.__NUXT__
@@ -442,3 +455,60 @@ function escapeString(str) {
function escapeGroup(group) {
return group.replace(/([=!:$\/()])/g, '\\$1')
}
+
+/**
+ * Format given url, append query to url query string
+ *
+ * @param {string} url
+ * @param {string} query
+ * @return {string}
+ */
+function formatUrl (url, query) {
+ let protocol
+ let index = url.indexOf('://')
+ if (index !== -1) {
+ protocol = url.substring(0, index)
+ url = url.substring(index + 3)
+ } else if (url.indexOf('//') === 0) {
+ url = url.substring(2)
+ }
+
+ let parts = url.split('/')
+ let result = (protocol ? protocol + '://' : '//') + parts.shift()
+
+ let path = parts.filter(Boolean).join('/')
+ let hash
+ parts = path.split('#')
+ if (parts.length === 2) {
+ path = parts[0]
+ hash = parts[1]
+ }
+
+ result += path ? '/' + path : ''
+
+ if (query && JSON.stringify(query) !== '{}') {
+ result += (url.split('?').length === 2 ? '&' : '?') + formatQuery(query)
+ }
+ result += hash ? '#' + hash : ''
+
+ return result
+}
+
+/**
+ * Transform data object to query string
+ *
+ * @param {object} query
+ * @return {string}
+ */
+function formatQuery (query) {
+ return Object.keys(query).sort().map(key => {
+ var val = query[key]
+ if (val == null) {
+ return ''
+ }
+ if (Array.isArray(val)) {
+ return val.slice().map(val2 => [key, '=', val2].join('')).join('&')
+ }
+ return key + '=' + val
+ }).filter(Boolean).join('&')
+}
diff --git a/lib/builder/builder.js b/lib/builder/builder.js
index 1325cc2ca8..704fbb7389 100644
--- a/lib/builder/builder.js
+++ b/lib/builder/builder.js
@@ -1,29 +1,30 @@
-import _ from 'lodash'
-import chokidar from 'chokidar'
-import fs, { remove, readFile, writeFile, mkdirp, existsSync } from 'fs-extra'
-import hash from 'hash-sum'
-import pify from 'pify'
-import webpack from 'webpack'
-import serialize from 'serialize-javascript'
-import { join, resolve, basename, extname, dirname } from 'path'
-import MFS from 'memory-fs'
-import webpackDevMiddleware from 'webpack-dev-middleware'
-import webpackHotMiddleware from 'webpack-hot-middleware'
-import { r, wp, wChunk, createRoutes, sequence, relativeTo, isPureObject, waitFor } from 'utils'
-import Debug from 'debug'
-import Glob from 'glob'
-import clientWebpackConfig from './webpack/client.config.js'
-import serverWebpackConfig from './webpack/server.config.js'
-import dllWebpackConfig from './webpack/dll.config.js'
-import vueLoaderConfig from './webpack/vue-loader.config'
-import styleLoader from './webpack/style-loader'
+const { promisify } = require('util')
+const _ = require('lodash')
+const chokidar = require('chokidar')
+const { remove, readFile, writeFile, mkdirp, existsSync } = require('fs-extra')
+const hash = require('hash-sum')
+const webpack = require('webpack')
+const serialize = require('serialize-javascript')
+const { join, resolve, basename, extname, dirname } = require('path')
+const MFS = require('memory-fs')
+const webpackDevMiddleware = require('webpack-dev-middleware')
+const webpackHotMiddleware = require('webpack-hot-middleware')
+const { r, wp, wChunk, createRoutes, sequence, relativeTo, isPureObject, waitFor, rmCache } = require('../common/utils')
+const Debug = require('debug')
+const Glob = require('glob')
+const clientWebpackConfig = require('./webpack/client.config.js')
+const serverWebpackConfig = require('./webpack/server.config.js')
+const dllWebpackConfig = require('./webpack/dll.config.js')
+const vueLoaderConfig = require('./webpack/vue-loader.config')
+const styleLoader = require('./webpack/style-loader')
+const { Options } = require('../common')
const debug = Debug('nuxt:build')
debug.color = 2 // Force green color
-const glob = pify(Glob)
+const glob = promisify(Glob)
-export default class Builder {
+module.exports = class Builder {
constructor(nuxt) {
this.nuxt = nuxt
this.isStatic = false // Flag to know if the build is for a generated app
@@ -62,18 +63,21 @@ export default class Builder {
// Stop watching on nuxt.close()
if (this.options.dev) {
this.nuxt.hook('close', () => this.unwatch())
+ } else {
+ this.nuxt.hook('build:done', () => this.generateConfig())
}
}
get plugins() {
- return this.options.plugins.map((p, i) => {
+ return _.uniqBy(this.options.plugins.map((p, i) => {
if (typeof p === 'string') p = { src: p }
+ const pluginBaseName = basename(p.src, extname(p.src)).replace(/[^a-zA-Z?\d\s:]/g, '')
return {
src: this.nuxt.resolvePath(p.src),
ssr: (p.ssr !== false),
- name: basename(p.src, extname(p.src)).replace(/[^a-zA-Z?\d\s:]/g, '') + '_plugin_' + hash(p.src)
+ name: 'nuxt_plugin_' + pluginBaseName + '_' + hash(p.src)
}
- })
+ }), p => p.name)
}
vendor() {
@@ -124,19 +128,6 @@ export default class Builder {
// Call before hook
await this.nuxt.callHook('build:before', this, this.options.build)
- // Babel options
- this.babelOptions = _.defaults(this.options.build.babel, {
- babelrc: false,
- cacheDirectory: !!this.options.dev
- })
- if (!this.babelOptions.babelrc && !this.babelOptions.presets) {
- this.babelOptions.presets = [
- [require.resolve('babel-preset-vue-app'), {
- targets: { ie: 9, uglify: true }
- }]
- ]
- }
-
// Map postcss plugins into instances on object mode once
if (isPureObject(this.options.build.postcss)) {
if (isPureObject(this.options.build.postcss.plugins)) {
@@ -154,9 +145,9 @@ export default class Builder {
// Check if pages dir exists and warn if not
this._nuxtPages = typeof this.options.build.createRoutes !== 'function'
if (this._nuxtPages) {
- if (!fs.existsSync(join(this.options.srcDir, 'pages'))) {
+ if (!existsSync(join(this.options.srcDir, 'pages'))) {
let dir = this.options.srcDir
- if (fs.existsSync(join(this.options.srcDir, '..', 'pages'))) {
+ if (existsSync(join(this.options.srcDir, '..', 'pages'))) {
throw new Error(`No \`pages\` directory found in ${dir}. Did you mean to run \`nuxt\` in the parent (\`../\`) directory?`)
} else {
throw new Error(`Couldn't find a \`pages\` directory in ${dir}. Please create one under the project root`)
@@ -189,6 +180,42 @@ export default class Builder {
return this
}
+ getBabelOptions({ isServer }) {
+ const options = _.defaults({}, {
+ babelrc: false,
+ cacheDirectory: !!this.options.dev
+ }, this.options.build.babel)
+
+ if (typeof options.presets === 'function') {
+ options.presets = options.presets({ isServer })
+ }
+
+ if (!options.babelrc && !options.presets) {
+ options.presets = [
+ [
+ require.resolve('babel-preset-vue-app'),
+ {
+ targets: isServer ? { node: '8.0.0' } : { ie: 9, uglify: true }
+ }
+ ]
+ ]
+ }
+
+ return options
+ }
+
+ getFileName(name) {
+ let fileName = this.options.build.filenames[name]
+
+ // Don't use hashes when watching
+ // https://github.com/webpack/webpack/issues/1914#issuecomment-174171709
+ if (this.options.dev) {
+ fileName = fileName.replace(/\[(chunkhash|contenthash|hash)\]\./g, '')
+ }
+
+ return fileName
+ }
+
async generateRoutesAndFiles() {
debug('Generating files...')
// -- Templates --
@@ -220,7 +247,7 @@ export default class Builder {
router: this.options.router,
env: this.options.env,
head: this.options.head,
- middleware: fs.existsSync(join(this.options.srcDir, 'middleware')),
+ middleware: existsSync(join(this.options.srcDir, 'middleware')),
store: this.options.store,
css: this.options.css,
plugins: this.plugins,
@@ -235,16 +262,18 @@ export default class Builder {
}
// -- Layouts --
- if (fs.existsSync(resolve(this.options.srcDir, 'layouts'))) {
- const layoutsFiles = await glob('layouts/**/*.vue', { cwd: this.options.srcDir })
+ if (existsSync(resolve(this.options.srcDir, 'layouts'))) {
+ const layoutsFiles = await glob('layouts/**/*.{vue,js}', { cwd: this.options.srcDir })
let hasErrorLayout = false
layoutsFiles.forEach((file) => {
- let name = file.split('/').slice(1).join('/').replace(/\.vue$/, '')
+ let name = file.split('/').slice(1).join('/').replace(/\.(vue|js)$/, '')
if (name === 'error') {
hasErrorLayout = true
return
}
- templateVars.layouts[name] = this.relativeToBuild(this.options.srcDir, file)
+ if (!templateVars.layouts[name] || /\.vue$/.test(file)) {
+ templateVars.layouts[name] = this.relativeToBuild(this.options.srcDir, file)
+ }
})
if (!templateVars.components.ErrorPage && hasErrorLayout) {
templateVars.components.ErrorPage = this.relativeToBuild(this.options.srcDir, 'layouts/error.vue')
@@ -262,8 +291,14 @@ export default class Builder {
// If user defined a custom method to create routes
if (this._nuxtPages) {
// Use nuxt.js createRoutes bases on pages/
- const files = await glob('pages/**/*.vue', { cwd: this.options.srcDir })
- templateVars.router.routes = createRoutes(files, this.options.srcDir)
+ const files = {};
+ (await glob('pages/**/*.{vue,js}', { cwd: this.options.srcDir })).forEach(f => {
+ const key = f.replace(/\.(js|vue)$/, '')
+ if (/\.vue$/.test(f) || !files[key]) {
+ files[key] = f
+ }
+ })
+ templateVars.router.routes = createRoutes(Object.values(files), this.options.srcDir)
} else {
templateVars.router.routes = this.options.build.createRoutes(this.options.srcDir)
}
@@ -299,7 +334,7 @@ export default class Builder {
}
// Allow override templates using a file with same name in ${srcDir}/app
const customPath = r(this.options.srcDir, 'app', file)
- const customFileExists = fs.existsSync(customPath)
+ const customFileExists = existsSync(customPath)
return {
src: customFileExists
@@ -436,7 +471,7 @@ export default class Builder {
compiler.plugin('done', async (stats) => {
await this.nuxt.callHook('build:compiled', { name, compiler, stats })
// Reload renderer if available
- this.nuxt.renderer.loadResources(sharedFS || fs)
+ this.nuxt.renderer.loadResources(sharedFS || require('fs'))
// Resolve on next tick
process.nextTick(resolve)
})
@@ -459,6 +494,12 @@ export default class Builder {
compiler.watch(this.options.watchers.webpack, (err) => {
/* istanbul ignore if */
if (err) return reject(err)
+ // not keep modified or deleted items in Vue.prototype
+ Object.keys(require.cache).forEach(key => {
+ if (!/(node_modules\/postcss)|(\.node$)/.test(key)) {
+ rmCache(key)
+ }
+ })
})
)
return
@@ -486,7 +527,7 @@ export default class Builder {
debug('Adding webpack middleware...')
// Create webpack dev middleware
- this.webpackDevMiddleware = pify(webpackDevMiddleware(compiler, Object.assign({
+ this.webpackDevMiddleware = promisify(webpackDevMiddleware(compiler, Object.assign({
publicPath: this.options.build.publicPath,
stats: this.webpackStats,
noInfo: true,
@@ -494,9 +535,9 @@ export default class Builder {
watchOptions: this.options.watchers.webpack
}, this.options.build.devMiddleware)))
- this.webpackDevMiddleware.close = pify(this.webpackDevMiddleware.close)
+ this.webpackDevMiddleware.close = promisify(this.webpackDevMiddleware.close)
- this.webpackHotMiddleware = pify(webpackHotMiddleware(compiler, Object.assign({
+ this.webpackHotMiddleware = promisify(webpackHotMiddleware(compiler, Object.assign({
log: false,
heartbeat: 10000
}, this.options.build.hotMiddleware)))
@@ -517,14 +558,14 @@ export default class Builder {
r(src, 'layouts'),
r(src, 'store'),
r(src, 'middleware'),
- r(src, 'layouts/*.vue'),
- r(src, 'layouts/**/*.vue')
+ r(src, 'layouts/*.{vue,js}'),
+ r(src, 'layouts/**/*.{vue,js}')
]
if (this._nuxtPages) {
patterns.push(
r(src, 'pages'),
- r(src, 'pages/*.vue'),
- r(src, 'pages/**/*.vue')
+ r(src, 'pages/*.{vue,js}'),
+ r(src, 'pages/**/*.{vue,js}')
)
}
const options = Object.assign({}, this.options.watchers.chokidar, {
@@ -557,6 +598,12 @@ export default class Builder {
// Stop webpack middleware
await this.webpackDevMiddleware.close()
}
+
+ async generateConfig() {
+ const config = resolve(this.options.buildDir, 'build.config.js')
+ const options = _.omit(this.options, Options.unsafeKeys)
+ await writeFile(config, `module.exports = ${JSON.stringify(options, null, ' ')}`, 'utf8')
+ }
}
const STATUS = {
diff --git a/lib/builder/generator.js b/lib/builder/generator.js
index 7a22714bda..63b6268e80 100644
--- a/lib/builder/generator.js
+++ b/lib/builder/generator.js
@@ -1,10 +1,10 @@
-import { copy, remove, writeFile, mkdirp, removeSync, existsSync } from 'fs-extra'
-import _ from 'lodash'
-import { resolve, join, dirname, sep } from 'path'
-import { minify } from 'html-minifier'
-import { isUrl, promisifyRoute, waitFor, flatRoutes } from 'utils'
+const { copy, remove, writeFile, mkdirp, removeSync, existsSync } = require('fs-extra')
+const _ = require('lodash')
+const { resolve, join, dirname, sep } = require('path')
+const { minify } = require('html-minifier')
+const { isUrl, promisifyRoute, waitFor, flatRoutes } = require('../common/utils')
-export default class Generator {
+module.exports = class Generator {
constructor(nuxt, builder) {
this.nuxt = nuxt
this.options = nuxt.options
@@ -38,11 +38,11 @@ export default class Generator {
// Call before hook
await this.nuxt.callHook('generate:before', this, this.options.generate)
- // Add flag to set process.static
- this.builder.forGenerate()
-
- // Start build process
if (build) {
+ // Add flag to set process.static
+ this.builder.forGenerate()
+
+ // Start build process
await this.builder.build()
}
@@ -52,18 +52,17 @@ export default class Generator {
}
}
- async initRoutes() {
+ async initRoutes(...args) {
// Resolve config.generate.routes promises before generating the routes
let generateRoutes = []
if (this.options.router.mode !== 'hash') {
try {
- generateRoutes = await promisifyRoute(this.options.generate.routes || [])
+ generateRoutes = await promisifyRoute(this.options.generate.routes || [], ...args)
} catch (e) {
console.error('Could not resolve routes') // eslint-disable-line no-console
throw e // eslint-disable-line no-unreachable
}
}
-
// Generate only index.html for router.mode = 'hash'
let routes = (this.options.router.mode === 'hash') ? ['/'] : flatRoutes(this.options.router.routes)
routes = this.decorateWithPayloads(routes, generateRoutes)
diff --git a/lib/builder/index.js b/lib/builder/index.js
index 7e52dab70a..fc3309238b 100755
--- a/lib/builder/index.js
+++ b/lib/builder/index.js
@@ -1,7 +1,7 @@
-import Builder from './builder'
-import Generator from './generator'
+const Builder = require('./builder')
+const Generator = require('./generator')
-export {
+module.exports = {
Builder,
Generator
}
diff --git a/lib/builder/webpack/base.config.js b/lib/builder/webpack/base.config.js
index 5188e92063..fcf07fea54 100644
--- a/lib/builder/webpack/base.config.js
+++ b/lib/builder/webpack/base.config.js
@@ -1,9 +1,10 @@
-import ExtractTextPlugin from 'extract-text-webpack-plugin'
-import { cloneDeep } from 'lodash'
-import { join, resolve } from 'path'
-import webpack from 'webpack'
-import { isUrl, urlJoin } from 'utils'
-import TimeFixPlugin from './timefix-plugin'
+const ExtractTextPlugin = require('extract-text-webpack-plugin')
+const { cloneDeep } = require('lodash')
+const { join, resolve } = require('path')
+const webpack = require('webpack')
+const { isUrl, urlJoin } = require('../../common/utils')
+const TimeFixPlugin = require('./plugins/timefix')
+const WarnFixPlugin = require('./plugins/warnfix')
/*
|--------------------------------------------------------------------------
@@ -13,19 +14,17 @@ import TimeFixPlugin from './timefix-plugin'
| webpack config files
|--------------------------------------------------------------------------
*/
-export default function webpackBaseConfig(name) {
- const nodeModulesDir = join(__dirname, '..', 'node_modules')
-
+module.exports = function webpackBaseConfig({ name, isServer }) {
const config = {
name,
- devtool: this.options.dev ? 'cheap-module-source-map' : 'nosources-source-map',
+ devtool: this.options.dev ? 'cheap-module-eval-source-map' : false,
entry: {
app: null
},
output: {
path: resolve(this.options.buildDir, 'dist'),
- filename: this.options.build.filenames.app,
- chunkFilename: this.options.build.filenames.chunk,
+ filename: this.getFileName('app'),
+ chunkFilename: this.getFileName('chunk'),
publicPath: (isUrl(this.options.build.publicPath)
? this.options.build.publicPath
: urlJoin(this.options.router.base, this.options.build.publicPath))
@@ -47,16 +46,10 @@ export default function webpackBaseConfig(name) {
'assets': join(this.options.srcDir, 'assets'),
'static': join(this.options.srcDir, 'static')
},
- modules: [
- ...this.options.modulesDir,
- nodeModulesDir
- ]
+ modules: this.options.modulesDir
},
resolveLoader: {
- modules: [
- ...this.options.modulesDir,
- nodeModulesDir
- ]
+ modules: this.options.modulesDir
},
module: {
noParse: /es6-promise\.js$/, // Avoid webpack shimming process
@@ -64,13 +57,13 @@ export default function webpackBaseConfig(name) {
{
test: /\.vue$/,
loader: 'vue-loader',
- options: this.vueLoader()
+ options: this.vueLoader({ isServer })
},
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
- options: Object.assign({}, this.babelOptions)
+ options: this.getBabelOptions({ isServer })
},
{ test: /\.css$/, use: this.styleLoader('css') },
{ test: /\.less$/, use: this.styleLoader('less', 'less-loader') },
@@ -106,32 +99,23 @@ export default function webpackBaseConfig(name) {
}
// Add timefix-plugin before others plugins
- config.plugins.unshift(new TimeFixPlugin())
+ if (this.options.dev) {
+ config.plugins.unshift(new TimeFixPlugin())
+ }
+
+ // Hide warnings about plugins without a default export (#1179)
+ config.plugins.push(new WarnFixPlugin())
// CSS extraction
const extractCSS = this.options.build.extractCSS
if (extractCSS) {
const extractOptions = Object.assign(
- { filename: this.options.build.filenames.css },
+ { filename: this.getFileName('css') },
typeof extractCSS === 'object' ? extractCSS : {}
)
config.plugins.push(new ExtractTextPlugin(extractOptions))
}
- // Workaround for hiding Warnings about plugins without a default export (#1179)
- config.plugins.push({
- apply(compiler) {
- compiler.plugin('done', stats => {
- stats.compilation.warnings = stats.compilation.warnings.filter(warn => {
- if (warn.name === 'ModuleDependencyWarning' && warn.message.includes(`export 'default'`) && warn.message.includes('plugin')) {
- return false
- }
- return true
- })
- })
- }
- })
-
// --------------------------------------
// Dev specific config
// --------------------------------------
diff --git a/lib/builder/webpack/client.config.js b/lib/builder/webpack/client.config.js
index f11c81a9c4..a4c3f92da6 100644
--- a/lib/builder/webpack/client.config.js
+++ b/lib/builder/webpack/client.config.js
@@ -1,15 +1,17 @@
-import { each } from 'lodash'
-import webpack from 'webpack'
-import VueSSRClientPlugin from 'vue-server-renderer/client-plugin'
-import HTMLPlugin from 'html-webpack-plugin'
-import FriendlyErrorsWebpackPlugin from 'friendly-errors-webpack-plugin'
-import UglifyJSPlugin from 'uglifyjs-webpack-plugin'
-import ProgressBarPlugin from 'progress-bar-webpack-plugin'
-import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'
-import { resolve } from 'path'
-import { existsSync } from 'fs'
-import Debug from 'debug'
-import base from './base.config.js'
+const { each } = require('lodash')
+const webpack = require('webpack')
+const VueSSRClientPlugin = require('vue-server-renderer/client-plugin')
+const HTMLPlugin = require('html-webpack-plugin')
+const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin')
+const UglifyJSPlugin = require('uglifyjs-webpack-plugin')
+const ProgressBarPlugin = require('progress-bar-webpack-plugin')
+const ProgressPlugin = require('webpack/lib/ProgressPlugin')
+const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer')
+const { resolve } = require('path')
+const { existsSync } = require('fs')
+const Debug = require('debug')
+const Chalk = require('chalk')
+const base = require('./base.config.js')
const debug = Debug('nuxt:build')
debug.color = 2 // Force green color
@@ -24,8 +26,8 @@ debug.color = 2 // Force green color
| In production, will generate public/dist/style.css
|--------------------------------------------------------------------------
*/
-export default function webpackClientConfig() {
- let config = base.call(this, 'client')
+module.exports = function webpackClientConfig() {
+ let config = base.call(this, { name: 'client', isServer: false })
// Entry points
config.entry.app = resolve(this.options.buildDir, 'client.js')
@@ -73,7 +75,7 @@ export default function webpackClientConfig() {
new webpack.optimize.CommonsChunkPlugin({
name: 'manifest',
minChunks: Infinity,
- filename: this.options.build.filenames.manifest
+ filename: this.getFileName('manifest')
})
)
@@ -90,18 +92,26 @@ export default function webpackClientConfig() {
}))
)
+ // Add friendly error plugin
+ config.plugins.push(new FriendlyErrorsWebpackPlugin())
+
// Build progress bar
- config.plugins.push(
- new ProgressBarPlugin()
- )
+ if (this.options.build.profile) {
+ config.plugins.push(new ProgressPlugin({
+ profile: true
+ }))
+ } else {
+ config.plugins.push(new ProgressBarPlugin({
+ complete: Chalk.green('â–ˆ'),
+ incomplete: Chalk.white('â–ˆ'),
+ format: ' :bar ' + Chalk.green.bold(':percent') + ' :msg'
+ }))
+ }
// --------------------------------------
// Dev specific config
// --------------------------------------
if (this.options.dev) {
- // Add friendly error plugin
- config.plugins.push(new FriendlyErrorsWebpackPlugin())
-
// https://webpack.js.org/plugins/named-modules-plugin
config.plugins.push(new webpack.NamedModulesPlugin())
@@ -139,7 +149,7 @@ export default function webpackClientConfig() {
if (this.options.build.uglify !== false) {
config.plugins.push(
new UglifyJSPlugin(Object.assign({
- cache: true,
+ // cache: true,
sourceMap: true,
parallel: true,
extractComments: {
@@ -184,36 +194,18 @@ export default function webpackClientConfig() {
// Adds Common Chunks Plugin
// --------------------------------------------------------------------------
function commonChunksPlugin(config) {
- const _this = this
- const totalPages = _this.routes ? _this.routes.length : 0
-
- // This well-known vendor may exist as a dependency of other requests.
- const maybeVendor = [
- '/core-js/',
- '/regenerator-runtime/',
- '/es6-promise/',
- '/babel-runtime/',
- '/lodash/'
- ]
-
// Create explicit vendor chunk
config.plugins.unshift(
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
- filename: this.options.build.filenames.vendor,
+ filename: this.getFileName('vendor'),
minChunks(module, count) {
- // Detect and externalize well-known vendor if detected
- if (module.context && maybeVendor.some(v => module.context.includes(v))) {
- return true
- }
// A module is extracted into the vendor chunk when...
return (
// If it's inside node_modules
/node_modules/.test(module.context) &&
// Do not externalize if the request is a CSS file
- !/\.(css|less|scss|sass|styl|stylus)$/.test(module.request) &&
- // Used in at-least 1/2 of the total pages
- (totalPages <= 2 ? count >= totalPages : count >= totalPages * 0.5)
+ !/\.(css|less|scss|sass|styl|stylus)$/.test(module.request)
)
}
})
diff --git a/lib/builder/webpack/dll.config.js b/lib/builder/webpack/dll.config.js
index 725015c7df..5ad19116b3 100644
--- a/lib/builder/webpack/dll.config.js
+++ b/lib/builder/webpack/dll.config.js
@@ -1,6 +1,6 @@
-import webpack from 'webpack'
-import { resolve } from 'path'
-import ClientConfig from './client.config'
+const webpack = require('webpack')
+const { resolve } = require('path')
+const ClientConfig = require('./client.config')
/*
|--------------------------------------------------------------------------
@@ -8,7 +8,7 @@ import ClientConfig from './client.config'
| https://github.com/webpack/webpack/tree/master/examples/dll
|--------------------------------------------------------------------------
*/
-export default function webpackDllConfig(_refConfig) {
+module.exports = function webpackDllConfig(_refConfig) {
const refConfig = _refConfig || new ClientConfig()
const name = refConfig.name + '-dll'
diff --git a/lib/builder/webpack/timefix-plugin.js b/lib/builder/webpack/plugins/timefix.js
similarity index 92%
rename from lib/builder/webpack/timefix-plugin.js
rename to lib/builder/webpack/plugins/timefix.js
index 9c16918735..ddf6445648 100644
--- a/lib/builder/webpack/timefix-plugin.js
+++ b/lib/builder/webpack/plugins/timefix.js
@@ -1,6 +1,6 @@
// Taken from https://github.com/egoist/poi/blob/3e93c88c520db2d20c25647415e6ae0d3de61145/packages/poi/lib/webpack/timefix-plugin.js#L1-L16
// Thanks to @egoist
-export default class TimeFixPlugin {
+module.exports = class TimeFixPlugin {
constructor(timefix = 11000) {
this.timefix = timefix
}
diff --git a/lib/builder/webpack/plugins/warnfix.js b/lib/builder/webpack/plugins/warnfix.js
new file mode 100644
index 0000000000..3f28913af6
--- /dev/null
+++ b/lib/builder/webpack/plugins/warnfix.js
@@ -0,0 +1,14 @@
+module.exports = class WarnFixPlugin {
+ apply(compiler) /* istanbul ignore next */ {
+ compiler.plugin('done', stats => {
+ stats.compilation.warnings = stats.compilation.warnings.filter(warn => {
+ if (warn.name === 'ModuleDependencyWarning' &&
+ warn.message.includes(`export 'default'`) &&
+ warn.message.includes('nuxt_plugin_')) {
+ return false
+ }
+ return true
+ })
+ })
+ }
+}
diff --git a/lib/builder/webpack/server.config.js b/lib/builder/webpack/server.config.js
index 451e70c304..e6a1ecf869 100644
--- a/lib/builder/webpack/server.config.js
+++ b/lib/builder/webpack/server.config.js
@@ -1,18 +1,18 @@
-import webpack from 'webpack'
-import VueSSRServerPlugin from 'vue-server-renderer/server-plugin'
-import nodeExternals from 'webpack-node-externals'
-import { each } from 'lodash'
-import { resolve } from 'path'
-import { existsSync } from 'fs'
-import base from './base.config.js'
+const webpack = require('webpack')
+const VueSSRServerPlugin = require('vue-server-renderer/server-plugin')
+const nodeExternals = require('webpack-node-externals')
+const { each } = require('lodash')
+const { resolve } = require('path')
+const { existsSync } = require('fs')
+const base = require('./base.config.js')
/*
|--------------------------------------------------------------------------
| Webpack Server Config
|--------------------------------------------------------------------------
*/
-export default function webpackServerConfig() {
- let config = base.call(this, 'server')
+module.exports = function webpackServerConfig() {
+ let config = base.call(this, { name: 'server', isServer: true })
// env object defined in nuxt.config.js
let env = {}
diff --git a/lib/builder/webpack/style-loader.js b/lib/builder/webpack/style-loader.js
index 90f29d57be..e528d423d7 100755
--- a/lib/builder/webpack/style-loader.js
+++ b/lib/builder/webpack/style-loader.js
@@ -1,7 +1,7 @@
-import ExtractTextPlugin from 'extract-text-webpack-plugin'
-import { join } from 'path'
+const ExtractTextPlugin = require('extract-text-webpack-plugin')
+const { join } = require('path')
-export default function styleLoader(ext, loaders = [], isVueLoader = false) {
+module.exports = function styleLoader(ext, loaders = [], isVueLoader = false) {
// Normalize loaders
loaders = (Array.isArray(loaders) ? loaders : [loaders]).map(loader => {
if (typeof loader === 'string') {
diff --git a/lib/builder/webpack/vue-loader.config.js b/lib/builder/webpack/vue-loader.config.js
index c5b608b6cf..af162b1869 100644
--- a/lib/builder/webpack/vue-loader.config.js
+++ b/lib/builder/webpack/vue-loader.config.js
@@ -1,4 +1,4 @@
-export default function vueLoader() {
+module.exports = function vueLoader({ isServer }) {
// https://vue-loader.vuejs.org/en
const config = {
postcss: this.options.build.postcss,
@@ -8,7 +8,7 @@ export default function vueLoader() {
loaders: {
'js': {
loader: 'babel-loader',
- options: Object.assign({}, this.babelOptions)
+ options: this.getBabelOptions({ isServer })
},
// Note: do not nest the `postcss` option under `loaders`
'css': this.styleLoader('css', [], true),
diff --git a/lib/common/cli/errors.js b/lib/common/cli/errors.js
index 6a95d886d5..8ec2230db6 100644
--- a/lib/common/cli/errors.js
+++ b/lib/common/cli/errors.js
@@ -8,10 +8,9 @@ pe.skipPackage('regenerator-runtime')
pe.skipPackage('babel-runtime')
pe.skipPackage('core-js')
-// Skip dist artifacts and Node internals
-const skipFiles = [ 'nuxt.js', 'core.js' ]
+// Skip node internals
pe.skip((traceLine, lineNumber) => {
- if (!traceLine.file || skipFiles.indexOf(traceLine.file) !== -1) {
+ if (!traceLine.file) {
return true
}
})
diff --git a/lib/common/index.js b/lib/common/index.js
index 26a5ba474a..3a241c30d1 100755
--- a/lib/common/index.js
+++ b/lib/common/index.js
@@ -1,12 +1,7 @@
-import * as Utils from './utils'
-import Options from './options'
+const Utils = require('./utils')
+const Options = require('./options')
-export default {
- Utils,
- Options
-}
-
-export {
+module.exports = {
Utils,
Options
}
diff --git a/lib/common/options.js b/lib/common/options.js
index 043024384f..82f1bb4f97 100755
--- a/lib/common/options.js
+++ b/lib/common/options.js
@@ -1,15 +1,15 @@
-import _ from 'lodash'
-import Debug from 'debug'
-import { join, resolve } from 'path'
-import { existsSync } from 'fs'
-import { isUrl, isPureObject } from 'utils'
+const _ = require('lodash')
+const Debug = require('debug')
+const { join, resolve } = require('path')
+const { existsSync } = require('fs')
+const { isUrl, isPureObject } = require('../common/utils')
const debug = Debug('nuxt:build')
debug.color = 2 // Force green color
const Options = {}
-export default Options
+module.exports = Options
Options.from = function (_options) {
// Clone options to prevent unwanted side-effects
@@ -32,26 +32,37 @@ Options.from = function (_options) {
options.layoutTransition = { name: options.layoutTransition }
}
+ const hasValue = v => typeof v === 'string' && v
+ options.rootDir = hasValue(options.rootDir) ? options.rootDir : process.cwd()
+
+ // Apply defaults by ${buildDir}/dist/build.config.js
+ const buildDir = options.buildDir || Options.defaults.buildDir
+ const buildConfig = resolve(options.rootDir, buildDir, 'build.config.js')
+ if (existsSync(buildConfig)) {
+ _.defaultsDeep(options, require(buildConfig))
+ }
// Apply defaults
_.defaultsDeep(options, Options.defaults)
// Resolve dirs
- const hasValue = v => typeof v === 'string' && v
- options.rootDir = hasValue(options.rootDir) ? options.rootDir : process.cwd()
options.srcDir = hasValue(options.srcDir) ? resolve(options.rootDir, options.srcDir) : options.rootDir
options.buildDir = resolve(options.rootDir, options.buildDir)
options.cacheDir = resolve(options.rootDir, options.cacheDir)
// Normalize modulesDir
+ /* istanbul ignore if */
+ if (!options.modulesDir) {
+ options.modulesDir = ['node_modules']
+ }
if (!Array.isArray(options.modulesDir)) {
options.modulesDir = [options.modulesDir]
}
- /* istanbul ignore if */
- if (!options.modulesDir.length) {
- options.modulesDir = ['node_modules']
- }
options.modulesDir = options.modulesDir.filter(dir => hasValue(dir)).map(dir => resolve(options.rootDir, dir))
+ // Always add nuxt to modulesDir array
+ const nuxtModulesDir = join(options.nuxtDir, 'node_modules')
+ options.modulesDir.push(nuxtModulesDir)
+
// If app.html is defined, set the template path to the user template
options.appTemplatePath = resolve(options.buildDir, 'views/app.template.html')
if (existsSync(join(options.srcDir, 'app.html'))) {
@@ -185,16 +196,22 @@ Options.modes = {
}
}
+Options.unsafeKeys = [
+ 'rootDir', 'srcDir', 'buildDir', 'modulesDir', 'cacheDir', 'nuxtDir',
+ 'nuxtAppDir', 'build', 'generate', 'router.routes', 'appTemplatePath'
+]
+
Options.defaults = {
mode: 'universal',
dev: process.env.NODE_ENV !== 'production',
debug: undefined, // Will be equal to dev if not provided
buildDir: '.nuxt',
cacheDir: '.cache',
- nuxtDir: resolve(__dirname, '..'), // Relative to dist
- nuxtAppDir: resolve(__dirname, '../lib/app/'), // Relative to dist
+ nuxtDir: resolve(__dirname, '../..'),
+ nuxtAppDir: resolve(__dirname, '../app'),
build: {
analyze: false,
+ profile: process.argv.includes('--profile'),
dll: false,
scopeHoisting: false,
extractCSS: false,
@@ -323,6 +340,7 @@ Options.defaults = {
back_to_home: 'Back to the home page',
server_error_details: 'An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details.',
client_error: 'Error',
- client_error_details: 'An error occurred while rendering the page. Check developer tools console for details.'
+ client_error_details: 'An error occurred while rendering the page. Check developer tools console for details.',
+ redirect: 'Redirecting to external page.'
}
}
diff --git a/lib/common/utils.js b/lib/common/utils.js
index d9758c8c8d..11b434b1d0 100644
--- a/lib/common/utils.js
+++ b/lib/common/utils.js
@@ -1,15 +1,15 @@
-import { resolve, relative, sep } from 'path'
-import _ from 'lodash'
+const { resolve, relative, sep } = require('path')
+const _ = require('lodash')
-export function encodeHtml(str) {
+exports.encodeHtml = function encodeHtml(str) {
return str.replace(//g, '>')
}
-export function getContext(req, res) {
+exports.getContext = function getContext(req, res) {
return { req, res }
}
-export function setAnsiColors(ansiHTML) {
+exports.setAnsiColors = function setAnsiColors(ansiHTML) {
ansiHTML.setColors({
reset: ['efefef', 'a6004c'],
darkgrey: '5a012b',
@@ -22,50 +22,50 @@ export function setAnsiColors(ansiHTML) {
})
}
-export async function waitFor(ms) {
+exports.waitFor = async function waitFor(ms) {
return new Promise(resolve => setTimeout(resolve, (ms || 0)))
}
-export function urlJoin() {
+exports.urlJoin = function urlJoin() {
return [].slice.call(arguments).join('/').replace(/\/+/g, '/').replace(':/', '://')
}
-export function isUrl(url) {
+exports.isUrl = function isUrl(url) {
return (url.indexOf('http') === 0 || url.indexOf('//') === 0)
}
-export function promisifyRoute(fn) {
+exports.promisifyRoute = function promisifyRoute(fn, ...args) {
// If routes is an array
if (Array.isArray(fn)) {
return Promise.resolve(fn)
}
// If routes is a function expecting a callback
- if (fn.length === 1) {
+ if (fn.length === arguments.length) {
return new Promise((resolve, reject) => {
- fn(function (err, routeParams) {
+ fn((err, routeParams) => {
if (err) {
reject(err)
}
resolve(routeParams)
- })
+ }, ...args)
})
}
- let promise = fn()
+ let promise = fn(...args)
if (!promise || (!(promise instanceof Promise) && (typeof promise.then !== 'function'))) {
promise = Promise.resolve(promise)
}
return promise
}
-export function sequence(tasks, fn) {
+exports.sequence = function sequence(tasks, fn) {
return tasks.reduce((promise, task) => promise.then(() => fn(task)), Promise.resolve())
}
-export function parallel(tasks, fn) {
+exports.parallel = function parallel(tasks, fn) {
return Promise.all(tasks.map(task => fn(task)))
}
-export function chainFn(base, fn) {
+exports.chainFn = function chainFn(base, fn) {
/* istanbul ignore if */
if (!(fn instanceof Function)) {
return
@@ -88,13 +88,13 @@ export function chainFn(base, fn) {
}
}
-export function isPureObject(o) {
+exports.isPureObject = function isPureObject(o) {
return !Array.isArray(o) && typeof o === 'object'
}
-export const isWindows = /^win/.test(process.platform)
+const isWindows = exports.isWindows = /^win/.test(process.platform)
-export function wp(p = '') {
+const wp = exports.wp = function wp(p = '') {
/* istanbul ignore if */
if (isWindows) {
return p.replace(/\\/g, '\\\\')
@@ -102,7 +102,7 @@ export function wp(p = '') {
return p
}
-export function wChunk(p = '') {
+exports.wChunk = function wChunk(p = '') {
/* istanbul ignore if */
if (isWindows) {
return p.replace(/\//g, '_')
@@ -114,18 +114,18 @@ const reqSep = /\//g
const sysSep = _.escapeRegExp(sep)
const normalize = string => string.replace(reqSep, sysSep)
-export function r() {
+const r = exports.r = function r() {
let args = Array.prototype.slice.apply(arguments)
let lastArg = _.last(args)
- if (lastArg.includes('@') || lastArg.includes('~')) {
+ if (lastArg.indexOf('@') === 0 || lastArg.indexOf('~') === 0) {
return wp(lastArg)
}
return wp(resolve(...args.map(normalize)))
}
-export function relativeTo() {
+exports.relativeTo = function relativeTo() {
let args = Array.prototype.slice.apply(arguments)
let dir = args.shift()
@@ -133,7 +133,7 @@ export function relativeTo() {
let path = r(...args)
// Check if path is an alias
- if (path.includes('@') || path.includes('~')) {
+ if (path.indexOf('@') === 0 || path.indexOf('~') === 0) {
return path
}
@@ -145,13 +145,17 @@ export function relativeTo() {
return wp(rp)
}
-export function flatRoutes(router, path = '', routes = []) {
+exports.flatRoutes = function flatRoutes(router, path = '', routes = []) {
router.forEach((r) => {
if (!r.path.includes(':') && !r.path.includes('*')) {
/* istanbul ignore if */
if (r.children) {
+ if (path === '' && r.path === '/') {
+ routes.push('/')
+ }
flatRoutes(r.children, path + r.path + '/', routes)
} else {
+ path = path.replace(/^\/+$/, '/')
routes.push((r.path === '' && path[path.length - 1] === '/' ? path.slice(0, -1) : path) + r.path)
}
}
@@ -159,7 +163,7 @@ export function flatRoutes(router, path = '', routes = []) {
return routes
}
-export function cleanChildrenRoutes(routes, isChild = false) {
+function cleanChildrenRoutes(routes, isChild = false) {
let start = -1
let routesIndex = []
routes.forEach((route) => {
@@ -205,16 +209,16 @@ export function cleanChildrenRoutes(routes, isChild = false) {
return routes
}
-export function createRoutes(files, srcDir) {
+exports.createRoutes = function createRoutes(files, srcDir) {
let routes = []
files.forEach((file) => {
- let keys = file.replace(/^pages/, '').replace(/\.vue$/, '').replace(/\/{2,}/g, '/').split('/').slice(1)
+ let keys = file.replace(/^pages/, '').replace(/\.(vue|js)$/, '').replace(/\/{2,}/g, '/').split('/').slice(1)
let route = { name: '', path: '', component: r(srcDir, file) }
let parent = routes
keys.forEach((key, i) => {
route.name = route.name ? route.name + '-' + key.replace('_', '') : key.replace('_', '')
route.name += (key === '_') ? 'all' : ''
- route.chunkName = file.replace(/\.vue$/, '')
+ route.chunkName = file.replace(/\.(vue|js)$/, '')
let child = _.find(parent, { name: route.name })
if (child) {
child.children = child.children || []
@@ -264,3 +268,16 @@ export function createRoutes(files, srcDir) {
})
return cleanChildrenRoutes(routes)
}
+
+exports.rmCache = function rmCache(path) {
+ const mod = require.cache[path]
+ delete require.cache[path]
+ if (mod.parent && mod.parent.children) {
+ for (let i = 0; i < mod.parent.children.length; i++) {
+ if (mod.parent.children[i] === mod) {
+ mod.parent.children.splice(i, 1)
+ break
+ }
+ }
+ }
+}
diff --git a/lib/core/index.js b/lib/core/index.js
index 3eee8a295c..b4e0d1399a 100755
--- a/lib/core/index.js
+++ b/lib/core/index.js
@@ -1,9 +1,9 @@
-import { Options, Utils } from 'common'
-import Module from './module'
-import Nuxt from './nuxt'
-import Renderer from './renderer'
+const { Options, Utils } = require('../common')
+const Module = require('./module')
+const Nuxt = require('./nuxt')
+const Renderer = require('./renderer')
-export {
+module.exports = {
Nuxt,
Module,
Renderer,
diff --git a/lib/core/meta.js b/lib/core/meta.js
index 1edd0c3d7f..0df24a9de4 100644
--- a/lib/core/meta.js
+++ b/lib/core/meta.js
@@ -1,10 +1,10 @@
-import Vue from 'vue'
-import VueMeta from 'vue-meta'
-import VueServerRenderer from 'vue-server-renderer'
-import LRU from 'lru-cache'
+const Vue = require('vue')
+const VueMeta = require('vue-meta')
+const VueServerRenderer = require('vue-server-renderer')
+const LRU = require('lru-cache')
-export default class MetaRenderer {
+module.exports = class MetaRenderer {
constructor(nuxt, renderer) {
this.nuxt = nuxt
this.renderer = renderer
diff --git a/lib/core/module.js b/lib/core/module.js
index 0ad7182279..2ce68de4e8 100755
--- a/lib/core/module.js
+++ b/lib/core/module.js
@@ -1,13 +1,13 @@
-import path from 'path'
-import fs from 'fs'
-import { uniq } from 'lodash'
-import hash from 'hash-sum'
-import { chainFn, sequence } from 'utils'
-import Debug from 'debug'
+const path = require('path')
+const fs = require('fs')
+const { uniq } = require('lodash')
+const hash = require('hash-sum')
+const { chainFn, sequence } = require('../common/utils')
+const Debug = require('debug')
const debug = Debug('nuxt:module')
-export default class ModuleContainer {
+module.exports = class ModuleContainer {
constructor(nuxt) {
this.nuxt = nuxt
this.options = nuxt.options
diff --git a/lib/core/nuxt.js b/lib/core/nuxt.js
index 072f0f665a..f25d213c20 100644
--- a/lib/core/nuxt.js
+++ b/lib/core/nuxt.js
@@ -1,18 +1,19 @@
-import chalk from 'chalk'
-import { Options } from 'common'
-import { sequence } from 'utils'
-import ModuleContainer from './module'
-import Renderer from './renderer'
-import Debug from 'debug'
-import enableDestroy from 'server-destroy'
-import Module from 'module'
-import { isPlainObject } from 'lodash'
-import { join, resolve } from 'path'
+const Debug = require('debug')
+const enableDestroy = require('server-destroy')
+const Module = require('module')
+const { isPlainObject } = require('lodash')
+const chalk = require('chalk')
+const { Options } = require('../common')
+const { sequence } = require('../common/utils')
+const { join, resolve } = require('path')
+const { version } = require('../../package.json')
+const ModuleContainer = require('./module')
+const Renderer = require('./renderer')
const debug = Debug('nuxt:')
debug.color = 5
-export default class Nuxt {
+module.exports = class Nuxt {
constructor(options = {}) {
this.options = Options.from(options)
@@ -44,6 +45,10 @@ export default class Nuxt {
this._ready = this.ready().catch(this.errorHandler)
}
+ static get version() {
+ return version
+ }
+
async ready() {
if (this._ready) {
return this._ready
diff --git a/lib/core/renderer.js b/lib/core/renderer.js
index 4e70a4af5b..16187ff93e 100644
--- a/lib/core/renderer.js
+++ b/lib/core/renderer.js
@@ -1,20 +1,20 @@
-import ansiHTML from 'ansi-html'
-import serialize from 'serialize-javascript'
-import generateETag from 'etag'
-import fresh from 'fresh'
-import serveStatic from 'serve-static'
-import compression from 'compression'
-import _ from 'lodash'
-import { join, resolve } from 'path'
-import fs from 'fs-extra'
-import { createBundleRenderer } from 'vue-server-renderer'
-import { getContext, setAnsiColors, isUrl, waitFor } from 'utils'
-import Debug from 'debug'
-import Youch from '@nuxtjs/youch'
-import { SourceMapConsumer } from 'source-map'
-import connect from 'connect'
-import { Options } from 'common'
-import MetaRenderer from './meta'
+const ansiHTML = require('ansi-html')
+const serialize = require('serialize-javascript')
+const generateETag = require('etag')
+const fresh = require('fresh')
+const serveStatic = require('serve-static')
+const compression = require('compression')
+const _ = require('lodash')
+const { join, resolve } = require('path')
+const fs = require('fs-extra')
+const { createBundleRenderer } = require('vue-server-renderer')
+const { getContext, setAnsiColors, isUrl, waitFor } = require('../common/utils')
+const Debug = require('debug')
+const Youch = require('@nuxtjs/youch')
+const { SourceMapConsumer } = require('source-map')
+const connect = require('connect')
+const { Options } = require('../common')
+const MetaRenderer = require('./meta')
const debug = Debug('nuxt:render')
debug.color = 4 // Force blue color
@@ -23,7 +23,7 @@ setAnsiColors(ansiHTML)
let jsdom = null
-export default class Renderer {
+module.exports = class Renderer {
constructor(nuxt) {
this.nuxt = nuxt
this.options = nuxt.options
@@ -126,6 +126,7 @@ export default class Renderer {
get isResourcesAvailable() {
// Required for both
+ /* istanbul ignore if */
if (!this.resources.clientManifest) {
return false
}
@@ -223,7 +224,7 @@ export default class Renderer {
// open in editor for debug mode only
const _this = this
- if (this.options.debug) {
+ if (this.options.debug && this.options.dev) {
this.useMiddleware({
path: '_open',
handler(req, res) {
@@ -417,9 +418,11 @@ export default class Renderer {
if (line) {
frame.lineNumber = line
}
+ /* istanbul ignore if */
if (column) {
frame.columnNumber = column
}
+ /* istanbul ignore if */
if (name) {
frame.functionName = name
}
diff --git a/lib/index.js b/lib/index.js
index aa7df41b13..f0b416e198 100755
--- a/lib/index.js
+++ b/lib/index.js
@@ -1,4 +1,11 @@
-import * as core from './core'
-import * as builder from './builder'
+/*!
+ * Nuxt.js
+ * (c) 2016-2017 Chopin Brothers
+ * Core maintainer: Pooya Parsa (@pi0)
+ * Released under the MIT License.
+ */
-export default Object.assign({}, core, builder)
+const core = require('./core')
+const builder = require('./builder')
+
+module.exports = Object.assign({}, core, builder)
diff --git a/package.json b/package.json
index 49834d0aab..296d20925c 100644
--- a/package.json
+++ b/package.json
@@ -13,7 +13,7 @@
"name": "Pooya Parsa (@pi0)"
}
],
- "main": "./index.js",
+ "main": "./lib/index.js",
"license": "MIT",
"repository": {
"type": "git",
@@ -21,9 +21,7 @@
},
"files": [
"bin",
- "dist",
- "lib",
- "index.js"
+ "lib"
],
"keywords": [
"nuxt",
@@ -47,30 +45,24 @@
]
},
"scripts": {
- "test": "npm run lint && cross-env NODE_ENV=test npm run build:nuxt && nyc ava --verbose --serial test/ -- && nyc report --reporter=html",
+ "test": "npm run lint && nyc ava --verbose --serial test/ -- && nyc report --reporter=html",
"coverage": "nyc report --reporter=text-lcov > coverage.lcov && codecov",
- "lint": "eslint --ext .js,.vue bin/ lib/ test/ examples/",
- "build": "rimraf dist/ && npm run build:nuxt && npm run build:core",
- "build:nuxt": "rollup -c build/rollup.config.js --environment TARGET:nuxt",
- "build:core": "rollup -c build/rollup.config.js --environment TARGET:core",
- "watch": "npm run build:nuxt -- -w",
- "make-start": "node ./build/start.js",
+ "lint": "eslint --ext .js,.vue bin/* build/ lib/ test/ examples/",
"precommit": "npm run lint",
- "postinstall": "opencollective postinstall || exit 0",
- "release-next": "npm run build && node ./build/release-next && npm publish --tag next"
+ "postinstall": "opencollective postinstall || exit 0"
},
"engines": {
- "node": ">=6.11",
- "npm": ">=3.10.0"
+ "node": ">=8.0.0",
+ "npm": ">=5.0.0"
},
"dependencies": {
"@nuxtjs/youch": "^3.1.0",
"ansi-html": "^0.0.7",
- "autoprefixer": "^7.1.6",
+ "autoprefixer": "^7.2.2",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
- "babel-preset-vue-app": "^1.3.1",
- "caniuse-lite": "^1.0.30000758",
+ "babel-preset-vue-app": "^2.0.0",
+ "caniuse-lite": "^1.0.30000782",
"chalk": "^2.3.0",
"chokidar": "^1.7.0",
"clone": "^2.1.1",
@@ -84,10 +76,10 @@
"file-loader": "^1.1.5",
"fresh": "^0.5.2",
"friendly-errors-webpack-plugin": "^1.6.1",
- "fs-extra": "^4.0.2",
+ "fs-extra": "^5.0.0",
"glob": "^7.1.2",
"hash-sum": "^1.0.2",
- "html-minifier": "^3.5.6",
+ "html-minifier": "3.5.7",
"html-webpack-plugin": "^2.30.1",
"lodash": "^4.17.4",
"lru-cache": "^4.1.1",
@@ -95,70 +87,62 @@
"minimist": "^1.2.0",
"open-in-editor": "^2.2.0",
"opencollective": "^1.0.3",
- "pify": "^3.0.0",
"postcss": "^6.0.14",
"postcss-cssnext": "^3.0.2",
"postcss-import": "^11.0.0",
"postcss-loader": "^2.0.8",
- "postcss-url": "^7.2.1",
+ "postcss-url": "^7.3.0",
"pretty-error": "^2.1.1",
"progress-bar-webpack-plugin": "^1.10.0",
"serialize-javascript": "^1.4.0",
"serve-static": "^1.13.1",
"server-destroy": "^1.0.1",
"source-map": "^0.6.1",
- "source-map-support": "^0.5.0",
- "style-resources-loader": "^0.3.0",
- "uglifyjs-webpack-plugin": "^1.0.1",
+ "style-resources-loader": "^1.0.0",
+ "uglifyjs-webpack-plugin": "^1.1.2",
"url-loader": "^0.6.2",
- "vue": "^2.5.6",
+ "vue": "^2.5.9",
"vue-loader": "^13.5.0",
- "vue-meta": "^1.3.1",
+ "vue-meta": "^1.4.0",
"vue-router": "^3.0.1",
- "vue-server-renderer": "^2.5.6",
- "vue-template-compiler": "^2.5.6",
+ "vue-server-renderer": "^2.5.9",
+ "vue-template-compiler": "^2.5.9",
"vuex": "^3.0.1",
- "webpack": "^3.8.1",
+ "webpack": "^3.10.0",
"webpack-bundle-analyzer": "^2.9.0",
- "webpack-dev-middleware": "^1.12.0",
- "webpack-hot-middleware": "^2.20.0",
+ "webpack-dev-middleware": "^1.12.2",
+ "webpack-hot-middleware": "^2.21.0",
"webpack-node-externals": "^1.6.0"
},
"devDependencies": {
- "ava": "^0.23.0",
- "babel-eslint": "^8.0.1",
+ "ava": "^0.24.0",
+ "babel-eslint": "^8.0.3",
"babel-plugin-array-includes": "^2.0.3",
"babel-plugin-external-helpers": "^6.22.0",
"babel-plugin-istanbul": "^4.1.5",
"codecov": "^3.0.0",
"copy-webpack-plugin": "^4.2.0",
"cross-env": "^5.1.1",
- "eslint": "^4.10.0",
- "eslint-config-standard": "^10.2.1",
+ "eslint": "^4.13.1",
+ "eslint-config-standard": "^11.0.0-beta.0",
+ "eslint-config-standard-jsx": "^4.0.2",
"eslint-plugin-html": "^4.0.1",
"eslint-plugin-import": "^2.8.0",
"eslint-plugin-node": "^5.2.1",
"eslint-plugin-promise": "^3.6.0",
+ "eslint-plugin-react": "^7.5.1",
"eslint-plugin-standard": "^3.0.1",
"express": "^4.16.2",
"finalhandler": "^1.1.0",
- "jsdom": "^11.3.0",
+ "jsdom": "^11.5.1",
"json-loader": "^0.5.7",
"nyc": "^11.3.0",
"puppeteer": "^0.13.0",
"request": "^2.83.0",
"request-promise-native": "^1.0.5",
- "rimraf": "^2.6.2",
- "rollup": "^0.51.7",
- "rollup-plugin-alias": "^1.4.0",
- "rollup-plugin-babel": "^3.0.2",
- "rollup-plugin-commonjs": "^8.2.6",
- "rollup-plugin-node-resolve": "^3.0.0",
- "rollup-plugin-replace": "^2.0.0",
- "rollup-watch": "^4.3.1",
"sinon": "^4.1.2",
"std-mocks": "^1.0.1",
- "uglify-js": "^3.1.7"
+ "uglify-js": "^3.2.2"
},
"collective": {
"type": "opencollective",
diff --git a/build/release-next.js b/scripts/release-next
old mode 100644
new mode 100755
similarity index 93%
rename from build/release-next.js
rename to scripts/release-next
index e34338d755..618caa40bf
--- a/build/release-next.js
+++ b/scripts/release-next
@@ -1,4 +1,5 @@
#!/usr/bin/env node
+
const { readFileSync, writeFileSync } = require('fs-extra')
const { resolve } = require('path')
const { spawnSync } = require('child_process')
@@ -16,12 +17,12 @@ const originalPackage = readFileSync(packagePath, 'utf-8')
const p = JSON.parse(originalPackage)
// Change package name
-p.name = 'nuxt-next'
+// p.name = 'nuxt-next'
// Get latest git commit id
const gitCommit = String(spawnSync('git', 'rev-parse --short HEAD'.split(' ')).stdout).trim()
-// Version with git tag
+// Version with latest git commit id
p.version = p.version.split('-')[0] + '-gh-' + gitCommit
// Write package.json
diff --git a/build/start.js b/scripts/start
similarity index 94%
rename from build/start.js
rename to scripts/start
index 9f5eaecc28..aa8e474aec 100755
--- a/build/start.js
+++ b/scripts/start
@@ -3,7 +3,7 @@
const now = Date.now()
const { readFileSync, readJSONSync, writeFileSync, copySync, removeSync } = require('fs-extra')
-const { resolve, relative } = require('path')
+const { resolve } = require('path')
// Dirs
const rootDir = resolve(__dirname, '..')
@@ -42,6 +42,7 @@ requires = requires.filter(r => excludes.indexOf(r) === -1)
let dependencies = {}
requires.forEach(r => {
if (!packageJSON.dependencies[r]) {
+ // eslint-disable-next-line no-console
console.warn('Cannot resolve dependency version for ' + r)
return
}
@@ -104,5 +105,5 @@ writeFileSync(startIndexjs, String(readFileSync(startIndexjs)).replace('./dist/n
const binStart = resolve(startDir, 'bin/nuxt-start')
writeFileSync(binStart, String(readFileSync(binStart)).replace(/nuxt start/g, 'nuxt-start'))
-const ms = Date.now() - now
-console.log(`Generated ${packageJSON.name}@${packageJSON.version} in ${ms}ms`)
+// eslint-disable-next-line no-console
+console.log(`Generated ${packageJSON.name}@${packageJSON.version} in ${Date.now() - now}ms`)
diff --git a/test/basic.config.defaults.test.js b/test/basic.config.defaults.test.js
new file mode 100644
index 0000000000..5f7136119c
--- /dev/null
+++ b/test/basic.config.defaults.test.js
@@ -0,0 +1,14 @@
+import test from 'ava'
+import { resolve } from 'path'
+import { Nuxt, Options } from '..'
+import { version } from '../package.json'
+
+test('Nuxt.version is same as package', t => {
+ t.is(Nuxt.version, version)
+})
+
+test('modulesDir uses /node_modules as default if not set', async t => {
+ const options = Options.from({})
+ const currentNodeModulesDir = resolve(__dirname, '..', 'node_modules')
+ t.true(options.modulesDir.includes(currentNodeModulesDir))
+})
diff --git a/test/basic.csr.test.js b/test/basic.csr.test.js
index da09e77a1b..94fada4228 100644
--- a/test/basic.csr.test.js
+++ b/test/basic.csr.test.js
@@ -1,6 +1,6 @@
import test from 'ava'
import { resolve } from 'path'
-import { Nuxt, Builder } from '../index'
+import { Nuxt, Builder } from '..'
import * as browser from './helpers/browser'
const port = 4003
@@ -143,6 +143,15 @@ test('/redirect2', async t => {
t.is(await page.$text('h1'), 'Index page')
})
+test('/redirect3', async t => {
+ // New page for redirecting to external link.
+ const page = await browser.page(url('/'))
+ await page.nuxt.navigate('/redirect3', false)
+ await page.waitForFunction(() => window.location.href === 'https://nuxtjs.org/')
+ page.close()
+ t.pass()
+})
+
test('/no-ssr', async t => {
await page.nuxt.navigate('/no-ssr')
@@ -170,6 +179,12 @@ test('/fn-midd?please=true', async t => {
t.true(h1.includes('Date:'))
})
+test('/router-guard', async t => {
+ await page.nuxt.navigate('/router-guard')
+
+ t.is(await page.$text('p'), 'Nuxt.js')
+})
+
// Close server and ask nuxt to stop listening to file changes
test.after('Closing server and nuxt.js', t => {
nuxt.close()
diff --git a/test/basic.dev.test.js b/test/basic.dev.test.js
index a415ed4322..53a46c6f6e 100644
--- a/test/basic.dev.test.js
+++ b/test/basic.dev.test.js
@@ -1,18 +1,26 @@
import test from 'ava'
import { resolve } from 'path'
+import stdMocks from 'std-mocks'
// import rp from 'request-promise-native'
-import { Nuxt, Builder } from '../index.js'
+import { Nuxt, Builder, Utils } from '..'
+import { truncateSync, readFileSync, writeFileSync } from 'fs'
const port = 4001
const url = (route) => 'http://localhost:' + port + route
+const rootDir = resolve(__dirname, 'fixtures/basic')
+const pluginPath = resolve(rootDir, 'plugins', 'watch.js')
+const pluginContent = readFileSync(pluginPath)
let nuxt = null
// Init nuxt.js and create server listening on localhost:4000
test.before('Init Nuxt.js', async t => {
const options = {
- rootDir: resolve(__dirname, 'fixtures/basic'),
- dev: true
+ rootDir,
+ dev: true,
+ plugins: [
+ '~/plugins/watch.js'
+ ]
}
nuxt = new Nuxt(options)
await new Builder(nuxt).build()
@@ -20,6 +28,29 @@ test.before('Init Nuxt.js', async t => {
await nuxt.listen(port, 'localhost')
})
+test('remove mixins in live reloading', async t => {
+ stdMocks.use()
+ await nuxt.renderRoute(url('/'))
+ t.true(stdMocks.flush().stdout.some(v => v === 'I am mixin\n'))
+
+ truncateSync(pluginPath)
+ await new Promise(async (resolve, reject) => {
+ let waitTimes = 0
+ while (!stdMocks.flush().stdout.some(v => ~v.indexOf('Compiled successfully'))) {
+ await Utils.waitFor(100) && waitTimes++
+ if (waitTimes === 20) {
+ reject(Error('Dev server doesn\'t reload after 2000ms'))
+ }
+ }
+ resolve()
+ })
+
+ await nuxt.renderRoute(url('/'))
+ t.false(stdMocks.flush().stdout.some(v => v === 'I am mixin\n'))
+
+ stdMocks.restore()
+})
+
test('/stateless', async t => {
const window = await nuxt.renderAndGetWindow(url('/stateless'))
const html = window.document.body.innerHTML
@@ -37,5 +68,6 @@ test('/stateless', async t => {
// Close server and ask nuxt to stop listening to file changes
test.after('Closing server and nuxt.js', async t => {
+ writeFileSync(pluginPath, pluginContent)
await nuxt.close()
})
diff --git a/test/basic.fail.generate.test.js b/test/basic.fail.generate.test.js
index e5386e0bcf..79653d3593 100644
--- a/test/basic.fail.generate.test.js
+++ b/test/basic.fail.generate.test.js
@@ -1,6 +1,6 @@
import test from 'ava'
import { resolve } from 'path'
-import { Nuxt, Builder, Generator } from '../index.js'
+import { Nuxt, Builder, Generator } from '..'
test('Fail with routes() which throw an error', async t => {
const options = {
diff --git a/test/basic.generate.nosubfolders.test.js b/test/basic.generate.nosubfolders.test.js
index ce9c1d813a..5aeb01a16f 100644
--- a/test/basic.generate.nosubfolders.test.js
+++ b/test/basic.generate.nosubfolders.test.js
@@ -5,7 +5,7 @@ import http from 'http'
import serveStatic from 'serve-static'
import finalhandler from 'finalhandler'
import rp from 'request-promise-native'
-import { Nuxt, Builder, Generator } from '../index.js'
+import { Nuxt, Builder, Generator } from '..'
const port = 4002
const url = (route) => 'http://localhost:' + port + route
diff --git a/test/basic.generate.test.js b/test/basic.generate.test.js
index 0e1020847e..877cd1c52a 100644
--- a/test/basic.generate.test.js
+++ b/test/basic.generate.test.js
@@ -5,7 +5,7 @@ import http from 'http'
import serveStatic from 'serve-static'
import finalhandler from 'finalhandler'
import rp from 'request-promise-native'
-import { Nuxt, Builder, Generator } from '../index.js'
+import { Nuxt, Builder, Generator } from '..'
const port = 4002
const url = (route) => 'http://localhost:' + port + route
diff --git a/test/basic.ssr.test.js b/test/basic.ssr.test.js
index b6a7b779fa..0e5a98b237 100755
--- a/test/basic.ssr.test.js
+++ b/test/basic.ssr.test.js
@@ -1,7 +1,7 @@
import test from 'ava'
import { resolve } from 'path'
import rp from 'request-promise-native'
-import { Nuxt, Builder } from '../index.js'
+import { Nuxt, Builder } from '..'
import { interceptLog, interceptError } from './helpers/console'
const port = 4003
@@ -121,6 +121,19 @@ test('/redirect -> check redirected source', async t => {
t.true(html.includes('Index page'))
})
+test('/redirect -> external link', async t => {
+ const headers = {}
+ const { html } = await nuxt.renderRoute('/redirect3', {
+ res: {
+ setHeader(k, v) {
+ headers[k] = v
+ }
+ }
+ })
+ t.is(headers.Location, 'https://nuxtjs.org')
+ t.true(html.includes('Redirecting to external page. '))
+})
+
test('/special-state -> check window.__NUXT__.test = true', async t => {
const window = await nuxt.renderAndGetWindow(url('/special-state'))
t.is(window.document.title, 'Nuxt.js')
@@ -228,6 +241,22 @@ test('/fn-midd?please=true', async t => {
t.true(html.includes('Date:'))
})
+test('/router-guard', async t => {
+ const { html } = await nuxt.renderRoute('/router-guard')
+ t.true(html.includes('Nuxt.js '))
+ t.false(html.includes('Router Guard'))
+})
+
+test('/jsx', async t => {
+ const { html } = await nuxt.renderRoute('/jsx')
+ t.true(html.includes('JSX Page'))
+})
+
+test('/js-link', async t => {
+ const { html } = await nuxt.renderRoute('/js-link')
+ t.true(html.includes('vue file is first-class'))
+})
+
// Close server and ask nuxt to stop listening to file changes
test.after('Closing server and nuxt.js', async t => {
await nuxt.close()
diff --git a/test/children.patch.test.js b/test/children.patch.test.js
index a66cfbf6ce..46bb123526 100644
--- a/test/children.patch.test.js
+++ b/test/children.patch.test.js
@@ -1,6 +1,6 @@
import test from 'ava'
import { resolve } from 'path'
-import { Nuxt, Builder, Utils } from '../index.js'
+import { Nuxt, Builder, Utils } from '..'
import * as browser from './helpers/browser'
const port = 4005
diff --git a/test/children.test.js b/test/children.test.js
index c648702798..25fddc71a9 100644
--- a/test/children.test.js
+++ b/test/children.test.js
@@ -1,6 +1,6 @@
import test from 'ava'
import { resolve } from 'path'
-import { Nuxt, Builder } from '../index.js'
+import { Nuxt, Builder } from '..'
const port = 4004
// const url = (route) => 'http://localhost:' + port + route
diff --git a/test/cli.test.js b/test/cli.test.js
index 2fe743cb2f..4e47ba0227 100644
--- a/test/cli.test.js
+++ b/test/cli.test.js
@@ -1,11 +1,11 @@
+import { promisify } from 'util'
import test from 'ava'
import { resolve, sep } from 'path'
import rp from 'request-promise-native'
-import { Utils } from '../index.js'
-import pify from 'pify'
import { exec, spawn } from 'child_process'
+import { Utils } from '..'
-const execify = pify(exec, { multiArgs: true })
+const execify = promisify(exec)
const rootDir = resolve(__dirname, 'fixtures/basic')
const port = 4011
@@ -14,7 +14,7 @@ const url = (route) => 'http://localhost:' + port + route
test('bin/nuxt-build', async t => {
const binBuild = resolve(__dirname, '..', 'bin', 'nuxt-build')
- const [ stdout, stderr ] = await execify(`node ${binBuild} ${rootDir}`)
+ const { stdout, stderr } = await execify(`node ${binBuild} ${rootDir}`)
t.true(stdout.includes('server-bundle.json'))
t.true(stderr.includes('Building done'))
@@ -82,7 +82,7 @@ test('bin/nuxt-start', async t => {
test('bin/nuxt-generate', async t => {
const binGenerate = resolve(__dirname, '..', 'bin', 'nuxt-generate')
- const [ stdout, stderr ] = await execify(`node ${binGenerate} ${rootDir}`)
+ const { stdout, stderr } = await execify(`node ${binGenerate} ${rootDir}`)
t.true(stdout.includes('server-bundle.json'))
t.true(stderr.includes('Destination folder cleaned'))
diff --git a/test/debug.test.js b/test/debug.test.js
index 189721bc16..e198c9642e 100644
--- a/test/debug.test.js
+++ b/test/debug.test.js
@@ -1,7 +1,7 @@
import test from 'ava'
import { resolve } from 'path'
import rp from 'request-promise-native'
-import { Nuxt, Builder } from '../index.js'
+import { Nuxt, Builder } from '..'
const port = 4009
const url = (route) => 'http://localhost:' + port + route
@@ -13,7 +13,7 @@ test.before('Init Nuxt.js', async t => {
const rootDir = resolve(__dirname, 'fixtures/debug')
let config = require(resolve(rootDir, 'nuxt.config.js'))
config.rootDir = rootDir
- config.dev = false
+ config.dev = true // Needed for _open middleware
nuxt = new Nuxt(config)
await new Builder(nuxt).build()
@@ -38,6 +38,30 @@ test('/test/error should return error stack trace (Youch)', async t => {
t.true(error.includes(''))
})
+test('/test/error no source-map (Youch)', async t => {
+ const sourceMaps = nuxt.renderer.resources.serverBundle.maps
+ nuxt.renderer.resources.serverBundle.maps = {}
+
+ const { response, error } = await t.throws(nuxt.renderAndGetWindow(url('/test/error')))
+ t.is(response.statusCode, 500)
+ t.is(response.statusMessage, 'NuxtServerError')
+ t.true(error.includes('test youch !'))
+ t.true(error.includes(' '))
+
+ nuxt.renderer.resources.serverBundle.maps = sourceMaps
+})
+
+test('/test/error should return json format error (Youch)', async t => {
+ const opts = {
+ headers: {
+ 'accept': 'application/json'
+ },
+ resolveWithFullResponse: true
+ }
+ const { response: { headers } } = await t.throws(rp(url('/test/error'), opts))
+ t.is(headers['content-type'], 'text/json; charset=utf-8')
+})
+
// Close server and ask nuxt to stop listening to file changes
test.after('Closing server and nuxt.js', t => {
nuxt.close()
diff --git a/test/deprecate.test.js b/test/deprecate.test.js
index e6ae186066..8cf3d1b71e 100755
--- a/test/deprecate.test.js
+++ b/test/deprecate.test.js
@@ -2,7 +2,7 @@ import test from 'ava'
import stdMocks from 'std-mocks'
import { resolve } from 'path'
import rp from 'request-promise-native'
-import { Nuxt, Builder } from '../index.js'
+import { Nuxt, Builder } from '..'
const port = 4010
const url = (route) => 'http://localhost:' + port + route
diff --git a/test/dll.test.js b/test/dll.test.js
index 98d33bef99..688534b125 100644
--- a/test/dll.test.js
+++ b/test/dll.test.js
@@ -1,11 +1,11 @@
+import { promisify } from 'util'
import test from 'ava'
import { resolve } from 'path'
import fs from 'fs'
-import pify from 'pify'
import stdMocks from 'std-mocks'
-import { Nuxt, Builder } from '../index.js'
+import { Nuxt, Builder } from '..'
-const readFile = pify(fs.readFile)
+const readFile = promisify(fs.readFile)
const rootDir = resolve(__dirname, './fixtures/dll')
const dllDir = resolve(rootDir, '.cache/client-dll')
diff --git a/test/dynamic-routes.test.js b/test/dynamic-routes.test.js
index 0d5b98737f..c705f5eb62 100644
--- a/test/dynamic-routes.test.js
+++ b/test/dynamic-routes.test.js
@@ -1,10 +1,10 @@
import test from 'ava'
import { resolve } from 'path'
import fs from 'fs'
-import pify from 'pify'
-import { Nuxt, Builder } from '../index.js'
+import { Nuxt, Builder } from '..'
+import { promisify } from 'util'
-const readFile = pify(fs.readFile)
+const readFile = promisify(fs.readFile)
test.before('Init Nuxt.js', async t => {
const nuxt = new Nuxt({
diff --git a/test/error.test.js b/test/error.test.js
index 96bea41a2f..7a81f2d96a 100644
--- a/test/error.test.js
+++ b/test/error.test.js
@@ -1,6 +1,7 @@
import test from 'ava'
import { resolve } from 'path'
-import { Nuxt, Builder } from '../index.js'
+import rp from 'request-promise-native'
+import { Nuxt, Builder } from '..'
const port = 4005
const url = (route) => 'http://localhost:' + port + route
@@ -38,6 +39,17 @@ test('/ with renderAndGetWindow()', async t => {
t.is(err.response.statusMessage, 'NuxtServerError')
})
+test('/ with text/json content', async t => {
+ const opts = {
+ headers: {
+ 'accept': 'application/json'
+ },
+ resolveWithFullResponse: true
+ }
+ const { response: { headers } } = await t.throws(rp(url('/'), opts))
+ t.is(headers['content-type'], 'text/json; charset=utf-8')
+})
+
// Close server and ask nuxt to stop listening to file changes
test.after('Closing server and nuxt.js', t => {
nuxt.close()
diff --git a/test/express.test.js b/test/express.test.js
index 531aa606a0..676e931ee3 100644
--- a/test/express.test.js
+++ b/test/express.test.js
@@ -1,6 +1,6 @@
import test from 'ava'
import { resolve } from 'path'
-import { Nuxt, Builder } from '../index.js'
+import { Nuxt, Builder } from '..'
import express from 'express'
import rp from 'request-promise-native'
diff --git a/test/fixtures/basic/nuxt.config.js b/test/fixtures/basic/nuxt.config.js
index 369382e815..439bec51ea 100644
--- a/test/fixtures/basic/nuxt.config.js
+++ b/test/fixtures/basic/nuxt.config.js
@@ -20,6 +20,7 @@ module.exports = {
},
transition: false,
build: {
+ scopeHoisting: true,
postcss: [
require('postcss-cssnext')()
]
diff --git a/test/fixtures/basic/pages/js-link.js b/test/fixtures/basic/pages/js-link.js
new file mode 100644
index 0000000000..efba7fa697
--- /dev/null
+++ b/test/fixtures/basic/pages/js-link.js
@@ -0,0 +1,2 @@
+export default {
+}
diff --git a/test/fixtures/basic/pages/js-link.vue b/test/fixtures/basic/pages/js-link.vue
new file mode 100644
index 0000000000..f69c87b3c5
--- /dev/null
+++ b/test/fixtures/basic/pages/js-link.vue
@@ -0,0 +1,5 @@
+
+ vue file is first-class
+
+
+
diff --git a/test/fixtures/basic/pages/jsx.js b/test/fixtures/basic/pages/jsx.js
new file mode 100644
index 0000000000..88923dce9d
--- /dev/null
+++ b/test/fixtures/basic/pages/jsx.js
@@ -0,0 +1,7 @@
+export default {
+ render() {
+ return
+ JSX Page
+
+ }
+}
diff --git a/test/fixtures/basic/pages/redirect3.vue b/test/fixtures/basic/pages/redirect3.vue
new file mode 100644
index 0000000000..1f587681d5
--- /dev/null
+++ b/test/fixtures/basic/pages/redirect3.vue
@@ -0,0 +1,11 @@
+
+ Redirecting...
+
+
+
diff --git a/test/fixtures/basic/pages/router-guard.vue b/test/fixtures/basic/pages/router-guard.vue
new file mode 100644
index 0000000000..ae5e319c1f
--- /dev/null
+++ b/test/fixtures/basic/pages/router-guard.vue
@@ -0,0 +1,11 @@
+
+ Router Guard
+
+
+
diff --git a/test/fixtures/basic/plugins/watch.js b/test/fixtures/basic/plugins/watch.js
new file mode 100644
index 0000000000..b243a212ab
--- /dev/null
+++ b/test/fixtures/basic/plugins/watch.js
@@ -0,0 +1,12 @@
+import Vue from 'vue'
+
+const Plugin = {
+ install(Vue) {
+ Vue.mixin({
+ created() {
+ console.log('I am mixin') // eslint-disable-line no-console
+ }
+ })
+ }
+}
+Vue.use(Plugin)
diff --git a/test/fixtures/debug/nuxt.config.js b/test/fixtures/debug/nuxt.config.js
index 2bb2464225..2e05a7cd6e 100644
--- a/test/fixtures/debug/nuxt.config.js
+++ b/test/fixtures/debug/nuxt.config.js
@@ -3,9 +3,6 @@ module.exports = {
base: '/test/'
},
debug: true,
- build: {
- scopeHoisting: true
- },
editor: {
cmd: 'echo',
pattern: ''
diff --git a/test/fixtures/module/modules/middleware/use-middleware.js b/test/fixtures/module/modules/middleware/use-middleware.js
new file mode 100644
index 0000000000..f6156520c3
--- /dev/null
+++ b/test/fixtures/module/modules/middleware/use-middleware.js
@@ -0,0 +1,3 @@
+module.exports = function (req, res, next) {
+ res.end('Use external middleware')
+}
diff --git a/test/fixtures/module/nuxt.config.js b/test/fixtures/module/nuxt.config.js
index 63b3a2f62a..60ff0fecee 100755
--- a/test/fixtures/module/nuxt.config.js
+++ b/test/fixtures/module/nuxt.config.js
@@ -21,5 +21,12 @@ module.exports = {
hook('build:done', builder => {
builder.__build_done__ = true
})
+ // Add hook for renderer
+ hook('render:before', (renderer) => {
+ renderer.useMiddleware({
+ path: '/use-middleware',
+ handler: '~/modules/middleware/use-middleware'
+ })
+ })
}
}
diff --git a/test/fixtures/with-config/nuxt.config.js b/test/fixtures/with-config/nuxt.config.js
index bd564d5e8a..37db356a99 100644
--- a/test/fixtures/with-config/nuxt.config.js
+++ b/test/fixtures/with-config/nuxt.config.js
@@ -42,12 +42,21 @@ module.exports = {
}
},
build: {
- // extractCSS: true,
publicPath: '/orion/',
analyze: {
analyzerMode: 'disabled',
generateStatsFile: true
},
+ styleResources: {
+ patterns: [
+ '~/assets/pre-process.scss'
+ ]
+ },
+ babel: {
+ presets({ isServer }) {
+ return null // Coverage: Return null, so defaults will be used.
+ }
+ },
extend(config, options) {
return Object.assign({}, config, {
devtool: 'nosources-source-map'
diff --git a/test/generator.test.js b/test/generator.test.js
new file mode 100644
index 0000000000..9ebbed4235
--- /dev/null
+++ b/test/generator.test.js
@@ -0,0 +1,76 @@
+import test from 'ava'
+import { Nuxt, Generator } from '..'
+
+test('initRoutes with routes (fn => array)', async t => {
+ const array = ['/1', '/2', '/3', '/4']
+ const config = {
+ generate: {
+ routes: array
+ }
+ }
+ const nuxt = new Nuxt(config)
+ const generator = new Generator(nuxt)
+ const routes = await generator.initRoutes()
+
+ t.is(routes.length, array.length)
+ routes.map((route, index) => {
+ t.is(route.route, array[index])
+ })
+})
+
+test('initRoutes with routes (fn())', async t => {
+ const array = ['/1', '/2', '/3', '/4']
+ const config = {
+ generate: {
+ routes() {
+ return array
+ }
+ }
+ }
+ const nuxt = new Nuxt(config)
+ const generator = new Generator(nuxt)
+ const routes = await generator.initRoutes()
+
+ t.is(routes.length, array.length)
+ routes.map((route, index) => {
+ t.is(route.route, array[index])
+ })
+})
+
+test('initRoutes with routes (fn(args))', async t => {
+ const config = {
+ generate: {
+ routes(array) {
+ return array
+ }
+ }
+ }
+ const nuxt = new Nuxt(config)
+ const generator = new Generator(nuxt)
+ const array = ['/1', '/2', '/3', '/4']
+ const routes = await generator.initRoutes(array)
+
+ t.is(routes.length, array.length)
+ routes.map((route, index) => {
+ t.is(route.route, array[index])
+ })
+})
+
+test('initRoutes with routes (fn(cb, args))', async t => {
+ const config = {
+ generate: {
+ routes(cb, arg1, arg2, arg3, arg4) {
+ cb(null, [ arg1, arg2, arg3, arg4 ])
+ }
+ }
+ }
+ const nuxt = new Nuxt(config)
+ const generator = new Generator(nuxt)
+ const array = ['/1', '/2', '/3', '/4']
+ const routes = await generator.initRoutes(...array)
+
+ t.is(routes.length, array.length)
+ routes.map((route, index) => {
+ t.is(route.route, array[index])
+ })
+})
diff --git a/test/index.test.js b/test/index.test.js
index c30f96be7e..03632bdcb0 100644
--- a/test/index.test.js
+++ b/test/index.test.js
@@ -1,6 +1,6 @@
import test from 'ava'
import { resolve } from 'path'
-import { Nuxt, Builder } from '../index.js'
+import { Nuxt, Builder } from '..'
test('Nuxt.js Class', t => {
t.is(typeof Nuxt, 'function')
diff --git a/test/module.test.js b/test/module.test.js
index d8fceedfb1..d26d6c58d9 100755
--- a/test/module.test.js
+++ b/test/module.test.js
@@ -2,7 +2,7 @@ import test from 'ava'
import stdMocks from 'std-mocks'
import { resolve, normalize } from 'path'
import rp from 'request-promise-native'
-import { Nuxt, Builder } from '../index.js'
+import { Nuxt, Builder } from '..'
const port = 4006
const url = (route) => 'http://localhost:' + port + route
@@ -63,6 +63,11 @@ test('Hooks - Error', async t => {
t.true(errors.length === 1)
})
+test('Hooks - Use external middleware before render', async t => {
+ let response = await rp(url('/use-middleware'))
+ t.is(response, 'Use external middleware')
+})
+
// Close server and ask nuxt to stop listening to file changes
test.after('Closing server and nuxt.js', t => {
nuxt.close()
diff --git a/test/spa.test.js b/test/spa.test.js
index 8188960bb8..661aa5cc8a 100755
--- a/test/spa.test.js
+++ b/test/spa.test.js
@@ -1,6 +1,6 @@
import test from 'ava'
import stdMocks from 'std-mocks'
-import { Nuxt, Builder } from '../index.js'
+import { Nuxt, Builder } from '..'
let nuxt = null
@@ -47,6 +47,12 @@ test('/custom (call mounted and created once)', async t => {
t.true(mounts.length === 1)
})
+test('/_nuxt/ (access publicPath in spa mode)', async t => {
+ const { response: { statusCode, statusMessage } } = await t.throws(renderRoute('/_nuxt/'))
+ t.is(statusCode, 404)
+ t.is(statusMessage, 'ResourceNotFound')
+})
+
// Close server and ask nuxt to stop listening to file changes
test.after('Closing server and nuxt.js', t => {
nuxt.close()
diff --git a/test/utils.test.js b/test/utils.test.js
index e96253bb6a..c21244f7a6 100644
--- a/test/utils.test.js
+++ b/test/utils.test.js
@@ -1,6 +1,6 @@
import test from 'ava'
import ansiHTML from 'ansi-html'
-import { Utils } from '../index.js'
+import { Utils } from '..'
test('encodeHtml', t => {
const html = ' Hello'
@@ -70,6 +70,21 @@ test('promisifyRoute (fn => promise)', t => {
})
})
+test('promisifyRoute ((fn(args) => promise))', t => {
+ const fn = function (array) {
+ return new Promise((resolve) => {
+ resolve(array)
+ })
+ }
+ const array = [1, 2, 3]
+ const promise = Utils.promisifyRoute(fn, array)
+ t.is(typeof promise, 'object')
+ return promise
+ .then((res) => {
+ t.is(res, array)
+ })
+})
+
test('promisifyRoute (fn(cb) with error)', t => {
const fn = function (cb) {
cb(new Error('Error here'))
@@ -82,6 +97,19 @@ test('promisifyRoute (fn(cb) with error)', t => {
})
})
+test('promisifyRoute (fn(cb, args) with error)', t => {
+ const fn = function (cb, array) {
+ cb(new Error('Error here: ' + array.join()))
+ }
+ const array = [1, 2, 3, 4]
+ const promise = Utils.promisifyRoute(fn, array)
+ t.is(typeof promise, 'object')
+ return promise
+ .catch((e) => {
+ t.is(e.message, 'Error here: ' + array.join())
+ })
+})
+
test('promisifyRoute (fn(cb) with result)', t => {
const array = [1, 2, 3, 4]
const fn = function (cb) {
@@ -95,6 +123,21 @@ test('promisifyRoute (fn(cb) with result)', t => {
})
})
+test('promisifyRoute (fn(cb, args) with result)', t => {
+ const fn = function (cb, array, object) {
+ cb(null, { array, object })
+ }
+ const array = [1, 2, 3, 4]
+ const object = { a: 1 }
+ const promise = Utils.promisifyRoute(fn, array, object)
+ t.is(typeof promise, 'object')
+ return promise
+ .then((res) => {
+ t.is(res.array, array)
+ t.is(res.object, object)
+ })
+})
+
test('chainFn (mutate, mutate)', t => {
// Pass more than one argument to test that they're actually taken into account
const firstFn = function (obj, count) {
diff --git a/test/with-config.test.js b/test/with-config.test.js
index dadbcf664e..5904719f94 100644
--- a/test/with-config.test.js
+++ b/test/with-config.test.js
@@ -1,13 +1,14 @@
import test from 'ava'
import { resolve } from 'path'
import rp from 'request-promise-native'
-import { Nuxt, Builder } from '../index.js'
+import { Nuxt, Builder } from '..'
import { interceptLog, release } from './helpers/console'
const port = 4007
const url = (route) => 'http://localhost:' + port + route
let nuxt = null
+let builder = null
// Init nuxt.js and create server listening on localhost:4000
test.before('Init Nuxt.js', async t => {
@@ -16,11 +17,11 @@ test.before('Init Nuxt.js', async t => {
config.rootDir = rootDir
config.dev = false
nuxt = new Nuxt(config)
-
+ builder = new Builder(nuxt)
await interceptLog('building nuxt', async () => {
- await new Builder(nuxt).build()
- await nuxt.listen(port, 'localhost')
+ await builder.build()
})
+ await nuxt.listen(port, 'localhost')
})
test('/', async t => {
@@ -177,6 +178,17 @@ test('Check /test.txt should return 404', async t => {
t.is(err.response.statusCode, 404)
})
+test('Check build.styleResources for style-resources-loader', async t => {
+ const loaders = builder.styleLoader('scss')
+ const loader = loaders.find(l => l.loader === 'style-resources-loader')
+ t.is(typeof loader, 'object')
+ t.deepEqual(loader.options, {
+ patterns: [
+ '~/assets/pre-process.scss'
+ ]
+ })
+})
+
// Close server and ask nuxt to stop listening to file changes
test.after('Closing server and nuxt.js', async t => {
await nuxt.close()
diff --git a/yarn.lock b/yarn.lock
index c2ab174a62..3a13a1509e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -38,53 +38,54 @@
imurmurhash "^0.1.4"
slide "^1.1.5"
-"@babel/code-frame@7.0.0-beta.32", "@babel/code-frame@^7.0.0-beta.31":
- version "7.0.0-beta.32"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.32.tgz#04f231b8ec70370df830d9926ce0f5add074ec4c"
+"@babel/code-frame@7.0.0-beta.31":
+ version "7.0.0-beta.31"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.31.tgz#473d021ecc573a2cce1c07d5b509d5215f46ba35"
dependencies:
chalk "^2.0.0"
esutils "^2.0.2"
js-tokens "^3.0.0"
-"@babel/helper-function-name@7.0.0-beta.32":
- version "7.0.0-beta.32"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.32.tgz#6161af4419f1b4e3ed2d28c0c79c160e218be1f3"
+"@babel/helper-function-name@7.0.0-beta.31":
+ version "7.0.0-beta.31"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.31.tgz#afe63ad799209989348b1109b44feb66aa245f57"
dependencies:
- "@babel/helper-get-function-arity" "7.0.0-beta.32"
- "@babel/template" "7.0.0-beta.32"
- "@babel/types" "7.0.0-beta.32"
+ "@babel/helper-get-function-arity" "7.0.0-beta.31"
+ "@babel/template" "7.0.0-beta.31"
+ "@babel/traverse" "7.0.0-beta.31"
+ "@babel/types" "7.0.0-beta.31"
-"@babel/helper-get-function-arity@7.0.0-beta.32":
- version "7.0.0-beta.32"
- resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.32.tgz#93721a99db3757de575a83bab7c453299abca568"
+"@babel/helper-get-function-arity@7.0.0-beta.31":
+ version "7.0.0-beta.31"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.31.tgz#1176d79252741218e0aec872ada07efb2b37a493"
dependencies:
- "@babel/types" "7.0.0-beta.32"
+ "@babel/types" "7.0.0-beta.31"
-"@babel/template@7.0.0-beta.32":
- version "7.0.0-beta.32"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.32.tgz#e1d9fdbd2a7bcf128f2f920744a67dab18072495"
+"@babel/template@7.0.0-beta.31":
+ version "7.0.0-beta.31"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.31.tgz#577bb29389f6c497c3e7d014617e7d6713f68bda"
dependencies:
- "@babel/code-frame" "7.0.0-beta.32"
- "@babel/types" "7.0.0-beta.32"
- babylon "7.0.0-beta.32"
+ "@babel/code-frame" "7.0.0-beta.31"
+ "@babel/types" "7.0.0-beta.31"
+ babylon "7.0.0-beta.31"
lodash "^4.2.0"
-"@babel/traverse@^7.0.0-beta.31":
- version "7.0.0-beta.32"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.32.tgz#b78b754c6e1af3360626183738e4c7a05951bc99"
+"@babel/traverse@7.0.0-beta.31":
+ version "7.0.0-beta.31"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.31.tgz#db399499ad74aefda014f0c10321ab255134b1df"
dependencies:
- "@babel/code-frame" "7.0.0-beta.32"
- "@babel/helper-function-name" "7.0.0-beta.32"
- "@babel/types" "7.0.0-beta.32"
- babylon "7.0.0-beta.32"
+ "@babel/code-frame" "7.0.0-beta.31"
+ "@babel/helper-function-name" "7.0.0-beta.31"
+ "@babel/types" "7.0.0-beta.31"
+ babylon "7.0.0-beta.31"
debug "^3.0.1"
globals "^10.0.0"
invariant "^2.2.0"
lodash "^4.2.0"
-"@babel/types@7.0.0-beta.32", "@babel/types@^7.0.0-beta.31":
- version "7.0.0-beta.32"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.32.tgz#c317d0ecc89297b80bbcb2f50608e31f6452a5ff"
+"@babel/types@7.0.0-beta.31":
+ version "7.0.0-beta.31"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.31.tgz#42c9c86784f674c173fb21882ca9643334029de4"
dependencies:
esutils "^2.0.2"
lodash "^4.2.0"
@@ -109,8 +110,8 @@
resolved "https://registry.yarnpkg.com/@std/esm/-/esm-0.16.0.tgz#2a7a33ecb7f1701cebd4c87df6d0d945ed51f730"
"@types/node@*":
- version "8.0.53"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.53.tgz#396b35af826fa66aad472c8cb7b8d5e277f4e6d8"
+ version "8.0.58"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.58.tgz#5b3881c0be3a646874803fee3197ea7f1ed6df90"
abab@^1.0.3:
version "1.0.4"
@@ -175,8 +176,8 @@ ajv@^4.9.1:
json-stable-stringify "^1.0.1"
ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5, ajv@^5.2.3, ajv@^5.3.0:
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.4.0.tgz#32d1cf08dbc80c432f426f12e10b2511f6b46474"
+ version "5.5.1"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.1.tgz#b38bb8876d9e86bee994956a04e721e88b248eb2"
dependencies:
co "^4.6.0"
fast-deep-equal "^1.0.0"
@@ -209,10 +210,6 @@ ansi-escapes@^1.1.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
-ansi-escapes@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b"
-
ansi-escapes@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92"
@@ -311,6 +308,13 @@ array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+array-includes@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.7.0"
+
array-union@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
@@ -329,6 +333,10 @@ arrify@^1.0.0, arrify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+asap@~2.0.3:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
+
asn1.js@^4.0.0:
version "4.9.2"
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.2.tgz#8117ef4f7ed87cd8f89044b5bff97ac243a16c9a"
@@ -392,15 +400,15 @@ autoprefixer@^6.3.1:
postcss "^5.2.16"
postcss-value-parser "^3.2.3"
-autoprefixer@^7.1.1, autoprefixer@^7.1.6:
- version "7.1.6"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.6.tgz#fb933039f74af74a83e71225ce78d9fd58ba84d7"
+autoprefixer@^7.1.1, autoprefixer@^7.2.2:
+ version "7.2.2"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.2.tgz#082293b964be00602efacc59aa4aa7df5158bb6e"
dependencies:
- browserslist "^2.5.1"
- caniuse-lite "^1.0.30000748"
+ browserslist "^2.10.0"
+ caniuse-lite "^1.0.30000780"
normalize-range "^0.1.2"
num2fraction "^1.2.2"
- postcss "^6.0.13"
+ postcss "^6.0.14"
postcss-value-parser "^3.2.3"
ava-init@^0.2.0:
@@ -413,15 +421,15 @@ ava-init@^0.2.0:
read-pkg-up "^2.0.0"
write-pkg "^3.1.0"
-ava@^0.23.0:
- version "0.23.0"
- resolved "https://registry.yarnpkg.com/ava/-/ava-0.23.0.tgz#beed11730adef74a857761b62b8882bf16d5a038"
+ava@^0.24.0:
+ version "0.24.0"
+ resolved "https://registry.yarnpkg.com/ava/-/ava-0.24.0.tgz#dd0ab33a0b3ad2ac582f55e9a61caf8bcf7a9af1"
dependencies:
"@ava/babel-preset-stage-4" "^1.1.0"
"@ava/babel-preset-transform-test-files" "^3.0.0"
"@ava/write-file-atomic" "^2.2.0"
"@concordance/react" "^1.0.0"
- ansi-escapes "^2.0.0"
+ ansi-escapes "^3.0.0"
ansi-styles "^3.1.0"
arr-flatten "^1.0.1"
array-union "^1.0.1"
@@ -430,6 +438,8 @@ ava@^0.23.0:
auto-bind "^1.1.0"
ava-init "^0.2.0"
babel-core "^6.17.0"
+ babel-generator "^6.26.0"
+ babel-plugin-syntax-object-rest-spread "^6.13.0"
bluebird "^3.0.0"
caching-transform "^1.0.0"
chalk "^2.0.1"
@@ -463,7 +473,7 @@ ava@^0.23.0:
is-ci "^1.0.7"
is-generator-fn "^1.0.0"
is-obj "^1.0.0"
- is-observable "^0.2.0"
+ is-observable "^1.0.0"
is-promise "^2.1.0"
js-yaml "^3.8.2"
last-line-stream "^1.0.0"
@@ -487,12 +497,13 @@ ava@^0.23.0:
require-precompiled "^0.1.0"
resolve-cwd "^2.0.0"
safe-buffer "^5.1.1"
+ semver "^5.4.1"
slash "^1.0.0"
- source-map-support "^0.4.0"
+ source-map-support "^0.5.0"
stack-utils "^1.0.1"
strip-ansi "^4.0.0"
strip-bom-buf "^1.0.0"
- supports-color "^4.0.0"
+ supports-color "^5.0.0"
time-require "^0.1.2"
trim-off-newlines "^1.0.1"
unique-temp-dir "^1.0.0"
@@ -542,14 +553,14 @@ babel-core@^6.17.0, babel-core@^6.26.0:
slash "^1.0.0"
source-map "^0.5.6"
-babel-eslint@^8.0.1:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.0.2.tgz#e44fb9a037d749486071d52d65312f5c20aa7530"
+babel-eslint@^8.0.3:
+ version "8.0.3"
+ resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.0.3.tgz#f29ecf02336be438195325cd47c468da81ee4e98"
dependencies:
- "@babel/code-frame" "^7.0.0-beta.31"
- "@babel/traverse" "^7.0.0-beta.31"
- "@babel/types" "^7.0.0-beta.31"
- babylon "^7.0.0-beta.31"
+ "@babel/code-frame" "7.0.0-beta.31"
+ "@babel/traverse" "7.0.0-beta.31"
+ "@babel/types" "7.0.0-beta.31"
+ babylon "7.0.0-beta.31"
babel-generator@^6.1.0, babel-generator@^6.18.0, babel-generator@^6.26.0:
version "6.26.0"
@@ -659,8 +670,8 @@ babel-helper-replace-supers@^6.24.1:
babel-types "^6.24.1"
babel-helper-vue-jsx-merge-props@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.2.tgz#aceb1c373588279e2755ea1cfd35c22394fd33f8"
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6"
babel-helpers@^6.24.1:
version "6.24.1"
@@ -731,10 +742,6 @@ babel-plugin-jsx-v-model@^2.0.1:
html-tags "^2.0.0"
svg-tags "^1.0.0"
-babel-plugin-jsx-vue-functional@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-jsx-vue-functional/-/babel-plugin-jsx-vue-functional-2.1.0.tgz#5630a0c86fe1904d28c30465e6bf1cf71235a239"
-
babel-plugin-syntax-async-functions@^6.8.0:
version "6.13.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
@@ -751,7 +758,7 @@ 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"
-babel-plugin-syntax-object-rest-spread@^6.8.0:
+babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.8.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"
@@ -1018,25 +1025,24 @@ babel-preset-env@^1.6.0:
invariant "^2.2.2"
semver "^5.3.0"
-babel-preset-vue-app@^1.3.1:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/babel-preset-vue-app/-/babel-preset-vue-app-1.3.2.tgz#53e98ac012a4edd3f8356cc6aafa000a6e980292"
+babel-preset-vue-app@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-vue-app/-/babel-preset-vue-app-2.0.0.tgz#3849f42986dc6597f3c8aa21cc0bdfcc5fda4aa6"
dependencies:
babel-plugin-syntax-dynamic-import "^6.18.0"
babel-plugin-transform-object-rest-spread "^6.26.0"
babel-plugin-transform-runtime "^6.15.0"
babel-preset-env "^1.6.0"
- babel-preset-vue "^1.2.1"
+ babel-preset-vue "^2.0.0"
babel-runtime "^6.20.0"
-babel-preset-vue@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/babel-preset-vue/-/babel-preset-vue-1.2.1.tgz#b0de8977e0ce981fc6824cf0a537917a02a6fe87"
+babel-preset-vue@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-vue/-/babel-preset-vue-2.0.0.tgz#441f7cf75836a0fa908a5df62bc243f8f9109d2c"
dependencies:
babel-helper-vue-jsx-merge-props "^2.0.2"
babel-plugin-jsx-event-modifiers "^2.0.2"
babel-plugin-jsx-v-model "^2.0.1"
- babel-plugin-jsx-vue-functional "^2.1.0"
babel-plugin-syntax-jsx "^6.18.0"
babel-plugin-transform-vue-jsx "^3.5.0"
@@ -1092,9 +1098,9 @@ babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26
lodash "^4.17.4"
to-fast-properties "^1.0.3"
-babylon@7.0.0-beta.32, babylon@^7.0.0-beta.31:
- version "7.0.0-beta.32"
- resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.32.tgz#e9033cb077f64d6895f4125968b37dc0a8c3bc6e"
+babylon@7.0.0-beta.31:
+ version "7.0.0-beta.31"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.31.tgz#7ec10f81e0e456fd0f855ad60fa30c2ac454283f"
babylon@^6.1.0, babylon@^6.18.0:
version "6.18.0"
@@ -1182,8 +1188,8 @@ boom@5.x.x:
hoek "4.x.x"
boxen@^1.2.1:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.2.tgz#3f1d4032c30ffea9d4b02c322eaf2ea741dcbce5"
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"
dependencies:
ansi-align "^2.0.0"
camelcase "^4.0.0"
@@ -1191,7 +1197,7 @@ boxen@^1.2.1:
cli-boxes "^1.0.0"
string-width "^2.0.0"
term-size "^1.2.0"
- widest-line "^1.0.0"
+ widest-line "^2.0.0"
brace-expansion@^1.1.7:
version "1.1.8"
@@ -1216,12 +1222,6 @@ browser-process-hrtime@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e"
-browser-resolve@^1.11.0:
- version "1.11.2"
- resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce"
- dependencies:
- resolve "1.1.7"
-
browserify-aes@^1.0.0, browserify-aes@^1.0.4:
version "1.1.1"
resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f"
@@ -1281,12 +1281,12 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
caniuse-db "^1.0.30000639"
electron-to-chromium "^1.2.7"
-browserslist@^2.0.0, browserslist@^2.1.2, browserslist@^2.5.1:
- version "2.9.1"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.9.1.tgz#b72d3982ab01b5cd24da62ff6d45573886aff275"
+browserslist@^2.0.0, browserslist@^2.1.2, browserslist@^2.10.0:
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.10.0.tgz#bac5ee1cc69ca9d96403ffb8a3abdc5b6aed6346"
dependencies:
- caniuse-lite "^1.0.30000770"
- electron-to-chromium "^1.3.27"
+ caniuse-lite "^1.0.30000780"
+ electron-to-chromium "^1.3.28"
buf-compare@^1.0.0:
version "1.0.1"
@@ -1304,7 +1304,7 @@ buffer@^4.3.0:
ieee754 "^1.1.4"
isarray "^1.0.0"
-builtin-modules@^1.0.0, builtin-modules@^1.1.0, builtin-modules@^1.1.1:
+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"
@@ -1410,12 +1410,12 @@ caniuse-api@^2.0.0:
lodash.uniq "^4.5.0"
caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
- version "1.0.30000770"
- resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000770.tgz#cf68ae1cb8a82f6d3c35df41c62dc6973e470244"
+ version "1.0.30000782"
+ resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000782.tgz#d8815bce1578c350aced1132507301205e0fab53"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000758, caniuse-lite@^1.0.30000770:
- version "1.0.30000770"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000770.tgz#bc8e7f50b073273390db6ab357378909a14e9bdb"
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000780, caniuse-lite@^1.0.30000782:
+ version "1.0.30000782"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000782.tgz#5b82b8c385f25348745c471ca51320afb1b7f254"
capture-stack-trace@^1.0.0:
version "1.0.0"
@@ -1459,8 +1459,8 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0:
supports-color "^4.0.0"
chardet@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.0.tgz#0bbe1355ac44d7a3ed4a925707c4ef70f8190f6c"
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
chokidar@^1.4.2, chokidar@^1.7.0:
version "1.7.0"
@@ -1655,13 +1655,9 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
dependencies:
delayed-stream "~1.0.0"
-commander@2.11.x, commander@~2.11.0:
- version "2.11.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
-
-commander@^2.9.0:
- version "2.12.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.1.tgz#468635c4168d06145b9323356d1da84d14ac4a7a"
+commander@2.12.x, commander@^2.9.0, commander@~2.12.1:
+ version "2.12.2"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555"
common-path-prefix@^1.0.0:
version "1.0.0"
@@ -1818,9 +1814,13 @@ core-assert@^0.2.0:
buf-compare "^1.0.0"
is-error "^2.2.0"
+core-js@^1.0.0:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
+
core-js@^2.0.0, core-js@^2.4.0, core-js@^2.5.0:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b"
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e"
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
@@ -2088,7 +2088,7 @@ debug-log@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f"
-debug@2.6.9, debug@^2.2.0, debug@^2.4.1, debug@^2.6.8:
+debug@2.6.9, debug@^2.2.0, debug@^2.6.8:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
dependencies:
@@ -2201,12 +2201,11 @@ doctrine@1.5.0:
esutils "^2.0.2"
isarray "^1.0.0"
-doctrine@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
+doctrine@^2.0.0, doctrine@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.2.tgz#68f96ce8efc56cc42651f1faadb4f175273b0075"
dependencies:
esutils "^2.0.2"
- isarray "^1.0.0"
dom-converter@~0.1:
version "0.1.4"
@@ -2306,9 +2305,9 @@ ejs@^2.5.6:
version "2.5.7"
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a"
-electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.27:
- version "1.3.27"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d"
+electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.28:
+ version "1.3.28"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.28.tgz#8dd4e6458086644e9f9f0a1cf32e2a1f9dffd9ee"
elliptic@^6.0.0:
version "6.4.0"
@@ -2367,10 +2366,10 @@ equal-length@^1.0.0:
resolved "https://registry.yarnpkg.com/equal-length/-/equal-length-1.0.1.tgz#21ca112d48ab24b4e1e7ffc0e5339d31fdfc274c"
errno@^0.1.3, errno@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.5.tgz#a563781a6052bc2c9ccd89e8cef0eb9506e0c321"
dependencies:
- prr "~0.0.0"
+ prr "~1.0.1"
error-ex@^1.2.0:
version "1.3.1"
@@ -2384,6 +2383,24 @@ error-stack-parser@^2.0.0:
dependencies:
stackframe "^1.0.3"
+es-abstract@^1.7.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864"
+ dependencies:
+ es-to-primitive "^1.1.1"
+ function-bind "^1.1.1"
+ has "^1.0.1"
+ is-callable "^1.1.3"
+ is-regex "^1.0.4"
+
+es-to-primitive@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
+ dependencies:
+ is-callable "^1.1.1"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.1"
+
es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
version "0.10.37"
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.37.tgz#0ee741d148b80069ba27d020393756af257defc3"
@@ -2478,9 +2495,13 @@ escope@^3.6.0:
esrecurse "^4.1.0"
estraverse "^4.1.1"
-eslint-config-standard@^10.2.1:
- version "10.2.1"
- resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591"
+eslint-config-standard-jsx@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz#009e53c4ddb1e9ee70b4650ffe63a7f39f8836e1"
+
+eslint-config-standard@^11.0.0-beta.0:
+ version "11.0.0-beta.0"
+ resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-11.0.0-beta.0.tgz#f8afe69803d95c685a4b8392b8793188eb03cbb3"
eslint-import-resolver-node@^0.3.1:
version "0.3.1"
@@ -2530,6 +2551,15 @@ eslint-plugin-promise@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.6.0.tgz#54b7658c8f454813dc2a870aff8152ec4969ba75"
+eslint-plugin-react@^7.5.1:
+ version "7.5.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.5.1.tgz#52e56e8d80c810de158859ef07b880d2f56ee30b"
+ dependencies:
+ doctrine "^2.0.0"
+ has "^1.0.1"
+ jsx-ast-utils "^2.0.0"
+ prop-types "^15.6.0"
+
eslint-plugin-standard@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2"
@@ -2541,9 +2571,9 @@ eslint-scope@^3.7.1:
esrecurse "^4.1.0"
estraverse "^4.1.1"
-eslint@^4.10.0:
- version "4.11.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.11.0.tgz#39a8c82bc0a3783adf5a39fa27fdd9d36fac9a34"
+eslint@^4.13.1:
+ version "4.13.1"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.13.1.tgz#0055e0014464c7eb7878caf549ef2941992b444f"
dependencies:
ajv "^5.3.0"
babel-code-frame "^6.22.0"
@@ -2551,7 +2581,7 @@ eslint@^4.10.0:
concat-stream "^1.6.0"
cross-spawn "^5.1.0"
debug "^3.0.1"
- doctrine "^2.0.0"
+ doctrine "^2.0.2"
eslint-scope "^3.7.1"
espree "^3.5.2"
esquery "^1.0.0"
@@ -2560,7 +2590,7 @@ eslint@^4.10.0:
file-entry-cache "^2.0.0"
functional-red-black-tree "^1.0.1"
glob "^7.1.2"
- globals "^9.17.0"
+ globals "^11.0.1"
ignore "^3.3.3"
imurmurhash "^0.1.4"
inquirer "^3.0.6"
@@ -2634,18 +2664,6 @@ estraverse@^4.0.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"
-estree-walker@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e"
-
-estree-walker@^0.3.0:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa"
-
-estree-walker@^0.5.0:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.1.tgz#64fc375053abc6f57d73e9bd2f004644ad3c5854"
-
esutils@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
@@ -2767,10 +2785,14 @@ extract-zip@^1.6.5:
mkdirp "0.5.0"
yauzl "2.4.1"
-extsprintf@1.3.0, extsprintf@^1.2.0:
+extsprintf@1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
+extsprintf@^1.2.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
+
fast-deep-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
@@ -2791,6 +2813,18 @@ fastparse@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8"
+fbjs@^0.8.16:
+ version "0.8.16"
+ resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"
+ dependencies:
+ core-js "^1.0.0"
+ isomorphic-fetch "^2.1.1"
+ loose-envify "^1.0.0"
+ object-assign "^4.1.0"
+ promise "^7.1.1"
+ setimmediate "^1.0.5"
+ ua-parser-js "^0.7.9"
+
fd-slicer@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
@@ -2976,9 +3010,9 @@ from2@^2.1.0:
inherits "^2.0.1"
readable-stream "^2.0.0"
-fs-extra@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b"
+fs-extra@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd"
dependencies:
graceful-fs "^4.1.2"
jsonfile "^4.0.0"
@@ -3021,7 +3055,7 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
mkdirp ">=0.5 0"
rimraf "2"
-function-bind@^1.0.2, function-bind@^1.1.0:
+function-bind@^1.0.2, 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"
@@ -3102,7 +3136,11 @@ globals@^10.0.0:
version "10.4.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-10.4.0.tgz#5c477388b128a9e4c5c5d01c7a2aca68c68b2da7"
-globals@^9.17.0, globals@^9.18.0:
+globals@^11.0.1:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.1.0.tgz#632644457f5f0e3ae711807183700ebf2e4633e4"
+
+globals@^9.18.0:
version "9.18.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
@@ -3304,18 +3342,18 @@ html-entities@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
-html-minifier@^3.2.3, html-minifier@^3.5.6:
- version "3.5.6"
- resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.6.tgz#7e4e661a09999599c7d8e8a2b8d7fb7430bb5c3e"
+html-minifier@3.5.7, html-minifier@^3.2.3:
+ version "3.5.7"
+ resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.7.tgz#511e69bb5a8e7677d1012ebe03819aa02ca06208"
dependencies:
camel-case "3.0.x"
clean-css "4.1.x"
- commander "2.11.x"
+ commander "2.12.x"
he "1.1.x"
ncname "1.0.x"
param-case "2.1.x"
relateurl "0.2.x"
- uglify-js "3.1.x"
+ uglify-js "3.2.x"
html-tags@^2.0.0:
version "2.0.0"
@@ -3382,11 +3420,11 @@ https-browserify@^1.0.0:
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
https-proxy-agent@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.1.0.tgz#1391bee7fd66aeabc0df2a1fa90f58954f43e443"
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.1.1.tgz#a7ce4382a1ba8266ee848578778122d491260fd9"
dependencies:
agent-base "^4.1.0"
- debug "^2.4.1"
+ debug "^3.1.0"
hullabaloo-config-manager@^1.1.0:
version "1.1.1"
@@ -3527,8 +3565,8 @@ inquirer@^3.0.6:
through "^2.3.6"
interpret@^1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
invariant@^2.2.0, invariant@^2.2.2:
version "2.2.2"
@@ -3576,12 +3614,20 @@ is-builtin-module@^1.0.0:
dependencies:
builtin-modules "^1.0.0"
+is-callable@^1.1.1, is-callable@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
+
is-ci@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e"
dependencies:
ci-info "^1.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"
+
is-directory@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
@@ -3651,10 +3697,6 @@ is-installed-globally@^0.1.0:
global-dirs "^0.1.0"
is-path-inside "^1.0.0"
-is-module@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
-
is-npm@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
@@ -3681,6 +3723,12 @@ is-observable@^0.2.0:
dependencies:
symbol-observable "^0.2.2"
+is-observable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e"
+ dependencies:
+ symbol-observable "^1.1.0"
+
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"
@@ -3692,8 +3740,8 @@ is-path-in-cwd@^1.0.0:
is-path-inside "^1.0.0"
is-path-inside@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f"
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
dependencies:
path-is-inside "^1.0.1"
@@ -3717,6 +3765,12 @@ is-redirect@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
+is-regex@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+ dependencies:
+ has "^1.0.1"
+
is-resolvable@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
@@ -3737,6 +3791,10 @@ is-svg@^2.0.0:
dependencies:
html-comment-regex "^1.1.0"
+is-symbol@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
+
is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
@@ -3775,6 +3833,13 @@ isobject@^2.0.0:
dependencies:
isarray "1.0.0"
+isomorphic-fetch@^2.1.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
+ 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"
@@ -3827,8 +3892,8 @@ istanbul-reports@^1.1.3:
handlebars "^4.0.3"
js-base64@^2.1.9:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.3.2.tgz#a79a923666372b580f8e27f51845c6f7e8fbfbaf"
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.0.tgz#9e566fee624751a1d720c966cd6226d29d4025aa"
js-string-escape@^1.0.1:
version "1.0.1"
@@ -3856,9 +3921,9 @@ jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
-jsdom@^11.3.0:
- version "11.4.0"
- resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.4.0.tgz#a3941a9699cbb0d61f8ab86f6f28f4ad5ea60d04"
+jsdom@^11.5.1:
+ version "11.5.1"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.5.1.tgz#5df753b8d0bca20142ce21f4f6c039f99a992929"
dependencies:
abab "^1.0.3"
acorn "^5.1.2"
@@ -3871,6 +3936,7 @@ jsdom@^11.3.0:
domexception "^1.0.0"
escodegen "^1.9.0"
html-encoding-sniffer "^1.0.1"
+ left-pad "^1.2.0"
nwmatcher "^1.4.3"
parse5 "^3.0.2"
pn "^1.0.0"
@@ -3941,6 +4007,12 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.10.0"
+jsx-ast-utils@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f"
+ dependencies:
+ array-includes "^3.0.3"
+
kind-of@^3.0.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
@@ -3975,6 +4047,10 @@ lcid@^1.0.0:
dependencies:
invert-kv "^1.0.0"
+left-pad@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.2.0.tgz#d30a73c6b8201d8f7d8e7956ba9616087a68e0ee"
+
levn@^0.3.0, levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
@@ -4110,7 +4186,7 @@ longest@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
-loose-envify@^1.0.0:
+loose-envify@^1.0.0, loose-envify@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
dependencies:
@@ -4142,12 +4218,6 @@ macaddress@^0.2.8:
version "0.2.8"
resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
-magic-string@^0.22.4:
- version "0.22.4"
- resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.4.tgz#31039b4e40366395618c1d6cf8193c53917475ff"
- dependencies:
- vlq "^0.2.1"
-
make-dir@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51"
@@ -4263,8 +4333,8 @@ miller-rabin@^4.0.0:
brorand "^1.0.1"
"mime-db@>= 1.30.0 < 2":
- version "1.31.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.31.0.tgz#a49cd8f3ebf3ed1a482b60561d9105ad40ca74cb"
+ version "1.32.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.32.0.tgz#485b3848b01a3cda5f968b4882c0771e58e09414"
mime-db@~1.30.0:
version "1.30.0"
@@ -4280,9 +4350,9 @@ mime@1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
-mime@^1.3.4, mime@^1.4.1:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.5.0.tgz#59c20e03ae116089edeb7d3b34a6788c5b3cccea"
+mime@^1.3.4, mime@^1.4.1, mime@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
mimic-fn@^1.0.0:
version "1.1.0"
@@ -4352,10 +4422,14 @@ move-concurrently@^1.0.1:
rimraf "^2.5.4"
run-queue "^1.0.3"
-ms@2.0.0, ms@^2.0.0:
+ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ms@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
+
multimatch@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b"
@@ -4404,6 +4478,13 @@ node-fetch@1.6.3:
encoding "^0.1.11"
is-stream "^1.0.1"
+node-fetch@^1.0.1:
+ version "1.7.3"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
+ dependencies:
+ encoding "^0.1.11"
+ is-stream "^1.0.1"
+
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"
@@ -5412,9 +5493,9 @@ postcss-unique-selectors@^2.0.2:
postcss "^5.0.4"
uniqs "^2.0.0"
-postcss-url@^7.2.1:
- version "7.2.1"
- resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-7.2.1.tgz#bf47ff1b5395538567cea19ef3241a70fb925f5c"
+postcss-url@^7.3.0:
+ version "7.3.0"
+ resolved "https://registry.yarnpkg.com/postcss-url/-/postcss-url-7.3.0.tgz#cf2f45e06743cf43cfea25309f81cbc003dc783f"
dependencies:
mime "^1.4.1"
minimatch "^3.0.4"
@@ -5464,8 +5545,8 @@ preserve@^0.2.0:
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
prettier@^1.7.0:
- version "1.8.2"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.8.2.tgz#bff83e7fd573933c607875e5ba3abbdffb96aeb8"
+ version "1.9.2"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.9.2.tgz#96bc2132f7a32338e6078aeb29727178c6335827"
pretty-error@^2.0.2, pretty-error@^2.1.1:
version "2.1.1"
@@ -5519,6 +5600,20 @@ promise-inflight@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
+promise@^7.1.1:
+ version "7.3.1"
+ resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
+ dependencies:
+ asap "~2.0.3"
+
+prop-types@^15.6.0:
+ version "15.6.0"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856"
+ dependencies:
+ fbjs "^0.8.16"
+ loose-envify "^1.3.1"
+ object-assign "^4.1.1"
+
proxy-addr@~2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.2.tgz#6571504f47bb988ec8180253f85dd7e14952bdec"
@@ -5530,9 +5625,9 @@ proxy-from-env@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee"
-prr@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
pseudomap@^1.0.2:
version "1.0.2"
@@ -5739,8 +5834,8 @@ reduce-css-calc@^1.2.6, reduce-css-calc@^1.2.7:
reduce-function-call "^1.0.1"
reduce-css-calc@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.1.1.tgz#f4ecd7a00ec3e5683773f208067ad7da117b9db0"
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.1.3.tgz#63c4c6325ffbbf4ea6c23f1d4deb47c3953f3b81"
dependencies:
css-unit-converter "^1.1.1"
postcss-value-parser "^3.3.0"
@@ -5760,8 +5855,8 @@ regenerator-runtime@^0.10.0:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
regenerator-runtime@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1"
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
regenerator-transform@^0.10.0:
version "0.10.1"
@@ -5938,10 +6033,6 @@ require-precompiled@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/require-precompiled/-/require-precompiled-0.1.0.tgz#5a1b52eb70ebed43eb982e974c85ab59571e56fa"
-require-relative@0.8.7:
- version "0.8.7"
- resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de"
-
require-uncached@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
@@ -5967,11 +6058,7 @@ resolve-from@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
-resolve@1.1.7:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
-
-resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.3, resolve@^1.4.0:
+resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.3, resolve@^1.4.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
dependencies:
@@ -5998,7 +6085,7 @@ right-align@^0.1.1:
dependencies:
align-text "^0.1.1"
-rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
+rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1:
version "2.6.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
dependencies:
@@ -6011,71 +6098,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
hash-base "^2.0.0"
inherits "^2.0.1"
-rollup-plugin-alias@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/rollup-plugin-alias/-/rollup-plugin-alias-1.4.0.tgz#120cba7c46621c03138f0ca6fd5dd2ade9872db9"
- dependencies:
- slash "^1.0.0"
-
-rollup-plugin-babel@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-3.0.2.tgz#a2765dea0eaa8aece351c983573300d17497495b"
- dependencies:
- rollup-pluginutils "^1.5.0"
-
-rollup-plugin-commonjs@^8.2.6:
- version "8.2.6"
- resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.2.6.tgz#27e5b9069ff94005bb01e01bb46a1e4873784677"
- dependencies:
- acorn "^5.2.1"
- estree-walker "^0.5.0"
- magic-string "^0.22.4"
- resolve "^1.4.0"
- rollup-pluginutils "^2.0.1"
-
-rollup-plugin-node-resolve@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.0.tgz#8b897c4c3030d5001277b0514b25d2ca09683ee0"
- dependencies:
- browser-resolve "^1.11.0"
- builtin-modules "^1.1.0"
- is-module "^1.0.0"
- resolve "^1.1.6"
-
-rollup-plugin-replace@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-2.0.0.tgz#19074089c8ed57184b8cc64e967a03d095119277"
- dependencies:
- magic-string "^0.22.4"
- minimatch "^3.0.2"
- rollup-pluginutils "^2.0.1"
-
-rollup-pluginutils@^1.5.0:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408"
- dependencies:
- estree-walker "^0.2.1"
- minimatch "^3.0.2"
-
-rollup-pluginutils@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz#7ec95b3573f6543a46a6461bd9a7c544525d0fc0"
- dependencies:
- estree-walker "^0.3.0"
- micromatch "^2.3.11"
-
-rollup-watch@^4.3.1:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/rollup-watch/-/rollup-watch-4.3.1.tgz#5aa1eaeab787addf368905d102b39d6fc5ce4a8b"
- dependencies:
- chokidar "^1.7.0"
- require-relative "0.8.7"
- rollup-pluginutils "^2.0.1"
-
-rollup@^0.51.7:
- version "0.51.8"
- resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.51.8.tgz#58bd0b642885f4770b5f93cc64f14e4233c2236d"
-
run-async@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
@@ -6122,7 +6144,7 @@ semver-diff@^2.0.0:
dependencies:
semver "^5.0.3"
-"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0:
+"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1:
version "5.4.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
@@ -6173,7 +6195,7 @@ set-immediate-shim@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
-setimmediate@^1.0.4:
+setimmediate@^1.0.4, setimmediate@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
@@ -6254,7 +6276,7 @@ source-list-map@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085"
-source-map-support@^0.4.0, source-map-support@^0.4.15:
+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"
dependencies:
@@ -6476,13 +6498,12 @@ 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"
-style-resources-loader@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/style-resources-loader/-/style-resources-loader-0.3.0.tgz#e57aca9baa11bad8e3ab28f415eaf565d6a113bc"
+style-resources-loader@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/style-resources-loader/-/style-resources-loader-1.0.0.tgz#a2290ca7366e4d1f90c93d304a55194bfd2e8dc0"
dependencies:
glob "^7.1.2"
loader-utils "^1.1.0"
- webpack "^3.8.1"
supports-color@^2.0.0:
version "2.0.0"
@@ -6500,6 +6521,12 @@ supports-color@^4.0.0, supports-color@^4.2.1, supports-color@^4.4.0:
dependencies:
has-flag "^2.0.0"
+supports-color@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5"
+ dependencies:
+ has-flag "^2.0.0"
+
svg-tags@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
@@ -6520,9 +6547,9 @@ symbol-observable@^0.2.2:
version "0.2.4"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40"
-symbol-observable@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
+symbol-observable@^1.0.4, symbol-observable@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.1.0.tgz#5c68fd8d54115d9dfb72a84720549222e8db9b32"
symbol-tree@^3.2.1:
version "3.2.2"
@@ -6703,18 +6730,22 @@ typedarray@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
-uglify-es@^3.1.3:
- version "3.1.10"
- resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.1.10.tgz#f1840c3b52771d17555a02ce158cf46f689384bd"
+ua-parser-js@^0.7.9:
+ version "0.7.17"
+ resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac"
+
+uglify-es@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.2.2.tgz#15c62b7775002c81b7987a1c49ecd3f126cace73"
dependencies:
- commander "~2.11.0"
+ commander "~2.12.1"
source-map "~0.6.1"
-uglify-js@3.1.x, uglify-js@^3.1.7:
- version "3.1.10"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.10.tgz#c4a5f9b5c6276b40cb971c1d97c9eeb26af9509c"
+uglify-js@3.2.x, uglify-js@^3.2.2:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.2.2.tgz#870e4b34ed733d179284f9998efd3293f7fd73f6"
dependencies:
- commander "~2.11.0"
+ commander "~2.12.1"
source-map "~0.6.1"
uglify-js@^2.6, uglify-js@^2.8.29:
@@ -6738,15 +6769,15 @@ uglifyjs-webpack-plugin@^0.4.6:
uglify-js "^2.8.29"
webpack-sources "^1.0.1"
-uglifyjs-webpack-plugin@^1.0.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.1.tgz#6167c5aae218ee8109de8920bb769b8acbc55d03"
+uglifyjs-webpack-plugin@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.2.tgz#8a9abc238d01a33daaf86fa9a84c7ebc1e67b0f9"
dependencies:
cacache "^10.0.0"
find-cache-dir "^1.0.0"
schema-utils "^0.3.0"
source-map "^0.6.1"
- uglify-es "^3.1.3"
+ uglify-es "^3.2.0"
webpack-sources "^1.0.1"
worker-farm "^1.4.1"
@@ -6917,10 +6948,6 @@ viewport-dimensions@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/viewport-dimensions/-/viewport-dimensions-0.2.0.tgz#de740747db5387fd1725f5175e91bac76afdf36c"
-vlq@^0.2.1:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26"
-
vm-browserify@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
@@ -6949,9 +6976,9 @@ vue-loader@^13.5.0:
vue-style-loader "^3.0.0"
vue-template-es2015-compiler "^1.6.0"
-vue-meta@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/vue-meta/-/vue-meta-1.3.1.tgz#1c46c9af6119c61934a5b2783538b062c03be2c7"
+vue-meta@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/vue-meta/-/vue-meta-1.4.0.tgz#8f3bee11b73a7c035b2edc6679186fd81989e36d"
dependencies:
deepmerge "^2.0.0"
lodash.isplainobject "^4.0.6"
@@ -6961,9 +6988,9 @@ vue-router@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.0.1.tgz#d9b05ad9c7420ba0f626d6500d693e60092cc1e9"
-vue-server-renderer@^2.5.6:
- version "2.5.8"
- resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.5.8.tgz#22ed81fdfc54329304900d0e1f7dcb279888f012"
+vue-server-renderer@^2.5.9:
+ version "2.5.9"
+ resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.5.9.tgz#936e42ba9a8d31ada2da36f29b7386c787908489"
dependencies:
chalk "^1.1.3"
hash-sum "^1.0.2"
@@ -6981,9 +7008,9 @@ vue-style-loader@^3.0.0:
hash-sum "^1.0.2"
loader-utils "^1.0.2"
-vue-template-compiler@^2.5.6:
- version "2.5.8"
- resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.5.8.tgz#826ae77e1d5faa7fa5fca554f33872dde38de674"
+vue-template-compiler@^2.5.9:
+ version "2.5.9"
+ resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.5.9.tgz#7fabc73c8d3d12d32340cd86c5fc33e00e86d686"
dependencies:
de-indent "^1.0.2"
he "^1.1.0"
@@ -6992,9 +7019,9 @@ vue-template-es2015-compiler@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz#dc42697133302ce3017524356a6c61b7b69b4a18"
-vue@^2.5.6:
- version "2.5.8"
- resolved "https://registry.yarnpkg.com/vue/-/vue-2.5.8.tgz#f855c1c27255184a82225f4bef225473e8faf15b"
+vue@^2.5.9:
+ version "2.5.9"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-2.5.9.tgz#b2380cd040915dca69881dafd121d760952e65f7"
vuex@^3.0.1:
version "3.0.1"
@@ -7028,19 +7055,19 @@ webpack-bundle-analyzer@^2.9.0:
opener "^1.4.3"
ws "^3.3.1"
-webpack-dev-middleware@^1.12.0:
- version "1.12.1"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.1.tgz#338be3ca930973be1c2ce07d84d275e997e1a25a"
+webpack-dev-middleware@^1.12.2:
+ version "1.12.2"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e"
dependencies:
memory-fs "~0.4.1"
- mime "^1.4.1"
+ mime "^1.5.0"
path-is-absolute "^1.0.0"
range-parser "^1.0.3"
time-stamp "^2.0.0"
-webpack-hot-middleware@^2.20.0:
- version "2.20.0"
- resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.20.0.tgz#cb896d837758b6408fe0afeeafdc0e5316b15319"
+webpack-hot-middleware@^2.21.0:
+ version "2.21.0"
+ resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.21.0.tgz#7b3c113a7a4b301c91e0749573c7aab28b414b52"
dependencies:
ansi-html "0.0.7"
html-entities "^1.2.0"
@@ -7052,15 +7079,15 @@ webpack-node-externals@^1.6.0:
resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz#232c62ec6092b100635a3d29d83c1747128df9bd"
webpack-sources@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.2.tgz#d0148ec083b3b5ccef1035a6b3ec16442983b27a"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54"
dependencies:
source-list-map "^2.0.0"
source-map "~0.6.1"
-webpack@^3.8.1:
- version "3.8.1"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.8.1.tgz#b16968a81100abe61608b0153c9159ef8bb2bd83"
+webpack@^3.10.0:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.10.0.tgz#5291b875078cf2abf42bdd23afe3f8f96c17d725"
dependencies:
acorn "^5.0.0"
acorn-dynamic-import "^2.0.0"
@@ -7095,9 +7122,13 @@ whatwg-encoding@^1.0.1:
dependencies:
iconv-lite "0.4.19"
+whatwg-fetch@>=0.10.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"
+
whatwg-url@^6.3.0:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.3.0.tgz#597ee5488371abe7922c843397ddec1ae94c048d"
+ version "6.4.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.0.tgz#08fdf2b9e872783a7a1f6216260a1d66cc722e08"
dependencies:
lodash.sortby "^4.7.0"
tr46 "^1.0.0"
@@ -7123,11 +7154,11 @@ wide-align@^1.1.0:
dependencies:
string-width "^1.0.2"
-widest-line@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c"
+widest-line@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273"
dependencies:
- string-width "^1.0.1"
+ string-width "^2.1.1"
window-size@0.1.0:
version "0.1.0"
|