From 2816c5687d92ee2be847109ec9158e1559646a79 Mon Sep 17 00:00:00 2001
From: outofcash
Date: Wed, 4 Oct 2017 23:53:12 +0200
Subject: [PATCH 01/52] Support for .coffee files for store and middlewares
---
lib/app/middleware.js | 4 ++--
lib/app/store.js | 4 ++--
lib/builder/webpack/base.config.js | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/lib/app/middleware.js b/lib/app/middleware.js
index 57e04073cb..30d6482c4a 100644
--- a/lib/app/middleware.js
+++ b/lib/app/middleware.js
@@ -1,5 +1,5 @@
<% if (middleware) { %>
-let files = require.context('@/middleware', false, /^\.\/.*\.(js|ts)$/)
+let files = require.context('@/middleware', false, /^\.\/.*\.(js|ts|coffee)$/)
let filenames = files.keys()
function getModule (filename) {
@@ -12,7 +12,7 @@ let middleware = {}
// Generate the middleware
for (let filename of filenames) {
- let name = filename.replace(/^\.\//, '').replace(/\.(js|ts)$/, '')
+ let name = filename.replace(/^\.\//, '').replace(/\.(js|ts|coffee)$/, '')
middleware[name] = getModule(filename)
}
diff --git a/lib/app/store.js b/lib/app/store.js
index d1e59efcd6..308b3bc88d 100644
--- a/lib/app/store.js
+++ b/lib/app/store.js
@@ -4,7 +4,7 @@ import Vuex from 'vuex'
Vue.use(Vuex)
// Recursive find files in {srcDir}/store
-const files = require.context('@/store', true, /^\.\/.*\.(js|ts)$/)
+const files = require.context('@/store', true, /^\.\/.*\.(js|ts|coffee)$/)
const filenames = files.keys()
// Store
@@ -30,7 +30,7 @@ if (typeof storeData !== 'function') {
}
for (let filename of filenames) {
- let name = filename.replace(/^\.\//, '').replace(/\.(js|ts)$/, '')
+ let name = filename.replace(/^\.\//, '').replace(/\.(js|ts|coffee)$/, '')
if (name === 'index') continue
let namePath = name.split(/\//)
diff --git a/lib/builder/webpack/base.config.js b/lib/builder/webpack/base.config.js
index 3da78d2640..6c14649c13 100644
--- a/lib/builder/webpack/base.config.js
+++ b/lib/builder/webpack/base.config.js
@@ -35,7 +35,7 @@ export default function webpackBaseConfig (name) {
hints: this.options.dev ? false : 'warning'
},
resolve: {
- extensions: ['.js', '.json', '.vue', '.ts'],
+ extensions: ['.js', '.json', '.vue', '.ts', '.coffee'],
alias: {
'~': join(this.options.srcDir),
'~~': join(this.options.rootDir),
@@ -43,7 +43,7 @@ export default function webpackBaseConfig (name) {
'@@': join(this.options.rootDir),
// Used by vue-loader so we can use in templates
- // with
+ // with
'assets': join(this.options.srcDir, 'assets'),
'static': join(this.options.srcDir, 'static')
},
From a461ae83ec515e99cd62de18a2c4ded2f5381ef4 Mon Sep 17 00:00:00 2001
From: outofcash
Date: Fri, 13 Oct 2017 14:10:24 +0200
Subject: [PATCH 02/52] CoffeeScript example.
---
examples/with-coffee/.editorconfig | 13 ++++
examples/with-coffee/.eslintrc.js | 16 +++++
examples/with-coffee/.gitignore | 11 +++
examples/with-coffee/README.md | 22 ++++++
examples/with-coffee/assets/README.md | 8 +++
examples/with-coffee/components/Logo.vue | 79 ++++++++++++++++++++++
examples/with-coffee/components/README.md | 6 ++
examples/with-coffee/layouts/README.md | 8 +++
examples/with-coffee/layouts/default.vue | 52 ++++++++++++++
examples/with-coffee/middleware/README.md | 9 +++
examples/with-coffee/nuxt.config.js | 31 +++++++++
examples/with-coffee/package.json | 31 +++++++++
examples/with-coffee/pages/README.md | 7 ++
examples/with-coffee/pages/index.vue | 58 ++++++++++++++++
examples/with-coffee/plugins/README.md | 8 +++
examples/with-coffee/static/README.md | 11 +++
examples/with-coffee/static/favicon.ico | Bin 0 -> 1150 bytes
examples/with-coffee/store/README.md | 10 +++
examples/with-coffee/store/index.coffee | 2 +
19 files changed, 382 insertions(+)
create mode 100644 examples/with-coffee/.editorconfig
create mode 100644 examples/with-coffee/.eslintrc.js
create mode 100644 examples/with-coffee/.gitignore
create mode 100644 examples/with-coffee/README.md
create mode 100644 examples/with-coffee/assets/README.md
create mode 100644 examples/with-coffee/components/Logo.vue
create mode 100644 examples/with-coffee/components/README.md
create mode 100644 examples/with-coffee/layouts/README.md
create mode 100644 examples/with-coffee/layouts/default.vue
create mode 100644 examples/with-coffee/middleware/README.md
create mode 100644 examples/with-coffee/nuxt.config.js
create mode 100644 examples/with-coffee/package.json
create mode 100644 examples/with-coffee/pages/README.md
create mode 100644 examples/with-coffee/pages/index.vue
create mode 100644 examples/with-coffee/plugins/README.md
create mode 100644 examples/with-coffee/static/README.md
create mode 100644 examples/with-coffee/static/favicon.ico
create mode 100644 examples/with-coffee/store/README.md
create mode 100644 examples/with-coffee/store/index.coffee
diff --git a/examples/with-coffee/.editorconfig b/examples/with-coffee/.editorconfig
new file mode 100644
index 0000000000..9142239769
--- /dev/null
+++ b/examples/with-coffee/.editorconfig
@@ -0,0 +1,13 @@
+# editorconfig.org
+root = true
+
+[*]
+indent_size = 2
+indent_style = space
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/examples/with-coffee/.eslintrc.js b/examples/with-coffee/.eslintrc.js
new file mode 100644
index 0000000000..b44e099cbb
--- /dev/null
+++ b/examples/with-coffee/.eslintrc.js
@@ -0,0 +1,16 @@
+module.exports = {
+ root: true,
+ parser: 'babel-eslint',
+ env: {
+ browser: true,
+ node: true
+ },
+ extends: 'standard',
+ // required to lint *.vue files
+ plugins: [
+ 'html'
+ ],
+ // add your custom rules here
+ rules: {},
+ globals: {}
+}
diff --git a/examples/with-coffee/.gitignore b/examples/with-coffee/.gitignore
new file mode 100644
index 0000000000..7ee6115053
--- /dev/null
+++ b/examples/with-coffee/.gitignore
@@ -0,0 +1,11 @@
+# dependencies
+node_modules
+
+# logs
+npm-debug.log
+
+# Nuxt build
+.nuxt
+
+# Nuxt generate
+dist
diff --git a/examples/with-coffee/README.md b/examples/with-coffee/README.md
new file mode 100644
index 0000000000..601a17bbb6
--- /dev/null
+++ b/examples/with-coffee/README.md
@@ -0,0 +1,22 @@
+# with-coffee
+
+> Nuxt.js project
+
+## Build Setup
+
+``` bash
+# install dependencies
+$ npm install # Or yarn install
+
+# serve with hot reload at localhost:3000
+$ npm run dev
+
+# build for production and launch server
+$ npm run build
+$ npm start
+
+# generate static project
+$ npm run generate
+```
+
+For detailed explanation on how things work, checkout the [Nuxt.js docs](https://github.com/nuxt/nuxt.js).
diff --git a/examples/with-coffee/assets/README.md b/examples/with-coffee/assets/README.md
new file mode 100644
index 0000000000..c67cf2e260
--- /dev/null
+++ b/examples/with-coffee/assets/README.md
@@ -0,0 +1,8 @@
+# ASSETS
+
+This directory contains your un-compiled assets such as LESS, SASS, or JavaScript.
+
+More information about the usage of this directory in the documentation:
+https://nuxtjs.org/guide/assets#webpacked
+
+**This directory is not required, you can delete it if you don't want to use it.**
diff --git a/examples/with-coffee/components/Logo.vue b/examples/with-coffee/components/Logo.vue
new file mode 100644
index 0000000000..0b8733dc9b
--- /dev/null
+++ b/examples/with-coffee/components/Logo.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
diff --git a/examples/with-coffee/components/README.md b/examples/with-coffee/components/README.md
new file mode 100644
index 0000000000..d7768ddb5f
--- /dev/null
+++ b/examples/with-coffee/components/README.md
@@ -0,0 +1,6 @@
+# COMPONENTS
+
+The components directory contains your Vue.js Components.
+Nuxt.js doesn't supercharge these components.
+
+**This directory is not required, you can delete it if you don't want to use it.**
diff --git a/examples/with-coffee/layouts/README.md b/examples/with-coffee/layouts/README.md
new file mode 100644
index 0000000000..83d09caee8
--- /dev/null
+++ b/examples/with-coffee/layouts/README.md
@@ -0,0 +1,8 @@
+# LAYOUTS
+
+This directory contains your Application Layouts.
+
+More information about the usage of this directory in the documentation:
+https://nuxtjs.org/guide/views#layouts
+
+**This directory is not required, you can delete it if you don't want to use it.**
diff --git a/examples/with-coffee/layouts/default.vue b/examples/with-coffee/layouts/default.vue
new file mode 100644
index 0000000000..a749bdd457
--- /dev/null
+++ b/examples/with-coffee/layouts/default.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
diff --git a/examples/with-coffee/middleware/README.md b/examples/with-coffee/middleware/README.md
new file mode 100644
index 0000000000..edb9129e28
--- /dev/null
+++ b/examples/with-coffee/middleware/README.md
@@ -0,0 +1,9 @@
+# MIDDLEWARE
+
+This directory contains your Application Middleware.
+The middleware lets you define custom function to be ran before rendering a page or a group of pages (layouts).
+
+More information about the usage of this directory in the documentation:
+https://nuxtjs.org/guide/routing#middleware
+
+**This directory is not required, you can delete it if you don't want to use it.**
diff --git a/examples/with-coffee/nuxt.config.js b/examples/with-coffee/nuxt.config.js
new file mode 100644
index 0000000000..f409fceff7
--- /dev/null
+++ b/examples/with-coffee/nuxt.config.js
@@ -0,0 +1,31 @@
+module.exports = {
+ /*
+ ** Headers of the page
+ */
+ head: {
+ title: 'with-coffee',
+ meta: [
+ { charset: 'utf-8' },
+ { name: 'viewport', content: 'width=device-width, initial-scale=1' },
+ { hid: 'description', name: 'description', content: 'Nuxt.js project' }
+ ],
+ link: [
+ { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
+ ]
+ },
+ /*
+ ** Customize the progress bar color
+ */
+ loading: { color: '#3B8070' },
+ /*
+ ** Build configuration
+ */
+ build: {
+ extend (config, ctx) {
+ config.module.rules.push({
+ test: /\.coffee$/,
+ loader: 'coffee-loader'
+ })
+ }
+ }
+}
diff --git a/examples/with-coffee/package.json b/examples/with-coffee/package.json
new file mode 100644
index 0000000000..7554f4a84e
--- /dev/null
+++ b/examples/with-coffee/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "with-coffee",
+ "version": "1.0.0",
+ "description": "Nuxt.js with CoffeeScript",
+ "author": "Alex Ananiev ",
+ "private": true,
+ "scripts": {
+ "dev": "nuxt",
+ "build": "nuxt build",
+ "start": "nuxt start",
+ "generate": "nuxt generate",
+ "lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
+ "precommit": "npm run lint"
+ },
+ "dependencies": {
+ "nuxt": "latest"
+ },
+ "devDependencies": {
+ "babel-eslint": "^7.2.3",
+ "coffee-loader": "^0.8.0",
+ "coffeescript": "^2.0.1",
+ "eslint": "^4.3.0",
+ "eslint-config-standard": "^10.2.1",
+ "eslint-loader": "^1.9.0",
+ "eslint-plugin-html": "^3.1.1",
+ "eslint-plugin-import": "^2.7.0",
+ "eslint-plugin-node": "^5.1.1",
+ "eslint-plugin-promise": "^3.5.0",
+ "eslint-plugin-standard": "^3.0.1"
+ }
+}
diff --git a/examples/with-coffee/pages/README.md b/examples/with-coffee/pages/README.md
new file mode 100644
index 0000000000..3c7faf56e7
--- /dev/null
+++ b/examples/with-coffee/pages/README.md
@@ -0,0 +1,7 @@
+# PAGES
+
+This directory contains your Application Views and Routes.
+The framework reads all the .vue files inside this directory and create the router of your application.
+
+More information about the usage of this directory in the documentation:
+https://nuxtjs.org/guide/routing
diff --git a/examples/with-coffee/pages/index.vue b/examples/with-coffee/pages/index.vue
new file mode 100644
index 0000000000..62f9e08b7e
--- /dev/null
+++ b/examples/with-coffee/pages/index.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+ Nuxt.js with Coffee!
+
+
+ {{message}}
+
+
+
+
+
+
+
+
+
diff --git a/examples/with-coffee/plugins/README.md b/examples/with-coffee/plugins/README.md
new file mode 100644
index 0000000000..ec39a25e3f
--- /dev/null
+++ b/examples/with-coffee/plugins/README.md
@@ -0,0 +1,8 @@
+# PLUGINS
+
+This directory contains your Javascript plugins that you want to run before instantiating the root vue.js application.
+
+More information about the usage of this directory in the documentation:
+https://nuxtjs.org/guide/plugins
+
+**This directory is not required, you can delete it if you don't want to use it.**
diff --git a/examples/with-coffee/static/README.md b/examples/with-coffee/static/README.md
new file mode 100644
index 0000000000..66fe23aac1
--- /dev/null
+++ b/examples/with-coffee/static/README.md
@@ -0,0 +1,11 @@
+# STATIC
+
+This directory contains your static files.
+Each file inside this directory is mapped to /.
+
+Example: /static/robots.txt is mapped as /robots.txt.
+
+More information about the usage of this directory in the documentation:
+https://nuxtjs.org/guide/assets#static
+
+**This directory is not required, you can delete it if you don't want to use it.**
diff --git a/examples/with-coffee/static/favicon.ico b/examples/with-coffee/static/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..382fecbbf96d6e1e614e0e2cc8b73e355bd946cc
GIT binary patch
literal 1150
zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x#lFaYI-8)(_-RMWh}@jndLuXgyK
z;A{Fn&J#OMi823Q&|nS5g-td!^Y-RSMpI2!G(|^BVz5@p+
zJll3Uhal^3+~)80K_I1H1Blkn|X#f`-nA@7V7^0XJCNg21cM?f%pJ31V3PB
ZU;yC{{0s~~
+ message: 'Hello CoffeeScript!'
From cc779b903ec5b6affa05685048704a71b57fbf49 Mon Sep 17 00:00:00 2001
From: Clark Du
Date: Thu, 21 Dec 2017 14:01:56 +0800
Subject: [PATCH 04/52] chore: upgrade vue to 2.5.13
---
package.json | 6 +++---
yarn.lock | 18 +++++++++---------
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/package.json b/package.json
index af782df7b1..5a314e6742 100644
--- a/package.json
+++ b/package.json
@@ -101,12 +101,12 @@
"style-resources-loader": "^1.0.0",
"uglifyjs-webpack-plugin": "^1.1.4",
"url-loader": "^0.6.2",
- "vue": "^2.5.11",
+ "vue": "^2.5.13",
"vue-loader": "^13.6.0",
"vue-meta": "^1.4.0",
"vue-router": "^3.0.1",
- "vue-server-renderer": "^2.5.11",
- "vue-template-compiler": "^2.5.11",
+ "vue-server-renderer": "^2.5.13",
+ "vue-template-compiler": "^2.5.13",
"vuex": "^3.0.1",
"webpack": "^3.10.0",
"webpack-bundle-analyzer": "^2.9.0",
diff --git a/yarn.lock b/yarn.lock
index fdf133bf50..85911dd40d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7114,9 +7114,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.11:
- version "2.5.11"
- resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.5.11.tgz#82ab4d9a538b252f1a1333862fbbc99595c5f184"
+vue-server-renderer@^2.5.13:
+ version "2.5.13"
+ resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.5.13.tgz#6a0d421a0fd3e2b7357b59495d744b7e9279d68e"
dependencies:
chalk "^1.1.3"
hash-sum "^1.0.2"
@@ -7134,9 +7134,9 @@ vue-style-loader@^3.0.0:
hash-sum "^1.0.2"
loader-utils "^1.0.2"
-vue-template-compiler@^2.5.11:
- version "2.5.11"
- resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.5.11.tgz#7dda6905e464ff173c8e70e1dfd1769a7888b7e8"
+vue-template-compiler@^2.5.13:
+ version "2.5.13"
+ resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.5.13.tgz#12a2aa0ecd6158ac5e5f14d294b0993f399c3d38"
dependencies:
de-indent "^1.0.2"
he "^1.1.0"
@@ -7145,9 +7145,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.11:
- version "2.5.11"
- resolved "https://registry.yarnpkg.com/vue/-/vue-2.5.11.tgz#80ca2657aa81f03545cd8dd5a2f55454641e6405"
+vue@^2.5.13:
+ version "2.5.13"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-2.5.13.tgz#95bd31e20efcf7a7f39239c9aa6787ce8cf578e1"
vuex@^3.0.1:
version "3.0.1"
From b385ee74db87ebf788d169dbf7d324b1fe603da4 Mon Sep 17 00:00:00 2001
From: Clark Du
Date: Thu, 21 Dec 2017 11:35:23 +0800
Subject: [PATCH 05/52] feature: enable extractCSS in dev
---
lib/builder/webpack/style-loader.js | 5 +++--
package.json | 1 +
test/basic.dev.test.js | 13 ++++++++++++-
test/fixtures/basic/pages/extractCSS.vue | 9 +++++++++
yarn.lock | 9 ++++++++-
5 files changed, 33 insertions(+), 4 deletions(-)
create mode 100644 test/fixtures/basic/pages/extractCSS.vue
diff --git a/lib/builder/webpack/style-loader.js b/lib/builder/webpack/style-loader.js
index e528d423d7..4c3c689373 100755
--- a/lib/builder/webpack/style-loader.js
+++ b/lib/builder/webpack/style-loader.js
@@ -45,8 +45,8 @@ module.exports = function styleLoader(ext, loaders = [], isVueLoader = false) {
}
}
- if (this.options.build.extractCSS && !this.options.dev) {
- return ExtractTextPlugin.extract({
+ if (this.options.build.extractCSS) {
+ const extraction = ExtractTextPlugin.extract({
fallback: vueStyleLoader,
use: [
cssLoader,
@@ -54,6 +54,7 @@ module.exports = function styleLoader(ext, loaders = [], isVueLoader = false) {
...loaders
].filter(l => l)
})
+ return this.options.dev ? ['css-hot-loader'].concat(extraction) : extraction
}
// https://github.com/yenshih/style-resources-loader
diff --git a/package.json b/package.json
index 5a314e6742..e19b7c68b1 100644
--- a/package.json
+++ b/package.json
@@ -123,6 +123,7 @@
"codecov": "^3.0.0",
"copy-webpack-plugin": "^4.3.0",
"cross-env": "^5.1.1",
+ "css-hot-loader": "^1.3.4",
"eslint": "^4.13.1",
"eslint-config-standard": "^11.0.0-beta.0",
"eslint-config-standard-jsx": "^4.0.2",
diff --git a/test/basic.dev.test.js b/test/basic.dev.test.js
index 8bd9e552a5..681685b75d 100644
--- a/test/basic.dev.test.js
+++ b/test/basic.dev.test.js
@@ -20,7 +20,10 @@ test.serial('Init Nuxt.js', async t => {
dev: true,
build: {
stats: false,
- profile: true
+ profile: true,
+ extractCSS: {
+ allChunks: true
+ }
},
plugins: [
'~/plugins/watch.js'
@@ -37,6 +40,14 @@ test.serial('Init Nuxt.js', async t => {
t.true(spies.log.calledWithMatch('OPEN'))
})
+test.serial('/extractCSS', async t => {
+ const window = await nuxt.renderAndGetWindow(url('/extractCSS'))
+ const html = window.document.head.innerHTML
+ t.true(html.includes('vendor.css'))
+ t.true(!html.includes('30px'))
+ t.is(window.getComputedStyle(window.document.body).getPropertyValue('font-size'), '30px')
+})
+
test.serial('remove mixins in live reloading', async t => {
const spies = await intercept({ log: true, error: true, stderr: true })
await nuxt.renderRoute(url('/'))
diff --git a/test/fixtures/basic/pages/extractCSS.vue b/test/fixtures/basic/pages/extractCSS.vue
new file mode 100644
index 0000000000..ec788f2e74
--- /dev/null
+++ b/test/fixtures/basic/pages/extractCSS.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
diff --git a/yarn.lock b/yarn.lock
index 85911dd40d..9213de6400 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1957,6 +1957,13 @@ css-color-names@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
+css-hot-loader@^1.3.4:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/css-hot-loader/-/css-hot-loader-1.3.4.tgz#cd58b9419cd7ec82350b1d60713d86e480a8b286"
+ dependencies:
+ loader-utils "^1.1.0"
+ normalize-url "^1.9.1"
+
css-loader@^0.28.7:
version "0.28.7"
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.7.tgz#5f2ee989dd32edd907717f953317656160999c1b"
@@ -4646,7 +4653,7 @@ normalize-range@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
-normalize-url@^1.4.0:
+normalize-url@^1.4.0, normalize-url@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
dependencies:
From 83d5f059eec44927b393b0f85968b4be6c470a3b Mon Sep 17 00:00:00 2001
From: Clark Du
Date: Thu, 21 Dec 2017 12:55:32 +0800
Subject: [PATCH 06/52] feature: redirect by route name
---
lib/app/utils.js | 7 ++++++-
test/basic.csr.test.js | 14 ++++++++++----
test/basic.ssr.test.js | 13 ++++++++++---
.../pages/{redirect3.vue => redirect-external.vue} | 0
.../{redirect2.vue => redirect-middleware.vue} | 0
test/fixtures/basic/pages/redirect-name.vue | 11 +++++++++++
6 files changed, 37 insertions(+), 8 deletions(-)
rename test/fixtures/basic/pages/{redirect3.vue => redirect-external.vue} (100%)
rename test/fixtures/basic/pages/{redirect2.vue => redirect-middleware.vue} (100%)
create mode 100644 test/fixtures/basic/pages/redirect-name.vue
diff --git a/lib/app/utils.js b/lib/app/utils.js
index cb2642ced0..7942fbdd21 100644
--- a/lib/app/utils.js
+++ b/lib/app/utils.js
@@ -127,11 +127,16 @@ export async function setContext(app, context) {
if (!status) return
app.context._redirected = true // Used in middleware
// if only 1 or 2 arguments: redirect('/') or redirect('/', { foo: 'bar' })
- if (typeof status === 'string' && (typeof path === 'undefined' || typeof path === 'object')) {
+ let pathType = typeof path
+ if (typeof status !== 'number' && (pathType === 'undefined' || pathType === 'object')) {
query = path || {}
path = status
+ pathType = typeof path
status = 302
}
+ if (pathType === 'object') {
+ path = app.router.resolve(path).href
+ }
// "/absolute/route", "./relative/route" or "../relative/route"
if (/(^[.]{1,2}\/)|(^\/(?!\/))/.test(path)) {
app.context.next({
diff --git a/test/basic.csr.test.js b/test/basic.csr.test.js
index b8108dae16..0329e398b8 100644
--- a/test/basic.csr.test.js
+++ b/test/basic.csr.test.js
@@ -148,21 +148,27 @@ test.serial('/error2', async t => {
t.deepEqual(await page.nuxt.errorData(), { message: 'Custom error' })
})
-test.serial('/redirect2', async t => {
- await page.nuxt.navigate('/redirect2')
+test.serial('/redirect-middleware', async t => {
+ await page.nuxt.navigate('/redirect-middleware')
t.is(await page.$text('h1'), 'Index page')
})
-test.serial('/redirect3', async t => {
+test.serial('/redirect-external', async t => {
// New page for redirecting to external link.
const page = await browser.page(url('/'))
- await page.nuxt.navigate('/redirect3', false)
+ await page.nuxt.navigate('/redirect-external', false)
await page.waitForFunction(() => window.location.href === 'https://nuxtjs.org/')
page.close()
t.pass()
})
+test.serial('/redirect-name', async t => {
+ await page.nuxt.navigate('/redirect-name')
+
+ t.is(await page.$text('h1'), 'My component!')
+})
+
test.serial('/no-ssr', async t => {
await page.nuxt.navigate('/no-ssr')
diff --git a/test/basic.ssr.test.js b/test/basic.ssr.test.js
index d023acaa8b..5e5ee17305 100755
--- a/test/basic.ssr.test.js
+++ b/test/basic.ssr.test.js
@@ -132,7 +132,7 @@ test('/redirect -> check redirected source', async t => {
test('/redirect -> external link', async t => {
const headers = {}
- const { html } = await nuxt.renderRoute('/redirect3', {
+ const { html } = await nuxt.renderRoute('/redirect-external', {
res: {
setHeader(k, v) {
headers[k] = v
@@ -187,14 +187,21 @@ test.serial('/error-midd', async t => {
t.true(errorSpy.notCalled)
})
-test.serial('/redirect2', async t => {
+test.serial('/redirect-middleware', async t => {
const errorSpy = await interceptError()
- await rp(url('/redirect2')) // Should not console.error
+ await rp(url('/redirect-middleware')) // Should not console.error
release()
// Don't display error since redirect returns a noopApp
t.true(errorSpy.notCalled)
})
+test('/redirect-name', async t => {
+ const { html, redirected } = await nuxt.renderRoute('/redirect-name')
+ t.true(html.includes('
'))
+ t.true(redirected.path === '/stateless')
+ t.true(redirected.status === 302)
+})
+
test('/no-ssr', async t => {
const { html } = await nuxt.renderRoute('/no-ssr')
t.true(html.includes('<p>Loading...</p>
'))
diff --git a/test/fixtures/basic/pages/redirect3.vue b/test/fixtures/basic/pages/redirect-external.vue
similarity index 100%
rename from test/fixtures/basic/pages/redirect3.vue
rename to test/fixtures/basic/pages/redirect-external.vue
diff --git a/test/fixtures/basic/pages/redirect2.vue b/test/fixtures/basic/pages/redirect-middleware.vue
similarity index 100%
rename from test/fixtures/basic/pages/redirect2.vue
rename to test/fixtures/basic/pages/redirect-middleware.vue
diff --git a/test/fixtures/basic/pages/redirect-name.vue b/test/fixtures/basic/pages/redirect-name.vue
new file mode 100644
index 0000000000..0797e27eaa
--- /dev/null
+++ b/test/fixtures/basic/pages/redirect-name.vue
@@ -0,0 +1,11 @@
+
+ Redirecting...
+
+
+
From 447b314a459943496d1e309a72e1758c49bc05ee Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 22 Dec 2017 01:30:57 +0330
Subject: [PATCH 07/52] fix: update dependencies
---
package.json | 12 ++--
yarn.lock | 172 ++++++++++++++++++++++++---------------------------
2 files changed, 88 insertions(+), 96 deletions(-)
diff --git a/package.json b/package.json
index e19b7c68b1..5287f30a20 100644
--- a/package.json
+++ b/package.json
@@ -62,15 +62,16 @@
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-vue-app": "^2.0.0",
- "caniuse-lite": "^1.0.30000783",
+ "caniuse-lite": "^1.0.30000784",
"chalk": "^2.3.0",
"chokidar": "^1.7.0",
"clone": "^2.1.1",
"compression": "^1.7.1",
"connect": "^3.6.5",
+ "css-hot-loader": "^1.3.4",
"css-loader": "^0.28.7",
"debug": "^3.1.0",
- "es6-promise": "^4.1.1",
+ "es6-promise": "^4.2.1",
"etag": "^1.8.1",
"extract-text-webpack-plugin": "^3.0.2",
"file-loader": "^1.1.6",
@@ -110,7 +111,7 @@
"vuex": "^3.0.1",
"webpack": "^3.10.0",
"webpack-bundle-analyzer": "^2.9.0",
- "webpack-dev-middleware": "^2.0.1",
+ "webpack-dev-middleware": "^2.0.2",
"webpack-hot-middleware": "^2.21.0",
"webpack-node-externals": "^1.6.0"
},
@@ -122,8 +123,7 @@
"babel-plugin-istanbul": "^4.1.5",
"codecov": "^3.0.0",
"copy-webpack-plugin": "^4.3.0",
- "cross-env": "^5.1.1",
- "css-hot-loader": "^1.3.4",
+ "cross-env": "^5.1.2",
"eslint": "^4.13.1",
"eslint-config-standard": "^11.0.0-beta.0",
"eslint-config-standard-jsx": "^4.0.2",
@@ -137,7 +137,7 @@
"finalhandler": "^1.1.0",
"jsdom": "^11.5.1",
"json-loader": "^0.5.7",
- "nyc": "^11.3.0",
+ "nyc": "^11.4.1",
"puppeteer": "^0.13.0",
"request": "^2.83.0",
"request-promise-native": "^1.0.5",
diff --git a/yarn.lock b/yarn.lock
index 9213de6400..f8b203955c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -110,8 +110,8 @@
resolved "https://registry.yarnpkg.com/@std/esm/-/esm-0.16.0.tgz#2a7a33ecb7f1701cebd4c87df6d0d945ed51f730"
"@types/node@*":
- version "8.0.58"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.58.tgz#5b3881c0be3a646874803fee3197ea7f1ed6df90"
+ version "8.5.2"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-8.5.2.tgz#83b8103fa9a2c2e83d78f701a9aa7c9539739aa5"
abab@^1.0.3:
version "1.0.4"
@@ -176,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.5.1"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.1.tgz#b38bb8876d9e86bee994956a04e721e88b248eb2"
+ version "5.5.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
dependencies:
co "^4.6.0"
fast-deep-equal "^1.0.0"
@@ -400,18 +400,7 @@ autoprefixer@^6.3.1:
postcss "^5.2.16"
postcss-value-parser "^3.2.3"
-autoprefixer@^7.1.1:
- version "7.2.2"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.2.tgz#082293b964be00602efacc59aa4aa7df5158bb6e"
- dependencies:
- browserslist "^2.10.0"
- caniuse-lite "^1.0.30000780"
- normalize-range "^0.1.2"
- num2fraction "^1.2.2"
- postcss "^6.0.14"
- postcss-value-parser "^3.2.3"
-
-autoprefixer@^7.2.3:
+autoprefixer@^7.1.1, autoprefixer@^7.2.3:
version "7.2.3"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.3.tgz#c2841e38b7940c2d0a9bbffd72c75f33637854f8"
dependencies:
@@ -1421,16 +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.30000782"
- resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000782.tgz#d8815bce1578c350aced1132507301205e0fab53"
+ version "1.0.30000784"
+ resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000784.tgz#1be95012d9489c7719074f81aee57dbdffe6361b"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000780:
- version "1.0.30000782"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000782.tgz#5b82b8c385f25348745c471ca51320afb1b7f254"
-
-caniuse-lite@^1.0.30000783:
- version "1.0.30000783"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000783.tgz#9b5499fb1b503d2345d12aa6b8612852f4276ffd"
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000780, caniuse-lite@^1.0.30000783, caniuse-lite@^1.0.30000784:
+ version "1.0.30000784"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000784.tgz#129ced74e9a1280a441880b6cd2bce30ef59e6c0"
capture-stack-trace@^1.0.0:
version "1.0.0"
@@ -1614,7 +1599,7 @@ codecov@^3.0.0:
request "2.81.0"
urlgrey "0.4.4"
-color-convert@^1.3.0, color-convert@^1.8.2, color-convert@^1.9.0:
+color-convert@^1.3.0, color-convert@^1.8.2, color-convert@^1.9.0, color-convert@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
dependencies:
@@ -1630,7 +1615,7 @@ color-string@^0.3.0:
dependencies:
color-name "^1.0.0"
-color-string@^1.4.0:
+color-string@^1.4.0, color-string@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.2.tgz#26e45814bc3c9a7cbd6751648a41434514a773a9"
dependencies:
@@ -1652,6 +1637,13 @@ color@^1.0.3:
color-convert "^1.8.2"
color-string "^1.4.0"
+color@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color/-/color-2.0.1.tgz#e4ed78a3c4603d0891eba5430b04b86314f4c839"
+ dependencies:
+ color-convert "^1.9.1"
+ color-string "^1.5.2"
+
colormin@^1.0.5:
version "1.1.2"
resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
@@ -1890,9 +1882,9 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
-cross-env@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.1.tgz#b6d8ab97f304c0f71dae7277b75fe424c08dfa74"
+cross-env@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.2.tgz#f35755034822a4798a2678656ab9692e2c20c8df"
dependencies:
cross-spawn "^5.1.0"
is-windows "^1.0.0"
@@ -2342,9 +2334,15 @@ ejs@^2.5.6:
version "2.5.7"
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.7.tgz#cc872c168880ae3c7189762fd5ffc00896c9518a"
+electron-releases@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/electron-releases/-/electron-releases-2.1.0.tgz#c5614bf811f176ce3c836e368a0625782341fd4e"
+
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"
+ version "1.3.30"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.30.tgz#9666f532a64586651fc56a72513692e820d06a80"
+ dependencies:
+ electron-releases "^2.1.0"
elliptic@^6.0.0:
version "6.4.0"
@@ -2403,8 +2401,8 @@ 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.5"
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.5.tgz#a563781a6052bc2c9ccd89e8cef0eb9506e0c321"
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.6.tgz#c386ce8a6283f14fc09563b71560908c9bf53026"
dependencies:
prr "~1.0.1"
@@ -2468,9 +2466,9 @@ es6-map@^0.1.3:
es6-symbol "~3.1.1"
event-emitter "~0.3.5"
-es6-promise@^4.0.3, es6-promise@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.1.1.tgz#8811e90915d9a0dba36274f0b242dbda78f9c92a"
+es6-promise@^4.0.3, es6-promise@^4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.1.tgz#3b98a6714ba1b9267428b2c00e6265b16dab0205"
es6-promisify@^5.0.0:
version "5.0.0"
@@ -3098,7 +3096,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.1.1:
+function-bind@^1.0.2, function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
@@ -3295,6 +3293,10 @@ has-flag@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
+has-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
+
has-unicode@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
@@ -3826,10 +3828,8 @@ is-regex@^1.0.4:
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"
- dependencies:
- tryit "^1.0.1"
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.1.tgz#acca1cd36dbe44b974b924321555a70ba03b1cf4"
is-retry-allowed@^1.0.0:
version "1.1.0"
@@ -4250,13 +4250,9 @@ log-symbols@^2.1.0:
dependencies:
chalk "^2.0.1"
-loglevel-plugin-prefix@^0.5.3:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.5.3.tgz#8e9131b96e4697a0dba517996f76b9e6c3f43210"
-
-loglevel@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.0.tgz#ae0caa561111498c5ba13723d6fb631d24003934"
+loglevelnext@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.0.tgz#9cc52bed418bd8cf64e29424c4cd3fe9d4311317"
lolex@^1.6.0:
version "1.6.0"
@@ -4695,9 +4691,9 @@ nwmatcher@^1.4.3:
version "1.4.3"
resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c"
-nyc@^11.3.0:
- version "11.3.0"
- resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.3.0.tgz#a42bc17b3cfa41f7b15eb602bc98b2633ddd76f0"
+nyc@^11.4.1:
+ version "11.4.1"
+ resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.4.1.tgz#13fdf7e7ef22d027c61d174758f6978a68f4f5e5"
dependencies:
archy "^1.0.0"
arrify "^1.0.1"
@@ -4722,7 +4718,7 @@ nyc@^11.3.0:
resolve-from "^2.0.0"
rimraf "^2.5.4"
signal-exit "^3.0.1"
- spawn-wrap "=1.3.8"
+ spawn-wrap "^1.4.2"
test-exclude "^4.1.1"
yargs "^10.0.3"
yargs-parser "^8.0.0"
@@ -4735,17 +4731,18 @@ object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-object-keys@^1.0.10, object-keys@^1.0.8:
+object-keys@^1.0.11, object-keys@^1.0.8:
version "1.0.11"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
object.assign@^4.0.1:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc"
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
dependencies:
define-properties "^1.1.2"
- function-bind "^1.1.0"
- object-keys "^1.0.10"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ object-keys "^1.0.11"
object.omit@^2.0.0:
version "2.0.1"
@@ -5164,11 +5161,11 @@ postcss-color-function@^4.0.0:
postcss-value-parser "^3.3.0"
postcss-color-gray@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-4.0.0.tgz#681bf305097dd66bfef0e1e6282d5d99b5acc95d"
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-4.1.0.tgz#e5581ed57eaa826fb652ca11b1e2b7b136a9f9df"
dependencies:
- color "^1.0.3"
- postcss "^6.0.1"
+ color "^2.0.1"
+ postcss "^6.0.14"
postcss-message-helpers "^2.0.0"
reduce-function-call "^1.0.2"
@@ -6195,7 +6192,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, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
dependencies:
@@ -6432,16 +6429,16 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-spawn-wrap@=1.3.8:
- version "1.3.8"
- resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.3.8.tgz#fa2a79b990cbb0bb0018dca6748d88367b19ec31"
+spawn-wrap@^1.4.2:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.2.tgz#cff58e73a8224617b6561abdc32586ea0c82248c"
dependencies:
foreground-child "^1.5.6"
mkdirp "^0.5.0"
os-homedir "^1.0.1"
- rimraf "^2.3.3"
+ rimraf "^2.6.2"
signal-exit "^3.0.2"
- which "^1.2.4"
+ which "^1.3.0"
spdx-correct@~1.0.0:
version "1.0.2"
@@ -6755,10 +6752,6 @@ time-require@^0.1.2:
pretty-ms "^0.2.1"
text-table "^0.2.0"
-time-stamp@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357"
-
time-zone@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d"
@@ -6819,10 +6812,6 @@ trim-right@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
-tryit@^1.0.1:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
-
tty-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
@@ -7188,22 +7177,17 @@ webpack-bundle-analyzer@^2.9.0:
opener "^1.4.3"
ws "^3.3.1"
-webpack-dev-middleware@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-2.0.1.tgz#22c8ecef27f08fca6dfa95504d57f66a8f37cc13"
+webpack-dev-middleware@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-2.0.2.tgz#cbfaf5477e2179a2be0a989752acaa9bbd38b02c"
dependencies:
- chalk "^2.3.0"
- log-symbols "^2.1.0"
- loglevel "^1.6.0"
- loglevel-plugin-prefix "^0.5.3"
loud-rejection "^1.6.0"
memory-fs "~0.4.1"
mime "^2.0.3"
path-is-absolute "^1.0.0"
range-parser "^1.0.3"
- time-stamp "^2.0.0"
url-join "^2.0.2"
- uuid "^3.1.0"
+ webpack-log "^1.0.1"
webpack-hot-middleware@^2.21.0:
version "2.21.0"
@@ -7214,6 +7198,14 @@ webpack-hot-middleware@^2.21.0:
querystring "^0.2.0"
strip-ansi "^3.0.0"
+webpack-log@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.0.2.tgz#880298b80ff81a4e30baa6e28dc44f4637b4bbf1"
+ dependencies:
+ chalk "^2.1.0"
+ log-symbols "^2.1.0"
+ loglevelnext "^1.0.0"
+
webpack-node-externals@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-1.6.0.tgz#232c62ec6092b100635a3d29d83c1747128df9bd"
@@ -7282,7 +7274,7 @@ which-module@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
-which@^1.2.4, which@^1.2.9:
+which@^1.2.9, which@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a"
dependencies:
@@ -7375,8 +7367,8 @@ write@^0.2.1:
mkdirp "^0.5.1"
ws@^3.0.0, ws@^3.3.1:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.2.tgz#96c1d08b3fefda1d5c1e33700d3bfaa9be2d5608"
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2"
dependencies:
async-limiter "~1.0.0"
safe-buffer "~5.1.0"
@@ -7419,8 +7411,8 @@ yargs-parser@^7.0.0:
camelcase "^4.1.0"
yargs-parser@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.0.0.tgz#21d476330e5a82279a4b881345bf066102e219c6"
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950"
dependencies:
camelcase "^4.1.0"
From 26ba9f43eae774b7c00e369fff0f00ed1ce7135e Mon Sep 17 00:00:00 2001
From: Ivan Santos
Date: Wed, 27 Dec 2017 21:24:12 -0800
Subject: [PATCH 08/52] remove duplicated --spa flag on nuxt-generate help
(#2467)
---
bin/nuxt-generate | 1 -
1 file changed, 1 deletion(-)
diff --git a/bin/nuxt-generate b/bin/nuxt-generate
index c9fa725982..44a0b03cf2 100755
--- a/bin/nuxt-generate
+++ b/bin/nuxt-generate
@@ -33,7 +33,6 @@ if (argv.help) {
Usage
$ nuxt generate
Options
- --spa Launch in SPA mode
--spa Launch in SPA mode
--universal Launch in Universal mode (default)
--config-file, -c Path to Nuxt.js config file (default: nuxt.config.js)
From 6fabea392d384e27c850e74b28487818d9bf5be0 Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Thu, 28 Dec 2017 15:56:10 +0330
Subject: [PATCH 09/52] chore: update dependencies
---
package.json | 22 ++++----
yarn.lock | 139 ++++++++++++++++++++++++++++++---------------------
2 files changed, 94 insertions(+), 67 deletions(-)
diff --git a/package.json b/package.json
index 5287f30a20..219e1efd6a 100644
--- a/package.json
+++ b/package.json
@@ -68,10 +68,10 @@
"clone": "^2.1.1",
"compression": "^1.7.1",
"connect": "^3.6.5",
- "css-hot-loader": "^1.3.4",
+ "css-hot-loader": "^1.3.5",
"css-loader": "^0.28.7",
"debug": "^3.1.0",
- "es6-promise": "^4.2.1",
+ "es6-promise": "^4.2.2",
"etag": "^1.8.1",
"extract-text-webpack-plugin": "^3.0.2",
"file-loader": "^1.1.6",
@@ -80,7 +80,7 @@
"fs-extra": "^5.0.0",
"glob": "^7.1.2",
"hash-sum": "^1.0.2",
- "html-minifier": "3.5.7",
+ "html-minifier": "3.5.8",
"html-webpack-plugin": "^2.30.1",
"lodash": "^4.17.4",
"lru-cache": "^4.1.1",
@@ -100,10 +100,10 @@
"server-destroy": "^1.0.1",
"source-map": "^0.6.1",
"style-resources-loader": "^1.0.0",
- "uglifyjs-webpack-plugin": "^1.1.4",
+ "uglifyjs-webpack-plugin": "^1.1.5",
"url-loader": "^0.6.2",
"vue": "^2.5.13",
- "vue-loader": "^13.6.0",
+ "vue-loader": "^13.6.1",
"vue-meta": "^1.4.0",
"vue-router": "^3.0.1",
"vue-server-renderer": "^2.5.13",
@@ -111,20 +111,20 @@
"vuex": "^3.0.1",
"webpack": "^3.10.0",
"webpack-bundle-analyzer": "^2.9.0",
- "webpack-dev-middleware": "^2.0.2",
+ "webpack-dev-middleware": "^2.0.3",
"webpack-hot-middleware": "^2.21.0",
"webpack-node-externals": "^1.6.0"
},
"devDependencies": {
"ava": "^0.24.0",
- "babel-eslint": "^8.0.3",
+ "babel-eslint": "^8.1.2",
"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.3.0",
- "cross-env": "^5.1.2",
- "eslint": "^4.13.1",
+ "copy-webpack-plugin": "^4.3.1",
+ "cross-env": "^5.1.3",
+ "eslint": "^4.14.0",
"eslint-config-standard": "^11.0.0-beta.0",
"eslint-config-standard-jsx": "^4.0.2",
"eslint-plugin-html": "^4.0.1",
@@ -142,7 +142,7 @@
"request": "^2.83.0",
"request-promise-native": "^1.0.5",
"sinon": "^4.1.2",
- "uglify-js": "^3.2.2"
+ "uglify-js": "^3.3.2"
},
"collective": {
"type": "opencollective",
diff --git a/yarn.lock b/yarn.lock
index f8b203955c..9176979196 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -553,14 +553,16 @@ babel-core@^6.17.0, babel-core@^6.26.0:
slash "^1.0.0"
source-map "^0.5.6"
-babel-eslint@^8.0.3:
- version "8.0.3"
- resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.0.3.tgz#f29ecf02336be438195325cd47c468da81ee4e98"
+babel-eslint@^8.1.2:
+ version "8.1.2"
+ resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.1.2.tgz#a39230b0c20ecbaa19a35d5633bf9b9ca2c8116f"
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"
+ eslint-scope "~3.7.1"
+ eslint-visitor-keys "^1.0.0"
babel-generator@^6.1.0, babel-generator@^6.18.0, babel-generator@^6.26.0:
version "6.26.0"
@@ -1803,9 +1805,9 @@ copy-concurrently@^1.0.0:
rimraf "^2.5.4"
run-queue "^1.0.0"
-copy-webpack-plugin@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.3.0.tgz#cfdf4d131c78d66917a1bb863f86630497aacf42"
+copy-webpack-plugin@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.3.1.tgz#19ba6370bf6f8e263cbd66185a2b79f2321a9302"
dependencies:
cacache "^10.0.1"
find-cache-dir "^1.0.0"
@@ -1882,9 +1884,9 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
-cross-env@^5.1.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.2.tgz#f35755034822a4798a2678656ab9692e2c20c8df"
+cross-env@^5.1.3:
+ version "5.1.3"
+ resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.3.tgz#f8ae18faac87692b0a8b4d2f7000d4ec3a85dfd7"
dependencies:
cross-spawn "^5.1.0"
is-windows "^1.0.0"
@@ -1949,9 +1951,9 @@ css-color-names@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
-css-hot-loader@^1.3.4:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/css-hot-loader/-/css-hot-loader-1.3.4.tgz#cd58b9419cd7ec82350b1d60713d86e480a8b286"
+css-hot-loader@^1.3.5:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/css-hot-loader/-/css-hot-loader-1.3.5.tgz#bc070307cc5f881dbaea12bc54d354133d08a28b"
dependencies:
loader-utils "^1.1.0"
normalize-url "^1.9.1"
@@ -2406,7 +2408,7 @@ errno@^0.1.3, errno@^0.1.4:
dependencies:
prr "~1.0.1"
-error-ex@^1.2.0:
+error-ex@^1.2.0, error-ex@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc"
dependencies:
@@ -2466,9 +2468,9 @@ es6-map@^0.1.3:
es6-symbol "~3.1.1"
event-emitter "~0.3.5"
-es6-promise@^4.0.3, es6-promise@^4.2.1:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.1.tgz#3b98a6714ba1b9267428b2c00e6265b16dab0205"
+es6-promise@^4.0.3, es6-promise@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.2.tgz#f722d7769af88bd33bc13ec6605e1f92966b82d9"
es6-promisify@^5.0.0:
version "5.0.0"
@@ -2599,28 +2601,32 @@ 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"
-eslint-scope@^3.7.1:
+eslint-scope@^3.7.1, eslint-scope@~3.7.1:
version "3.7.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
dependencies:
esrecurse "^4.1.0"
estraverse "^4.1.1"
-eslint@^4.13.1:
- version "4.13.1"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.13.1.tgz#0055e0014464c7eb7878caf549ef2941992b444f"
+eslint-visitor-keys@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
+
+eslint@^4.14.0:
+ version "4.14.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.14.0.tgz#96609768d1dd23304faba2d94b7fefe5a5447a82"
dependencies:
ajv "^5.3.0"
babel-code-frame "^6.22.0"
chalk "^2.1.0"
concat-stream "^1.6.0"
cross-spawn "^5.1.0"
- debug "^3.0.1"
+ debug "^3.1.0"
doctrine "^2.0.2"
eslint-scope "^3.7.1"
+ eslint-visitor-keys "^1.0.0"
espree "^3.5.2"
esquery "^1.0.0"
- estraverse "^4.2.0"
esutils "^2.0.2"
file-entry-cache "^2.0.0"
functional-red-black-tree "^1.0.1"
@@ -3398,9 +3404,9 @@ 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.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"
+html-minifier@3.5.8, html-minifier@^3.2.3:
+ version "3.5.8"
+ resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.8.tgz#5ccdb1f73a0d654e6090147511f6e6b2ee312700"
dependencies:
camel-case "3.0.x"
clean-css "4.1.x"
@@ -3409,7 +3415,7 @@ html-minifier@3.5.7, html-minifier@^3.2.3:
ncname "1.0.x"
param-case "2.1.x"
relateurl "0.2.x"
- uglify-js "3.2.x"
+ uglify-js "3.3.x"
html-tags@^2.0.0:
version "2.0.0"
@@ -4016,6 +4022,10 @@ json-loader@^0.5.4, json-loader@^0.5.7:
version "0.5.7"
resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
+json-parse-better-errors@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.1.tgz#50183cd1b2d25275de069e9e71b467ac9eab973a"
+
json-schema-traverse@^0.3.0:
version "0.3.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
@@ -4135,6 +4145,15 @@ load-json-file@^2.0.0:
pify "^2.0.0"
strip-bom "^3.0.0"
+load-json-file@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^4.0.0"
+ pify "^3.0.0"
+ strip-bom "^3.0.0"
+
loader-runner@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
@@ -4250,9 +4269,9 @@ log-symbols@^2.1.0:
dependencies:
chalk "^2.0.1"
-loglevelnext@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.0.tgz#9cc52bed418bd8cf64e29424c4cd3fe9d4311317"
+loglevelnext@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.1.tgz#8b17b5a43395338a96c67911a962c44af466d1c8"
lolex@^1.6.0:
version "1.6.0"
@@ -4378,10 +4397,10 @@ merge-descriptors@1.0.1:
resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
merge-source-map@^1.0.2:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646"
dependencies:
- source-map "^0.5.6"
+ source-map "^0.6.1"
methods@~1.1.2:
version "1.1.2"
@@ -4434,9 +4453,9 @@ mime@^1.3.4, mime@^1.4.1:
version "1.6.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
-mime@^2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/mime/-/mime-2.0.3.tgz#4353337854747c48ea498330dc034f9f4bbbcc0b"
+mime@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-2.1.0.tgz#1022a5ada445aa30686e4059abaea83d0b4e8f9c"
mimic-fn@^1.0.0:
version "1.1.0"
@@ -4943,6 +4962,13 @@ parse-json@^2.2.0:
dependencies:
error-ex "^1.2.0"
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
parse-ms@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-0.1.2.tgz#dd3fa25ed6c2efc7bdde12ad9b46c163aa29224e"
@@ -5080,11 +5106,11 @@ pixrem@^4.0.0:
reduce-css-calc "^1.2.7"
pkg-conf@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.0.0.tgz#071c87650403bccfb9c627f58751bfe47c067279"
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058"
dependencies:
find-up "^2.0.0"
- load-json-file "^2.0.0"
+ load-json-file "^4.0.0"
pkg-dir@^1.0.0:
version "1.0.0"
@@ -6851,16 +6877,16 @@ 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.1:
+uglify-es@3.2.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.2.2.tgz#15c62b7775002c81b7987a1c49ecd3f126cace73"
dependencies:
commander "~2.12.1"
source-map "~0.6.1"
-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"
+uglify-js@3.3.x, uglify-js@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.2.tgz#517af20aad7abe15e1e4c9aa33c0cc72aa0107ab"
dependencies:
commander "~2.12.1"
source-map "~0.6.1"
@@ -6886,16 +6912,16 @@ uglifyjs-webpack-plugin@^0.4.6:
uglify-js "^2.8.29"
webpack-sources "^1.0.1"
-uglifyjs-webpack-plugin@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.4.tgz#e43ad6e736c315024eb99481a7cc9362d6a066be"
+uglifyjs-webpack-plugin@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.5.tgz#5ec4a16da0fd10c96538f715caed10dbdb180875"
dependencies:
cacache "^10.0.0"
find-cache-dir "^1.0.0"
schema-utils "^0.3.0"
serialize-javascript "^1.4.0"
source-map "^0.6.1"
- uglify-es "^3.2.1"
+ uglify-es "3.2.2"
webpack-sources "^1.0.1"
worker-farm "^1.4.1"
@@ -7080,9 +7106,9 @@ vue-hot-reload-api@^2.2.0:
version "2.2.4"
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.2.4.tgz#683bd1d026c0d3b3c937d5875679e9a87ec6cd8f"
-vue-loader@^13.6.0:
- version "13.6.0"
- resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-13.6.0.tgz#c1c9570e1e57475f8acb02cda35551b812f88086"
+vue-loader@^13.6.1:
+ version "13.6.1"
+ resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-13.6.1.tgz#3ad365271b3db382722ab2eb0d6936d8d52ec2ce"
dependencies:
consolidate "^0.14.0"
hash-sum "^1.0.2"
@@ -7177,13 +7203,13 @@ webpack-bundle-analyzer@^2.9.0:
opener "^1.4.3"
ws "^3.3.1"
-webpack-dev-middleware@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-2.0.2.tgz#cbfaf5477e2179a2be0a989752acaa9bbd38b02c"
+webpack-dev-middleware@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-2.0.3.tgz#44e15480ec58d275417ac4d93a0126c7b72450bd"
dependencies:
loud-rejection "^1.6.0"
memory-fs "~0.4.1"
- mime "^2.0.3"
+ mime "^2.1.0"
path-is-absolute "^1.0.0"
range-parser "^1.0.3"
url-join "^2.0.2"
@@ -7199,12 +7225,13 @@ webpack-hot-middleware@^2.21.0:
strip-ansi "^3.0.0"
webpack-log@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.0.2.tgz#880298b80ff81a4e30baa6e28dc44f4637b4bbf1"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-1.1.0.tgz#fc17ce3aba349130d09464ee31d04686e8023f6a"
dependencies:
chalk "^2.1.0"
log-symbols "^2.1.0"
- loglevelnext "^1.0.0"
+ loglevelnext "^1.0.1"
+ uuid "^3.1.0"
webpack-node-externals@^1.6.0:
version "1.6.0"
From 4e224160027d132d92734d302caf8697715f7834 Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Thu, 28 Dec 2017 19:00:31 +0330
Subject: [PATCH 10/52] refactor sryle-loader
makes code more clear and (temporary) fixing dev source maps when extractCSS is on
---
lib/builder/webpack/base.config.js | 20 -----
lib/builder/webpack/server.config.js | 7 --
lib/builder/webpack/style-loader.js | 109 ++++++++++++++-------------
3 files changed, 55 insertions(+), 81 deletions(-)
diff --git a/lib/builder/webpack/base.config.js b/lib/builder/webpack/base.config.js
index fcf07fea54..ffb458bbdf 100644
--- a/lib/builder/webpack/base.config.js
+++ b/lib/builder/webpack/base.config.js
@@ -1,7 +1,6 @@
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')
@@ -116,25 +115,6 @@ module.exports = function webpackBaseConfig({ name, isServer }) {
config.plugins.push(new ExtractTextPlugin(extractOptions))
}
- // --------------------------------------
- // Dev specific config
- // --------------------------------------
- if (this.options.dev) {
- //
- }
-
- // --------------------------------------
- // Production specific config
- // --------------------------------------
- if (!this.options.dev) {
- // This is needed in webpack 2 for minify CSS
- config.plugins.push(
- new webpack.LoaderOptionsPlugin({
- minimize: true
- })
- )
- }
-
// Clone deep avoid leaking config between Client and Server
return cloneDeep(config)
}
diff --git a/lib/builder/webpack/server.config.js b/lib/builder/webpack/server.config.js
index e6a1ecf869..c3ecde4276 100644
--- a/lib/builder/webpack/server.config.js
+++ b/lib/builder/webpack/server.config.js
@@ -62,13 +62,6 @@ module.exports = function webpackServerConfig() {
}
})
- // --------------------------------------
- // Production specific config
- // --------------------------------------
- if (!this.options.dev) {
-
- }
-
// Extend config
if (typeof this.options.build.extend === 'function') {
const isDev = this.options.dev
diff --git a/lib/builder/webpack/style-loader.js b/lib/builder/webpack/style-loader.js
index 4c3c689373..5c4a8dee2f 100755
--- a/lib/builder/webpack/style-loader.js
+++ b/lib/builder/webpack/style-loader.js
@@ -2,75 +2,76 @@ const ExtractTextPlugin = require('extract-text-webpack-plugin')
const { join } = require('path')
module.exports = function styleLoader(ext, loaders = [], isVueLoader = false) {
- // Normalize loaders
- loaders = (Array.isArray(loaders) ? loaders : [loaders]).map(loader => {
- if (typeof loader === 'string') {
- loader = { loader }
- }
- return Object.assign({
- options: {
- sourceMap: this.options.build.cssSourceMap
- }
- }, loader)
- })
+ const sourceMap = Boolean(this.options.build.cssSourceMap)
- // https://github.com/postcss/postcss-loader
- let postcssLoader
- if (!isVueLoader && this.options.build.postcss) {
- postcssLoader = {
- loader: 'postcss-loader',
- options: this.options.build.postcss
- }
+ // Normalize loaders
+ loaders = (Array.isArray(loaders) ? loaders : [loaders])
+ .map(loader => Object.assign({ options: { sourceMap } }, typeof loader === 'string' ? { loader } : loader))
+
+ // Prepare vue-style-loader
+ // https://github.com/vuejs/vue-style-loader
+ const vueStyleLoader = {
+ loader: 'vue-style-loader',
+ options: { sourceMap }
}
+ // -- Configure additional loaders --
+
+ // style-resources-loader
+ // https://github.com/yenshih/style-resources-loader
+ if (this.options.build.styleResources) {
+ loaders.push({
+ loader: 'style-resources-loader',
+ options: Object.assign({ sourceMap }, this.options.build.styleResources)
+ })
+ }
+
+ // postcss-loader
+ // vue-loader already provides it's own
+ // https://github.com/postcss/postcss-loader
+ if (!isVueLoader && this.options.build.postcss) {
+ loaders.unshift({
+ loader: 'postcss-loader',
+ options: Object.assign({ sourceMap }, this.options.build.postcss)
+ })
+ }
+
+ // css-loader
// https://github.com/webpack-contrib/css-loader
- const cssLoader = {
+ loaders.unshift({
loader: 'css-loader',
options: {
- minimize: true,
- importLoaders: 1,
- sourceMap: this.options.build.cssSourceMap,
+ sourceMap,
+ minimize: !this.options.dev,
+ importLoaders: loaders.length, // Important!
alias: {
'/static': join(this.options.srcDir, 'static'),
'/assets': join(this.options.srcDir, 'assets')
}
}
- }
+ })
- // https://github.com/vuejs/vue-style-loader
- const vueStyleLoader = {
- loader: 'vue-style-loader',
- options: {
- sourceMap: this.options.build.cssSourceMap
- }
- }
-
- if (this.options.build.extractCSS) {
- const extraction = ExtractTextPlugin.extract({
- fallback: vueStyleLoader,
- use: [
- cssLoader,
- postcssLoader,
- ...loaders
- ].filter(l => l)
+ // -- With extractCSS --
+ // TODO: Temporary disabled in dev mode for fixing source maps
+ // (We need `source-map` devtool for *.css modules)
+ if (this.options.build.extractCSS && !this.options.dev) {
+ // ExtractTextPlugin
+ // https://github.com/webpack-contrib/extract-text-webpack-plugin
+ const extractLoader = ExtractTextPlugin.extract({
+ use: loaders,
+ fallback: vueStyleLoader
})
- return this.options.dev ? ['css-hot-loader'].concat(extraction) : extraction
- }
- // https://github.com/yenshih/style-resources-loader
- let styleResourcesLoader
- if (this.options.build.styleResources) {
- styleResourcesLoader = {
- loader: 'style-resources-loader',
- options: this.options.build.styleResources
+ // css-hot-loader
+ // https://github.com/shepherdwind/css-hot-loader
+ const hotLoader = {
+ loader: 'css-hot-loader',
+ options: { sourceMap }
}
+
+ return this.options.dev ? [ hotLoader ].concat(extractLoader) : extractLoader
}
- return [
- vueStyleLoader,
- cssLoader,
- postcssLoader,
- ...loaders,
- styleResourcesLoader
- ].filter(l => l)
+ // -- Without extractCSS --
+ return [ vueStyleLoader ].concat(loaders)
}
From ef5b910112af8477ac8fd2cabaf5ae76ee45b0e6 Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Thu, 28 Dec 2017 19:35:34 +0330
Subject: [PATCH 11/52] refactor postcssConfig
---
lib/builder/builder.js | 14 -----
lib/builder/webpack/postcss.js | 74 ++++++++++++++++++++++++
lib/builder/webpack/style-loader.js | 14 +++--
lib/builder/webpack/vue-loader.config.js | 4 +-
lib/common/options.js | 63 --------------------
5 files changed, 86 insertions(+), 83 deletions(-)
create mode 100644 lib/builder/webpack/postcss.js
diff --git a/lib/builder/builder.js b/lib/builder/builder.js
index 832b5fd0a4..16fa8b0fd1 100644
--- a/lib/builder/builder.js
+++ b/lib/builder/builder.js
@@ -118,20 +118,6 @@ module.exports = class Builder {
// Call before hook
await this.nuxt.callHook('build:before', this, this.options.build)
- // Map postcss plugins into instances on object mode once
- if (isPureObject(this.options.build.postcss)) {
- if (isPureObject(this.options.build.postcss.plugins)) {
- this.options.build.postcss.plugins = Object.keys(this.options.build.postcss.plugins)
- .map(p => {
- const plugin = require(this.nuxt.resolvePath(p))
- const opts = this.options.build.postcss.plugins[p]
- if (opts === false) return // Disabled
- const instance = plugin(opts)
- return instance
- }).filter(e => e)
- }
- }
-
// Check if pages dir exists and warn if not
this._nuxtPages = typeof this.options.build.createRoutes !== 'function'
if (this._nuxtPages) {
diff --git a/lib/builder/webpack/postcss.js b/lib/builder/webpack/postcss.js
new file mode 100644
index 0000000000..ee699b4c3f
--- /dev/null
+++ b/lib/builder/webpack/postcss.js
@@ -0,0 +1,74 @@
+const { existsSync } = require('fs')
+const { resolve } = require('path')
+const debug = require('debug')('nuxt:postcss')
+const { isPureObject } = require('../../common/utils')
+const { cloneDeep } = require('lodash')
+
+module.exports = function postcssConfig() {
+ let config = cloneDeep(this.options.build.postcss)
+
+ if (!config) {
+ return false
+ }
+
+ // Search for postCSS config file and use it if exists
+ // https://github.com/michael-ciniawsky/postcss-load-config
+ for (let dir of [this.options.srcDir, this.options.rootDir]) {
+ for (let file of ['postcss.config.js', '.postcssrc.js', '.postcssrc', '.postcssrc.json', '.postcssrc.yaml']) {
+ if (existsSync(resolve(dir, file))) {
+ const postcssConfigPath = resolve(dir, file)
+ debug(`Using config file: ${postcssConfigPath}`)
+ return {
+ sourceMap: this.options.build.cssSourceMap,
+ config: {
+ path: postcssConfigPath
+ }
+ }
+ }
+ }
+ }
+
+ // Normalize
+ if (Array.isArray(config)) {
+ config = { plugins: config }
+ }
+
+ // Apply default plugins
+ if (isPureObject(config)) {
+ config = Object.assign({
+ useConfigFile: false,
+ sourceMap: this.options.build.cssSourceMap,
+ plugins: {
+ // https://github.com/postcss/postcss-import
+ 'postcss-import': {
+ root: this.options.rootDir,
+ path: [
+ this.options.srcDir,
+ this.options.rootDir,
+ ...this.options.modulesDir
+ ]
+ },
+
+ // https://github.com/postcss/postcss-url
+ 'postcss-url': {},
+
+ // http://cssnext.io/postcss
+ 'postcss-cssnext': {}
+ }
+ }, config)
+ }
+
+ // Map postcss plugins into instances on object mode once
+ if (isPureObject(config) && isPureObject(config.plugins)) {
+ config.plugins = Object.keys(config.plugins)
+ .map(p => {
+ const plugin = require(this.nuxt.resolvePath(p))
+ const opts = config.plugins[p]
+ if (opts === false) return // Disabled
+ const instance = plugin(opts)
+ return instance
+ }).filter(e => e)
+ }
+
+ return config
+}
diff --git a/lib/builder/webpack/style-loader.js b/lib/builder/webpack/style-loader.js
index 5c4a8dee2f..dfcfe10f1f 100755
--- a/lib/builder/webpack/style-loader.js
+++ b/lib/builder/webpack/style-loader.js
@@ -1,5 +1,6 @@
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const { join } = require('path')
+const postcssConfig = require('./postcss')
module.exports = function styleLoader(ext, loaders = [], isVueLoader = false) {
const sourceMap = Boolean(this.options.build.cssSourceMap)
@@ -29,11 +30,14 @@ module.exports = function styleLoader(ext, loaders = [], isVueLoader = false) {
// postcss-loader
// vue-loader already provides it's own
// https://github.com/postcss/postcss-loader
- if (!isVueLoader && this.options.build.postcss) {
- loaders.unshift({
- loader: 'postcss-loader',
- options: Object.assign({ sourceMap }, this.options.build.postcss)
- })
+ if (!isVueLoader) {
+ const _postcssConfig = postcssConfig.call(this)
+ if (_postcssConfig) {
+ loaders.unshift({
+ loader: 'postcss-loader',
+ options: Object.assign({ sourceMap }, _postcssConfig)
+ })
+ }
}
// css-loader
diff --git a/lib/builder/webpack/vue-loader.config.js b/lib/builder/webpack/vue-loader.config.js
index af162b1869..ed33271866 100644
--- a/lib/builder/webpack/vue-loader.config.js
+++ b/lib/builder/webpack/vue-loader.config.js
@@ -1,7 +1,9 @@
+const postcssConfig = require('./postcss')
+
module.exports = function vueLoader({ isServer }) {
// https://vue-loader.vuejs.org/en
const config = {
- postcss: this.options.build.postcss,
+ postcss: postcssConfig.call(this),
extractCSS: !!this.options.build.extractCSS,
cssSourceMap: this.options.build.cssSourceMap,
preserveWhitespace: false,
diff --git a/lib/common/options.js b/lib/common/options.js
index 3194c84b5c..e43a8d7506 100755
--- a/lib/common/options.js
+++ b/lib/common/options.js
@@ -91,69 +91,6 @@ Options.from = function (_options) {
options.build.cssSourceMap = options.dev
}
- // Postcss
- // 1. Check if it is explicitly disabled by false value
- // ... Disable all postcss loaders
- // 2. Check if any standard source of postcss config exists
- // ... Make postcss = { config: { path } }
- // 3. Else (Easy Usage)
- // ... Auto merge it with defaults
- if (options.build.postcss !== false) {
- // Detect postcss config existence
- // https://github.com/michael-ciniawsky/postcss-load-config
- let postcssConfigPath
- for (let dir of [options.srcDir, options.rootDir]) {
- for (let file of ['postcss.config.js', '.postcssrc.js', '.postcssrc', '.postcssrc.json', '.postcssrc.yaml']) {
- if (existsSync(resolve(dir, file))) {
- postcssConfigPath = resolve(dir, file)
- break
- }
- }
- if (postcssConfigPath) break
- }
-
- // Default postcss options
- if (postcssConfigPath) {
- debug(`Using PostCSS config file: ${postcssConfigPath}`)
- options.build.postcss = {
- sourceMap: options.build.cssSourceMap,
- // https://github.com/postcss/postcss-loader/blob/master/lib/index.js#L79
- config: {
- path: postcssConfigPath
- }
- }
- } else {
- if (Object.keys(options.build.postcss).length) {
- debug('Using PostCSS config from `build.postcss`')
- }
- // Normalize & Apply default plugins
- if (Array.isArray(options.build.postcss)) {
- options.build.postcss = { plugins: options.build.postcss }
- }
- if (isPureObject(options.build.postcss)) {
- options.build.postcss = Object.assign({
- useConfigFile: false,
- sourceMap: options.build.cssSourceMap,
- plugins: {
- // https://github.com/postcss/postcss-import
- 'postcss-import': {
- root: options.rootDir,
- path: [
- options.srcDir,
- options.rootDir,
- ...options.modulesDir
- ]
- },
- // https://github.com/postcss/postcss-url
- 'postcss-url': {},
- // http://cssnext.io/postcss
- 'postcss-cssnext': {}
- }
- }, options.build.postcss)
- }
- }
- }
-
// Debug errors
if (options.debug === undefined) {
options.debug = options.dev
From 2656529771ae9f4951e4d7f4741f277495707b3b Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Thu, 28 Dec 2017 20:19:56 +0330
Subject: [PATCH 12/52] fix: prioritize nuxtDir in modulesDir
---
lib/common/options.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/common/options.js b/lib/common/options.js
index e43a8d7506..3e4357dd99 100755
--- a/lib/common/options.js
+++ b/lib/common/options.js
@@ -53,7 +53,8 @@ Options.from = function (_options) {
// Populate modulesDir
options.modulesDir = []
- .concat(options.modulesDir, join(options.nuxtDir, 'node_modules'))
+ .concat(join(options.nuxtDir, 'node_modules'))
+ .concat(options.modulesDir)
.filter(dir => hasValue(dir))
.map(dir => resolve(options.rootDir, dir))
From 56965b838bd84dc596efce83fbf1ed4a775c73a8 Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 29 Dec 2017 12:03:13 +0330
Subject: [PATCH 13/52] update tests
Some tests disabled until a fix arrives
---
lib/builder/builder.js | 2 +-
test/basic.dev.test.js | 15 ++++++++-------
test/basic.generate.test.js | 6 +++++-
test/basic.ssr.test.js | 14 +++++++++++---
test/with-config.test.js | 1 +
5 files changed, 26 insertions(+), 12 deletions(-)
diff --git a/lib/builder/builder.js b/lib/builder/builder.js
index 16fa8b0fd1..f073d02ee5 100644
--- a/lib/builder/builder.js
+++ b/lib/builder/builder.js
@@ -9,7 +9,7 @@ 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 { r, wp, wChunk, createRoutes, sequence, relativeTo, waitFor, rmCache } = require('../common/utils')
const Debug = require('debug')
const Glob = require('glob')
const clientWebpackConfig = require('./webpack/client.config.js')
diff --git a/test/basic.dev.test.js b/test/basic.dev.test.js
index 681685b75d..02d08993fa 100644
--- a/test/basic.dev.test.js
+++ b/test/basic.dev.test.js
@@ -40,13 +40,14 @@ test.serial('Init Nuxt.js', async t => {
t.true(spies.log.calledWithMatch('OPEN'))
})
-test.serial('/extractCSS', async t => {
- const window = await nuxt.renderAndGetWindow(url('/extractCSS'))
- const html = window.document.head.innerHTML
- t.true(html.includes('vendor.css'))
- t.true(!html.includes('30px'))
- t.is(window.getComputedStyle(window.document.body).getPropertyValue('font-size'), '30px')
-})
+// TODO: enable test when style-loader.js:60 was resolved
+// test.serial('/extractCSS', async t => {
+// const window = await nuxt.renderAndGetWindow(url('/extractCSS'))
+// const html = window.document.head.innerHTML
+// t.true(html.includes('vendor.css'))
+// t.true(!html.includes('30px'))
+// t.is(window.getComputedStyle(window.document.body).getPropertyValue('font-size'), '30px')
+// })
test.serial('remove mixins in live reloading', async t => {
const spies = await intercept({ log: true, error: true, stderr: true })
diff --git a/test/basic.generate.test.js b/test/basic.generate.test.js
index 27f169b492..14f75bd496 100644
--- a/test/basic.generate.test.js
+++ b/test/basic.generate.test.js
@@ -53,11 +53,15 @@ test.serial('/stateless', async t => {
test.serial('/css', async t => {
const window = await nuxt.renderAndGetWindow(url('/css'))
+
+ const headHtml = window.document.head.innerHTML
+ t.true(headHtml.includes('.red{color:red}'))
+
const element = window.document.querySelector('.red')
t.not(element, null)
t.is(element.textContent, 'This is red')
t.is(element.className, 'red')
- t.is(window.getComputedStyle(element).color, 'red')
+ // t.is(window.getComputedStyle(element), 'red')
})
test.serial('/stateful', async t => {
diff --git a/test/basic.ssr.test.js b/test/basic.ssr.test.js
index 5e5ee17305..82ee3fe7ed 100755
--- a/test/basic.ssr.test.js
+++ b/test/basic.ssr.test.js
@@ -46,17 +46,25 @@ test('/stateless', async t => {
*/
test('/css', async t => {
const window = await nuxt.renderAndGetWindow(url('/css'))
+
+ const headHtml = window.document.head.innerHTML
+ t.true(headHtml.includes('color:red'))
+
const element = window.document.querySelector('.red')
t.not(element, null)
t.is(element.textContent, 'This is red')
t.is(element.className, 'red')
- t.is(window.getComputedStyle(element).color, 'red')
+ // t.is(window.getComputedStyle(element).color, 'red')
})
test('/postcss', async t => {
const window = await nuxt.renderAndGetWindow(url('/css'))
- const element = window.document.querySelector('div.red')
- t.is(window.getComputedStyle(element)['background-color'], 'blue')
+
+ const headHtml = window.document.head.innerHTML
+ t.true(headHtml.includes('background-color:blue'))
+
+ // const element = window.document.querySelector('div.red')
+ // t.is(window.getComputedStyle(element)['background-color'], 'blue')
})
test('/stateful', async t => {
diff --git a/test/with-config.test.js b/test/with-config.test.js
index d70faa13b1..b1e9d94166 100644
--- a/test/with-config.test.js
+++ b/test/with-config.test.js
@@ -186,6 +186,7 @@ test('Check build.styleResources for style-resources-loader', async t => {
const loader = loaders.find(l => l.loader === 'style-resources-loader')
t.is(typeof loader, 'object')
t.deepEqual(loader.options, {
+ sourceMap: false,
patterns: [
'~/assets/pre-process.scss'
]
From f4ca25a692f5e41fd11346abb919a20f2c6c5965 Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 29 Dec 2017 12:13:24 +0330
Subject: [PATCH 14/52] coverage
---
lib/builder/webpack/postcss.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/builder/webpack/postcss.js b/lib/builder/webpack/postcss.js
index ee699b4c3f..fb1b171636 100644
--- a/lib/builder/webpack/postcss.js
+++ b/lib/builder/webpack/postcss.js
@@ -7,6 +7,7 @@ const { cloneDeep } = require('lodash')
module.exports = function postcssConfig() {
let config = cloneDeep(this.options.build.postcss)
+ /* istanbul ignore if */
if (!config) {
return false
}
From bfe1f2c4d3849b12f0c7fa576ce6ce3a6f14c0af Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 29 Dec 2017 12:26:32 +0330
Subject: [PATCH 15/52] builder loader refactors
---
lib/builder/builder.js | 10 ++--------
lib/builder/webpack/base.config.js | 14 ++++++++------
lib/builder/webpack/postcss.js | 2 +-
.../{vue-loader.config.js => vue-loader.js} | 13 +++++++------
4 files changed, 18 insertions(+), 21 deletions(-)
rename lib/builder/webpack/{vue-loader.config.js => vue-loader.js} (61%)
diff --git a/lib/builder/builder.js b/lib/builder/builder.js
index f073d02ee5..5ccb3cbddd 100644
--- a/lib/builder/builder.js
+++ b/lib/builder/builder.js
@@ -9,15 +9,13 @@ 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, waitFor, rmCache } = require('../common/utils')
const Debug = require('debug')
const Glob = require('glob')
+const { r, wp, wChunk, createRoutes, sequence, relativeTo, waitFor, rmCache } = require('../common/utils')
+const { Options } = require('../common')
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
@@ -44,10 +42,6 @@ module.exports = class Builder {
// Helper to resolve build paths
this.relativeToBuild = (...args) => relativeTo(this.options.buildDir, ...args)
- // Bind styleLoader and vueLoader
- this.styleLoader = styleLoader.bind(this)
- this.vueLoader = vueLoaderConfig.bind(this)
-
this._buildStatus = STATUS.INITIAL
// Stop watching on nuxt.close()
diff --git a/lib/builder/webpack/base.config.js b/lib/builder/webpack/base.config.js
index ffb458bbdf..61ad371b1d 100644
--- a/lib/builder/webpack/base.config.js
+++ b/lib/builder/webpack/base.config.js
@@ -2,6 +2,8 @@ const ExtractTextPlugin = require('extract-text-webpack-plugin')
const { cloneDeep } = require('lodash')
const { join, resolve } = require('path')
const { isUrl, urlJoin } = require('../../common/utils')
+const vueLoader = require('./vue-loader')
+const styleLoader = require('./style-loader')
const TimeFixPlugin = require('./plugins/timefix')
const WarnFixPlugin = require('./plugins/warnfix')
@@ -56,7 +58,7 @@ module.exports = function webpackBaseConfig({ name, isServer }) {
{
test: /\.vue$/,
loader: 'vue-loader',
- options: this.vueLoader({ isServer })
+ options: vueLoader.call(this, { isServer })
},
{
test: /\.js$/,
@@ -64,11 +66,11 @@ module.exports = function webpackBaseConfig({ name, isServer }) {
exclude: /node_modules/,
options: this.getBabelOptions({ isServer })
},
- { test: /\.css$/, use: this.styleLoader('css') },
- { test: /\.less$/, use: this.styleLoader('less', 'less-loader') },
- { test: /\.sass$/, use: this.styleLoader('sass', {loader: 'sass-loader', options: { indentedSyntax: true }}) },
- { test: /\.scss$/, use: this.styleLoader('scss', 'sass-loader') },
- { test: /\.styl(us)?$/, use: this.styleLoader('stylus', 'stylus-loader') },
+ { test: /\.css$/, use: styleLoader.call(this, 'css') },
+ { test: /\.less$/, use: styleLoader.call(this, 'less', 'less-loader') },
+ { test: /\.sass$/, use: styleLoader.call(this, 'sass', {loader: 'sass-loader', options: { indentedSyntax: true }}) },
+ { test: /\.scss$/, use: styleLoader.call(this, 'scss', 'sass-loader') },
+ { test: /\.styl(us)?$/, use: styleLoader.call(this, 'stylus', 'stylus-loader') },
{
test: /\.(png|jpe?g|gif|svg)$/,
loader: 'url-loader',
diff --git a/lib/builder/webpack/postcss.js b/lib/builder/webpack/postcss.js
index fb1b171636..a9c3674c46 100644
--- a/lib/builder/webpack/postcss.js
+++ b/lib/builder/webpack/postcss.js
@@ -1,8 +1,8 @@
const { existsSync } = require('fs')
const { resolve } = require('path')
+const { cloneDeep } = require('lodash')
const debug = require('debug')('nuxt:postcss')
const { isPureObject } = require('../../common/utils')
-const { cloneDeep } = require('lodash')
module.exports = function postcssConfig() {
let config = cloneDeep(this.options.build.postcss)
diff --git a/lib/builder/webpack/vue-loader.config.js b/lib/builder/webpack/vue-loader.js
similarity index 61%
rename from lib/builder/webpack/vue-loader.config.js
rename to lib/builder/webpack/vue-loader.js
index ed33271866..517b15a6e7 100644
--- a/lib/builder/webpack/vue-loader.config.js
+++ b/lib/builder/webpack/vue-loader.js
@@ -1,4 +1,5 @@
const postcssConfig = require('./postcss')
+const styleLoader = require('./style-loader')
module.exports = function vueLoader({ isServer }) {
// https://vue-loader.vuejs.org/en
@@ -13,12 +14,12 @@ module.exports = function vueLoader({ isServer }) {
options: this.getBabelOptions({ isServer })
},
// Note: do not nest the `postcss` option under `loaders`
- 'css': this.styleLoader('css', [], true),
- 'less': this.styleLoader('less', 'less-loader', true),
- 'scss': this.styleLoader('scss', 'sass-loader', true),
- 'sass': this.styleLoader('sass', {loader: 'sass-loader', options: { indentedSyntax: true }}, true),
- 'stylus': this.styleLoader('stylus', 'stylus-loader', true),
- 'styl': this.styleLoader('stylus', 'stylus-loader', true)
+ 'css': styleLoader.call(this, 'css', [], true),
+ 'less': styleLoader.call(this, 'less', 'less-loader', true),
+ 'scss': styleLoader.call(this, 'scss', 'sass-loader', true),
+ 'sass': styleLoader.call(this, 'sass', {loader: 'sass-loader', options: { indentedSyntax: true }}, true),
+ 'stylus': styleLoader.call(this, 'stylus', 'stylus-loader', true),
+ 'styl': styleLoader.call(this, 'stylus', 'stylus-loader', true)
},
template: {
doctype: 'html' // For pug, see https://github.com/vuejs/vue-loader/issues/55
From d243ad13e184a239bb7441ba46f0c42ac7067f7b Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 29 Dec 2017 13:15:21 +0330
Subject: [PATCH 16/52] improve dist chunks structure
Moving all js assets into _nuxt/js and css assets into _nuxt/css
---
lib/common/options.js | 10 +++++-----
test/with-config.test.js | 2 +-
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/lib/common/options.js b/lib/common/options.js
index 3e4357dd99..7ce535496a 100755
--- a/lib/common/options.js
+++ b/lib/common/options.js
@@ -154,11 +154,11 @@ Options.defaults = {
uglify: {},
publicPath: '/_nuxt/',
filenames: {
- css: 'vendor.[contenthash].css',
- manifest: 'manifest.[hash].js',
- vendor: 'vendor.[chunkhash].js',
- app: 'app.[chunkhash].js',
- chunk: '[name].[chunkhash].js'
+ css: 'css/[name].[contenthash].css',
+ manifest: 'js/manifest.[hash].js',
+ vendor: 'js/vendor.[chunkhash].js',
+ app: 'js/app.[chunkhash].js',
+ chunk: 'js/[name].[chunkhash].js'
},
vendor: [],
plugins: [],
diff --git a/test/with-config.test.js b/test/with-config.test.js
index b1e9d94166..e43fae4471 100644
--- a/test/with-config.test.js
+++ b/test/with-config.test.js
@@ -54,7 +54,7 @@ test('/ (custom app.html)', async t => {
test('/ (custom build.publicPath)', async t => {
const { html } = await nuxt.renderRoute('/')
- t.true(html.includes('src="/test/orion/vendor.'))
+ t.true(html.includes('src="/test/orion/js/vendor.'))
})
test('/ (custom postcss.config.js)', async t => {
From 8868a4e8f4d407172dc0f69a4023d81154803975 Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 29 Dec 2017 13:18:47 +0330
Subject: [PATCH 17/52] update style-loader test
---
test/with-config.test.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/test/with-config.test.js b/test/with-config.test.js
index e43fae4471..edc7135b9b 100644
--- a/test/with-config.test.js
+++ b/test/with-config.test.js
@@ -2,6 +2,7 @@ import test from 'ava'
import { resolve } from 'path'
import rp from 'request-promise-native'
import { Nuxt, Builder } from '..'
+import styleLoader from '../lib/builder/webpack/style-loader'
import { interceptLog, release } from './helpers/console'
const port = 4007
@@ -182,7 +183,7 @@ test('Check /test.txt should return 404', async t => {
})
test('Check build.styleResources for style-resources-loader', async t => {
- const loaders = builder.styleLoader('scss')
+ const loaders = styleLoader.call(builder, 'scss')
const loader = loaders.find(l => l.loader === 'style-resources-loader')
t.is(typeof loader, 'object')
t.deepEqual(loader.options, {
From 61232a61e65c8e836e53ac8fa5bd12631424a0f1 Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 29 Dec 2017 15:16:31 +0330
Subject: [PATCH 18/52] fix: avoid pretty-error mutating traces
---
lib/common/cli/errors.js | 16 +---------------
1 file changed, 1 insertion(+), 15 deletions(-)
diff --git a/lib/common/cli/errors.js b/lib/common/cli/errors.js
index 8ec2230db6..8c8ad73da2 100644
--- a/lib/common/cli/errors.js
+++ b/lib/common/cli/errors.js
@@ -1,21 +1,7 @@
const PrettyError = require('pretty-error')
// Start default instance
-const pe = PrettyError.start()
-
-// Configure prettyError instance
-pe.skipPackage('regenerator-runtime')
-pe.skipPackage('babel-runtime')
-pe.skipPackage('core-js')
-
-// Skip node internals
-pe.skip((traceLine, lineNumber) => {
- if (!traceLine.file) {
- return true
- }
-})
-
-pe.skipNodeFiles()
+const pe = new PrettyError()
// Console error unhandled promises
process.on('unhandledRejection', function (err) {
From 806287e62c3064397ee55a5ff3cdc4a0db3c34ea Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 29 Dec 2017 16:01:19 +0330
Subject: [PATCH 19/52] fix inject for store
---
lib/app/index.js | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/lib/app/index.js b/lib/app/index.js
index bfcecfd48c..1a2d79fed8 100644
--- a/lib/app/index.js
+++ b/lib/app/index.js
@@ -126,6 +126,10 @@ async function createApp (ssrContext) {
key = '$' + key
// Add into app
app[key] = value
+ <% if (store) { %>
+ // Add into store
+ store[key] = app[key]
+ <% } %>
// Check if plugin not already installed
const installKey = '__nuxt_' + key + '_installed__'
if (Vue[installKey]) return
@@ -140,10 +144,6 @@ async function createApp (ssrContext) {
})
}
})
- <% if (store) { %>
- // Add into store
- store[key] = app[key]
- <% } %>
}
<% if (store) { %>
From 1af78f663a647742c4be1783ecaabc3a5c86f55f Mon Sep 17 00:00:00 2001
From: Clark Du
Date: Mon, 1 Jan 2018 23:35:47 +0800
Subject: [PATCH 20/52] chore: upgrade dependencies
---
package.json | 6 +-
yarn.lock | 551 +++++++++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 542 insertions(+), 15 deletions(-)
diff --git a/package.json b/package.json
index 219e1efd6a..7e7ee596da 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,7 @@
"babel-preset-vue-app": "^2.0.0",
"caniuse-lite": "^1.0.30000784",
"chalk": "^2.3.0",
- "chokidar": "^1.7.0",
+ "chokidar": "^2.0.0",
"clone": "^2.1.1",
"compression": "^1.7.1",
"connect": "^3.6.5",
@@ -103,7 +103,7 @@
"uglifyjs-webpack-plugin": "^1.1.5",
"url-loader": "^0.6.2",
"vue": "^2.5.13",
- "vue-loader": "^13.6.1",
+ "vue-loader": "^13.6.2",
"vue-meta": "^1.4.0",
"vue-router": "^3.0.1",
"vue-server-renderer": "^2.5.13",
@@ -142,7 +142,7 @@
"request": "^2.83.0",
"request-promise-native": "^1.0.5",
"sinon": "^4.1.2",
- "uglify-js": "^3.3.2"
+ "uglify-js": "^3.3.4"
},
"collective": {
"type": "opencollective",
diff --git a/yarn.lock b/yarn.lock
index 9176979196..398bc1d137 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -247,6 +247,13 @@ anymatch@^1.3.0:
micromatch "^2.1.5"
normalize-path "^2.0.0"
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+ dependencies:
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
+
append-transform@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
@@ -284,14 +291,22 @@ arr-diff@^2.0.0:
dependencies:
arr-flatten "^1.0.1"
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+
arr-exclude@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/arr-exclude/-/arr-exclude-1.0.0.tgz#dfc7c2e552a270723ccda04cf3128c8cbfe5c631"
-arr-flatten@^1.0.1:
+arr-flatten@^1.0.1, arr-flatten@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+
array-differ@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
@@ -329,6 +344,10 @@ array-unique@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+
arrify@^1.0.0, arrify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
@@ -363,6 +382,10 @@ assert@^1.1.1:
dependencies:
util "0.10.3"
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+
async-each@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
@@ -385,6 +408,10 @@ asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+atob@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d"
+
auto-bind@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-1.1.0.tgz#93b864dc7ee01a326281775d5c75ca0a751e5961"
@@ -1124,6 +1151,18 @@ base64-js@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
bcrypt-pbkdf@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
@@ -1216,6 +1255,22 @@ braces@^1.8.2:
preserve "^0.2.0"
repeat-element "^1.1.2"
+braces@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.0.tgz#a46941cb5fb492156b3d6a656e06c35364e3e66e"
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
brorand@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
@@ -1336,6 +1391,20 @@ cacache@^10.0.0, cacache@^10.0.1:
unique-filename "^1.1.0"
y18n "^3.2.1"
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
caching-transform@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1"
@@ -1479,6 +1548,23 @@ chokidar@^1.4.2, chokidar@^1.7.0:
optionalDependencies:
fsevents "^1.0.0"
+chokidar@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.0.tgz#6686313c541d3274b2a5c01233342037948c911b"
+ dependencies:
+ anymatch "^2.0.0"
+ async-each "^1.0.0"
+ braces "^2.3.0"
+ glob-parent "^3.1.0"
+ inherits "^2.0.1"
+ is-binary-path "^1.0.0"
+ is-glob "^4.0.0"
+ normalize-path "^2.1.1"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.0.0"
+ optionalDependencies:
+ fsevents "^1.0.0"
+
chownr@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
@@ -1504,6 +1590,16 @@ clap@^1.0.9, clap@^1.1.3:
dependencies:
chalk "^1.1.3"
+class-utils@^0.3.5:
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.5.tgz#17e793103750f9627b2176ea34cfd1b565903c80"
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ lazy-cache "^2.0.2"
+ static-extend "^0.1.1"
+
clean-css@4.1.x:
version "4.1.9"
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301"
@@ -1601,6 +1697,13 @@ codecov@^3.0.0:
request "2.81.0"
urlgrey "0.4.4"
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
color-convert@^1.3.0, color-convert@^1.8.2, color-convert@^1.9.0, color-convert@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
@@ -1676,6 +1779,10 @@ commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+component-emitter@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
+
compressible@~2.0.11:
version "2.0.12"
resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.12.tgz#c59a5c99db76767e9876500e271ef63b3493bd66"
@@ -1805,6 +1912,10 @@ copy-concurrently@^1.0.0:
rimraf "^2.5.4"
run-queue "^1.0.0"
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+
copy-webpack-plugin@^4.3.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.3.1.tgz#19ba6370bf6f8e263cbd66185a2b79f2321a9302"
@@ -2108,7 +2219,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.6.8:
+debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
dependencies:
@@ -2124,6 +2235,10 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+
deep-equal@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
@@ -2153,6 +2268,18 @@ define-properties@^1.1.2:
foreach "^2.0.5"
object-keys "^1.0.8"
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ dependencies:
+ is-descriptor "^1.0.0"
+
defined@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
@@ -2749,6 +2876,18 @@ expand-brackets@^0.1.4:
dependencies:
is-posix-bracket "^0.1.0"
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
expand-range@^1.8.1:
version "1.8.2"
resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
@@ -2790,6 +2929,19 @@ express@^4.15.2, express@^4.16.2:
utils-merge "1.0.1"
vary "~1.1.2"
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
extend@~3.0.0, extend@~3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
@@ -2808,6 +2960,19 @@ extglob@^0.3.1:
dependencies:
is-extglob "^1.0.0"
+extglob@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.3.tgz#55e019d0c95bf873949c737b7e5172dba84ebb29"
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
extract-text-webpack-plugin@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7"
@@ -2910,6 +3075,15 @@ fill-range@^2.1.0:
repeat-element "^1.1.2"
repeat-string "^1.5.2"
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
finalhandler@1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz#007aea33d1a4d3e42017f624848ad58d212f814f"
@@ -2987,7 +3161,7 @@ fn-name@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7"
-for-in@^1.0.1:
+for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -3038,6 +3212,12 @@ forwarded@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ dependencies:
+ map-cache "^0.2.2"
+
fresh@0.5.2, fresh@^0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
@@ -3143,6 +3323,10 @@ get-stream@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
@@ -3162,6 +3346,13 @@ glob-parent@^2.0.0:
dependencies:
is-glob "^2.0.0"
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.2:
version "7.1.2"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
@@ -3307,6 +3498,33 @@ has-unicode@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
has-yarn@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-1.0.0.tgz#89e25db604b725c8f5976fff0addc921b828a5a7"
@@ -3652,6 +3870,18 @@ is-absolute-url@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ dependencies:
+ kind-of "^6.0.0"
+
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
@@ -3686,10 +3916,38 @@ is-ci@^1.0.7:
dependencies:
ci-info "^1.0.0"
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ dependencies:
+ kind-of "^6.0.0"
+
is-date-object@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
is-directory@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
@@ -3708,15 +3966,21 @@ is-error@^2.2.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.1.tgz#684a96d84076577c98f4cdb40c6d26a5123bf19c"
-is-extendable@^0.1.1:
+is-extendable@^0.1.0, is-extendable@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ dependencies:
+ is-plain-object "^2.0.4"
+
is-extglob@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
-is-extglob@^2.1.1:
+is-extglob@^2.1.0, is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
@@ -3746,6 +4010,12 @@ is-glob@^2.0.0, is-glob@^2.0.1:
dependencies:
is-extglob "^1.0.0"
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ dependencies:
+ is-extglob "^2.1.0"
+
is-glob@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
@@ -3791,6 +4061,12 @@ is-observable@^1.0.0:
dependencies:
symbol-observable "^1.1.0"
+is-odd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-1.0.0.tgz#3b8a932eb028b3775c39bb09e91767accdb69088"
+ dependencies:
+ is-number "^3.0.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"
@@ -3811,6 +4087,12 @@ is-plain-obj@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ dependencies:
+ isobject "^3.0.1"
+
is-posix-bracket@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
@@ -3893,6 +4175,10 @@ isobject@^2.0.0:
dependencies:
isarray "1.0.0"
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+
isomorphic-fetch@^2.1.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
@@ -4081,7 +4367,7 @@ just-extend@^1.1.26:
version "1.1.27"
resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.27.tgz#ec6e79410ff914e472652abfa0e603c03d60e905"
-kind-of@^3.0.2:
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
dependencies:
@@ -4093,6 +4379,14 @@ kind-of@^4.0.0:
dependencies:
is-buffer "^1.1.5"
+kind-of@^5.0.0, kind-of@^5.0.2:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+
last-line-stream@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/last-line-stream/-/last-line-stream-1.0.0.tgz#d1b64d69f86ff24af2d04883a2ceee14520a5600"
@@ -4109,6 +4403,12 @@ lazy-cache@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
+lazy-cache@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264"
+ dependencies:
+ set-getter "^0.1.0"
+
lcid@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
@@ -4323,10 +4623,20 @@ make-dir@^1.0.0:
dependencies:
pify "^3.0.0"
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+
map-obj@^1.0.0, map-obj@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ dependencies:
+ object-visit "^1.0.0"
+
matcher@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.0.0.tgz#aaf0c4816eb69b92094674175625f3466b0e3e19"
@@ -4424,6 +4734,24 @@ micromatch@^2.1.5, micromatch@^2.3.11:
parse-glob "^3.0.4"
regex-cache "^0.4.2"
+micromatch@^3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.4.tgz#bb812e741a41f982c854e42b421a7eac458796f4"
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.0"
+ define-property "^1.0.0"
+ extend-shallow "^2.0.1"
+ extglob "^2.0.2"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.0"
+ nanomatch "^1.2.5"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
miller-rabin@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
@@ -4502,6 +4830,13 @@ mississippi@^1.3.0:
stream-each "^1.1.0"
through2 "^2.0.0"
+mixin-deep@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.0.tgz#47a8732ba97799457c8c1eca28f95132d7e8150a"
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
mkdirp@0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12"
@@ -4554,6 +4889,22 @@ nan@^2.3.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
+nanomatch@^1.2.5:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.6.tgz#f27233e97c34a8706b7e781a4bc611c957a81625"
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ is-odd "^1.0.0"
+ kind-of "^5.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -4658,7 +5009,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
-normalize-path@^2.0.0, normalize-path@^2.0.1:
+normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
dependencies:
@@ -4750,10 +5101,24 @@ object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
object-keys@^1.0.11, object-keys@^1.0.8:
version "1.0.11"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ dependencies:
+ isobject "^3.0.0"
+
object.assign@^4.0.1:
version "4.1.0"
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
@@ -4770,6 +5135,12 @@ object.omit@^2.0.0:
for-own "^0.1.4"
is-extendable "^0.1.1"
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ dependencies:
+ isobject "^3.0.1"
+
observable-to-promise@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-0.5.0.tgz#c828f0f0dc47e9f86af8a4977c5d55076ce7a91f"
@@ -4987,10 +5358,18 @@ parseurl@~1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+
path-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+
path-exists@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
@@ -5145,6 +5524,10 @@ pn@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/pn/-/pn-1.0.0.tgz#1cf5a30b0d806cd18f88fc41a6b5d4ad615b3ba9"
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+
postcss-apply@^0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/postcss-apply/-/postcss-apply-0.8.0.tgz#14e544bbb5cb6f1c1e048857965d79ae066b1343"
@@ -6005,6 +6388,12 @@ regex-cache@^0.4.2:
dependencies:
is-equal-shallow "^0.1.3"
+regex-not@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.0.tgz#42f83e39771622df826b02af176525d6a5f157f9"
+ dependencies:
+ extend-shallow "^2.0.1"
+
regexpu-core@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
@@ -6072,7 +6461,7 @@ repeat-element@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
-repeat-string@^1.5.2:
+repeat-string@^1.5.2, repeat-string@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
@@ -6191,6 +6580,10 @@ resolve-from@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+
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"
@@ -6328,10 +6721,34 @@ set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+set-getter@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376"
+ dependencies:
+ to-object-path "^0.3.0"
+
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"
+set-value@^0.4.3:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.1"
+ to-object-path "^0.3.0"
+
+set-value@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
setimmediate@^1.0.4, setimmediate@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
@@ -6397,6 +6814,33 @@ slide@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.1.tgz#e12b5487faded3e3dea0ac91e9400bf75b401370"
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^2.0.0"
+
sntp@1.x.x:
version "1.0.9"
resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
@@ -6425,6 +6869,16 @@ 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-resolve@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a"
+ dependencies:
+ atob "^2.0.0"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
source-map-support@^0.4.15:
version "0.4.18"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
@@ -6437,6 +6891,10 @@ source-map-support@^0.5.0:
dependencies:
source-map "^0.6.0"
+source-map-url@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+
source-map@0.5.6:
version "0.5.6"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
@@ -6480,6 +6938,12 @@ spdx-license-ids@^1.0.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ dependencies:
+ extend-shallow "^3.0.0"
+
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
@@ -6516,6 +6980,13 @@ stackframe@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b"
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
"statuses@>= 1.3.1 < 2":
version "1.4.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
@@ -6810,6 +7281,27 @@ to-fast-properties@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.1.tgz#15358bee4a2c83bd76377ba1dc049d0f18837aae"
+ dependencies:
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ regex-not "^1.0.0"
+
toposort@^1.0.0:
version "1.0.6"
resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.6.tgz#c31748e55d210effc00fdcdc7d6e68d7d7bb9cec"
@@ -6884,7 +7376,7 @@ uglify-es@3.2.2:
commander "~2.12.1"
source-map "~0.6.1"
-uglify-js@3.3.x, uglify-js@^3.3.2:
+uglify-js@3.3.x:
version "3.3.2"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.2.tgz#517af20aad7abe15e1e4c9aa33c0cc72aa0107ab"
dependencies:
@@ -6900,6 +7392,13 @@ uglify-js@^2.6, uglify-js@^2.8.29:
optionalDependencies:
uglify-to-browserify "~1.0.0"
+uglify-js@^3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.4.tgz#d8ebb76f201a3798ac2f0b6519642fcca4a99834"
+ dependencies:
+ commander "~2.12.1"
+ source-map "~0.6.1"
+
uglify-to-browserify@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
@@ -6937,6 +7436,15 @@ ultron@~1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
+union-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^0.4.3"
+
uniq@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
@@ -6992,6 +7500,13 @@ unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
unzip-response@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
@@ -7014,6 +7529,10 @@ upper-case@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+
url-join@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.2.tgz#c072756967ad24b8b59e5741551caac78f50b8b7"
@@ -7043,6 +7562,14 @@ urlgrey@0.4.4:
version "0.4.4"
resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f"
+use@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz#ae28a0d72f93bf22422a18a2e379993112dec8e8"
+ dependencies:
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ lazy-cache "^2.0.2"
+
util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
@@ -7106,9 +7633,9 @@ vue-hot-reload-api@^2.2.0:
version "2.2.4"
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.2.4.tgz#683bd1d026c0d3b3c937d5875679e9a87ec6cd8f"
-vue-loader@^13.6.1:
- version "13.6.1"
- resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-13.6.1.tgz#3ad365271b3db382722ab2eb0d6936d8d52ec2ce"
+vue-loader@^13.6.2:
+ version "13.6.2"
+ resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-13.6.2.tgz#43d9688f2c80400916104d1138941aacd7e389cb"
dependencies:
consolidate "^0.14.0"
hash-sum "^1.0.2"
From a5b6d8ee9f74671eed647fb8d4987ede7a647e33 Mon Sep 17 00:00:00 2001
From: Clark Du
Date: Tue, 2 Jan 2018 00:01:39 +0800
Subject: [PATCH 21/52] chore: downgrade chokidar
---
package.json | 2 +-
yarn.lock | 536 +--------------------------------------------------
2 files changed, 9 insertions(+), 529 deletions(-)
diff --git a/package.json b/package.json
index 7e7ee596da..c6b503ed84 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,7 @@
"babel-preset-vue-app": "^2.0.0",
"caniuse-lite": "^1.0.30000784",
"chalk": "^2.3.0",
- "chokidar": "^2.0.0",
+ "chokidar": "^1.7.0",
"clone": "^2.1.1",
"compression": "^1.7.1",
"connect": "^3.6.5",
diff --git a/yarn.lock b/yarn.lock
index 398bc1d137..e86bb03c52 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -247,13 +247,6 @@ anymatch@^1.3.0:
micromatch "^2.1.5"
normalize-path "^2.0.0"
-anymatch@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
- dependencies:
- micromatch "^3.1.4"
- normalize-path "^2.1.1"
-
append-transform@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
@@ -291,22 +284,14 @@ arr-diff@^2.0.0:
dependencies:
arr-flatten "^1.0.1"
-arr-diff@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
-
arr-exclude@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/arr-exclude/-/arr-exclude-1.0.0.tgz#dfc7c2e552a270723ccda04cf3128c8cbfe5c631"
-arr-flatten@^1.0.1, arr-flatten@^1.1.0:
+arr-flatten@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
-arr-union@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
-
array-differ@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
@@ -344,10 +329,6 @@ array-unique@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
-array-unique@^0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
-
arrify@^1.0.0, arrify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
@@ -382,10 +363,6 @@ assert@^1.1.1:
dependencies:
util "0.10.3"
-assign-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
-
async-each@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
@@ -408,10 +385,6 @@ asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
-atob@^2.0.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d"
-
auto-bind@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-1.1.0.tgz#93b864dc7ee01a326281775d5c75ca0a751e5961"
@@ -1151,18 +1124,6 @@ base64-js@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
-base@^0.11.1:
- version "0.11.2"
- resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
- dependencies:
- cache-base "^1.0.1"
- class-utils "^0.3.5"
- component-emitter "^1.2.1"
- define-property "^1.0.0"
- isobject "^3.0.1"
- mixin-deep "^1.2.0"
- pascalcase "^0.1.1"
-
bcrypt-pbkdf@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
@@ -1255,22 +1216,6 @@ braces@^1.8.2:
preserve "^0.2.0"
repeat-element "^1.1.2"
-braces@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.0.tgz#a46941cb5fb492156b3d6a656e06c35364e3e66e"
- dependencies:
- arr-flatten "^1.1.0"
- array-unique "^0.3.2"
- define-property "^1.0.0"
- extend-shallow "^2.0.1"
- fill-range "^4.0.0"
- isobject "^3.0.1"
- repeat-element "^1.1.2"
- snapdragon "^0.8.1"
- snapdragon-node "^2.0.1"
- split-string "^3.0.2"
- to-regex "^3.0.1"
-
brorand@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
@@ -1391,20 +1336,6 @@ cacache@^10.0.0, cacache@^10.0.1:
unique-filename "^1.1.0"
y18n "^3.2.1"
-cache-base@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
- dependencies:
- collection-visit "^1.0.0"
- component-emitter "^1.2.1"
- get-value "^2.0.6"
- has-value "^1.0.0"
- isobject "^3.0.1"
- set-value "^2.0.0"
- to-object-path "^0.3.0"
- union-value "^1.0.0"
- unset-value "^1.0.0"
-
caching-transform@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1"
@@ -1548,23 +1479,6 @@ chokidar@^1.4.2, chokidar@^1.7.0:
optionalDependencies:
fsevents "^1.0.0"
-chokidar@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.0.tgz#6686313c541d3274b2a5c01233342037948c911b"
- dependencies:
- anymatch "^2.0.0"
- async-each "^1.0.0"
- braces "^2.3.0"
- glob-parent "^3.1.0"
- inherits "^2.0.1"
- is-binary-path "^1.0.0"
- is-glob "^4.0.0"
- normalize-path "^2.1.1"
- path-is-absolute "^1.0.0"
- readdirp "^2.0.0"
- optionalDependencies:
- fsevents "^1.0.0"
-
chownr@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
@@ -1590,16 +1504,6 @@ clap@^1.0.9, clap@^1.1.3:
dependencies:
chalk "^1.1.3"
-class-utils@^0.3.5:
- version "0.3.5"
- resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.5.tgz#17e793103750f9627b2176ea34cfd1b565903c80"
- dependencies:
- arr-union "^3.1.0"
- define-property "^0.2.5"
- isobject "^3.0.0"
- lazy-cache "^2.0.2"
- static-extend "^0.1.1"
-
clean-css@4.1.x:
version "4.1.9"
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301"
@@ -1697,13 +1601,6 @@ codecov@^3.0.0:
request "2.81.0"
urlgrey "0.4.4"
-collection-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
- dependencies:
- map-visit "^1.0.0"
- object-visit "^1.0.0"
-
color-convert@^1.3.0, color-convert@^1.8.2, color-convert@^1.9.0, color-convert@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
@@ -1779,10 +1676,6 @@ commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
-component-emitter@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
-
compressible@~2.0.11:
version "2.0.12"
resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.12.tgz#c59a5c99db76767e9876500e271ef63b3493bd66"
@@ -1912,10 +1805,6 @@ copy-concurrently@^1.0.0:
rimraf "^2.5.4"
run-queue "^1.0.0"
-copy-descriptor@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
-
copy-webpack-plugin@^4.3.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.3.1.tgz#19ba6370bf6f8e263cbd66185a2b79f2321a9302"
@@ -2219,7 +2108,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.3.3, 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:
@@ -2235,10 +2124,6 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
-decode-uri-component@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
-
deep-equal@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
@@ -2268,18 +2153,6 @@ define-properties@^1.1.2:
foreach "^2.0.5"
object-keys "^1.0.8"
-define-property@^0.2.5:
- version "0.2.5"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
- dependencies:
- is-descriptor "^0.1.0"
-
-define-property@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
- dependencies:
- is-descriptor "^1.0.0"
-
defined@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
@@ -2876,18 +2749,6 @@ expand-brackets@^0.1.4:
dependencies:
is-posix-bracket "^0.1.0"
-expand-brackets@^2.1.4:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
- dependencies:
- debug "^2.3.3"
- define-property "^0.2.5"
- extend-shallow "^2.0.1"
- posix-character-classes "^0.1.0"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
expand-range@^1.8.1:
version "1.8.2"
resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
@@ -2929,19 +2790,6 @@ express@^4.15.2, express@^4.16.2:
utils-merge "1.0.1"
vary "~1.1.2"
-extend-shallow@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
- dependencies:
- is-extendable "^0.1.0"
-
-extend-shallow@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
- dependencies:
- assign-symbols "^1.0.0"
- is-extendable "^1.0.1"
-
extend@~3.0.0, extend@~3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
@@ -2960,19 +2808,6 @@ extglob@^0.3.1:
dependencies:
is-extglob "^1.0.0"
-extglob@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.3.tgz#55e019d0c95bf873949c737b7e5172dba84ebb29"
- dependencies:
- array-unique "^0.3.2"
- define-property "^1.0.0"
- expand-brackets "^2.1.4"
- extend-shallow "^2.0.1"
- fragment-cache "^0.2.1"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
extract-text-webpack-plugin@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7"
@@ -3075,15 +2910,6 @@ fill-range@^2.1.0:
repeat-element "^1.1.2"
repeat-string "^1.5.2"
-fill-range@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
- dependencies:
- extend-shallow "^2.0.1"
- is-number "^3.0.0"
- repeat-string "^1.6.1"
- to-regex-range "^2.1.0"
-
finalhandler@1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz#007aea33d1a4d3e42017f624848ad58d212f814f"
@@ -3161,7 +2987,7 @@ fn-name@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7"
-for-in@^1.0.1, for-in@^1.0.2:
+for-in@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -3212,12 +3038,6 @@ forwarded@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
-fragment-cache@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
- dependencies:
- map-cache "^0.2.2"
-
fresh@0.5.2, fresh@^0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
@@ -3323,10 +3143,6 @@ get-stream@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
-get-value@^2.0.3, get-value@^2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
-
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
@@ -3346,13 +3162,6 @@ glob-parent@^2.0.0:
dependencies:
is-glob "^2.0.0"
-glob-parent@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
- dependencies:
- is-glob "^3.1.0"
- path-dirname "^1.0.0"
-
glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.2:
version "7.1.2"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
@@ -3498,33 +3307,6 @@ has-unicode@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
-has-value@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
- dependencies:
- get-value "^2.0.3"
- has-values "^0.1.4"
- isobject "^2.0.0"
-
-has-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
- dependencies:
- get-value "^2.0.6"
- has-values "^1.0.0"
- isobject "^3.0.0"
-
-has-values@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
-
-has-values@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
- dependencies:
- is-number "^3.0.0"
- kind-of "^4.0.0"
-
has-yarn@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-1.0.0.tgz#89e25db604b725c8f5976fff0addc921b828a5a7"
@@ -3870,18 +3652,6 @@ is-absolute-url@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
-is-accessor-descriptor@^0.1.6:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
- dependencies:
- kind-of "^3.0.2"
-
-is-accessor-descriptor@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
- dependencies:
- kind-of "^6.0.0"
-
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
@@ -3916,38 +3686,10 @@ is-ci@^1.0.7:
dependencies:
ci-info "^1.0.0"
-is-data-descriptor@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
- dependencies:
- kind-of "^3.0.2"
-
-is-data-descriptor@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
- dependencies:
- kind-of "^6.0.0"
-
is-date-object@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
-is-descriptor@^0.1.0:
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
- dependencies:
- is-accessor-descriptor "^0.1.6"
- is-data-descriptor "^0.1.4"
- kind-of "^5.0.0"
-
-is-descriptor@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
- dependencies:
- is-accessor-descriptor "^1.0.0"
- is-data-descriptor "^1.0.0"
- kind-of "^6.0.2"
-
is-directory@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
@@ -3966,21 +3708,15 @@ is-error@^2.2.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.1.tgz#684a96d84076577c98f4cdb40c6d26a5123bf19c"
-is-extendable@^0.1.0, is-extendable@^0.1.1:
+is-extendable@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
-is-extendable@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
- dependencies:
- is-plain-object "^2.0.4"
-
is-extglob@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
-is-extglob@^2.1.0, is-extglob@^2.1.1:
+is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
@@ -4010,12 +3746,6 @@ is-glob@^2.0.0, is-glob@^2.0.1:
dependencies:
is-extglob "^1.0.0"
-is-glob@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
- dependencies:
- is-extglob "^2.1.0"
-
is-glob@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
@@ -4061,12 +3791,6 @@ is-observable@^1.0.0:
dependencies:
symbol-observable "^1.1.0"
-is-odd@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-1.0.0.tgz#3b8a932eb028b3775c39bb09e91767accdb69088"
- dependencies:
- is-number "^3.0.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"
@@ -4087,12 +3811,6 @@ is-plain-obj@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
-is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
- dependencies:
- isobject "^3.0.1"
-
is-posix-bracket@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
@@ -4175,10 +3893,6 @@ isobject@^2.0.0:
dependencies:
isarray "1.0.0"
-isobject@^3.0.0, isobject@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
-
isomorphic-fetch@^2.1.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
@@ -4367,7 +4081,7 @@ just-extend@^1.1.26:
version "1.1.27"
resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.27.tgz#ec6e79410ff914e472652abfa0e603c03d60e905"
-kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+kind-of@^3.0.2:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
dependencies:
@@ -4379,14 +4093,6 @@ kind-of@^4.0.0:
dependencies:
is-buffer "^1.1.5"
-kind-of@^5.0.0, kind-of@^5.0.2:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
-
-kind-of@^6.0.0, kind-of@^6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
-
last-line-stream@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/last-line-stream/-/last-line-stream-1.0.0.tgz#d1b64d69f86ff24af2d04883a2ceee14520a5600"
@@ -4403,12 +4109,6 @@ lazy-cache@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
-lazy-cache@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264"
- dependencies:
- set-getter "^0.1.0"
-
lcid@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
@@ -4623,20 +4323,10 @@ make-dir@^1.0.0:
dependencies:
pify "^3.0.0"
-map-cache@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
-
map-obj@^1.0.0, map-obj@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
-map-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
- dependencies:
- object-visit "^1.0.0"
-
matcher@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.0.0.tgz#aaf0c4816eb69b92094674175625f3466b0e3e19"
@@ -4734,24 +4424,6 @@ micromatch@^2.1.5, micromatch@^2.3.11:
parse-glob "^3.0.4"
regex-cache "^0.4.2"
-micromatch@^3.1.4:
- version "3.1.4"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.4.tgz#bb812e741a41f982c854e42b421a7eac458796f4"
- dependencies:
- arr-diff "^4.0.0"
- array-unique "^0.3.2"
- braces "^2.3.0"
- define-property "^1.0.0"
- extend-shallow "^2.0.1"
- extglob "^2.0.2"
- fragment-cache "^0.2.1"
- kind-of "^6.0.0"
- nanomatch "^1.2.5"
- object.pick "^1.3.0"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
miller-rabin@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
@@ -4830,13 +4502,6 @@ mississippi@^1.3.0:
stream-each "^1.1.0"
through2 "^2.0.0"
-mixin-deep@^1.2.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.0.tgz#47a8732ba97799457c8c1eca28f95132d7e8150a"
- dependencies:
- for-in "^1.0.2"
- is-extendable "^1.0.1"
-
mkdirp@0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12"
@@ -4889,22 +4554,6 @@ nan@^2.3.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
-nanomatch@^1.2.5:
- version "1.2.6"
- resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.6.tgz#f27233e97c34a8706b7e781a4bc611c957a81625"
- dependencies:
- arr-diff "^4.0.0"
- array-unique "^0.3.2"
- define-property "^1.0.0"
- extend-shallow "^2.0.1"
- fragment-cache "^0.2.1"
- is-odd "^1.0.0"
- kind-of "^5.0.2"
- object.pick "^1.3.0"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -5009,7 +4658,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
-normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1:
+normalize-path@^2.0.0, normalize-path@^2.0.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
dependencies:
@@ -5101,24 +4750,10 @@ object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-object-copy@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
- dependencies:
- copy-descriptor "^0.1.0"
- define-property "^0.2.5"
- kind-of "^3.0.3"
-
object-keys@^1.0.11, object-keys@^1.0.8:
version "1.0.11"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
-object-visit@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
- dependencies:
- isobject "^3.0.0"
-
object.assign@^4.0.1:
version "4.1.0"
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
@@ -5135,12 +4770,6 @@ object.omit@^2.0.0:
for-own "^0.1.4"
is-extendable "^0.1.1"
-object.pick@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
- dependencies:
- isobject "^3.0.1"
-
observable-to-promise@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-0.5.0.tgz#c828f0f0dc47e9f86af8a4977c5d55076ce7a91f"
@@ -5358,18 +4987,10 @@ parseurl@~1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
-pascalcase@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
-
path-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
-path-dirname@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
-
path-exists@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
@@ -5524,10 +5145,6 @@ pn@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/pn/-/pn-1.0.0.tgz#1cf5a30b0d806cd18f88fc41a6b5d4ad615b3ba9"
-posix-character-classes@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
-
postcss-apply@^0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/postcss-apply/-/postcss-apply-0.8.0.tgz#14e544bbb5cb6f1c1e048857965d79ae066b1343"
@@ -6388,12 +6005,6 @@ regex-cache@^0.4.2:
dependencies:
is-equal-shallow "^0.1.3"
-regex-not@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.0.tgz#42f83e39771622df826b02af176525d6a5f157f9"
- dependencies:
- extend-shallow "^2.0.1"
-
regexpu-core@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
@@ -6461,7 +6072,7 @@ repeat-element@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
-repeat-string@^1.5.2, repeat-string@^1.6.1:
+repeat-string@^1.5.2:
version "1.6.1"
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
@@ -6580,10 +6191,6 @@ resolve-from@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
-resolve-url@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
-
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"
@@ -6721,34 +6328,10 @@ set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
-set-getter@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376"
- dependencies:
- to-object-path "^0.3.0"
-
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"
-set-value@^0.4.3:
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
- dependencies:
- extend-shallow "^2.0.1"
- is-extendable "^0.1.1"
- is-plain-object "^2.0.1"
- to-object-path "^0.3.0"
-
-set-value@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
- dependencies:
- extend-shallow "^2.0.1"
- is-extendable "^0.1.1"
- is-plain-object "^2.0.3"
- split-string "^3.0.1"
-
setimmediate@^1.0.4, setimmediate@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
@@ -6814,33 +6397,6 @@ slide@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
-snapdragon-node@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
- dependencies:
- define-property "^1.0.0"
- isobject "^3.0.0"
- snapdragon-util "^3.0.1"
-
-snapdragon-util@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
- dependencies:
- kind-of "^3.2.0"
-
-snapdragon@^0.8.1:
- version "0.8.1"
- resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.1.tgz#e12b5487faded3e3dea0ac91e9400bf75b401370"
- dependencies:
- base "^0.11.1"
- debug "^2.2.0"
- define-property "^0.2.5"
- extend-shallow "^2.0.1"
- map-cache "^0.2.2"
- source-map "^0.5.6"
- source-map-resolve "^0.5.0"
- use "^2.0.0"
-
sntp@1.x.x:
version "1.0.9"
resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
@@ -6869,16 +6425,6 @@ 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-resolve@^0.5.0:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a"
- dependencies:
- atob "^2.0.0"
- decode-uri-component "^0.2.0"
- resolve-url "^0.2.1"
- source-map-url "^0.4.0"
- urix "^0.1.0"
-
source-map-support@^0.4.15:
version "0.4.18"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
@@ -6891,10 +6437,6 @@ source-map-support@^0.5.0:
dependencies:
source-map "^0.6.0"
-source-map-url@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
-
source-map@0.5.6:
version "0.5.6"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
@@ -6938,12 +6480,6 @@ spdx-license-ids@^1.0.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
-split-string@^3.0.1, split-string@^3.0.2:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
- dependencies:
- extend-shallow "^3.0.0"
-
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
@@ -6980,13 +6516,6 @@ stackframe@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b"
-static-extend@^0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
- dependencies:
- define-property "^0.2.5"
- object-copy "^0.1.0"
-
"statuses@>= 1.3.1 < 2":
version "1.4.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
@@ -7281,27 +6810,6 @@ to-fast-properties@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
-to-object-path@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
- dependencies:
- kind-of "^3.0.2"
-
-to-regex-range@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
- dependencies:
- is-number "^3.0.0"
- repeat-string "^1.6.1"
-
-to-regex@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.1.tgz#15358bee4a2c83bd76377ba1dc049d0f18837aae"
- dependencies:
- define-property "^0.2.5"
- extend-shallow "^2.0.1"
- regex-not "^1.0.0"
-
toposort@^1.0.0:
version "1.0.6"
resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.6.tgz#c31748e55d210effc00fdcdc7d6e68d7d7bb9cec"
@@ -7436,15 +6944,6 @@ ultron@~1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
-union-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
- dependencies:
- arr-union "^3.1.0"
- get-value "^2.0.6"
- is-extendable "^0.1.1"
- set-value "^0.4.3"
-
uniq@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
@@ -7500,13 +6999,6 @@ unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
-unset-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
- dependencies:
- has-value "^0.3.1"
- isobject "^3.0.0"
-
unzip-response@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
@@ -7529,10 +7021,6 @@ upper-case@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
-urix@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
-
url-join@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.2.tgz#c072756967ad24b8b59e5741551caac78f50b8b7"
@@ -7562,14 +7050,6 @@ urlgrey@0.4.4:
version "0.4.4"
resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f"
-use@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz#ae28a0d72f93bf22422a18a2e379993112dec8e8"
- dependencies:
- define-property "^0.2.5"
- isobject "^3.0.0"
- lazy-cache "^2.0.2"
-
util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
From 92f293e413428ee7e47dbca4059fe6f66440770f Mon Sep 17 00:00:00 2001
From: Clark Du
Date: Tue, 2 Jan 2018 10:36:09 +0800
Subject: [PATCH 22/52] chore: upgrade chokidar to 2.0.0
---
lib/builder/builder.js | 8 +-
package.json | 3 +-
yarn.lock | 561 ++++++++++++++++++++++++++++++++++++++++-
3 files changed, 561 insertions(+), 11 deletions(-)
diff --git a/lib/builder/builder.js b/lib/builder/builder.js
index 5ccb3cbddd..ea009bed77 100644
--- a/lib/builder/builder.js
+++ b/lib/builder/builder.js
@@ -16,6 +16,7 @@ const { Options } = require('../common')
const clientWebpackConfig = require('./webpack/client.config.js')
const serverWebpackConfig = require('./webpack/server.config.js')
const dllWebpackConfig = require('./webpack/dll.config.js')
+const upath = require('upath')
const debug = Debug('nuxt:build')
debug.color = 2 // Force green color
@@ -523,7 +524,7 @@ module.exports = class Builder {
watchFiles() {
const src = this.options.srcDir
- const patterns = [
+ let patterns = [
r(src, 'layouts'),
r(src, 'store'),
r(src, 'middleware'),
@@ -537,6 +538,8 @@ module.exports = class Builder {
r(src, 'pages/**/*.{vue,js}')
)
}
+ patterns = _.map(patterns, p => upath.normalizeSafe(p))
+
const options = Object.assign({}, this.options.watchers.chokidar, {
ignoreInitial: true
})
@@ -549,7 +552,8 @@ module.exports = class Builder {
.on('unlink', refreshFiles)
// Watch for custom provided files
- this.customFilesWatcher = chokidar.watch(_.uniq(this.options.build.watch), options)
+ const watchFiles = _.map(_.uniq(this.options.build.watch), p => upath.normalizeSafe(p))
+ this.customFilesWatcher = chokidar.watch(watchFiles, options)
.on('change', refreshFiles)
}
diff --git a/package.json b/package.json
index c6b503ed84..e4d4d733c6 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,7 @@
"babel-preset-vue-app": "^2.0.0",
"caniuse-lite": "^1.0.30000784",
"chalk": "^2.3.0",
- "chokidar": "^1.7.0",
+ "chokidar": "^2.0.0",
"clone": "^2.1.1",
"compression": "^1.7.1",
"connect": "^3.6.5",
@@ -101,6 +101,7 @@
"source-map": "^0.6.1",
"style-resources-loader": "^1.0.0",
"uglifyjs-webpack-plugin": "^1.1.5",
+ "upath": "^1.0.2",
"url-loader": "^0.6.2",
"vue": "^2.5.13",
"vue-loader": "^13.6.2",
diff --git a/yarn.lock b/yarn.lock
index e86bb03c52..f8ded0467f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -247,6 +247,13 @@ anymatch@^1.3.0:
micromatch "^2.1.5"
normalize-path "^2.0.0"
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+ dependencies:
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
+
append-transform@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
@@ -284,14 +291,22 @@ arr-diff@^2.0.0:
dependencies:
arr-flatten "^1.0.1"
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+
arr-exclude@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/arr-exclude/-/arr-exclude-1.0.0.tgz#dfc7c2e552a270723ccda04cf3128c8cbfe5c631"
-arr-flatten@^1.0.1:
+arr-flatten@^1.0.1, arr-flatten@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+
array-differ@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
@@ -329,6 +344,10 @@ array-unique@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+
arrify@^1.0.0, arrify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
@@ -363,6 +382,10 @@ assert@^1.1.1:
dependencies:
util "0.10.3"
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+
async-each@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
@@ -385,6 +408,10 @@ asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+atob@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.0.3.tgz#19c7a760473774468f20b2d2d03372ad7d4cbf5d"
+
auto-bind@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-1.1.0.tgz#93b864dc7ee01a326281775d5c75ca0a751e5961"
@@ -1124,6 +1151,18 @@ base64-js@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
bcrypt-pbkdf@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
@@ -1216,6 +1255,22 @@ braces@^1.8.2:
preserve "^0.2.0"
repeat-element "^1.1.2"
+braces@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.0.tgz#a46941cb5fb492156b3d6a656e06c35364e3e66e"
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
brorand@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
@@ -1336,6 +1391,20 @@ cacache@^10.0.0, cacache@^10.0.1:
unique-filename "^1.1.0"
y18n "^3.2.1"
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
caching-transform@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-1.0.1.tgz#6dbdb2f20f8d8fbce79f3e94e9d1742dcdf5c0a1"
@@ -1479,6 +1548,23 @@ chokidar@^1.4.2, chokidar@^1.7.0:
optionalDependencies:
fsevents "^1.0.0"
+chokidar@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.0.tgz#6686313c541d3274b2a5c01233342037948c911b"
+ dependencies:
+ anymatch "^2.0.0"
+ async-each "^1.0.0"
+ braces "^2.3.0"
+ glob-parent "^3.1.0"
+ inherits "^2.0.1"
+ is-binary-path "^1.0.0"
+ is-glob "^4.0.0"
+ normalize-path "^2.1.1"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.0.0"
+ optionalDependencies:
+ fsevents "^1.0.0"
+
chownr@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
@@ -1504,6 +1590,16 @@ clap@^1.0.9, clap@^1.1.3:
dependencies:
chalk "^1.1.3"
+class-utils@^0.3.5:
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.5.tgz#17e793103750f9627b2176ea34cfd1b565903c80"
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ lazy-cache "^2.0.2"
+ static-extend "^0.1.1"
+
clean-css@4.1.x:
version "4.1.9"
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301"
@@ -1601,6 +1697,13 @@ codecov@^3.0.0:
request "2.81.0"
urlgrey "0.4.4"
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
color-convert@^1.3.0, color-convert@^1.8.2, color-convert@^1.9.0, color-convert@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
@@ -1676,6 +1779,10 @@ commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
+component-emitter@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
+
compressible@~2.0.11:
version "2.0.12"
resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.12.tgz#c59a5c99db76767e9876500e271ef63b3493bd66"
@@ -1805,6 +1912,10 @@ copy-concurrently@^1.0.0:
rimraf "^2.5.4"
run-queue "^1.0.0"
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+
copy-webpack-plugin@^4.3.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.3.1.tgz#19ba6370bf6f8e263cbd66185a2b79f2321a9302"
@@ -2108,7 +2219,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.6.8:
+debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
dependencies:
@@ -2124,6 +2235,10 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+
deep-equal@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
@@ -2153,6 +2268,18 @@ define-properties@^1.1.2:
foreach "^2.0.5"
object-keys "^1.0.8"
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ dependencies:
+ is-descriptor "^1.0.0"
+
defined@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
@@ -2749,6 +2876,18 @@ expand-brackets@^0.1.4:
dependencies:
is-posix-bracket "^0.1.0"
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
expand-range@^1.8.1:
version "1.8.2"
resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
@@ -2790,6 +2929,19 @@ express@^4.15.2, express@^4.16.2:
utils-merge "1.0.1"
vary "~1.1.2"
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
extend@~3.0.0, extend@~3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
@@ -2808,6 +2960,19 @@ extglob@^0.3.1:
dependencies:
is-extglob "^1.0.0"
+extglob@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.3.tgz#55e019d0c95bf873949c737b7e5172dba84ebb29"
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
extract-text-webpack-plugin@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz#5f043eaa02f9750a9258b78c0a6e0dc1408fb2f7"
@@ -2910,6 +3075,15 @@ fill-range@^2.1.0:
repeat-element "^1.1.2"
repeat-string "^1.5.2"
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
finalhandler@1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.6.tgz#007aea33d1a4d3e42017f624848ad58d212f814f"
@@ -2987,7 +3161,7 @@ fn-name@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7"
-for-in@^1.0.1:
+for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -3038,6 +3212,12 @@ forwarded@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ dependencies:
+ map-cache "^0.2.2"
+
fresh@0.5.2, fresh@^0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
@@ -3143,6 +3323,10 @@ get-stream@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
@@ -3162,6 +3346,13 @@ glob-parent@^2.0.0:
dependencies:
is-glob "^2.0.0"
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.2:
version "7.1.2"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
@@ -3307,6 +3498,33 @@ has-unicode@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
has-yarn@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-1.0.0.tgz#89e25db604b725c8f5976fff0addc921b828a5a7"
@@ -3652,6 +3870,18 @@ is-absolute-url@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ dependencies:
+ kind-of "^6.0.0"
+
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
@@ -3686,10 +3916,38 @@ is-ci@^1.0.7:
dependencies:
ci-info "^1.0.0"
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ dependencies:
+ kind-of "^6.0.0"
+
is-date-object@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
is-directory@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
@@ -3708,15 +3966,21 @@ is-error@^2.2.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.1.tgz#684a96d84076577c98f4cdb40c6d26a5123bf19c"
-is-extendable@^0.1.1:
+is-extendable@^0.1.0, is-extendable@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ dependencies:
+ is-plain-object "^2.0.4"
+
is-extglob@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
-is-extglob@^2.1.1:
+is-extglob@^2.1.0, is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
@@ -3746,6 +4010,12 @@ is-glob@^2.0.0, is-glob@^2.0.1:
dependencies:
is-extglob "^1.0.0"
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ dependencies:
+ is-extglob "^2.1.0"
+
is-glob@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
@@ -3791,6 +4061,12 @@ is-observable@^1.0.0:
dependencies:
symbol-observable "^1.1.0"
+is-odd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-1.0.0.tgz#3b8a932eb028b3775c39bb09e91767accdb69088"
+ dependencies:
+ is-number "^3.0.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"
@@ -3811,6 +4087,12 @@ is-plain-obj@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ dependencies:
+ isobject "^3.0.1"
+
is-posix-bracket@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
@@ -3893,6 +4175,10 @@ isobject@^2.0.0:
dependencies:
isarray "1.0.0"
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+
isomorphic-fetch@^2.1.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
@@ -4081,7 +4367,7 @@ just-extend@^1.1.26:
version "1.1.27"
resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-1.1.27.tgz#ec6e79410ff914e472652abfa0e603c03d60e905"
-kind-of@^3.0.2:
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
dependencies:
@@ -4093,6 +4379,14 @@ kind-of@^4.0.0:
dependencies:
is-buffer "^1.1.5"
+kind-of@^5.0.0, kind-of@^5.0.2:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+
last-line-stream@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/last-line-stream/-/last-line-stream-1.0.0.tgz#d1b64d69f86ff24af2d04883a2ceee14520a5600"
@@ -4109,6 +4403,12 @@ lazy-cache@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
+lazy-cache@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264"
+ dependencies:
+ set-getter "^0.1.0"
+
lcid@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
@@ -4210,6 +4510,10 @@ lodash.difference@^4.3.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c"
+lodash.endswith@^4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/lodash.endswith/-/lodash.endswith-4.2.1.tgz#fed59ac1738ed3e236edd7064ec456448b37bc09"
+
lodash.flatten@^4.2.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
@@ -4226,10 +4530,18 @@ lodash.isequal@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
+lodash.isfunction@^3.0.8:
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.8.tgz#4db709fc81bc4a8fd7127a458a5346c5cdce2c6b"
+
lodash.isplainobject@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
+lodash.isstring@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
+
lodash.memoize@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
@@ -4242,6 +4554,10 @@ lodash.sortby@^4.7.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
+lodash.startswith@^4.2.1:
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/lodash.startswith/-/lodash.startswith-4.2.1.tgz#c598c4adce188a27e53145731cdc6c0e7177600c"
+
lodash.template@^4.2.4, lodash.template@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0"
@@ -4323,10 +4639,20 @@ make-dir@^1.0.0:
dependencies:
pify "^3.0.0"
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+
map-obj@^1.0.0, map-obj@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ dependencies:
+ object-visit "^1.0.0"
+
matcher@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.0.0.tgz#aaf0c4816eb69b92094674175625f3466b0e3e19"
@@ -4424,6 +4750,24 @@ micromatch@^2.1.5, micromatch@^2.3.11:
parse-glob "^3.0.4"
regex-cache "^0.4.2"
+micromatch@^3.1.4:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.4.tgz#bb812e741a41f982c854e42b421a7eac458796f4"
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ braces "^2.3.0"
+ define-property "^1.0.0"
+ extend-shallow "^2.0.1"
+ extglob "^2.0.2"
+ fragment-cache "^0.2.1"
+ kind-of "^6.0.0"
+ nanomatch "^1.2.5"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
miller-rabin@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
@@ -4502,6 +4846,13 @@ mississippi@^1.3.0:
stream-each "^1.1.0"
through2 "^2.0.0"
+mixin-deep@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.0.tgz#47a8732ba97799457c8c1eca28f95132d7e8150a"
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
mkdirp@0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12"
@@ -4554,6 +4905,22 @@ nan@^2.3.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
+nanomatch@^1.2.5:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.6.tgz#f27233e97c34a8706b7e781a4bc611c957a81625"
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ is-odd "^1.0.0"
+ kind-of "^5.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
@@ -4658,7 +5025,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
-normalize-path@^2.0.0, normalize-path@^2.0.1:
+normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
dependencies:
@@ -4750,10 +5117,24 @@ object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
object-keys@^1.0.11, object-keys@^1.0.8:
version "1.0.11"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ dependencies:
+ isobject "^3.0.0"
+
object.assign@^4.0.1:
version "4.1.0"
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da"
@@ -4770,6 +5151,12 @@ object.omit@^2.0.0:
for-own "^0.1.4"
is-extendable "^0.1.1"
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ dependencies:
+ isobject "^3.0.1"
+
observable-to-promise@^0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/observable-to-promise/-/observable-to-promise-0.5.0.tgz#c828f0f0dc47e9f86af8a4977c5d55076ce7a91f"
@@ -4987,10 +5374,18 @@ parseurl@~1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+
path-browserify@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+
path-exists@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
@@ -5145,6 +5540,10 @@ pn@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/pn/-/pn-1.0.0.tgz#1cf5a30b0d806cd18f88fc41a6b5d4ad615b3ba9"
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+
postcss-apply@^0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/postcss-apply/-/postcss-apply-0.8.0.tgz#14e544bbb5cb6f1c1e048857965d79ae066b1343"
@@ -6005,6 +6404,12 @@ regex-cache@^0.4.2:
dependencies:
is-equal-shallow "^0.1.3"
+regex-not@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.0.tgz#42f83e39771622df826b02af176525d6a5f157f9"
+ dependencies:
+ extend-shallow "^2.0.1"
+
regexpu-core@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
@@ -6072,7 +6477,7 @@ repeat-element@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
-repeat-string@^1.5.2:
+repeat-string@^1.5.2, repeat-string@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
@@ -6191,6 +6596,10 @@ resolve-from@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+
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"
@@ -6328,10 +6737,34 @@ set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+set-getter@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376"
+ dependencies:
+ to-object-path "^0.3.0"
+
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"
+set-value@^0.4.3:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.1"
+ to-object-path "^0.3.0"
+
+set-value@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
setimmediate@^1.0.4, setimmediate@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
@@ -6397,6 +6830,33 @@ slide@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.1.tgz#e12b5487faded3e3dea0ac91e9400bf75b401370"
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^2.0.0"
+
sntp@1.x.x:
version "1.0.9"
resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
@@ -6425,6 +6885,16 @@ 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-resolve@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a"
+ dependencies:
+ atob "^2.0.0"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
source-map-support@^0.4.15:
version "0.4.18"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
@@ -6437,6 +6907,10 @@ source-map-support@^0.5.0:
dependencies:
source-map "^0.6.0"
+source-map-url@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+
source-map@0.5.6:
version "0.5.6"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
@@ -6480,6 +6954,12 @@ spdx-license-ids@^1.0.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ dependencies:
+ extend-shallow "^3.0.0"
+
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
@@ -6516,6 +6996,13 @@ stackframe@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b"
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
"statuses@>= 1.3.1 < 2":
version "1.4.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
@@ -6810,6 +7297,27 @@ to-fast-properties@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.1.tgz#15358bee4a2c83bd76377ba1dc049d0f18837aae"
+ dependencies:
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ regex-not "^1.0.0"
+
toposort@^1.0.0:
version "1.0.6"
resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.6.tgz#c31748e55d210effc00fdcdc7d6e68d7d7bb9cec"
@@ -6944,6 +7452,15 @@ ultron@~1.1.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
+union-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^0.4.3"
+
uniq@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
@@ -6999,10 +7516,26 @@ unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
unzip-response@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97"
+upath@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.0.2.tgz#80aaae5395abc5fd402933ae2f58694f0860204c"
+ dependencies:
+ lodash.endswith "^4.2.1"
+ lodash.isfunction "^3.0.8"
+ lodash.isstring "^4.0.1"
+ lodash.startswith "^4.2.1"
+
update-notifier@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451"
@@ -7021,6 +7554,10 @@ upper-case@^1.1.1:
version "1.1.3"
resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+
url-join@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/url-join/-/url-join-2.0.2.tgz#c072756967ad24b8b59e5741551caac78f50b8b7"
@@ -7050,6 +7587,14 @@ urlgrey@0.4.4:
version "0.4.4"
resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f"
+use@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/use/-/use-2.0.2.tgz#ae28a0d72f93bf22422a18a2e379993112dec8e8"
+ dependencies:
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ lazy-cache "^2.0.2"
+
util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
From 44c0ab78a29c9cbd512386c9e869c623253d8a93 Mon Sep 17 00:00:00 2001
From: Quique Fdez Guerra
Date: Tue, 2 Jan 2018 10:55:22 +0100
Subject: [PATCH 23/52] Add more realistic TypeScript example
---
examples/typescript/components/Card.vue | 8 ++-
examples/typescript/pages/index.vue | 15 +++--
examples/typescript/store/index.ts | 48 ++++++--------
examples/typescript/store/modules/people.ts | 70 +++++++++++++++++++++
examples/typescript/store/root.ts | 28 +++++++++
examples/typescript/tsconfig.json | 3 +-
6 files changed, 136 insertions(+), 36 deletions(-)
create mode 100644 examples/typescript/store/modules/people.ts
create mode 100644 examples/typescript/store/root.ts
diff --git a/examples/typescript/components/Card.vue b/examples/typescript/components/Card.vue
index 2886ffa17a..efce3253e2 100644
--- a/examples/typescript/components/Card.vue
+++ b/examples/typescript/components/Card.vue
@@ -12,11 +12,15 @@
import Vue from 'vue'
import Component from 'nuxt-class-component'
import { Prop } from 'vue-property-decorator'
-import { Action } from 'vuex-class'
+import { Action, namespace } from 'vuex-class'
+
+import * as people from '~/store/modules/people';
+
+const PeopleAction = namespace(people.name, Action);
@Component({})
export default class Card extends Vue {
@Prop() person
- @Action select
+ @PeopleAction select
}
\ No newline at end of file
diff --git a/examples/typescript/pages/index.vue b/examples/typescript/pages/index.vue
index 567e415ebc..e53adb6b71 100644
--- a/examples/typescript/pages/index.vue
+++ b/examples/typescript/pages/index.vue
@@ -16,8 +16,13 @@
diff --git a/examples/typescript/store/index.ts b/examples/typescript/store/index.ts
index bfffcd5175..a28a26ac6d 100644
--- a/examples/typescript/store/index.ts
+++ b/examples/typescript/store/index.ts
@@ -1,33 +1,25 @@
-import axios from "~/plugins/axios";
+import * as root from "./root";
+import * as people from "./modules/people";
-export const state = () => ({
- selected: 1,
- people: []
-});
+// more info about store: https://vuex.vuejs.org/en/core-concepts.html
+// structure of the store:
+ // types: Types that represent the keys of the mutations to commit
+ // state: The information of our app, we can get or update it.
+ // getters: Get complex information from state
+ // action: Sync or async operations that commit mutations
+ // mutations: Modify the state
-export const mutations = {
- select(state, id) {
- state.selected = id;
- },
- setPeople(state, people) {
- state.people = people;
- }
+export const modules = {
+ [people.name]: people
};
-export const getters = {
- selectedPerson: state => {
- const p = state.people.find(person => person.id === state.selected);
- return p ? p : { first_name: "Please,", last_name: "select someone" };
- }
-};
+interface ModulesStates {
+ people: people.State;
+}
-export const actions = {
- async nuxtServerInit({ commit }) {
- const response = await axios.get("/random-data.json");
- const people = response.data.slice(0, 10);
- commit("setPeople", people);
- },
- select({ commit }, id) {
- commit("select", id);
- }
-};
+export type RootState = root.State & ModulesStates;
+
+export const state = root.state;
+export const getters = root.getters;
+export const actions = root.actions;
+export const mutations = root.mutations;
\ No newline at end of file
diff --git a/examples/typescript/store/modules/people.ts b/examples/typescript/store/modules/people.ts
new file mode 100644
index 0000000000..9cbf667c16
--- /dev/null
+++ b/examples/typescript/store/modules/people.ts
@@ -0,0 +1,70 @@
+import { ActionTree, MutationTree, GetterTree, ActionContext } from "vuex";
+import { RootState } from "store";
+
+export const name = "people";
+
+export const types = {
+ SELECT: "SELECT",
+ SET: "SET"
+};
+
+export interface PersonContact {
+ email: string;
+ phone: string;
+}
+
+export interface PersonAddress {
+ city: string;
+ country: string;
+ postalCode: string;
+ state: string;
+ street: string;
+}
+
+export interface Person {
+ id: number;
+ first_name: string;
+ last_name: string;
+ contact: PersonContact;
+ gender: string;
+ ip_address: string;
+ avatar: string;
+ addres: PersonAddress;
+}
+
+export interface State {
+ selected: number;
+ people: Person[];
+}
+
+export const state = (): State => ({
+ selected: 1,
+ people: []
+});
+
+export const getters: GetterTree = {
+ selectedPerson: state => {
+ const p = state.people.find(person => person.id === state.selected);
+ return p ? p : { first_name: "Please,", last_name: "select someone" };
+ }
+};
+
+export interface Actions extends ActionTree {
+ select(context: ActionContext, id: number): void;
+}
+
+export const actions: Actions = {
+ select({ commit }, id: number) {
+ commit(types.SELECT, id);
+ }
+};
+
+export const mutations: MutationTree = {
+ [types.SELECT](state, id: number) {
+ state.selected = id;
+ },
+ [types.SET](state, people: Person[]) {
+ state.people = people;
+ }
+};
+
diff --git a/examples/typescript/store/root.ts b/examples/typescript/store/root.ts
new file mode 100644
index 0000000000..902b539602
--- /dev/null
+++ b/examples/typescript/store/root.ts
@@ -0,0 +1,28 @@
+import { GetterTree, ActionContext, ActionTree, MutationTree } from "vuex";
+import axios from "~/plugins/axios";
+import { RootState } from "store";
+import * as people from "./modules/people";
+
+export const types = {};
+
+export interface State {}
+
+export const state = (): State => ({});
+
+export const getters: GetterTree = {};
+
+export interface Actions extends ActionTree {
+ nuxtServerInit(context: ActionContext): void;
+}
+
+export const actions: Actions = {
+ async nuxtServerInit({ commit }) {
+ const response = await axios.get("/random-data.json");
+ const staticPeople = response.data.slice(0, 10);
+ commit(`${people.name}/${people.types.SET}`, staticPeople, { root: true });
+ }
+};
+
+export const mutations: MutationTree = {};
+
+
diff --git a/examples/typescript/tsconfig.json b/examples/typescript/tsconfig.json
index 557fd275fa..25539ebd12 100644
--- a/examples/typescript/tsconfig.json
+++ b/examples/typescript/tsconfig.json
@@ -23,7 +23,8 @@
"~/middleware/*": ["./middleware/*"],
"~/pages/*": ["./pages/*"],
"~/plugins/*": ["./plugins/*"],
- "~/static/*": ["./static/*"]
+ "~/static/*": ["./static/*"],
+ "~/store/*": ["./store/*"]
}
}
}
From f0908f089d1535e6a7e17e7dfd4bfe2c907622af Mon Sep 17 00:00:00 2001
From: Clark Du
Date: Thu, 4 Jan 2018 23:25:48 +0800
Subject: [PATCH 24/52] fix: chrome sourcemap issue
---
lib/builder/webpack/base.config.js | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/lib/builder/webpack/base.config.js b/lib/builder/webpack/base.config.js
index 61ad371b1d..16e33910ac 100644
--- a/lib/builder/webpack/base.config.js
+++ b/lib/builder/webpack/base.config.js
@@ -18,7 +18,7 @@ const WarnFixPlugin = require('./plugins/warnfix')
module.exports = function webpackBaseConfig({ name, isServer }) {
const config = {
name,
- devtool: this.options.dev ? 'cheap-module-eval-source-map' : false,
+ devtool: this.options.dev ? 'cheap-eval-source-map' : false,
entry: {
app: null
},
@@ -28,7 +28,8 @@ module.exports = function webpackBaseConfig({ name, isServer }) {
chunkFilename: this.getFileName('chunk'),
publicPath: (isUrl(this.options.build.publicPath)
? this.options.build.publicPath
- : urlJoin(this.options.router.base, this.options.build.publicPath))
+ : urlJoin(this.options.router.base, this.options.build.publicPath)),
+ devtoolModuleFilenameTemplate: '[absolute-resource-path]'
},
performance: {
maxEntrypointSize: 1000000,
From 39ef28ca2a72ca5728fec668fa5ccf74bcd5a2ab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Chopin?=
Date: Thu, 4 Jan 2018 16:40:34 +0100
Subject: [PATCH 25/52] fix: Don't call fixPrepatch on non-dynamic routes
---
lib/app/client.js | 1 +
test/fixtures/spa/pages/mounted.vue | 20 ++++++++++++++++++++
test/spa.test.js | 6 ++++++
3 files changed, 27 insertions(+)
create mode 100644 test/fixtures/spa/pages/mounted.vue
diff --git a/lib/app/client.js b/lib/app/client.js
index 216b8ded79..ae0faf080e 100644
--- a/lib/app/client.js
+++ b/lib/app/client.js
@@ -389,6 +389,7 @@ function fixPrepatch(to, ___) {
instances.forEach((instance, i) => {
if (!instance) return
+ if (to.matched[i].path.indexOf(':') === -1) return // If not a dyanmic route, skip
if (instance.constructor._dataRefresh && _lastPaths[i] === instance.constructor._path && typeof instance.constructor.options.data === 'function') {
const newData = instance.constructor.options.data.call(instance)
for (let key in newData) {
diff --git a/test/fixtures/spa/pages/mounted.vue b/test/fixtures/spa/pages/mounted.vue
new file mode 100644
index 0000000000..7a2b4bd386
--- /dev/null
+++ b/test/fixtures/spa/pages/mounted.vue
@@ -0,0 +1,20 @@
+
+ Test: {{ test.text }}
+
+
+
diff --git a/test/spa.test.js b/test/spa.test.js
index 41b179020b..098217acb6 100755
--- a/test/spa.test.js
+++ b/test/spa.test.js
@@ -66,6 +66,12 @@ test.serial('/custom (call mounted and created once)', async t => {
t.true(logSpy.withArgs('mounted').calledOnce)
})
+test.serial('/mounted', async t => {
+ const { html } = await renderRoute('/mounted')
+
+ t.true(html.includes('Test: updated '))
+})
+
test('/_nuxt/ (access publicPath in spa mode)', async t => {
const { response: { statusCode, statusMessage } } = await t.throws(renderRoute('/_nuxt/'))
t.is(statusCode, 404)
From a74f20618900c3bf56af0988b61cfe8ed6215db9 Mon Sep 17 00:00:00 2001
From: Clark Du
Date: Thu, 4 Jan 2018 23:53:06 +0800
Subject: [PATCH 26/52] fix: remove require.cache deletion
---
lib/builder/builder.js | 8 +------
lib/common/utils.js | 13 ----------
test/basic.dev.test.js | 36 ++--------------------------
test/fixtures/basic/plugins/watch.js | 12 ----------
4 files changed, 3 insertions(+), 66 deletions(-)
delete mode 100644 test/fixtures/basic/plugins/watch.js
diff --git a/lib/builder/builder.js b/lib/builder/builder.js
index ea009bed77..5351c43453 100644
--- a/lib/builder/builder.js
+++ b/lib/builder/builder.js
@@ -11,7 +11,7 @@ const webpackDevMiddleware = require('webpack-dev-middleware')
const webpackHotMiddleware = require('webpack-hot-middleware')
const Debug = require('debug')
const Glob = require('glob')
-const { r, wp, wChunk, createRoutes, sequence, relativeTo, waitFor, rmCache } = require('../common/utils')
+const { r, wp, wChunk, createRoutes, sequence, relativeTo, waitFor } = require('../common/utils')
const { Options } = require('../common')
const clientWebpackConfig = require('./webpack/client.config.js')
const serverWebpackConfig = require('./webpack/server.config.js')
@@ -465,12 +465,6 @@ module.exports = 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
diff --git a/lib/common/utils.js b/lib/common/utils.js
index 11b434b1d0..811809fc43 100644
--- a/lib/common/utils.js
+++ b/lib/common/utils.js
@@ -268,16 +268,3 @@ exports.createRoutes = 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/test/basic.dev.test.js b/test/basic.dev.test.js
index 02d08993fa..a622fa9a03 100644
--- a/test/basic.dev.test.js
+++ b/test/basic.dev.test.js
@@ -1,14 +1,11 @@
import test from 'ava'
import { resolve } from 'path'
import { intercept, release } from './helpers/console'
-import { Nuxt, Builder, Utils } from '..'
-import { truncateSync, readFileSync, writeFileSync } from 'fs'
+import { Nuxt, Builder } from '..'
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
@@ -24,10 +21,7 @@ test.serial('Init Nuxt.js', async t => {
extractCSS: {
allChunks: true
}
- },
- plugins: [
- '~/plugins/watch.js'
- ]
+ }
}
const spies = await intercept({ log: true, stderr: true }, async () => {
@@ -49,31 +43,6 @@ test.serial('Init Nuxt.js', async t => {
// t.is(window.getComputedStyle(window.document.body).getPropertyValue('font-size'), '30px')
// })
-test.serial('remove mixins in live reloading', async t => {
- const spies = await intercept({ log: true, error: true, stderr: true })
- await nuxt.renderRoute(url('/'))
- t.true(spies.log.calledWith('I am mixin'))
-
- truncateSync(pluginPath)
- await new Promise(async (resolve, reject) => {
- let waitTimes = 0
- while (spies.log.neverCalledWithMatch(/Compiled successfully/)) {
- if (waitTimes++ >= 20) {
- t.fail('Dev server doesn\'t reload after 2000ms')
- reject(Error())
- }
- await Utils.waitFor(100)
- }
- resolve()
- })
- spies.log.reset()
-
- await nuxt.renderRoute(url('/'))
- t.true(spies.log.neverCalledWith('I am mixin'))
- t.is(spies.error.getCall(0).args[0].statusCode, 404)
- release()
-})
-
test.serial('/stateless', async t => {
const spies = await intercept()
const window = await nuxt.renderAndGetWindow(url('/stateless'))
@@ -94,6 +63,5 @@ test.serial('/stateless', async t => {
// Close server and ask nuxt to stop listening to file changes
test.after.always('Closing server and nuxt.js', async t => {
- writeFileSync(pluginPath, pluginContent)
await nuxt.close()
})
diff --git a/test/fixtures/basic/plugins/watch.js b/test/fixtures/basic/plugins/watch.js
deleted file mode 100644
index b243a212ab..0000000000
--- a/test/fixtures/basic/plugins/watch.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import Vue from 'vue'
-
-const Plugin = {
- install(Vue) {
- Vue.mixin({
- created() {
- console.log('I am mixin') // eslint-disable-line no-console
- }
- })
- }
-}
-Vue.use(Plugin)
From dd83c87f64b63e733fe504be59ec508d4535ab30 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Chopin?=
Date: Thu, 4 Jan 2018 18:08:53 +0100
Subject: [PATCH 27/52] example: Lint & fix TS example
---
examples/typescript/components/Card.vue | 54 +++++++------
examples/typescript/modules/typescript.js | 6 ++
examples/typescript/nuxt.config.js | 2 +-
examples/typescript/package.json | 15 ++--
examples/typescript/pages/index.vue | 6 +-
examples/typescript/store/index.ts | 43 +++++-----
examples/typescript/store/modules/people.ts | 89 +++++++++++----------
examples/typescript/store/root.ts | 32 ++++----
8 files changed, 128 insertions(+), 119 deletions(-)
diff --git a/examples/typescript/components/Card.vue b/examples/typescript/components/Card.vue
index efce3253e2..5816521b24 100644
--- a/examples/typescript/components/Card.vue
+++ b/examples/typescript/components/Card.vue
@@ -1,26 +1,28 @@
-
-
-
-
-
{{person.first_name}} {{person.last_name}}
-
Select
-
-
-
-// **PLEASE NOTE** All "Nuxt Class Components" require at minimum a script tag that exports a default object
-
\ No newline at end of file
+
+
+
+
+
{{person.first_name}} {{person.last_name}}
+
Select
+
+
+
+
+
diff --git a/examples/typescript/modules/typescript.js b/examples/typescript/modules/typescript.js
index 5295ac849c..47cca47f50 100644
--- a/examples/typescript/modules/typescript.js
+++ b/examples/typescript/modules/typescript.js
@@ -1,4 +1,6 @@
module.exports = function (options) {
+ // Add .ts extension for store, middleware and more
+ this.nuxt.options.extensions.push('ts')
// Extend build
this.extendBuild(config => {
const tsLoader = {
@@ -22,5 +24,9 @@ module.exports = function (options) {
rule.options.loaders.ts = tsLoader
}
}
+ // Add .ts extension in webpack resolve
+ if (config.resolve.extensions.indexOf('.ts') === -1) {
+ config.resolve.extensions.push('.ts')
+ }
})
}
diff --git a/examples/typescript/nuxt.config.js b/examples/typescript/nuxt.config.js
index cc6493b7ed..57e1b3d69c 100644
--- a/examples/typescript/nuxt.config.js
+++ b/examples/typescript/nuxt.config.js
@@ -20,7 +20,7 @@ module.exports = {
*/
css: ['tachyons/css/tachyons.min.css', '~/assets/css/main.css'],
build: {
- vendor: ['axios', 'gsap', 'vuex-class', 'nuxt-class-component']
+ vendor: ['axios', 'vuex-class', 'nuxt-class-component']
},
modules: ['~/modules/typescript']
}
diff --git a/examples/typescript/package.json b/examples/typescript/package.json
index 5e795aa8a0..176f88e8aa 100644
--- a/examples/typescript/package.json
+++ b/examples/typescript/package.json
@@ -2,15 +2,10 @@
"version": "1.0.1",
"private": true,
"dependencies": {
- "axios": "^0.16.1",
- "gsap": "^1.19.1",
+ "axios": "^0.17.1",
"nuxt": "latest",
- "nuxt-class-component": "^1.0.3",
- "tachyons": "^4.7.0",
- "vue": "~2.5.1",
- "vue-server-renderer": "~2.5.1",
- "vue-template-compiler": "~2.5.1",
- "vue-class-component": "^6.0.0",
+ "nuxt-class-component": "^1.1.3",
+ "tachyons": "^4.9.1",
"vue-property-decorator": "^6.0.0",
"vuex-class": "^0.3.0"
},
@@ -21,7 +16,7 @@
"generate": "nuxt generate"
},
"devDependencies": {
- "ts-loader": "^3.0.0",
- "typescript": "^2.2.2"
+ "ts-loader": "^3.2.0",
+ "typescript": "^2.6.2"
}
}
diff --git a/examples/typescript/pages/index.vue b/examples/typescript/pages/index.vue
index e53adb6b71..a38675ef60 100644
--- a/examples/typescript/pages/index.vue
+++ b/examples/typescript/pages/index.vue
@@ -19,10 +19,10 @@ import Component from 'nuxt-class-component'
import Card from '~/components/Card.vue'
import { State, Getter, namespace } from 'vuex-class'
-import * as people from '~/store/modules/people';
+import * as people from '~/store/modules/people'
-const PeopleState = namespace(people.name, State);
-const PeopleGetter = namespace(people.name, Getter);
+const PeopleState = namespace(people.name, State)
+const PeopleGetter = namespace(people.name, Getter)
@Component({
components: {
diff --git a/examples/typescript/store/index.ts b/examples/typescript/store/index.ts
index a28a26ac6d..5bb3f11913 100644
--- a/examples/typescript/store/index.ts
+++ b/examples/typescript/store/index.ts
@@ -1,25 +1,32 @@
-import * as root from "./root";
-import * as people from "./modules/people";
+import Vuex from 'vuex'
+import * as root from './root'
+import * as people from './modules/people'
-// more info about store: https://vuex.vuejs.org/en/core-concepts.html
+// More info about store: https://vuex.vuejs.org/en/core-concepts.html
+// See https://nuxtjs.org/guide/vuex-store#classic-mode
// structure of the store:
- // types: Types that represent the keys of the mutations to commit
- // state: The information of our app, we can get or update it.
- // getters: Get complex information from state
- // action: Sync or async operations that commit mutations
- // mutations: Modify the state
-
-export const modules = {
- [people.name]: people
-};
+ // types: Types that represent the keys of the mutations to commit
+ // state: The information of our app, we can get or update it.
+ // getters: Get complex information from state
+ // action: Sync or async operations that commit mutations
+ // mutations: Modify the state
interface ModulesStates {
- people: people.State;
+ people: people.State
}
-export type RootState = root.State & ModulesStates;
+export type RootState = root.State & ModulesStates
-export const state = root.state;
-export const getters = root.getters;
-export const actions = root.actions;
-export const mutations = root.mutations;
\ No newline at end of file
+const createStore = () => {
+ return new Vuex.Store({
+ state: root.state(),
+ getters: root.getters,
+ mutations: root.mutations,
+ actions: root.actions,
+ modules: {
+ [people.name]: people
+ }
+ })
+}
+
+export default createStore
diff --git a/examples/typescript/store/modules/people.ts b/examples/typescript/store/modules/people.ts
index 9cbf667c16..e73da3a343 100644
--- a/examples/typescript/store/modules/people.ts
+++ b/examples/typescript/store/modules/people.ts
@@ -1,70 +1,71 @@
-import { ActionTree, MutationTree, GetterTree, ActionContext } from "vuex";
-import { RootState } from "store";
+import { ActionTree, MutationTree, GetterTree, ActionContext } from 'vuex'
+import { RootState } from 'store'
-export const name = "people";
+export const name = 'people'
export const types = {
- SELECT: "SELECT",
- SET: "SET"
-};
+ SELECT: 'SELECT',
+ SET: 'SET'
+}
export interface PersonContact {
- email: string;
- phone: string;
+ email: string
+ phone: string
}
export interface PersonAddress {
- city: string;
- country: string;
- postalCode: string;
- state: string;
- street: string;
+ city: string
+ country: string
+ postalCode: string
+ state: string
+ street: string
}
export interface Person {
- id: number;
- first_name: string;
- last_name: string;
- contact: PersonContact;
- gender: string;
- ip_address: string;
- avatar: string;
- addres: PersonAddress;
+ id: number
+ first_name: string
+ last_name: string
+ contact: PersonContact
+ gender: string
+ ip_address: string
+ avatar: string
+ addres: PersonAddress
}
export interface State {
- selected: number;
- people: Person[];
+ selected: number
+ people: Person[]
}
+export const namespaced = true
+
export const state = (): State => ({
- selected: 1,
- people: []
-});
+ selected: 1,
+ people: []
+})
export const getters: GetterTree = {
- selectedPerson: state => {
- const p = state.people.find(person => person.id === state.selected);
- return p ? p : { first_name: "Please,", last_name: "select someone" };
- }
-};
+ selectedPerson: state => {
+ const p = state.people.find(person => person.id === state.selected)
+ return p ? p : { first_name: 'Please,', last_name: 'select someone' }
+ }
+}
export interface Actions extends ActionTree {
- select(context: ActionContext, id: number): void;
+ select(context: ActionContext, id: number): void
}
export const actions: Actions = {
- select({ commit }, id: number) {
- commit(types.SELECT, id);
- }
-};
+ select({ commit }, id: number) {
+ commit(types.SELECT, id)
+ }
+}
export const mutations: MutationTree = {
- [types.SELECT](state, id: number) {
- state.selected = id;
- },
- [types.SET](state, people: Person[]) {
- state.people = people;
- }
-};
-
+ [types.SELECT](state, id: number) {
+ state.selected = id
+ },
+ [types.SET](state, people: Person[]) {
+ state.people = people
+ }
+}
diff --git a/examples/typescript/store/root.ts b/examples/typescript/store/root.ts
index 902b539602..41f5373e8c 100644
--- a/examples/typescript/store/root.ts
+++ b/examples/typescript/store/root.ts
@@ -1,28 +1,26 @@
-import { GetterTree, ActionContext, ActionTree, MutationTree } from "vuex";
-import axios from "~/plugins/axios";
-import { RootState } from "store";
-import * as people from "./modules/people";
+import { GetterTree, ActionContext, ActionTree, MutationTree } from 'vuex'
+import axios from '~/plugins/axios'
+import { RootState } from 'store'
+import * as people from './modules/people'
-export const types = {};
+export const types = {}
export interface State {}
-export const state = (): State => ({});
+export const state = (): State => ({})
-export const getters: GetterTree = {};
+export const getters: GetterTree = {}
export interface Actions extends ActionTree {
- nuxtServerInit(context: ActionContext): void;
+ nuxtServerInit(context: ActionContext): void
}
export const actions: Actions = {
- async nuxtServerInit({ commit }) {
- const response = await axios.get("/random-data.json");
- const staticPeople = response.data.slice(0, 10);
- commit(`${people.name}/${people.types.SET}`, staticPeople, { root: true });
- }
-};
-
-export const mutations: MutationTree = {};
-
+ async nuxtServerInit({ commit }) {
+ const response = await axios.get('/random-data.json')
+ const staticPeople = response.data.slice(0, 10)
+ commit(`${people.name}/${people.types.SET}`, staticPeople, { root: true })
+ }
+}
+export const mutations: MutationTree = {}
From 5b923fd97ece783d4d8f452a09fd48c0bd04e649 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Chopin?=
Date: Thu, 4 Jan 2018 18:10:17 +0100
Subject: [PATCH 28/52] feat: Add extensions option to add more language
support
---
lib/app/middleware.js | 4 ++--
lib/app/store.js | 4 ++--
lib/builder/builder.js | 1 +
lib/common/options.js | 9 +++++++++
4 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/lib/app/middleware.js b/lib/app/middleware.js
index 57e04073cb..8812d41813 100644
--- a/lib/app/middleware.js
+++ b/lib/app/middleware.js
@@ -1,5 +1,5 @@
<% if (middleware) { %>
-let files = require.context('@/middleware', false, /^\.\/.*\.(js|ts)$/)
+let files = require.context('@/middleware', false, /^\.\/.*\.(<%= extensions %>)$/)
let filenames = files.keys()
function getModule (filename) {
@@ -12,7 +12,7 @@ let middleware = {}
// Generate the middleware
for (let filename of filenames) {
- let name = filename.replace(/^\.\//, '').replace(/\.(js|ts)$/, '')
+ let name = filename.replace(/^\.\//, '').replace(/\.(<%= extensions %>)$/, '')
middleware[name] = getModule(filename)
}
diff --git a/lib/app/store.js b/lib/app/store.js
index d1e59efcd6..0e704af1a7 100644
--- a/lib/app/store.js
+++ b/lib/app/store.js
@@ -4,7 +4,7 @@ import Vuex from 'vuex'
Vue.use(Vuex)
// Recursive find files in {srcDir}/store
-const files = require.context('@/store', true, /^\.\/.*\.(js|ts)$/)
+const files = require.context('@/store', true, /^\.\/.*\.(<%= extensions %>)$/)
const filenames = files.keys()
// Store
@@ -30,7 +30,7 @@ if (typeof storeData !== 'function') {
}
for (let filename of filenames) {
- let name = filename.replace(/^\.\//, '').replace(/\.(js|ts)$/, '')
+ let name = filename.replace(/^\.\//, '').replace(/\.(<%= extensions %>)$/, '')
if (name === 'index') continue
let namePath = name.split(/\//)
diff --git a/lib/builder/builder.js b/lib/builder/builder.js
index 5351c43453..4687a35c64 100644
--- a/lib/builder/builder.js
+++ b/lib/builder/builder.js
@@ -210,6 +210,7 @@ module.exports = class Builder {
]
const templateVars = {
options: this.options,
+ extensions: this.options.extensions.map((ext) => ext.replace(/^\./, '')).join('|'),
messages: this.options.messages,
uniqBy: _.uniqBy,
isDev: this.options.dev,
diff --git a/lib/common/options.js b/lib/common/options.js
index 7ce535496a..3f8fe27a02 100755
--- a/lib/common/options.js
+++ b/lib/common/options.js
@@ -31,6 +31,9 @@ Options.from = function (_options) {
if (typeof options.layoutTransition === 'string') {
options.layoutTransition = { name: options.layoutTransition }
}
+ if (typeof options.extensions === 'string') {
+ options.extensions = [ options.extensions ]
+ }
const hasValue = v => typeof v === 'string' && v
options.rootDir = hasValue(options.rootDir) ? options.rootDir : process.cwd()
@@ -58,6 +61,11 @@ Options.from = function (_options) {
.filter(dir => hasValue(dir))
.map(dir => resolve(options.rootDir, dir))
+ // Sanitize extensions
+ if (options.extensions.indexOf('js') === -1) {
+ options.extensions.unshift('js')
+ }
+
// 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'))) {
@@ -143,6 +151,7 @@ Options.defaults = {
nuxtDir: resolve(__dirname, '../..'),
nuxtAppDir: resolve(__dirname, '../app'),
modulesDir: ['node_modules'], // ~> relative to options.rootDir
+ extensions: [],
build: {
analyze: false,
profile: process.argv.includes('--profile'),
From 96c3b4a15bfd8c507447c98680aa955c72bc4f8b Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Thu, 4 Jan 2018 20:44:11 +0330
Subject: [PATCH 29/52] refactor: change _open endpoint to /__open-in-editor
upgrade @nuxtjs/youch to 4.0.0
ref: vuejs/vue-devtools#483
---
lib/core/renderer.js | 2 +-
package.json | 2 +-
test/debug.test.js | 8 ++++----
test/fixtures/debug/nuxt.config.js | 2 +-
yarn.lock | 6 +++---
5 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/lib/core/renderer.js b/lib/core/renderer.js
index 16187ff93e..c7428b71be 100644
--- a/lib/core/renderer.js
+++ b/lib/core/renderer.js
@@ -226,7 +226,7 @@ module.exports = class Renderer {
const _this = this
if (this.options.debug && this.options.dev) {
this.useMiddleware({
- path: '_open',
+ path: '__open-in-editor',
handler(req, res) {
// Lazy load open-in-editor
const openInEditor = require('open-in-editor')
diff --git a/package.json b/package.json
index e4d4d733c6..e121316de2 100644
--- a/package.json
+++ b/package.json
@@ -56,7 +56,7 @@
"npm": ">=5.0.0"
},
"dependencies": {
- "@nuxtjs/youch": "^3.1.0",
+ "@nuxtjs/youch": "^4.0.0",
"ansi-html": "^0.0.7",
"autoprefixer": "^7.2.3",
"babel-core": "^6.26.0",
diff --git a/test/debug.test.js b/test/debug.test.js
index 3a1ccf3ea6..a60b3c6cf8 100644
--- a/test/debug.test.js
+++ b/test/debug.test.js
@@ -25,18 +25,18 @@ test.serial('Init Nuxt.js', async t => {
t.true(logSpy.calledWithMatch('OPEN'))
})
-test.serial('/test/_open (open-in-editor)', async t => {
+test.serial('/test/__open-in-editor (open-in-editor)', async t => {
const logSpy = await interceptLog()
- const { body } = await rp(url('/test/_open?file=pages/index.vue'), { resolveWithFullResponse: true })
+ const { body } = await rp(url('/test/__open-in-editor?file=pages/index.vue'), { resolveWithFullResponse: true })
t.is(body, 'opened in editor!')
release()
t.is(logSpy.getCall(0).args[0], '[open in editor]')
t.true(logSpy.calledOnce)
})
-test.serial('/test/_open should return error (open-in-editor)', async t => {
+test.serial('/test/__open-in-editor should return error (open-in-editor)', async t => {
const logSpy = await interceptLog()
- const { body } = await rp(url('/test/_open?file='), { resolveWithFullResponse: true })
+ const { body } = await rp(url('/test/__open-in-editor?file='), { resolveWithFullResponse: true })
t.is(body, 'File is not specified')
release()
t.is(logSpy.getCall(0).args[0], '[open in editor]')
diff --git a/test/fixtures/debug/nuxt.config.js b/test/fixtures/debug/nuxt.config.js
index 8de5df3d80..3f41a73c62 100644
--- a/test/fixtures/debug/nuxt.config.js
+++ b/test/fixtures/debug/nuxt.config.js
@@ -2,7 +2,7 @@ module.exports = {
router: {
base: '/test/'
},
- dev: true, // Needed for _open middleware
+ dev: true, // Needed for __open-in-editor middleware
debug: true,
editor: {
cmd: 'echo',
diff --git a/yarn.lock b/yarn.lock
index f8ded0467f..3479e92e13 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -97,9 +97,9 @@
dependencies:
arrify "^1.0.1"
-"@nuxtjs/youch@^3.1.0":
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/@nuxtjs/youch/-/youch-3.1.0.tgz#0e4f38d1b9ede2a77b121c02cbd839937e8918ad"
+"@nuxtjs/youch@^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@nuxtjs/youch/-/youch-4.0.0.tgz#74eb880f57a3f76f7684f69ba2753a815f308deb"
dependencies:
cookie "^0.3.1"
mustache "^2.3.0"
From 4354dee2437fdc8ba647171bc806b665e711cdfd Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Thu, 4 Jan 2018 20:55:15 +0330
Subject: [PATCH 30/52] chore: update dependencies
---
package.json | 8 ++---
yarn.lock | 93 ++++++++++++++++++++++++++--------------------------
2 files changed, 50 insertions(+), 51 deletions(-)
diff --git a/package.json b/package.json
index e121316de2..a9149d9a10 100644
--- a/package.json
+++ b/package.json
@@ -58,11 +58,11 @@
"dependencies": {
"@nuxtjs/youch": "^4.0.0",
"ansi-html": "^0.0.7",
- "autoprefixer": "^7.2.3",
+ "autoprefixer": "^7.2.4",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-vue-app": "^2.0.0",
- "caniuse-lite": "^1.0.30000784",
+ "caniuse-lite": "^1.0.30000787",
"chalk": "^2.3.0",
"chokidar": "^2.0.0",
"clone": "^2.1.1",
@@ -88,10 +88,10 @@
"minimist": "^1.2.0",
"open-in-editor": "^2.2.0",
"opencollective": "^1.0.3",
- "postcss": "^6.0.14",
+ "postcss": "^6.0.15",
"postcss-cssnext": "^3.0.2",
"postcss-import": "^11.0.0",
- "postcss-loader": "^2.0.8",
+ "postcss-loader": "^2.0.10",
"postcss-url": "^7.3.0",
"pretty-error": "^2.1.1",
"progress-bar-webpack-plugin": "^1.10.0",
diff --git a/yarn.lock b/yarn.lock
index 3479e92e13..719e923e6d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -110,8 +110,8 @@
resolved "https://registry.yarnpkg.com/@std/esm/-/esm-0.16.0.tgz#2a7a33ecb7f1701cebd4c87df6d0d945ed51f730"
"@types/node@*":
- version "8.5.2"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-8.5.2.tgz#83b8103fa9a2c2e83d78f701a9aa7c9539739aa5"
+ version "8.5.5"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-8.5.5.tgz#6f9e8164ae1a55a9beb1d2571cfb7acf9d720c61"
abab@^1.0.3:
version "1.0.4"
@@ -155,8 +155,8 @@ acorn@^4.0.3:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
acorn@^5.0.0, acorn@^5.1.1, acorn@^5.1.2, acorn@^5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7"
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822"
agent-base@^4.1.0:
version "4.1.2"
@@ -427,15 +427,15 @@ autoprefixer@^6.3.1:
postcss "^5.2.16"
postcss-value-parser "^3.2.3"
-autoprefixer@^7.1.1, autoprefixer@^7.2.3:
- version "7.2.3"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.3.tgz#c2841e38b7940c2d0a9bbffd72c75f33637854f8"
+autoprefixer@^7.1.1, autoprefixer@^7.2.4:
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.4.tgz#29b367c03876a29bfd3721260d945e3545666c8d"
dependencies:
- browserslist "^2.10.0"
- caniuse-lite "^1.0.30000783"
+ browserslist "^2.10.2"
+ caniuse-lite "^1.0.30000784"
normalize-range "^0.1.2"
num2fraction "^1.2.2"
- postcss "^6.0.14"
+ postcss "^6.0.15"
postcss-value-parser "^3.2.3"
ava-init@^0.2.0:
@@ -1338,12 +1338,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.10.0:
- version "2.10.0"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.10.0.tgz#bac5ee1cc69ca9d96403ffb8a3abdc5b6aed6346"
+browserslist@^2.0.0, browserslist@^2.1.2, browserslist@^2.10.2:
+ version "2.11.0"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.11.0.tgz#50350d6873a82ebe0f3ae5483658c571ae5f9d7d"
dependencies:
- caniuse-lite "^1.0.30000780"
- electron-to-chromium "^1.3.28"
+ caniuse-lite "^1.0.30000784"
+ electron-to-chromium "^1.3.30"
buf-compare@^1.0.0:
version "1.0.1"
@@ -1481,12 +1481,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.30000784"
- resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000784.tgz#1be95012d9489c7719074f81aee57dbdffe6361b"
+ version "1.0.30000787"
+ resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000787.tgz#ca07a281be536a88bd7fac96ba895f3cf53f811b"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000780, caniuse-lite@^1.0.30000783, caniuse-lite@^1.0.30000784:
- version "1.0.30000784"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000784.tgz#129ced74e9a1280a441880b6cd2bce30ef59e6c0"
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000784, caniuse-lite@^1.0.30000787:
+ version "1.0.30000787"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000787.tgz#a76c4fa1d6ac00640447ec83c1e7c6b33dd615c5"
capture-stack-trace@^1.0.0:
version "1.0.0"
@@ -2467,7 +2467,7 @@ electron-releases@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/electron-releases/-/electron-releases-2.1.0.tgz#c5614bf811f176ce3c836e368a0625782341fd4e"
-electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.28:
+electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30:
version "1.3.30"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.30.tgz#9666f532a64586651fc56a72513692e820d06a80"
dependencies:
@@ -2573,8 +2573,8 @@ es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
es6-symbol "~3.1.1"
es6-error@^4.0.1, es6-error@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98"
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
es6-iterator@^2.0.1, es6-iterator@~2.0.1:
version "2.0.3"
@@ -3911,8 +3911,8 @@ is-callable@^1.1.1, is-callable@^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"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5"
dependencies:
ci-info "^1.0.0"
@@ -5273,8 +5273,10 @@ p-finally@^1.0.0:
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
p-limit@^1.0.0, p-limit@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc"
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c"
+ dependencies:
+ p-try "^1.0.0"
p-locate@^2.0.0:
version "2.0.0"
@@ -5282,6 +5284,10 @@ p-locate@^2.0.0:
dependencies:
p-limit "^1.1.0"
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+
package-hash@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-1.2.0.tgz#003e56cd57b736a6ed6114cc2b81542672770e44"
@@ -5537,8 +5543,8 @@ pluralize@^7.0.0:
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
pn@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/pn/-/pn-1.0.0.tgz#1cf5a30b0d806cd18f88fc41a6b5d4ad615b3ba9"
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
posix-character-classes@^0.1.0:
version "0.1.1"
@@ -5811,9 +5817,9 @@ postcss-load-plugins@^2.3.0:
cosmiconfig "^2.1.1"
object-assign "^4.1.0"
-postcss-loader@^2.0.8:
- version "2.0.9"
- resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.9.tgz#001fdf7bfeeb159405ee61d1bb8e59b528dbd309"
+postcss-loader@^2.0.10:
+ version "2.0.10"
+ resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.10.tgz#090db0540140bd56a7a7f717c41bc29aeef4c674"
dependencies:
loader-utils "^1.1.0"
postcss "^6.0.0"
@@ -6056,13 +6062,13 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0
source-map "^0.5.6"
supports-color "^3.2.3"
-postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.13, postcss@^6.0.14, postcss@^6.0.5, postcss@^6.0.6, postcss@^6.0.8:
- version "6.0.14"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.14.tgz#5534c72114739e75d0afcf017db853099f562885"
+postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.11, postcss@^6.0.13, postcss@^6.0.14, postcss@^6.0.15, postcss@^6.0.5, postcss@^6.0.6, postcss@^6.0.8:
+ version "6.0.15"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.15.tgz#f460cd6269fede0d1bf6defff0b934a9845d974d"
dependencies:
chalk "^2.3.0"
source-map "^0.6.1"
- supports-color "^4.4.0"
+ supports-color "^5.1.0"
prelude-ls@~1.1.2:
version "1.1.2"
@@ -7151,7 +7157,7 @@ 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:
+supports-color@^5.0.0, supports-color@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5"
dependencies:
@@ -7392,9 +7398,9 @@ uglify-es@3.2.2:
commander "~2.12.1"
source-map "~0.6.1"
-uglify-js@3.3.x:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.2.tgz#517af20aad7abe15e1e4c9aa33c0cc72aa0107ab"
+uglify-js@3.3.x, uglify-js@^3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.4.tgz#d8ebb76f201a3798ac2f0b6519642fcca4a99834"
dependencies:
commander "~2.12.1"
source-map "~0.6.1"
@@ -7408,13 +7414,6 @@ uglify-js@^2.6, uglify-js@^2.8.29:
optionalDependencies:
uglify-to-browserify "~1.0.0"
-uglify-js@^3.3.4:
- version "3.3.4"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.4.tgz#d8ebb76f201a3798ac2f0b6519642fcca4a99834"
- dependencies:
- commander "~2.12.1"
- source-map "~0.6.1"
-
uglify-to-browserify@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
From e54beeee1eb1008fb99aaf6f4459a959de5e225b Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Thu, 4 Jan 2018 21:06:47 +0330
Subject: [PATCH 31/52] refactor: move renderer middleware into seperate
modules
---
lib/core/middleware/error.js | 136 +++++++++++++++
lib/core/middleware/nuxt.js | 66 ++++++++
lib/core/middleware/open-in-editor.js | 23 +++
lib/core/renderer.js | 230 ++------------------------
4 files changed, 235 insertions(+), 220 deletions(-)
create mode 100644 lib/core/middleware/error.js
create mode 100644 lib/core/middleware/nuxt.js
create mode 100644 lib/core/middleware/open-in-editor.js
diff --git a/lib/core/middleware/error.js b/lib/core/middleware/error.js
new file mode 100644
index 0000000000..f9878bce7a
--- /dev/null
+++ b/lib/core/middleware/error.js
@@ -0,0 +1,136 @@
+const Youch = require('@nuxtjs/youch')
+const { SourceMapConsumer } = require('source-map')
+const { join, resolve } = require('path')
+const { readFile } = require('fs-extra')
+
+module.exports = function errorMiddleware(err, req, res, next) {
+ // ensure statusCode, message and name fields
+ err.statusCode = err.statusCode || 500
+ err.message = err.message || 'Nuxt Server Error'
+ err.name = (!err.name || err.name === 'Error') ? 'NuxtServerError' : err.name
+
+ // We hide actual errors from end users, so show them on server logs
+ if (err.statusCode !== 404) {
+ console.error(err) // eslint-disable-line no-console
+ }
+
+ const sendResponse = (content, type = 'text/html') => {
+ // Set Headers
+ res.statusCode = err.statusCode
+ res.statusMessage = err.name
+ res.setHeader('Content-Type', type + '; charset=utf-8')
+ res.setHeader('Content-Length', Buffer.byteLength(content))
+
+ // Send Response
+ res.end(content, 'utf-8')
+ }
+
+ // Check if request accepts JSON
+ const hasReqHeader = (header, includes) => req.headers[header] && req.headers[header].toLowerCase().includes(includes)
+ const isJson = hasReqHeader('accept', 'application/json') || hasReqHeader('user-agent', 'curl/')
+
+ // Use basic errors when debug mode is disabled
+ if (!this.options.debug) {
+ // Json format is compatible with Youch json responses
+ const json = {
+ status: err.statusCode,
+ message: err.message,
+ name: err.name
+ }
+ if (isJson) {
+ sendResponse(JSON.stringify(json, undefined, 2), 'text/json')
+ return
+ }
+ const html = this.resources.errorTemplate(json)
+ sendResponse(html)
+ return
+ }
+
+ // Show stack trace
+ const youch = new Youch(err, req, readSource.bind(this))
+ if (isJson) {
+ youch.toJSON().then(json => { sendResponse(JSON.stringify(json, undefined, 2), 'text/json') })
+ } else {
+ youch.toHTML().then(html => { sendResponse(html) })
+ }
+}
+
+async function readSource(frame) {
+ const serverBundle = this.resources.serverBundle
+
+ // Remove webpack:/// & query string from the end
+ const sanitizeName = name => name ? name.replace('webpack:///', '').split('?')[0] : ''
+
+ // SourceMap Support for SSR Bundle
+ if (serverBundle && serverBundle.maps[frame.fileName]) {
+ // Initialize smc cache
+ if (!serverBundle.$maps) {
+ serverBundle.$maps = {}
+ }
+
+ // Read SourceMap object
+ const smc = serverBundle.$maps[frame.fileName] || new SourceMapConsumer(serverBundle.maps[frame.fileName])
+ serverBundle.$maps[frame.fileName] = smc
+
+ // Try to find original position
+ const { line, column, name, source } = smc.originalPositionFor({
+ line: frame.getLineNumber() || 0,
+ column: frame.getColumnNumber() || 0,
+ bias: SourceMapConsumer.LEAST_UPPER_BOUND
+ })
+ if (line) {
+ frame.lineNumber = line
+ }
+ /* istanbul ignore if */
+ if (column) {
+ frame.columnNumber = column
+ }
+ /* istanbul ignore if */
+ if (name) {
+ frame.functionName = name
+ }
+ if (source) {
+ frame.fileName = sanitizeName(source)
+
+ // Source detected, try to get original source code
+ const contents = smc.sourceContentFor(source)
+ if (contents) {
+ frame.contents = contents
+ }
+ }
+ }
+
+ // Return if fileName is still unknown
+ if (!frame.fileName) {
+ return
+ }
+
+ frame.fileName = sanitizeName(frame.fileName)
+
+ // Try to read from SSR bundle files
+ if (serverBundle && serverBundle.files[frame.fileName]) {
+ frame.contents = serverBundle.files[frame.fileName]
+ return
+ }
+
+ // Possible paths for file
+ const searchPath = [
+ this.options.rootDir,
+ join(this.options.buildDir, 'dist'),
+ this.options.srcDir,
+ this.options.buildDir
+ ]
+
+ // Scan filesystem for real path
+ for (let pathDir of searchPath) {
+ let fullPath = resolve(pathDir, frame.fileName)
+ let source = await readFile(fullPath, 'utf-8').catch(() => null)
+ if (source) {
+ if (!frame.contents) {
+ frame.contents = source
+ }
+ frame.fullPath = fullPath
+ return
+ }
+ }
+}
diff --git a/lib/core/middleware/nuxt.js b/lib/core/middleware/nuxt.js
new file mode 100644
index 0000000000..8c6e9831ec
--- /dev/null
+++ b/lib/core/middleware/nuxt.js
@@ -0,0 +1,66 @@
+const generateETag = require('etag')
+const fresh = require('fresh')
+
+const { getContext } = require('../common/utils')
+
+module.exports = async function nuxtMiddleware(req, res, next) {
+ // Get context
+ const context = getContext(req, res)
+
+ res.statusCode = 200
+ try {
+ const result = await this.renderRoute(req.url, context)
+ await this.nuxt.callHook('render:route', req.url, result)
+ const { html, error, redirected, resourceHints } = result
+
+ if (redirected) {
+ return html
+ }
+ if (error) {
+ res.statusCode = context.nuxt.error.statusCode || 500
+ }
+
+ // Add ETag header
+ if (!error && this.options.render.etag) {
+ const etag = generateETag(html, this.options.render.etag)
+ if (fresh(req.headers, { etag })) {
+ res.statusCode = 304
+ res.end()
+ return
+ }
+ res.setHeader('ETag', etag)
+ }
+
+ // HTTP2 push headers
+ if (!error && this.options.render.http2.push) {
+ // Parse resourceHints to extract HTTP.2 prefetch/push headers
+ // https://w3c.github.io/preload/#server-push-http-2
+ const regex = /link rel="([^"]*)" href="([^"]*)" as="([^"]*)"/g
+ const pushAssets = []
+ let m
+ while (m = regex.exec(resourceHints)) { // eslint-disable-line no-cond-assign
+ const [, rel, href, as] = m
+ if (rel === 'preload') {
+ pushAssets.push(`<${href}>; rel=${rel}; as=${as}`)
+ }
+ }
+ // Pass with single Link header
+ // https://blog.cloudflare.com/http-2-server-push-with-multiple-assets-per-link-header
+ res.setHeader('Link', pushAssets.join(','))
+ }
+
+ // Send response
+ res.setHeader('Content-Type', 'text/html; charset=utf-8')
+ res.setHeader('Content-Length', Buffer.byteLength(html))
+ res.end(html, 'utf8')
+ return html
+ } catch (err) {
+ /* istanbul ignore if */
+ if (context && context.redirected) {
+ console.error(err) // eslint-disable-line no-console
+ return err
+ }
+
+ next(err)
+ }
+}
diff --git a/lib/core/middleware/open-in-editor.js b/lib/core/middleware/open-in-editor.js
new file mode 100644
index 0000000000..36d1a5658e
--- /dev/null
+++ b/lib/core/middleware/open-in-editor.js
@@ -0,0 +1,23 @@
+
+const openInEditor = require('open-in-editor')
+
+module.exports = function openInEditorMiddleware(req, res) {
+ // Lazy load open-in-editor
+ const editor = openInEditor.configure(this.options.editor)
+
+ // Parse Query
+ const query = req.url.split('?')[1].split('&').reduce((q, part) => {
+ const s = part.split('=')
+ q[s[0]] = decodeURIComponent(s[1])
+ return q
+ }, {})
+
+ // eslint-disable-next-line no-console
+ console.log('[open in editor]', query.file)
+
+ editor.open(query.file).then(() => {
+ res.end('opened in editor!')
+ }).catch(err => {
+ res.end(err)
+ })
+}
diff --git a/lib/core/renderer.js b/lib/core/renderer.js
index c7428b71be..57e8d79fdc 100644
--- a/lib/core/renderer.js
+++ b/lib/core/renderer.js
@@ -1,21 +1,23 @@
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 { 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 errorMiddleware = require('./middleware/error')
+const nuxtMiddleware = require('./middleware/nuxt')
+const openInEditorMiddleware = require('./middleware/open-in-editor')
+
const debug = Debug('nuxt:render')
debug.color = 4 // Force blue color
@@ -223,28 +225,10 @@ module.exports = class Renderer {
}
// open in editor for debug mode only
- const _this = this
if (this.options.debug && this.options.dev) {
this.useMiddleware({
path: '__open-in-editor',
- handler(req, res) {
- // Lazy load open-in-editor
- const openInEditor = require('open-in-editor')
- const editor = openInEditor.configure(_this.options.editor)
- // Parse Query
- const query = req.url.split('?')[1].split('&').reduce((q, part) => {
- const s = part.split('=')
- q[s[0]] = decodeURIComponent(s[1])
- return q
- }, {})
- // eslint-disable-next-line no-console
- console.log('[open in editor]', query.file)
- editor.open(query.file).then(() => {
- res.end('opened in editor!')
- }).catch(err => {
- res.end(err)
- })
- }
+ handler: openInEditorMiddleware.bind(this)
})
}
@@ -270,206 +254,12 @@ module.exports = class Renderer {
})
// Finally use nuxtMiddleware
- this.useMiddleware(this.nuxtMiddleware.bind(this))
+ this.useMiddleware(nuxtMiddleware.bind(this))
// Error middleware for errors that occurred in middleware that declared above
// Middleware should exactly take 4 arguments
// https://github.com/senchalabs/connect#error-middleware
- this.useMiddleware(this.errorMiddleware.bind(this))
- }
-
- async nuxtMiddleware(req, res, next) {
- // Get context
- const context = getContext(req, res)
-
- res.statusCode = 200
- try {
- const result = await this.renderRoute(req.url, context)
- await this.nuxt.callHook('render:route', req.url, result)
- const { html, error, redirected, resourceHints } = result
-
- if (redirected) {
- return html
- }
- if (error) {
- res.statusCode = context.nuxt.error.statusCode || 500
- }
-
- // Add ETag header
- if (!error && this.options.render.etag) {
- const etag = generateETag(html, this.options.render.etag)
- if (fresh(req.headers, { etag })) {
- res.statusCode = 304
- res.end()
- return
- }
- res.setHeader('ETag', etag)
- }
-
- // HTTP2 push headers
- if (!error && this.options.render.http2.push) {
- // Parse resourceHints to extract HTTP.2 prefetch/push headers
- // https://w3c.github.io/preload/#server-push-http-2
- const regex = /link rel="([^"]*)" href="([^"]*)" as="([^"]*)"/g
- const pushAssets = []
- let m
- while (m = regex.exec(resourceHints)) { // eslint-disable-line no-cond-assign
- const [, rel, href, as] = m
- if (rel === 'preload') {
- pushAssets.push(`<${href}>; rel=${rel}; as=${as}`)
- }
- }
- // Pass with single Link header
- // https://blog.cloudflare.com/http-2-server-push-with-multiple-assets-per-link-header
- res.setHeader('Link', pushAssets.join(','))
- }
-
- // Send response
- res.setHeader('Content-Type', 'text/html; charset=utf-8')
- res.setHeader('Content-Length', Buffer.byteLength(html))
- res.end(html, 'utf8')
- return html
- } catch (err) {
- /* istanbul ignore if */
- if (context && context.redirected) {
- console.error(err) // eslint-disable-line no-console
- return err
- }
-
- next(err)
- }
- }
-
- errorMiddleware(err, req, res, next) {
- // ensure statusCode, message and name fields
- err.statusCode = err.statusCode || 500
- err.message = err.message || 'Nuxt Server Error'
- err.name = (!err.name || err.name === 'Error') ? 'NuxtServerError' : err.name
-
- // We hide actual errors from end users, so show them on server logs
- if (err.statusCode !== 404) {
- console.error(err) // eslint-disable-line no-console
- }
-
- const sendResponse = (content, type = 'text/html') => {
- // Set Headers
- res.statusCode = err.statusCode
- res.statusMessage = err.name
- res.setHeader('Content-Type', type + '; charset=utf-8')
- res.setHeader('Content-Length', Buffer.byteLength(content))
-
- // Send Response
- res.end(content, 'utf-8')
- }
-
- // Check if request accepts JSON
- const hasReqHeader = (header, includes) => req.headers[header] && req.headers[header].toLowerCase().includes(includes)
- const isJson = hasReqHeader('accept', 'application/json') || hasReqHeader('user-agent', 'curl/')
-
- // Use basic errors when debug mode is disabled
- if (!this.options.debug) {
- // Json format is compatible with Youch json responses
- const json = {
- status: err.statusCode,
- message: err.message,
- name: err.name
- }
- if (isJson) {
- sendResponse(JSON.stringify(json, undefined, 2), 'text/json')
- return
- }
- const html = this.resources.errorTemplate(json)
- sendResponse(html)
- return
- }
-
- // Show stack trace
- const youch = new Youch(err, req, this.readSource.bind(this))
- if (isJson) {
- youch.toJSON().then(json => { sendResponse(JSON.stringify(json, undefined, 2), 'text/json') })
- } else {
- youch.toHTML().then(html => { sendResponse(html) })
- }
- }
-
- async readSource(frame) {
- const serverBundle = this.resources.serverBundle
-
- // Remove webpack:/// & query string from the end
- const sanitizeName = name => name ? name.replace('webpack:///', '').split('?')[0] : ''
-
- // SourceMap Support for SSR Bundle
- if (serverBundle && serverBundle.maps[frame.fileName]) {
- // Initialize smc cache
- if (!serverBundle.$maps) {
- serverBundle.$maps = {}
- }
-
- // Read SourceMap object
- const smc = serverBundle.$maps[frame.fileName] || new SourceMapConsumer(serverBundle.maps[frame.fileName])
- serverBundle.$maps[frame.fileName] = smc
-
- // Try to find original position
- const { line, column, name, source } = smc.originalPositionFor({
- line: frame.getLineNumber() || 0,
- column: frame.getColumnNumber() || 0,
- bias: SourceMapConsumer.LEAST_UPPER_BOUND
- })
- if (line) {
- frame.lineNumber = line
- }
- /* istanbul ignore if */
- if (column) {
- frame.columnNumber = column
- }
- /* istanbul ignore if */
- if (name) {
- frame.functionName = name
- }
- if (source) {
- frame.fileName = sanitizeName(source)
-
- // Source detected, try to get original source code
- const contents = smc.sourceContentFor(source)
- if (contents) {
- frame.contents = contents
- }
- }
- }
-
- // Return if fileName is still unknown
- if (!frame.fileName) {
- return
- }
-
- frame.fileName = sanitizeName(frame.fileName)
-
- // Try to read from SSR bundle files
- if (serverBundle && serverBundle.files[frame.fileName]) {
- frame.contents = serverBundle.files[frame.fileName]
- return
- }
-
- // Possible paths for file
- const searchPath = [
- this.options.rootDir,
- join(this.options.buildDir, 'dist'),
- this.options.srcDir,
- this.options.buildDir
- ]
-
- // Scan filesystem for real path
- for (let pathDir of searchPath) {
- let fullPath = resolve(pathDir, frame.fileName)
- let source = await fs.readFile(fullPath, 'utf-8').catch(() => null)
- if (source) {
- if (!frame.contents) {
- frame.contents = source
- }
- frame.fullPath = fullPath
- return
- }
- }
+ this.useMiddleware(errorMiddleware.bind(this))
}
async renderRoute(url, context = {}) {
From 88b795a83b26d1e9d8c86758c2acc4aecdaf1cde Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Thu, 4 Jan 2018 21:09:12 +0330
Subject: [PATCH 32/52] fix typo
---
lib/core/middleware/nuxt.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/core/middleware/nuxt.js b/lib/core/middleware/nuxt.js
index 8c6e9831ec..a0c0f0d41c 100644
--- a/lib/core/middleware/nuxt.js
+++ b/lib/core/middleware/nuxt.js
@@ -1,7 +1,7 @@
const generateETag = require('etag')
const fresh = require('fresh')
-const { getContext } = require('../common/utils')
+const { getContext } = require('../../common/utils')
module.exports = async function nuxtMiddleware(req, res, next) {
// Get context
From 42807fcdf91bcdd54ef1ed4edd21b46e4c26f417 Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 5 Jan 2018 01:40:52 +0330
Subject: [PATCH 33/52] perf: Use getPreloadFiles for HTTP2 push headers
---
lib/common/options.js | 3 ++-
lib/core/middleware/nuxt.js | 31 +++++++++++++++++++++----------
lib/core/renderer.js | 10 ++++------
3 files changed, 27 insertions(+), 17 deletions(-)
diff --git a/lib/common/options.js b/lib/common/options.js
index 3f8fe27a02..af70751c31 100755
--- a/lib/common/options.js
+++ b/lib/common/options.js
@@ -267,7 +267,8 @@ Options.defaults = {
resourceHints: true,
ssr: undefined,
http2: {
- push: false
+ push: false,
+ shouldPush: null
},
static: {},
gzip: {
diff --git a/lib/core/middleware/nuxt.js b/lib/core/middleware/nuxt.js
index a0c0f0d41c..9905b2f8c3 100644
--- a/lib/core/middleware/nuxt.js
+++ b/lib/core/middleware/nuxt.js
@@ -11,7 +11,7 @@ module.exports = async function nuxtMiddleware(req, res, next) {
try {
const result = await this.renderRoute(req.url, context)
await this.nuxt.callHook('render:route', req.url, result)
- const { html, error, redirected, resourceHints } = result
+ const { html, error, redirected, getPreloadFiles } = result
if (redirected) {
return html
@@ -31,21 +31,32 @@ module.exports = async function nuxtMiddleware(req, res, next) {
res.setHeader('ETag', etag)
}
- // HTTP2 push headers
+ // HTTP2 push headers for preload assets
if (!error && this.options.render.http2.push) {
// Parse resourceHints to extract HTTP.2 prefetch/push headers
// https://w3c.github.io/preload/#server-push-http-2
- const regex = /link rel="([^"]*)" href="([^"]*)" as="([^"]*)"/g
const pushAssets = []
- let m
- while (m = regex.exec(resourceHints)) { // eslint-disable-line no-cond-assign
- const [, rel, href, as] = m
- if (rel === 'preload') {
- pushAssets.push(`<${href}>; rel=${rel}; as=${as}`)
+ const preloadFiles = getPreloadFiles()
+ const { shouldPush } = this.options.render.http2
+ const { publicPath } = this.resources.clientManifest
+
+ preloadFiles.forEach(({ file, asType, fileWithoutQuery, extension }) => {
+ // By default, we only preload scripts or css
+ if (!shouldPush && asType !== 'script' && asType !== 'style') {
+ return
}
- }
+
+ // User wants to explicitly control what to preload
+ if (shouldPush && !shouldPush(fileWithoutQuery, asType)) {
+ return
+ }
+
+ pushAssets.push(`<${publicPath}${file}>; rel=preload; as=${asType}`)
+ })
+
// Pass with single Link header
- // https://blog.cloudflare.com/http-2-server-push-with-multiple-assets-per-link-header
+ // https://preloadFilesblog.cloudflare.com/http-2-server-push-with-multiple-assets-per-link-header
+ // https://www.w3.org/Protocols/9707-link-header.html
res.setHeader('Link', pushAssets.join(','))
}
diff --git a/lib/core/renderer.js b/lib/core/renderer.js
index 57e8d79fdc..eff0ed19c0 100644
--- a/lib/core/renderer.js
+++ b/lib/core/renderer.js
@@ -312,12 +312,10 @@ module.exports = class Renderer {
HEAD += ` `
}
- let resourceHints = ''
-
- if (this.options.render.resourceHints) {
- resourceHints = context.renderResourceHints()
- HEAD += resourceHints
+ if (this.options.render.preloadLinks) {
+ HEAD += context.renderResourceHints()
}
+
APP += ``
APP += context.renderScripts()
APP += m.script.text({ body: true })
@@ -334,7 +332,7 @@ module.exports = class Renderer {
return {
html,
- resourceHints,
+ getPreloadFiles: context.getPreloadFiles,
error: context.nuxt.error,
redirected: context.redirected
}
From aef21994023d03946b67bc073865b4893dfaaf8a Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 5 Jan 2018 01:43:59 +0330
Subject: [PATCH 34/52] perf: use non weak etags as default
Calculation is always the same. This helps browsers caching responses for a longer term
---
lib/common/options.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/common/options.js b/lib/common/options.js
index af70751c31..0654b74225 100755
--- a/lib/common/options.js
+++ b/lib/common/options.js
@@ -275,7 +275,7 @@ Options.defaults = {
threshold: 0
},
etag: {
- weak: true // Faster for responses > 5KB
+ weak: false
}
},
watchers: {
From 60714ecfc083285454eb0f1187cf8170c128b39e Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 5 Jan 2018 02:03:46 +0330
Subject: [PATCH 35/52] minor fixes
---
lib/core/meta.js | 8 ++++++++
lib/core/renderer.js | 6 +++---
test/basic.ssr.test.js | 2 --
3 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/lib/core/meta.js b/lib/core/meta.js
index 0df24a9de4..53398e16bb 100644
--- a/lib/core/meta.js
+++ b/lib/core/meta.js
@@ -74,6 +74,14 @@ module.exports = class MetaRenderer {
}
}
+ // Emulate getPreloadFiles from vue-server-renderer (works for JS chunks only)
+ meta.getPreloadFiles = () => clientManifest.initial.map(r => ({
+ file: r,
+ fileWithoutQuery: r,
+ asType: 'script',
+ extension: 'js'
+ }))
+
// Set meta tags inside cache
this.cache.set(url, meta)
diff --git a/lib/core/renderer.js b/lib/core/renderer.js
index eff0ed19c0..9139eaf0de 100644
--- a/lib/core/renderer.js
+++ b/lib/core/renderer.js
@@ -280,7 +280,7 @@ module.exports = class Renderer {
const ENV = this.options.env
if (this.noSSR || spa) {
- const { HTML_ATTRS, BODY_ATTRS, HEAD, BODY_SCRIPTS, resourceHints } = await this.metaRenderer.render(context)
+ const { HTML_ATTRS, BODY_ATTRS, HEAD, BODY_SCRIPTS, getPreloadFiles } = await this.metaRenderer.render(context)
const APP = `${this.resources.loadingHTML}
` + BODY_SCRIPTS
// Detect 404 errors
@@ -297,7 +297,7 @@ module.exports = class Renderer {
ENV
})
- return { html, resourceHints }
+ return { html, getPreloadFiles }
}
// Call renderToString from the bundleRenderer and generate the HTML (will update the context as well)
@@ -312,7 +312,7 @@ module.exports = class Renderer {
HEAD += ` `
}
- if (this.options.render.preloadLinks) {
+ if (this.options.render.resourceHints) {
HEAD += context.renderResourceHints()
}
diff --git a/test/basic.ssr.test.js b/test/basic.ssr.test.js
index 82ee3fe7ed..c18aaf5708 100755
--- a/test/basic.ssr.test.js
+++ b/test/basic.ssr.test.js
@@ -223,8 +223,6 @@ test('/no-ssr (client-side)', async t => {
test('ETag Header', async t => {
const { headers: { etag } } = await rp(url('/stateless'), { resolveWithFullResponse: true })
- // Validate etag
- t.regex(etag, /W\/".*"$/)
// Verify functionality
const error = await t.throws(rp(url('/stateless'), { headers: { 'If-None-Match': etag } }))
t.is(error.statusCode, 304)
From 3822f0912b8ee6993381032e3910b9ab99028930 Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 5 Jan 2018 02:30:01 +0330
Subject: [PATCH 36/52] fix: use use non-eval source maps as of chrome 63
dev-tools bug
---
lib/builder/webpack/base.config.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/builder/webpack/base.config.js b/lib/builder/webpack/base.config.js
index 16e33910ac..346723d721 100644
--- a/lib/builder/webpack/base.config.js
+++ b/lib/builder/webpack/base.config.js
@@ -18,7 +18,7 @@ const WarnFixPlugin = require('./plugins/warnfix')
module.exports = function webpackBaseConfig({ name, isServer }) {
const config = {
name,
- devtool: this.options.dev ? 'cheap-eval-source-map' : false,
+ devtool: this.options.dev ? 'cheap-source-map' : false,
entry: {
app: null
},
From 4ea963a1c9134d21acbd11dec68b755d135d55e8 Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 5 Jan 2018 02:47:33 +0330
Subject: [PATCH 37/52] update youch to 4.0.1
---
package.json | 2 +-
yarn.lock | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/package.json b/package.json
index a9149d9a10..24f6e5de86 100644
--- a/package.json
+++ b/package.json
@@ -56,7 +56,7 @@
"npm": ">=5.0.0"
},
"dependencies": {
- "@nuxtjs/youch": "^4.0.0",
+ "@nuxtjs/youch": "^4.0.1",
"ansi-html": "^0.0.7",
"autoprefixer": "^7.2.4",
"babel-core": "^6.26.0",
diff --git a/yarn.lock b/yarn.lock
index 719e923e6d..16c9fcf8e0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -97,9 +97,9 @@
dependencies:
arrify "^1.0.1"
-"@nuxtjs/youch@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@nuxtjs/youch/-/youch-4.0.0.tgz#74eb880f57a3f76f7684f69ba2753a815f308deb"
+"@nuxtjs/youch@^4.0.1":
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/@nuxtjs/youch/-/youch-4.0.1.tgz#73e7e1c8646e1e9c931c6d3216c317c90ff455b8"
dependencies:
cookie "^0.3.1"
mustache "^2.3.0"
From 87ac7d0cb4cfdfd9ad4d063002cc719a4ad5be90 Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 5 Jan 2018 02:57:13 +0330
Subject: [PATCH 38/52] revert: don't prepend js/ to chunk file names
It makes some problems with source mappings
---
lib/common/options.js | 8 ++++----
test/with-config.test.js | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/lib/common/options.js b/lib/common/options.js
index 0654b74225..b43b75ff57 100755
--- a/lib/common/options.js
+++ b/lib/common/options.js
@@ -164,10 +164,10 @@ Options.defaults = {
publicPath: '/_nuxt/',
filenames: {
css: 'css/[name].[contenthash].css',
- manifest: 'js/manifest.[hash].js',
- vendor: 'js/vendor.[chunkhash].js',
- app: 'js/app.[chunkhash].js',
- chunk: 'js/[name].[chunkhash].js'
+ manifest: 'manifest.[hash].js',
+ vendor: 'vendor.[chunkhash].js',
+ app: 'app.[chunkhash].js',
+ chunk: '[name].[chunkhash].js'
},
vendor: [],
plugins: [],
diff --git a/test/with-config.test.js b/test/with-config.test.js
index edc7135b9b..a20409b5dc 100644
--- a/test/with-config.test.js
+++ b/test/with-config.test.js
@@ -55,7 +55,7 @@ test('/ (custom app.html)', async t => {
test('/ (custom build.publicPath)', async t => {
const { html } = await nuxt.renderRoute('/')
- t.true(html.includes('src="/test/orion/js/vendor.'))
+ t.true(html.includes('src="/test/orion/vendor.'))
})
test('/ (custom postcss.config.js)', async t => {
From 452747b3c47fa87b3cbb3b03000b87f2332f9988 Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 5 Jan 2018 03:04:20 +0330
Subject: [PATCH 39/52] perf,fix: source map improvements
---
lib/builder/webpack/base.config.js | 4 +---
lib/builder/webpack/client.config.js | 4 ++++
lib/builder/webpack/server.config.js | 6 ++++--
lib/common/options.js | 2 +-
4 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/lib/builder/webpack/base.config.js b/lib/builder/webpack/base.config.js
index 346723d721..e6cb1e4d88 100644
--- a/lib/builder/webpack/base.config.js
+++ b/lib/builder/webpack/base.config.js
@@ -18,7 +18,6 @@ const WarnFixPlugin = require('./plugins/warnfix')
module.exports = function webpackBaseConfig({ name, isServer }) {
const config = {
name,
- devtool: this.options.dev ? 'cheap-source-map' : false,
entry: {
app: null
},
@@ -28,8 +27,7 @@ module.exports = function webpackBaseConfig({ name, isServer }) {
chunkFilename: this.getFileName('chunk'),
publicPath: (isUrl(this.options.build.publicPath)
? this.options.build.publicPath
- : urlJoin(this.options.router.base, this.options.build.publicPath)),
- devtoolModuleFilenameTemplate: '[absolute-resource-path]'
+ : urlJoin(this.options.router.base, this.options.build.publicPath))
},
performance: {
maxEntrypointSize: 1000000,
diff --git a/lib/builder/webpack/client.config.js b/lib/builder/webpack/client.config.js
index 6d975b73c4..b49890e53d 100644
--- a/lib/builder/webpack/client.config.js
+++ b/lib/builder/webpack/client.config.js
@@ -33,6 +33,10 @@ module.exports = function webpackClientConfig() {
config.entry.app = resolve(this.options.buildDir, 'client.js')
config.entry.vendor = this.vendor()
+ // Config devtool
+ config.devtool = this.options.dev ? 'cheap-source-map' : false
+ config.output.devtoolModuleFilenameTemplate = '[absolute-resource-path]'
+
// Add CommonChunks plugin
commonChunksPlugin.call(this, config)
diff --git a/lib/builder/webpack/server.config.js b/lib/builder/webpack/server.config.js
index c3ecde4276..56a5ebc099 100644
--- a/lib/builder/webpack/server.config.js
+++ b/lib/builder/webpack/server.config.js
@@ -14,16 +14,18 @@ const base = require('./base.config.js')
module.exports = function webpackServerConfig() {
let config = base.call(this, { name: 'server', isServer: true })
- // env object defined in nuxt.config.js
+ // Env object defined in nuxt.config.js
let env = {}
each(this.options.env, (value, key) => {
env['process.env.' + key] = (['boolean', 'number'].indexOf(typeof value) !== -1 ? value : JSON.stringify(value))
})
+ // Config devtool
+ config.devtool = this.options.dev ? 'cheap-source-map' : false
+
config = Object.assign(config, {
target: 'node',
node: false,
- devtool: 'source-map',
entry: resolve(this.options.buildDir, 'server.js'),
output: Object.assign({}, config.output, {
filename: 'server-bundle.js',
diff --git a/lib/common/options.js b/lib/common/options.js
index b43b75ff57..4db8c8b044 100755
--- a/lib/common/options.js
+++ b/lib/common/options.js
@@ -163,7 +163,7 @@ Options.defaults = {
uglify: {},
publicPath: '/_nuxt/',
filenames: {
- css: 'css/[name].[contenthash].css',
+ css: '[name].[contenthash].css',
manifest: 'manifest.[hash].js',
vendor: 'vendor.[chunkhash].js',
app: 'app.[chunkhash].js',
From a487b9e9c5d353771dc7df9f01a9c46a6fc0076f Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 5 Jan 2018 03:06:43 +0330
Subject: [PATCH 40/52] remove debug
---
lib/builder/webpack/postcss.js | 2 --
1 file changed, 2 deletions(-)
diff --git a/lib/builder/webpack/postcss.js b/lib/builder/webpack/postcss.js
index a9c3674c46..aa348e1db6 100644
--- a/lib/builder/webpack/postcss.js
+++ b/lib/builder/webpack/postcss.js
@@ -1,7 +1,6 @@
const { existsSync } = require('fs')
const { resolve } = require('path')
const { cloneDeep } = require('lodash')
-const debug = require('debug')('nuxt:postcss')
const { isPureObject } = require('../../common/utils')
module.exports = function postcssConfig() {
@@ -18,7 +17,6 @@ module.exports = function postcssConfig() {
for (let file of ['postcss.config.js', '.postcssrc.js', '.postcssrc', '.postcssrc.json', '.postcssrc.yaml']) {
if (existsSync(resolve(dir, file))) {
const postcssConfigPath = resolve(dir, file)
- debug(`Using config file: ${postcssConfigPath}`)
return {
sourceMap: this.options.build.cssSourceMap,
config: {
From f74457c9c5850e1c982964f624138a2f9127ab57 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Chopin?=
Date: Fri, 5 Jan 2018 08:20:32 +0100
Subject: [PATCH 41/52] Add .coffee extensions for nuxt and webpack
---
examples/with-coffee/nuxt.config.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/examples/with-coffee/nuxt.config.js b/examples/with-coffee/nuxt.config.js
index f409fceff7..f2899df1f1 100644
--- a/examples/with-coffee/nuxt.config.js
+++ b/examples/with-coffee/nuxt.config.js
@@ -20,8 +20,10 @@ module.exports = {
/*
** Build configuration
*/
+ extensions: ['coffee'],
build: {
extend (config, ctx) {
+ config.resolve.extensions.push('.ts')
config.module.rules.push({
test: /\.coffee$/,
loader: 'coffee-loader'
From 910184301a8ea75c7eb428cd3a2e003341a0f100 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Chopin?=
Date: Fri, 5 Jan 2018 09:43:35 +0100
Subject: [PATCH 42/52] example: Refacto CoffeeScript example
---
.eslintignore | 1 +
.../{with-coffee => coffeescript}/README.md | 4 +--
.../components/Logo.vue | 0
.../layouts/default.vue | 0
examples/coffeescript/modules/coffeescript.js | 23 +++++++++++++
.../nuxt.config.js | 15 ++-------
examples/coffeescript/package.json | 19 +++++++++++
.../pages/README.md | 0
.../pages/index.vue | 0
.../static/favicon.ico | Bin
.../store/index.coffee | 0
examples/with-coffee/.editorconfig | 13 --------
examples/with-coffee/.eslintrc.js | 16 ---------
examples/with-coffee/.gitignore | 11 -------
examples/with-coffee/assets/README.md | 8 -----
examples/with-coffee/components/README.md | 6 ----
examples/with-coffee/layouts/README.md | 8 -----
examples/with-coffee/middleware/README.md | 9 -----
examples/with-coffee/package.json | 31 ------------------
examples/with-coffee/plugins/README.md | 8 -----
examples/with-coffee/static/README.md | 11 -------
examples/with-coffee/store/README.md | 10 ------
22 files changed, 48 insertions(+), 145 deletions(-)
rename examples/{with-coffee => coffeescript}/README.md (87%)
rename examples/{with-coffee => coffeescript}/components/Logo.vue (100%)
rename examples/{with-coffee => coffeescript}/layouts/default.vue (100%)
create mode 100644 examples/coffeescript/modules/coffeescript.js
rename examples/{with-coffee => coffeescript}/nuxt.config.js (62%)
create mode 100644 examples/coffeescript/package.json
rename examples/{with-coffee => coffeescript}/pages/README.md (100%)
rename examples/{with-coffee => coffeescript}/pages/index.vue (100%)
rename examples/{with-coffee => coffeescript}/static/favicon.ico (100%)
rename examples/{with-coffee => coffeescript}/store/index.coffee (100%)
delete mode 100644 examples/with-coffee/.editorconfig
delete mode 100644 examples/with-coffee/.eslintrc.js
delete mode 100644 examples/with-coffee/.gitignore
delete mode 100644 examples/with-coffee/assets/README.md
delete mode 100644 examples/with-coffee/components/README.md
delete mode 100644 examples/with-coffee/layouts/README.md
delete mode 100644 examples/with-coffee/middleware/README.md
delete mode 100644 examples/with-coffee/package.json
delete mode 100644 examples/with-coffee/plugins/README.md
delete mode 100644 examples/with-coffee/static/README.md
delete mode 100644 examples/with-coffee/store/README.md
diff --git a/.eslintignore b/.eslintignore
index 801d56deaa..75a030c95e 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -2,3 +2,4 @@ app
node_modules
dist
.nuxt
+examples/coffeescript/pages/index.vue
diff --git a/examples/with-coffee/README.md b/examples/coffeescript/README.md
similarity index 87%
rename from examples/with-coffee/README.md
rename to examples/coffeescript/README.md
index 601a17bbb6..60a641df16 100644
--- a/examples/with-coffee/README.md
+++ b/examples/coffeescript/README.md
@@ -1,6 +1,6 @@
-# with-coffee
+# CoffeeScript
-> Nuxt.js project
+> Nuxt.js project with CoffeeScript
## Build Setup
diff --git a/examples/with-coffee/components/Logo.vue b/examples/coffeescript/components/Logo.vue
similarity index 100%
rename from examples/with-coffee/components/Logo.vue
rename to examples/coffeescript/components/Logo.vue
diff --git a/examples/with-coffee/layouts/default.vue b/examples/coffeescript/layouts/default.vue
similarity index 100%
rename from examples/with-coffee/layouts/default.vue
rename to examples/coffeescript/layouts/default.vue
diff --git a/examples/coffeescript/modules/coffeescript.js b/examples/coffeescript/modules/coffeescript.js
new file mode 100644
index 0000000000..a6a0a6c040
--- /dev/null
+++ b/examples/coffeescript/modules/coffeescript.js
@@ -0,0 +1,23 @@
+module.exports = function () {
+ // Add .coffee extension for store, middleware and more
+ this.nuxt.options.extensions.push('coffee')
+ // Extend build
+ const coffeeLoader = {
+ test: /\.coffee$/,
+ loader: 'coffee-loader'
+ }
+ this.extendBuild(config => {
+ // Add CoffeeScruot loader
+ config.module.rules.push(coffeeLoader)
+ // Add CoffeeScript loader for vue files
+ for (let rule of config.module.rules) {
+ if (rule.loader === 'vue-loader') {
+ rule.options.loaders.coffee = coffeeLoader
+ }
+ }
+ // Add .coffee extension in webpack resolve
+ if (config.resolve.extensions.indexOf('.coffee') === -1) {
+ config.resolve.extensions.push('.coffee')
+ }
+ })
+}
diff --git a/examples/with-coffee/nuxt.config.js b/examples/coffeescript/nuxt.config.js
similarity index 62%
rename from examples/with-coffee/nuxt.config.js
rename to examples/coffeescript/nuxt.config.js
index f2899df1f1..67afea59ff 100644
--- a/examples/with-coffee/nuxt.config.js
+++ b/examples/coffeescript/nuxt.config.js
@@ -3,7 +3,7 @@ module.exports = {
** Headers of the page
*/
head: {
- title: 'with-coffee',
+ title: 'Nuxt with CoffeeScript',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
@@ -18,16 +18,7 @@ module.exports = {
*/
loading: { color: '#3B8070' },
/*
- ** Build configuration
+ ** Modules
*/
- extensions: ['coffee'],
- build: {
- extend (config, ctx) {
- config.resolve.extensions.push('.ts')
- config.module.rules.push({
- test: /\.coffee$/,
- loader: 'coffee-loader'
- })
- }
- }
+ modules: ['~/modules/coffeescript']
}
diff --git a/examples/coffeescript/package.json b/examples/coffeescript/package.json
new file mode 100644
index 0000000000..759d04ff0f
--- /dev/null
+++ b/examples/coffeescript/package.json
@@ -0,0 +1,19 @@
+{
+ "name": "coffeescript",
+ "version": "1.0.0",
+ "description": "Nuxt.js with CoffeeScript",
+ "author": "Alex Ananiev ",
+ "private": true,
+ "scripts": {
+ "dev": "nuxt",
+ "build": "nuxt build",
+ "start": "nuxt start"
+ },
+ "dependencies": {
+ "nuxt": "latest"
+ },
+ "devDependencies": {
+ "coffee-loader": "^0.8.0",
+ "coffeescript": "^2.0.1"
+ }
+}
diff --git a/examples/with-coffee/pages/README.md b/examples/coffeescript/pages/README.md
similarity index 100%
rename from examples/with-coffee/pages/README.md
rename to examples/coffeescript/pages/README.md
diff --git a/examples/with-coffee/pages/index.vue b/examples/coffeescript/pages/index.vue
similarity index 100%
rename from examples/with-coffee/pages/index.vue
rename to examples/coffeescript/pages/index.vue
diff --git a/examples/with-coffee/static/favicon.ico b/examples/coffeescript/static/favicon.ico
similarity index 100%
rename from examples/with-coffee/static/favicon.ico
rename to examples/coffeescript/static/favicon.ico
diff --git a/examples/with-coffee/store/index.coffee b/examples/coffeescript/store/index.coffee
similarity index 100%
rename from examples/with-coffee/store/index.coffee
rename to examples/coffeescript/store/index.coffee
diff --git a/examples/with-coffee/.editorconfig b/examples/with-coffee/.editorconfig
deleted file mode 100644
index 9142239769..0000000000
--- a/examples/with-coffee/.editorconfig
+++ /dev/null
@@ -1,13 +0,0 @@
-# editorconfig.org
-root = true
-
-[*]
-indent_size = 2
-indent_style = space
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
diff --git a/examples/with-coffee/.eslintrc.js b/examples/with-coffee/.eslintrc.js
deleted file mode 100644
index b44e099cbb..0000000000
--- a/examples/with-coffee/.eslintrc.js
+++ /dev/null
@@ -1,16 +0,0 @@
-module.exports = {
- root: true,
- parser: 'babel-eslint',
- env: {
- browser: true,
- node: true
- },
- extends: 'standard',
- // required to lint *.vue files
- plugins: [
- 'html'
- ],
- // add your custom rules here
- rules: {},
- globals: {}
-}
diff --git a/examples/with-coffee/.gitignore b/examples/with-coffee/.gitignore
deleted file mode 100644
index 7ee6115053..0000000000
--- a/examples/with-coffee/.gitignore
+++ /dev/null
@@ -1,11 +0,0 @@
-# dependencies
-node_modules
-
-# logs
-npm-debug.log
-
-# Nuxt build
-.nuxt
-
-# Nuxt generate
-dist
diff --git a/examples/with-coffee/assets/README.md b/examples/with-coffee/assets/README.md
deleted file mode 100644
index c67cf2e260..0000000000
--- a/examples/with-coffee/assets/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# ASSETS
-
-This directory contains your un-compiled assets such as LESS, SASS, or JavaScript.
-
-More information about the usage of this directory in the documentation:
-https://nuxtjs.org/guide/assets#webpacked
-
-**This directory is not required, you can delete it if you don't want to use it.**
diff --git a/examples/with-coffee/components/README.md b/examples/with-coffee/components/README.md
deleted file mode 100644
index d7768ddb5f..0000000000
--- a/examples/with-coffee/components/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# COMPONENTS
-
-The components directory contains your Vue.js Components.
-Nuxt.js doesn't supercharge these components.
-
-**This directory is not required, you can delete it if you don't want to use it.**
diff --git a/examples/with-coffee/layouts/README.md b/examples/with-coffee/layouts/README.md
deleted file mode 100644
index 83d09caee8..0000000000
--- a/examples/with-coffee/layouts/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# LAYOUTS
-
-This directory contains your Application Layouts.
-
-More information about the usage of this directory in the documentation:
-https://nuxtjs.org/guide/views#layouts
-
-**This directory is not required, you can delete it if you don't want to use it.**
diff --git a/examples/with-coffee/middleware/README.md b/examples/with-coffee/middleware/README.md
deleted file mode 100644
index edb9129e28..0000000000
--- a/examples/with-coffee/middleware/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# MIDDLEWARE
-
-This directory contains your Application Middleware.
-The middleware lets you define custom function to be ran before rendering a page or a group of pages (layouts).
-
-More information about the usage of this directory in the documentation:
-https://nuxtjs.org/guide/routing#middleware
-
-**This directory is not required, you can delete it if you don't want to use it.**
diff --git a/examples/with-coffee/package.json b/examples/with-coffee/package.json
deleted file mode 100644
index 7554f4a84e..0000000000
--- a/examples/with-coffee/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "with-coffee",
- "version": "1.0.0",
- "description": "Nuxt.js with CoffeeScript",
- "author": "Alex Ananiev ",
- "private": true,
- "scripts": {
- "dev": "nuxt",
- "build": "nuxt build",
- "start": "nuxt start",
- "generate": "nuxt generate",
- "lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
- "precommit": "npm run lint"
- },
- "dependencies": {
- "nuxt": "latest"
- },
- "devDependencies": {
- "babel-eslint": "^7.2.3",
- "coffee-loader": "^0.8.0",
- "coffeescript": "^2.0.1",
- "eslint": "^4.3.0",
- "eslint-config-standard": "^10.2.1",
- "eslint-loader": "^1.9.0",
- "eslint-plugin-html": "^3.1.1",
- "eslint-plugin-import": "^2.7.0",
- "eslint-plugin-node": "^5.1.1",
- "eslint-plugin-promise": "^3.5.0",
- "eslint-plugin-standard": "^3.0.1"
- }
-}
diff --git a/examples/with-coffee/plugins/README.md b/examples/with-coffee/plugins/README.md
deleted file mode 100644
index ec39a25e3f..0000000000
--- a/examples/with-coffee/plugins/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# PLUGINS
-
-This directory contains your Javascript plugins that you want to run before instantiating the root vue.js application.
-
-More information about the usage of this directory in the documentation:
-https://nuxtjs.org/guide/plugins
-
-**This directory is not required, you can delete it if you don't want to use it.**
diff --git a/examples/with-coffee/static/README.md b/examples/with-coffee/static/README.md
deleted file mode 100644
index 66fe23aac1..0000000000
--- a/examples/with-coffee/static/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# STATIC
-
-This directory contains your static files.
-Each file inside this directory is mapped to /.
-
-Example: /static/robots.txt is mapped as /robots.txt.
-
-More information about the usage of this directory in the documentation:
-https://nuxtjs.org/guide/assets#static
-
-**This directory is not required, you can delete it if you don't want to use it.**
diff --git a/examples/with-coffee/store/README.md b/examples/with-coffee/store/README.md
deleted file mode 100644
index b9a0b7e4c8..0000000000
--- a/examples/with-coffee/store/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# STORE
-
-This directory contains your Vuex Store files.
-Vuex Store option is implemented in the Nuxt.js framework.
-Creating a index.js file in this directory activate the option in the framework automatically.
-
-More information about the usage of this directory in the documentation:
-https://nuxtjs.org/guide/vuex-store
-
-**This directory is not required, you can delete it if you don't want to use it.**
From 36ee372b0b43248062eaf335c3f2a866924b94a3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Chopin?=
Date: Fri, 5 Jan 2018 09:43:56 +0100
Subject: [PATCH 43/52] misc: Remove options argument
---
examples/typescript/modules/typescript.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/typescript/modules/typescript.js b/examples/typescript/modules/typescript.js
index 47cca47f50..3c430b165b 100644
--- a/examples/typescript/modules/typescript.js
+++ b/examples/typescript/modules/typescript.js
@@ -1,4 +1,4 @@
-module.exports = function (options) {
+module.exports = function () {
// Add .ts extension for store, middleware and more
this.nuxt.options.extensions.push('ts')
// Extend build
From 05a759570182f5400555e79ca048f97e46df522b Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 5 Jan 2018 12:49:32 +0330
Subject: [PATCH 44/52] improve error source maps
---
lib/core/middleware/error.js | 73 ++++++++----------------------------
1 file changed, 15 insertions(+), 58 deletions(-)
diff --git a/lib/core/middleware/error.js b/lib/core/middleware/error.js
index f9878bce7a..7515c07041 100644
--- a/lib/core/middleware/error.js
+++ b/lib/core/middleware/error.js
@@ -1,6 +1,5 @@
const Youch = require('@nuxtjs/youch')
-const { SourceMapConsumer } = require('source-map')
-const { join, resolve } = require('path')
+const { join, resolve, relative, isAbsolute } = require('path')
const { readFile } = require('fs-extra')
module.exports = function errorMiddleware(err, req, res, next) {
@@ -56,81 +55,39 @@ module.exports = function errorMiddleware(err, req, res, next) {
}
async function readSource(frame) {
- const serverBundle = this.resources.serverBundle
-
// Remove webpack:/// & query string from the end
- const sanitizeName = name => name ? name.replace('webpack:///', '').split('?')[0] : ''
-
- // SourceMap Support for SSR Bundle
- if (serverBundle && serverBundle.maps[frame.fileName]) {
- // Initialize smc cache
- if (!serverBundle.$maps) {
- serverBundle.$maps = {}
- }
-
- // Read SourceMap object
- const smc = serverBundle.$maps[frame.fileName] || new SourceMapConsumer(serverBundle.maps[frame.fileName])
- serverBundle.$maps[frame.fileName] = smc
-
- // Try to find original position
- const { line, column, name, source } = smc.originalPositionFor({
- line: frame.getLineNumber() || 0,
- column: frame.getColumnNumber() || 0,
- bias: SourceMapConsumer.LEAST_UPPER_BOUND
- })
- if (line) {
- frame.lineNumber = line
- }
- /* istanbul ignore if */
- if (column) {
- frame.columnNumber = column
- }
- /* istanbul ignore if */
- if (name) {
- frame.functionName = name
- }
- if (source) {
- frame.fileName = sanitizeName(source)
-
- // Source detected, try to get original source code
- const contents = smc.sourceContentFor(source)
- if (contents) {
- frame.contents = contents
- }
- }
- }
-
- // Return if fileName is still unknown
- if (!frame.fileName) {
- return
- }
-
+ const sanitizeName = name => name ? name.replace('webpack:///', '').split('?')[0] : null
frame.fileName = sanitizeName(frame.fileName)
- // Try to read from SSR bundle files
- if (serverBundle && serverBundle.files[frame.fileName]) {
- frame.contents = serverBundle.files[frame.fileName]
+ // Return if fileName is unknown
+ if (!frame.fileName) {
return
}
// Possible paths for file
const searchPath = [
+ this.options.srcDir,
this.options.rootDir,
join(this.options.buildDir, 'dist'),
- this.options.srcDir,
this.options.buildDir
]
- // Scan filesystem for real path
+ // Scan filesystem for real source
for (let pathDir of searchPath) {
let fullPath = resolve(pathDir, frame.fileName)
let source = await readFile(fullPath, 'utf-8').catch(() => null)
if (source) {
- if (!frame.contents) {
- frame.contents = source
- }
+ frame.contents = source
frame.fullPath = fullPath
+ if (isAbsolute(frame.fileName)) {
+ frame.fileName = relative(this.options.rootDir, fullPath)
+ }
return
}
}
+
+ // Fallback: use server bundle
+ if (!frame.contents) {
+ frame.contents = this.resources.serverBundle.files[frame.fileName]
+ }
}
From 1dd1d21716637f2912cacd76317c071a7cf59dfb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Chopin?=
Date: Fri, 5 Jan 2018 10:29:24 +0100
Subject: [PATCH 45/52] Update README.md
---
README.md | 50 +++++++++++++++++++++++++-------------------------
1 file changed, 25 insertions(+), 25 deletions(-)
diff --git a/README.md b/README.md
index 3b27ba6ea3..891fd28114 100644
--- a/README.md
+++ b/README.md
@@ -15,9 +15,29 @@
-> Nuxt.js is a Versatile Vue.js Framework
+> Vue.js Meta Framework to create complex, fast & universal web application *quickly*.
-## 🚧 Under active development, [1.0](https://github.com/nuxt/nuxt.js/projects/1) will be released soon :fire:
+## Links
+
+- 📘 Documentation: [https://nuxtjs.org](https://nuxtjs.org)
+- 🎬 Video: [1 minute demo](https://www.youtube.com/watch?v=kmf-p-pTi40)
+- 🐦 Twitter: [@nuxt_js](https://twitter.com/nuxt_js)
+- 👥 [Nuxt.js Community](https://github.com/nuxt-community)
+- 📦 [Nuxt.js Modules](https://github.com/nuxt-community/modules)
+- 👉 [Play with Nuxt.js online](https://glitch.com/edit/#!/nuxt-hello-world)
+
+## Features
+
+- Automatic transpilation and bundling (with webpack and babel)
+- Hot code reloading
+- Server-side rendering OR Single Page App OR Static Generated, you choose :fire:
+- Static file serving. `./static/` is mapped to `/`
+- Configurable with a `nuxt.config.js` file
+- Custom layouts with the `layouts/` directory
+- Middleware
+- Code splitting for every `pages/`
+
+Learn more at [nuxtjs.org](https://nuxtjs.org).
## Sponsors
@@ -93,15 +113,6 @@ Support us with a monthly donation and help us continue our activities. [[Become
-## Links
-
-- 📘 Documentation: [https://nuxtjs.org](https://nuxtjs.org)
-- 🎬 Video: [1 minute demo](https://www.youtube.com/watch?v=kmf-p-pTi40)
-- 🐦 Twitter: [@nuxt_js](https://twitter.com/nuxt_js)
-- 👥 [Nuxt.js Community](https://github.com/nuxt-community)
-- 📦 [Nuxt.js Modules](https://github.com/nuxt-community/modules)
-- 👉 [Play with Nuxt.js online](https://glitch.com/edit/#!/nuxt-hello-world)
-
## Getting started
```
@@ -143,22 +154,11 @@ npm start
Go to [http://localhost:3000](http://localhost:3000)
-So far, we get:
-
-- Automatic transpilation and bundling (with webpack and babel)
-- Hot code reloading
-- Server rendering and indexing of `pages/`
-- Static file serving. `./static/` is mapped to `/`
-- Configurable with a `nuxt.config.js` file
-- Custom layouts with the `layouts/` directory
-- Middleware
-- Code splitting via webpack
-
-Learn more at [nuxtjs.org](https://nuxtjs.org).
-
## Templates
-You can start by using one of our starter templates:
+:point_right: We recommend to start directly with our cli [create-nuxt-app](https://github.com/nuxt-community/create-nuxt-app) for the lastest updates.
+
+Or you can start by using one of our starter templates:
- [starter](https://github.com/nuxt-community/starter-template): Basic Nuxt.js project template
- [express](https://github.com/nuxt-community/express-template): Nuxt.js + Express
- [koa](https://github.com/nuxt-community/koa-template): Nuxt.js + Koa
From 1dc0bfc903ed5cbfa6a1fe44e203558e3b5a9f96 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Chopin?=
Date: Fri, 5 Jan 2018 10:32:13 +0100
Subject: [PATCH 46/52] test: Add extensions test
---
test/fixtures/with-config/nuxt.config.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/test/fixtures/with-config/nuxt.config.js b/test/fixtures/with-config/nuxt.config.js
index 523a672110..8c560b6a34 100644
--- a/test/fixtures/with-config/nuxt.config.js
+++ b/test/fixtures/with-config/nuxt.config.js
@@ -23,6 +23,7 @@ module.exports = {
layoutTransition: 'test',
loadingIndicator: 'circle',
offline: true,
+ extensions: 'ts',
plugins: [
'~/plugins/test.js',
{ src: '~/plugins/only-client.js', ssr: false }
From 0c3abbb2db8e582eba37b3c4e568dacd3d823218 Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 5 Jan 2018 13:04:52 +0330
Subject: [PATCH 47/52] coverage for http2.shouldPush
---
test/fixtures/with-config/nuxt.config.js | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/test/fixtures/with-config/nuxt.config.js b/test/fixtures/with-config/nuxt.config.js
index 8c560b6a34..7d4904da25 100644
--- a/test/fixtures/with-config/nuxt.config.js
+++ b/test/fixtures/with-config/nuxt.config.js
@@ -70,7 +70,8 @@ module.exports = {
],
render: {
http2: {
- push: true
+ push: true,
+ shouldPush: (file, type) => type === 'script'
},
bundleRenderer: {
shouldPreload: (file, type) => {
From 361d1d423677b515bf7112d3c9d1053e3ab7a681 Mon Sep 17 00:00:00 2001
From: Pooya Parsa
Date: Fri, 5 Jan 2018 13:21:18 +0330
Subject: [PATCH 48/52] http2 push coverage
---
test/fixtures/ssr/nuxt.config.js | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/test/fixtures/ssr/nuxt.config.js b/test/fixtures/ssr/nuxt.config.js
index 20d8e8a969..792e6b0db2 100644
--- a/test/fixtures/ssr/nuxt.config.js
+++ b/test/fixtures/ssr/nuxt.config.js
@@ -1,7 +1,10 @@
module.exports = {
dev: false,
render: {
- resourceHints: false
+ resourceHints: false,
+ http2: {
+ push: true
+ }
},
build: {
stats: false,
From 35acb58feadb6b6b023289de44ac09c1f28b3e35 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Chopin?=
Date: Fri, 5 Jan 2018 11:38:29 +0100
Subject: [PATCH 49/52] Add core team
---
README.md | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 891fd28114..ff46e5edbf 100644
--- a/README.md
+++ b/README.md
@@ -173,7 +173,7 @@ const { Nuxt, Builder } = require('nuxt')
// Import and set nuxt.js options
let config = require('./nuxt.config.js')
-config.dev = !(process.env.NODE_ENV === 'production')
+config.dev = (process.env.NODE_ENV !== 'production')
let nuxt = new Nuxt(config)
@@ -220,7 +220,7 @@ Learn more: https://nuxtjs.org/api/nuxt-render-route
## Examples
-Please take a look at https://nuxtjs.org/examples
+Please take a look at https://nuxtjs.org/examples or directly in https://github.com/nuxt/nuxt.js/tree/dev/examples.
## Production deployment
@@ -249,6 +249,12 @@ Then run `now` and enjoy!
Note: we recommend putting `.nuxt` in `.npmignore` or `.gitignore`.
+## Core team
+
+| [Sebastien Chopin](https://github.com/Atinux) | [Alexandre Chopin](https://github.com/alexchopin) | [Pooya Parsa](https://github.com/pi0) | [Clark Du](https://github.com/clarkdo) |
+| --- | --- | --- | --- |
+| [![Atinux](https://avatars1.githubusercontent.com/u/904724?s=150&v=4)](https://github.com/Atinux) | [![alexchopin](https://avatars1.githubusercontent.com/u/4084277?s=150&v=4)](https://github.com/alexchopin) | [![pi0](https://avatars1.githubusercontent.com/u/5158436?s=150&v=4)](https://github.com/pi0) | [![clarkdo](https://avatars3.githubusercontent.com/u/4312154?s=150&v=4)](https://github.com/clarkdo) |
+
## Roadmap
https://trello.com/b/lgy93IOl/nuxtjs-10
From 484a8a8f8cbecb4801e7f177d48f83e2fb4f685a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Chopin?=
Date: Fri, 5 Jan 2018 11:40:08 +0100
Subject: [PATCH 50/52] Add contributors
---
README.md | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index ff46e5edbf..06988422fa 100644
--- a/README.md
+++ b/README.md
@@ -255,9 +255,15 @@ Note: we recommend putting `.nuxt` in `.npmignore` or `.gitignore`.
| --- | --- | --- | --- |
| [![Atinux](https://avatars1.githubusercontent.com/u/904724?s=150&v=4)](https://github.com/Atinux) | [![alexchopin](https://avatars1.githubusercontent.com/u/4084277?s=150&v=4)](https://github.com/alexchopin) | [![pi0](https://avatars1.githubusercontent.com/u/5158436?s=150&v=4)](https://github.com/pi0) | [![clarkdo](https://avatars3.githubusercontent.com/u/4312154?s=150&v=4)](https://github.com/clarkdo) |
+## Contributors
+
+Thank you to all our [contributors](https://github.com/nuxt/nuxt.js/graphs/contributors)!
+
+## Contributing
+
+Please see our [CONTRIBUTING.md](./CONTRIBUTING.md)
+
+
## Roadmap
https://trello.com/b/lgy93IOl/nuxtjs-10
-
-## Contributing
-Please see our [CONTRIBUTING.md](./CONTRIBUTING.md)
From 6b275e3dbd767575f7cfe6710a0bd02b5864dade Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Chopin?=
Date: Fri, 5 Jan 2018 12:54:42 +0100
Subject: [PATCH 51/52] Example: Add AMP example
---
examples/with-amp/app.html | 11 ++++++++
examples/with-amp/assets/main.css | 23 +++++++++++++++++
examples/with-amp/components/Byline.vue | 11 ++++++++
examples/with-amp/nuxt.config.js | 33 ++++++++++++++++++++++++
examples/with-amp/package.json | 12 +++++++++
examples/with-amp/pages/dog.vue | 27 +++++++++++++++++++
examples/with-amp/pages/index.vue | 27 +++++++++++++++++++
examples/with-amp/static/cat.jpg | Bin 0 -> 40144 bytes
examples/with-amp/static/dog.jpg | Bin 0 -> 66267 bytes
9 files changed, 144 insertions(+)
create mode 100644 examples/with-amp/app.html
create mode 100644 examples/with-amp/assets/main.css
create mode 100644 examples/with-amp/components/Byline.vue
create mode 100644 examples/with-amp/nuxt.config.js
create mode 100644 examples/with-amp/package.json
create mode 100644 examples/with-amp/pages/dog.vue
create mode 100644 examples/with-amp/pages/index.vue
create mode 100644 examples/with-amp/static/cat.jpg
create mode 100644 examples/with-amp/static/dog.jpg
diff --git a/examples/with-amp/app.html b/examples/with-amp/app.html
new file mode 100644
index 0000000000..4b77b8ada1
--- /dev/null
+++ b/examples/with-amp/app.html
@@ -0,0 +1,11 @@
+
+
+
+ {{ HEAD }}
+
+
+
+
+ {{ APP }}
+
+
diff --git a/examples/with-amp/assets/main.css b/examples/with-amp/assets/main.css
new file mode 100644
index 0000000000..6d33a3cafe
--- /dev/null
+++ b/examples/with-amp/assets/main.css
@@ -0,0 +1,23 @@
+body {
+ font-family: Roboto, sans-serif;
+ padding: 30px;
+ color: #444;
+}
+h1 {
+ margin-bottom: 5px;
+}
+.caption {
+ color: #ccc;
+ margin-top: 0;
+ font-size: 14px;
+ text-align: center;
+}
+.byline {
+ color: #aaa;
+ margin-bottom: 25px;
+}
+p {
+ font-size: 18px;
+ line-height: 30px;
+ margin-top: 30px;
+}
diff --git a/examples/with-amp/components/Byline.vue b/examples/with-amp/components/Byline.vue
new file mode 100644
index 0000000000..b30c905af6
--- /dev/null
+++ b/examples/with-amp/components/Byline.vue
@@ -0,0 +1,11 @@
+
+
+ By {{ author }}
+
+
+
+
diff --git a/examples/with-amp/nuxt.config.js b/examples/with-amp/nuxt.config.js
new file mode 100644
index 0000000000..69963667c7
--- /dev/null
+++ b/examples/with-amp/nuxt.config.js
@@ -0,0 +1,33 @@
+module.exports = {
+ head: {
+ meta: [
+ { charset: 'utf-8' },
+ { name: 'viewport', content: 'width=device-width,minimum-scale=1' }
+ ],
+ link: [
+ { rel: 'canonical', href: '/' },
+ { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css?family=Roboto' }
+ ]
+ },
+ css: ['~/assets/main.css'],
+ loading: false, // Disable loading bar since AMP will not generate a dynamic page
+ render: {
+ // Disable resourceHints since we don't load any scripts for AMP
+ resourceHints: false
+ },
+ hooks: {
+ // This hook is called before rendering the html to the browser
+ 'render:route': (url, result) => {
+ let html = result.html
+ // Add amp-custom tag to added CSS
+ html = html.replace(/