mirror of
https://github.com/nuxt/nuxt.git
synced 2025-01-28 22:32:42 +00:00
Merge branch 'dev' of github.com:Atinux/nuxt.js into dev
This commit is contained in:
commit
222c737a1d
10
README.md
10
README.md
@ -158,10 +158,12 @@ Learn more at [nuxtjs.org](https://nuxtjs.org).
|
||||
## Templates
|
||||
|
||||
You can start by using one of our starter templates:
|
||||
- [starter](https://github.com/nuxt/starter): Basic Nuxt.js project template
|
||||
- [express](https://github.com/nuxt/express): Nuxt.js + Express
|
||||
- [koa](https://github.com/nuxt/koa): Nuxt.js + Koa
|
||||
- [adonuxt](https://github.com/nuxt/adonuxt): Nuxt.js + AdonisJS
|
||||
- [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
|
||||
- [adonuxt](https://github.com/nuxt-community/adonuxt-template): Nuxt.js + AdonisJS
|
||||
- [micro](https://github.com/nuxt-community/micro-template): Nuxt.js + Micro
|
||||
- [nuxtent](https://github.com/nuxt-community/nuxtent-template): Nuxt.js + Nuxtent module for content heavy sites
|
||||
|
||||
## Using nuxt.js programmatically
|
||||
|
||||
|
@ -44,7 +44,7 @@ const builds = {
|
||||
},
|
||||
core: {
|
||||
entry: resolve(libDir, 'core/index.js'),
|
||||
dest: resolve(distDir, 'core.js')
|
||||
dest: resolve(distDir, 'core.js'),
|
||||
}
|
||||
}
|
||||
|
||||
@ -55,7 +55,7 @@ function genConfig (opts) {
|
||||
const config = {
|
||||
entry: opts.entry,
|
||||
dest: opts.dest,
|
||||
external: ['fs', 'path', 'http'].concat(dependencies, opts.external),
|
||||
external: ['fs', 'path', 'http', 'module', 'vue-server-renderer/server-plugin', 'vue-server-renderer/client-plugin'].concat(dependencies, opts.external),
|
||||
format: opts.format || 'cjs',
|
||||
banner: opts.banner || banner,
|
||||
moduleName: opts.moduleName || 'Nuxt',
|
||||
|
@ -14,9 +14,12 @@ const packageJSON = readJSONSync(resolve(rootDir, 'package.json'))
|
||||
let requires = [
|
||||
'source-map-support'
|
||||
]
|
||||
|
||||
const excludes = [
|
||||
'path',
|
||||
'fs'
|
||||
'fs',
|
||||
'http',
|
||||
'module'
|
||||
].concat(Object.keys(packageJSON.devDependencies))
|
||||
|
||||
// Parse dist/core.js for all external dependencies
|
||||
|
1
examples/custom-server/nuxt.config.js
Normal file
1
examples/custom-server/nuxt.config.js
Normal file
@ -0,0 +1 @@
|
||||
module.exports = {}
|
12
examples/custom-server/package.json
Normal file
12
examples/custom-server/package.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "nuxt-custom-server",
|
||||
"dependencies": {
|
||||
"express": "^4.15.3",
|
||||
"nuxt": "^1.0.0-rc3"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "node server.js",
|
||||
"build": "nuxt build",
|
||||
"start": "NODE_ENV=production node server.js"
|
||||
}
|
||||
}
|
3
examples/custom-server/pages/index.vue
Normal file
3
examples/custom-server/pages/index.vue
Normal file
@ -0,0 +1,3 @@
|
||||
<template>
|
||||
<p>Please look at <code>server.js</code> to see how to use <a href="https://nuxtjs.org">Nuxt.js</a> programmatically.</p>
|
||||
</template>
|
@ -1,27 +1,24 @@
|
||||
const Nuxt = require('../../')
|
||||
const app = require('express')()
|
||||
const { Nuxt, Builder } = require('nuxt')
|
||||
|
||||
const host = process.env.HOST || '127.0.0.1'
|
||||
const port = process.env.PORT || 3000
|
||||
|
||||
global.fetch = require('node-fetch')
|
||||
|
||||
// Import and Set Nuxt.js options
|
||||
let config = require('./nuxt.config.js')
|
||||
config.dev = !(process.env.NODE_ENV === 'production')
|
||||
|
||||
// Init Nuxt.js
|
||||
const nuxt = new Nuxt(config)
|
||||
app.use(nuxt.render)
|
||||
|
||||
// Build only in dev mode
|
||||
// Start build process if
|
||||
if (config.dev) {
|
||||
nuxt.build()
|
||||
.catch((error) => {
|
||||
console.error(error) // eslint-disable-line no-console
|
||||
process.exit(1)
|
||||
})
|
||||
const builder = new Builder(nuxt)
|
||||
builder.build()
|
||||
}
|
||||
|
||||
// Listen the server
|
||||
// Give nuxt middleware to express
|
||||
app.use(nuxt.render)
|
||||
|
||||
// Start express server
|
||||
app.listen(port, host)
|
||||
console.log('Server listening on ' + host + ':' + port) // eslint-disable-line no-console
|
||||
console.log('Server listening on ' + host + ':' + port)
|
@ -1,7 +1,7 @@
|
||||
# WIP
|
||||
|
||||
# Vue-Apollo with Nuxt.js
|
||||
|
||||
https://nuxtjs.org/examples/vue-apollo
|
||||
Demo: https://nuxt-vue-apollo.now.sh/
|
||||
|
||||
https://github.com/nuxt-community/apollo-module
|
||||
|
||||
https://github.com/Akryum/vue-apollo
|
||||
|
@ -1,7 +0,0 @@
|
||||
export default async function ({ isServer, apolloProvider }) {
|
||||
if (isServer) {
|
||||
const ensureReady = apolloProvider.collect()
|
||||
console.log('Call ensureReady!', ensureReady())
|
||||
await ensureReady()
|
||||
}
|
||||
}
|
@ -1,12 +1,8 @@
|
||||
module.exports = {
|
||||
build: {
|
||||
vendor: ['vue-apollo', 'apollo-client']
|
||||
},
|
||||
router: {
|
||||
middleware: 'apollo'
|
||||
},
|
||||
plugins: [
|
||||
// Will inject the plugin in the $root app and also in the context as `apolloProvider`
|
||||
{ src: '~plugins/apollo.js', injectAs: 'apolloProvider' }
|
||||
]
|
||||
modules: ['@nuxtjs/apollo'],
|
||||
apollo: {
|
||||
clients: {
|
||||
default: 'https://api.graph.cool/simple/v1/cj1dqiyvqqnmj0113yuqamkuu'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +1,12 @@
|
||||
{
|
||||
"name": "nuxt-i18n",
|
||||
"name": "nuxt-vue-apollo",
|
||||
"dependencies": {
|
||||
"apollo-client": "^1.0.3",
|
||||
"nuxt": "latest",
|
||||
"vue-apollo": "^2.1.0-beta.2"
|
||||
"@nuxtjs/apollo": "^0.1.0",
|
||||
"nuxt": "^1.0.0-rc2"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "node server.js",
|
||||
"dev": "nuxt",
|
||||
"build": "nuxt build",
|
||||
"start": "cross-env NODE_ENV=production node server.js"
|
||||
"start": "nuxt start"
|
||||
}
|
||||
}
|
||||
|
41
examples/vue-apollo/pages/car/_id.vue
Normal file
41
examples/vue-apollo/pages/car/_id.vue
Normal file
@ -0,0 +1,41 @@
|
||||
<template>
|
||||
<div v-if="Car">
|
||||
<h3>{{ Car.make }} {{ Car.model }}</h3>
|
||||
<p>{{ formatCurrency(Car.price) }}</p>
|
||||
<img :src="Car.photoURL" :alt="`${Car.model} photo`">
|
||||
<p><nuxt-link to="/">Home page</nuxt-link></p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import car from '~/queries/car'
|
||||
|
||||
export default {
|
||||
apollo: {
|
||||
Car: {
|
||||
query: car,
|
||||
prefetch: ({ route }) => ({ id: route.params.id }),
|
||||
variables() {
|
||||
return { id: this.$route.params.id }
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
formatCurrency(num) {
|
||||
const formatter = new Intl.NumberFormat('en-US', {
|
||||
style: 'currency',
|
||||
currency: 'USD',
|
||||
minimumFractionDigits: 2
|
||||
})
|
||||
return formatter.format(num)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
img {
|
||||
max-width: 600px;
|
||||
}
|
||||
</style>
|
@ -12,21 +12,14 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import client from '~plugins/apollo'
|
||||
import gql from 'graphql-tag'
|
||||
import allCars from '~/queries/allCars'
|
||||
|
||||
export default {
|
||||
apollo: {
|
||||
allCars: gql`
|
||||
query {
|
||||
allCars {
|
||||
id
|
||||
make
|
||||
model
|
||||
year
|
||||
}
|
||||
}
|
||||
`
|
||||
allCars: {
|
||||
prefetch: true,
|
||||
query: allCars
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -1,21 +0,0 @@
|
||||
import 'babel-polyfill'
|
||||
import Vue from 'vue'
|
||||
import VueApollo from 'vue-apollo'
|
||||
import { ApolloClient, createNetworkInterface } from 'apollo-client'
|
||||
|
||||
Vue.use(VueApollo)
|
||||
|
||||
const API_ENDPOINT = 'https://api.graph.cool/simple/v1/cj1dqiyvqqnmj0113yuqamkuu'
|
||||
|
||||
const apolloClient = new ApolloClient({
|
||||
networkInterface: createNetworkInterface({
|
||||
uri: API_ENDPOINT,
|
||||
transportBatching: true
|
||||
})
|
||||
})
|
||||
|
||||
const apolloProvider = new VueApollo({
|
||||
defaultClient: apolloClient
|
||||
})
|
||||
|
||||
export default apolloProvider
|
8
examples/vue-apollo/queries/allCars.gql
Normal file
8
examples/vue-apollo/queries/allCars.gql
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
allCars {
|
||||
id
|
||||
make
|
||||
model
|
||||
year
|
||||
}
|
||||
}
|
8
examples/vue-apollo/queries/car.gql
Normal file
8
examples/vue-apollo/queries/car.gql
Normal file
@ -0,0 +1,8 @@
|
||||
query Car($id: ID!) {
|
||||
Car(id: $id) {
|
||||
make
|
||||
model
|
||||
photoURL
|
||||
price
|
||||
}
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
# nuxt-with-apollo
|
||||
|
||||
> Nuxt.js with Apollo (GraphQL client)
|
||||
|
||||
[DEMO](https://nuxt-apollo.now.sh/)
|
||||
|
||||
## About
|
||||
|
||||
This project uses [Apollo](http://www.apollodata.com/) as a GraphQL client and [Graphcool](https://www.graph.cool/) as a hosted GraphQL backend.
|
||||
|
||||
## Getting Started
|
||||
|
||||
Download this example [or clone the repo](https://github.com/nuxt/nuxt.js):
|
||||
|
||||
```bash
|
||||
curl https://codeload.github.com/nuxt/nuxt.js/tar.gz/master | tar -xz --strip=2 nuxt.js-master/examples/with-apollo
|
||||
cd with-apollo
|
||||
```
|
||||
|
||||
Install and run:
|
||||
|
||||
```bash
|
||||
npm install
|
||||
npm run dev
|
||||
|
||||
# or with Yarn
|
||||
yarn
|
||||
yarn dev
|
||||
```
|
@ -1,19 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<h1 @click="$router.push('/')">Nuxt.js + Apollo</h1>
|
||||
<nuxt/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style>
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
padding: 30px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
</style>
|
@ -1,13 +0,0 @@
|
||||
<template>
|
||||
<div class="container">
|
||||
<h3 v-if="error.statusCode === 404">Page not found</h3>
|
||||
<h3 v-else>An error occured</h3>
|
||||
<nuxt-link to="/">← Home page</nuxt-link>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: ['error']
|
||||
}
|
||||
</script>
|
@ -1,24 +0,0 @@
|
||||
{
|
||||
"name": "nuxt-apollo",
|
||||
"version": "1.0.0",
|
||||
"description": "Nuxt.js with Apollo",
|
||||
"author": "Charlie Hield",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"dev": "nuxt",
|
||||
"build": "nuxt build",
|
||||
"start": "nuxt start"
|
||||
},
|
||||
"keywords": [
|
||||
"nuxt",
|
||||
"vue",
|
||||
"apollo",
|
||||
"graphql"
|
||||
],
|
||||
"dependencies": {
|
||||
"apollo-client": "^1.0.2",
|
||||
"graphql-tag": "^2.0.0",
|
||||
"isomorphic-fetch": "^2.2.1",
|
||||
"nuxt": "^0.10.5"
|
||||
}
|
||||
}
|
@ -1,54 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<h3>{{ car.make }} {{ car.model }}</h3>
|
||||
<p>{{ formatCurrency(car.price) }}</p>
|
||||
<img :src="car.photoURL" :alt="`${car.model} photo`">
|
||||
<p><nuxt-link to="/">Home page</nuxt-link></p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import client from '~plugins/apollo'
|
||||
import gql from 'graphql-tag'
|
||||
|
||||
export default {
|
||||
|
||||
async asyncData({ params }) {
|
||||
let { data } = await client.query({
|
||||
query: gql`
|
||||
query {
|
||||
Car(id: "${params.id}") {
|
||||
make
|
||||
model
|
||||
photoURL
|
||||
price
|
||||
}
|
||||
}
|
||||
`
|
||||
})
|
||||
return {
|
||||
car: data.Car
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
formatCurrency(num) {
|
||||
const formatter = new Intl.NumberFormat('en-US', {
|
||||
style: 'currency',
|
||||
currency: 'USD',
|
||||
minimumFractionDigits: 2
|
||||
})
|
||||
return formatter.format(num)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
img {
|
||||
max-width: 600px;
|
||||
}
|
||||
|
||||
</style>
|
@ -1,59 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<h3>Cars</h3>
|
||||
<ul>
|
||||
<li v-for="car in cars">
|
||||
<nuxt-link :to="`car/${car.id}`">
|
||||
{{ car.year }} {{ car.make }} {{ car.model }}
|
||||
</nuxt-link>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import client from '~plugins/apollo'
|
||||
import gql from 'graphql-tag'
|
||||
|
||||
export default {
|
||||
|
||||
async asyncData() {
|
||||
let { data } = await client.query({
|
||||
query: gql`
|
||||
query {
|
||||
allCars {
|
||||
id
|
||||
make
|
||||
model
|
||||
year
|
||||
}
|
||||
}
|
||||
`
|
||||
})
|
||||
return {
|
||||
cars: data.allCars
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: #3498DB;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
border-bottom: 1px solid;
|
||||
}
|
||||
|
||||
</style>
|
@ -1,15 +0,0 @@
|
||||
import Vue from 'vue'
|
||||
import { ApolloClient, createNetworkInterface } from 'apollo-client'
|
||||
import 'isomorphic-fetch'
|
||||
|
||||
// Created with Graphcool - https://www.graph.cool/
|
||||
const API_ENDPOINT = 'https://api.graph.cool/simple/v1/cj1dqiyvqqnmj0113yuqamkuu'
|
||||
|
||||
const apolloClient = new ApolloClient({
|
||||
networkInterface: createNetworkInterface({
|
||||
uri: API_ENDPOINT,
|
||||
transportBatching: true
|
||||
})
|
||||
})
|
||||
|
||||
export default apolloClient
|
@ -8,7 +8,7 @@
|
||||
<script>
|
||||
<% if (loading) { %>import NuxtLoading from '<%= (typeof loading === "string" ? loading : "./components/nuxt-loading.vue") %>'<% } %>
|
||||
<% css.forEach(function (c) { %>
|
||||
import '<%= wp(c.src || c) %>'
|
||||
import '<%= relativeToBuild(resolvePath(c.src || c)) %>'
|
||||
<% }) %>
|
||||
|
||||
let layouts = {
|
||||
|
@ -1,13 +1,13 @@
|
||||
import Vue from 'vue'
|
||||
import middleware from './middleware'
|
||||
import { createApp, NuxtError } from './index'
|
||||
import {
|
||||
import {
|
||||
applyAsyncData,
|
||||
sanitizeComponent,
|
||||
getMatchedComponents,
|
||||
getMatchedComponents,
|
||||
getMatchedComponentsInstances,
|
||||
flatMapComponents,
|
||||
getContext,
|
||||
flatMapComponents,
|
||||
getContext,
|
||||
middlewareSeries,
|
||||
promisify,
|
||||
getLocation,
|
||||
@ -51,11 +51,11 @@ function mapTransitions(Components, to, from) {
|
||||
const transition = componentOption(component, 'transition', to, from)
|
||||
return (typeof transition === 'string' ? { name: transition } : transition)
|
||||
}
|
||||
|
||||
|
||||
return Components.map(Component => {
|
||||
// Clone original object to prevent overrides
|
||||
const transitions = Object.assign({}, componentTransitions(Component))
|
||||
|
||||
|
||||
// Combine transitions & prefer `leave` transitions of 'from' route
|
||||
if (from && from.matched.length && from.matched[0].components.default) {
|
||||
const from_transitions = componentTransitions(from.matched[0].components.default)
|
||||
@ -63,7 +63,7 @@ function mapTransitions(Components, to, from) {
|
||||
.filter(key => from_transitions[key] && key.toLowerCase().indexOf('leave') !== -1)
|
||||
.forEach(key => { transitions[key] = from_transitions[key] })
|
||||
}
|
||||
|
||||
|
||||
return transitions
|
||||
})
|
||||
}
|
||||
@ -73,7 +73,7 @@ async function loadAsyncComponents (to, from, next) {
|
||||
const fromPath = from.fullPath.split('#')[0]
|
||||
const toPath = to.fullPath.split('#')[0]
|
||||
this._hashChanged = fromPath === toPath
|
||||
|
||||
|
||||
<% if (loading) { %>
|
||||
if (!this._hashChanged && this.$loading.start) {
|
||||
this.$loading.start()
|
||||
@ -109,9 +109,9 @@ async function loadAsyncComponents (to, from, next) {
|
||||
// Get matched components
|
||||
function resolveComponents(router) {
|
||||
const path = getLocation(router.options.base)
|
||||
|
||||
|
||||
return flatMapComponents(router.match(path), (Component, _, match, key, index) => {
|
||||
// If component already resolved
|
||||
// If component already resolved
|
||||
if (typeof Component !== 'function' || Component.options) {
|
||||
const _Component = sanitizeComponent(Component)
|
||||
match.components[key] = _Component
|
||||
@ -137,7 +137,7 @@ function resolveComponents(router) {
|
||||
function callMiddleware (Components, context, layout) {
|
||||
let midd = <%= serialize(router.middleware, { isJSON: true }) %>
|
||||
let unknownMiddleware = false
|
||||
|
||||
|
||||
// If layout is undefined, only call global middleware
|
||||
if (typeof layout !== 'undefined') {
|
||||
midd = [] // Exclude global middleware if layout defined (already called before)
|
||||
@ -158,8 +158,8 @@ function callMiddleware (Components, context, layout) {
|
||||
}
|
||||
return middleware[name]
|
||||
})
|
||||
|
||||
if (unknownMiddleware) return
|
||||
|
||||
if (unknownMiddleware) return
|
||||
return middlewareSeries(midd, context)
|
||||
}
|
||||
|
||||
@ -174,17 +174,16 @@ async function render (to, from, next) {
|
||||
nextCalled = true
|
||||
next(path)
|
||||
}
|
||||
|
||||
|
||||
// Update context
|
||||
const context = getContext({
|
||||
const context = getContext({
|
||||
to,
|
||||
from,
|
||||
<% if (store) { %>store,<% } %>
|
||||
isClient: true,
|
||||
next: _next.bind(this),
|
||||
error: this.error.bind(this),
|
||||
app
|
||||
})
|
||||
error: this.error.bind(this)
|
||||
}, app)
|
||||
this._context = context
|
||||
this._dateLastError = this.$options._nuxt.dateErr
|
||||
this._hadError = !!this.$options._nuxt.err
|
||||
@ -197,16 +196,16 @@ async function render (to, from, next) {
|
||||
// Default layout
|
||||
await callMiddleware.call(this, Components, context)
|
||||
if (context._redirected) return
|
||||
|
||||
|
||||
// Load layout for error page
|
||||
layout = await this.loadLayout(typeof NuxtError.layout === 'function' ? NuxtError.layout(context) : NuxtError.layout)
|
||||
const layout = await this.loadLayout(typeof NuxtError.layout === 'function' ? NuxtError.layout(context) : NuxtError.layout)
|
||||
await callMiddleware.call(this, Components, context, layout)
|
||||
if (context._redirected) return
|
||||
|
||||
|
||||
this.error({ statusCode: 404, message: 'This page could not be found.' })
|
||||
return next()
|
||||
}
|
||||
|
||||
|
||||
// Update ._data and other properties if hot reloaded
|
||||
Components.forEach(Component => {
|
||||
if (Component._Ctor && Component._Ctor.options) {
|
||||
@ -233,7 +232,7 @@ async function render (to, from, next) {
|
||||
// Call middleware for layout
|
||||
await callMiddleware.call(this, Components, context, layout)
|
||||
if (context._redirected) return
|
||||
|
||||
|
||||
// Call .validate()
|
||||
let isValid = true
|
||||
Components.forEach(Component => {
|
||||
@ -250,7 +249,7 @@ async function render (to, from, next) {
|
||||
this.error({ statusCode: 404, message: 'This page could not be found.' })
|
||||
return next()
|
||||
}
|
||||
|
||||
|
||||
// Call asyncData & fetch hooks on components matched by the route.
|
||||
await Promise.all(Components.map((Component, i) => {
|
||||
// Check if only children route changed
|
||||
@ -263,7 +262,7 @@ async function render (to, from, next) {
|
||||
|
||||
const hasAsyncData = Component.options.asyncData && typeof Component.options.asyncData === 'function'
|
||||
const hasFetch = !!Component.options.fetch
|
||||
<% if(loading) { %>const loadingIncrease = (hasAsyncData && hasFetch) ? 30 : 45<% } %>
|
||||
<% if(loading) { %>const loadingIncrease = (hasAsyncData && hasFetch) ? 30 : 45<% } %>
|
||||
|
||||
// Call asyncData(context)
|
||||
if (hasAsyncData) {
|
||||
@ -279,7 +278,7 @@ async function render (to, from, next) {
|
||||
if (hasFetch) {
|
||||
let p = Component.options.fetch(context)
|
||||
if (!p || (!(p instanceof Promise) && (typeof p.then !== 'function'))) {
|
||||
p = Promise.resolve(p)
|
||||
p = Promise.resolve(p)
|
||||
}
|
||||
p.then(fetchResult => {
|
||||
<% if(loading) { %>if(this.$loading.increase) this.$loading.increase(loadingIncrease)<% } %>
|
||||
@ -289,7 +288,7 @@ async function render (to, from, next) {
|
||||
|
||||
return Promise.all(promises)
|
||||
}))
|
||||
|
||||
|
||||
_lastPaths = Components.map((Component, i) => compile(to.matched[i].path)(to.params))
|
||||
|
||||
<% if(loading) { %>if(this.$loading.finish) this.$loading.finish()<% } %>
|
||||
@ -308,7 +307,7 @@ async function render (to, from, next) {
|
||||
layout = layout(context)
|
||||
}
|
||||
await this.loadLayout(layout)
|
||||
|
||||
|
||||
this.error(error)
|
||||
next(false)
|
||||
}
|
||||
@ -387,10 +386,10 @@ function nuxtReady (app) {
|
||||
// Special hot reload with asyncData(context)
|
||||
function hotReloadAPI (_app) {
|
||||
if (!module.hot) return
|
||||
|
||||
|
||||
let $components = []
|
||||
let $nuxt = _app.$nuxt
|
||||
|
||||
|
||||
while ($nuxt && $nuxt.$children && $nuxt.$children.length) {
|
||||
$nuxt.$children.forEach((child, i) => {
|
||||
if (child.$vnode.data.nuxtChild) {
|
||||
@ -407,7 +406,7 @@ function hotReloadAPI (_app) {
|
||||
$nuxt = child
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
$components.forEach(addHotReload.bind(_app))
|
||||
}
|
||||
|
||||
@ -517,7 +516,7 @@ async function mountApp(__app) {
|
||||
_lastPaths = router.currentRoute.matched.map(route => compile(route.path)(router.currentRoute.params))
|
||||
_lastComponentsFiles = Components.map(Component => Component.options.__file)
|
||||
}
|
||||
|
||||
|
||||
// Initialize error handler
|
||||
_app.error = _app.$options._nuxt.error.bind(_app)
|
||||
_app.$loading = {} // To avoid error while _app.$nuxt does not exist
|
||||
@ -528,7 +527,7 @@ async function mountApp(__app) {
|
||||
router.beforeEach(render.bind(_app))
|
||||
router.afterEach(normalizeComponents)
|
||||
router.afterEach(fixPrepatch.bind(_app))
|
||||
|
||||
|
||||
// If page already is server rendered
|
||||
if (NUXT.serverRendered) {
|
||||
mountApp()
|
||||
@ -552,4 +551,4 @@ async function mountApp(__app) {
|
||||
})
|
||||
router.push(path)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ import NuxtLink from './components/nuxt-link.js'
|
||||
import NuxtError from '<%= components.ErrorPage ? components.ErrorPage : "./components/nuxt-error.vue" %>'
|
||||
import Nuxt from './components/nuxt.vue'
|
||||
import App from '<%= appPath %>'
|
||||
import { getContext } from './utils'
|
||||
import { getContext, getLocation } from './utils'
|
||||
<% if (store) { %>import { createStore } from './store.js'<% } %>
|
||||
<% plugins.forEach(plugin => { %>import <%= plugin.name %> from '<%= plugin.name %>'
|
||||
<% }) %>
|
||||
@ -61,7 +61,7 @@ async function createApp (ssrContext) {
|
||||
// making them available everywhere as `this.$router` and `this.$store`.
|
||||
const app = {
|
||||
router,
|
||||
<% if(store) { %> store,<% } %>
|
||||
<% if(store) { %> store,<% } %>
|
||||
_nuxt: {
|
||||
defaultTransition,
|
||||
transitions: [ defaultTransition ],
|
||||
@ -99,16 +99,21 @@ async function createApp (ssrContext) {
|
||||
}
|
||||
|
||||
const next = ssrContext ? ssrContext.next : location => app.router.push(location)
|
||||
|
||||
let route = router.currentRoute
|
||||
if (!ssrContext) {
|
||||
const path = getLocation(router.options.base)
|
||||
route = router.resolve(path).route
|
||||
}
|
||||
const ctx = getContext({
|
||||
isServer: !!ssrContext,
|
||||
isClient: !ssrContext,
|
||||
route: router.currentRoute,
|
||||
route,
|
||||
next,
|
||||
error: app._nuxt.error.bind(app),
|
||||
<% if(store) { %>store,<% } %>
|
||||
<% if(store) { %>store,<% } %>
|
||||
req: ssrContext ? ssrContext.req : undefined,
|
||||
res: ssrContext ? ssrContext.res : undefined,
|
||||
beforeRenderFns: ssrContext ? ssrContext.beforeRenderFns : undefined
|
||||
}, app)
|
||||
|
||||
<% plugins.filter(p => p.ssr).forEach(plugin => { %>
|
||||
@ -121,8 +126,8 @@ async function createApp (ssrContext) {
|
||||
return {
|
||||
app,
|
||||
router,
|
||||
<% if(store) { %> store <% } %>
|
||||
<% if(store) { %> store <% } %>
|
||||
}
|
||||
}
|
||||
|
||||
export { createApp, NuxtError }
|
||||
export { createApp, NuxtError }
|
||||
|
@ -45,27 +45,28 @@ export default async context => {
|
||||
// Create context.next for simulate next() of beforeEach() when wanted to redirect
|
||||
context.redirected = false
|
||||
context.next = createNext(context)
|
||||
|
||||
context.beforeRenderFns = []
|
||||
|
||||
const { app, router<%= (store ? ', store' : '') %> } = await createApp(context)
|
||||
const _app = new Vue(app)
|
||||
|
||||
|
||||
<% if (store) { %>
|
||||
// Add store to the context
|
||||
context.store = store
|
||||
<% } %>
|
||||
|
||||
|
||||
// Add route to the context
|
||||
context.route = router.currentRoute
|
||||
|
||||
|
||||
// Nuxt object
|
||||
context.nuxt = { layout: 'default', data: [], error: null<%= (store ? ', state: null' : '') %>, serverRendered: true }
|
||||
|
||||
|
||||
// Add meta infos
|
||||
context.meta = _app.$meta()
|
||||
|
||||
|
||||
// Error function
|
||||
context.error = _app.$options._nuxt.error.bind(_app)
|
||||
|
||||
|
||||
// Keep asyncData for each matched component in context
|
||||
context.asyncData = {}
|
||||
|
||||
@ -73,8 +74,8 @@ export default async context => {
|
||||
const ctx = getContext(context, app)
|
||||
|
||||
<% if (isDev) { %>const s = isDev && Date.now()<% } %>
|
||||
|
||||
// Resolve components
|
||||
|
||||
// Resolve components
|
||||
let Components = []
|
||||
try {
|
||||
Components = await Promise.all(getMatchedComponents(router.match(context.url)).map(Component => {
|
||||
@ -118,7 +119,7 @@ export default async context => {
|
||||
layout = _app.setLayout(layout)
|
||||
// ...Set layout to __NUXT__
|
||||
context.nuxt.layout = _app.layoutName
|
||||
|
||||
|
||||
// Call middleware (layout + pages)
|
||||
if (!context.nuxt.error) {
|
||||
midd = []
|
||||
@ -134,9 +135,9 @@ export default async context => {
|
||||
}
|
||||
return middleware[name]
|
||||
})
|
||||
|
||||
|
||||
await middlewareSeries(midd, ctx)
|
||||
|
||||
|
||||
// If there is a redirect
|
||||
if (context.redirected) return noopApp()
|
||||
}
|
||||
@ -161,11 +162,11 @@ export default async context => {
|
||||
// Call the 404 error by making the Components array empty
|
||||
Components = []
|
||||
}
|
||||
|
||||
|
||||
// Call asyncData & fetch hooks on components matched by the route.
|
||||
let asyncDatas = await Promise.all(Components.map(Component => {
|
||||
let promises = []
|
||||
|
||||
|
||||
// Call asyncData(context)
|
||||
if (Component.options.asyncData && typeof Component.options.asyncData === 'function') {
|
||||
let promise = promisify(Component.options.asyncData, ctx)
|
||||
@ -189,7 +190,7 @@ export default async context => {
|
||||
|
||||
return Promise.all(promises)
|
||||
}))
|
||||
|
||||
|
||||
// If no Components found, returns 404
|
||||
if (!Components.length) {
|
||||
context.nuxt.error = context.error({ statusCode: 404, message: 'This page could not be found.' })
|
||||
@ -210,6 +211,8 @@ export default async context => {
|
||||
context.nuxt.state = store.state
|
||||
<% } %>
|
||||
|
||||
await Promise.all(context.beforeRenderFns.map((fn) => promisify(fn, { Components, nuxtState: context.nuxt })))
|
||||
|
||||
// If no error, return main app
|
||||
if (!context.nuxt.error) {
|
||||
return _app
|
||||
@ -220,6 +223,6 @@ export default async context => {
|
||||
context.nuxt.layout = layout || ''
|
||||
await _app.loadLayout(layout)
|
||||
_app.setLayout(layout)
|
||||
|
||||
|
||||
return _app
|
||||
}
|
||||
|
@ -104,6 +104,9 @@ export function getContext (context, app) {
|
||||
if (context.req) ctx.req = context.req
|
||||
if (context.res) ctx.res = context.res
|
||||
if (context.from) ctx.from = context.from
|
||||
if (ctx.isServer && context.beforeRenderFns) {
|
||||
ctx.beforeNuxtRender = (fn) => context.beforeRenderFns.push(fn)
|
||||
}
|
||||
return ctx
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@ export default class Builder extends Tapable {
|
||||
get plugins () {
|
||||
return this.options.plugins.map((p, i) => {
|
||||
if (typeof p === 'string') p = { src: p }
|
||||
p.src = r(this.options.srcDir, p.src)
|
||||
p.src = this.nuxt.resolvePath(p.src)
|
||||
return { src: p.src, ssr: (p.ssr !== false), name: `plugin${i}` }
|
||||
})
|
||||
}
|
||||
@ -242,6 +242,7 @@ export default class Builder extends Tapable {
|
||||
hash,
|
||||
r,
|
||||
wp,
|
||||
resolvePath: this.nuxt.resolvePath.bind(this.nuxt),
|
||||
relativeToBuild: this.relativeToBuild
|
||||
}
|
||||
})
|
||||
@ -328,7 +329,7 @@ export default class Builder extends Tapable {
|
||||
this.compiler.plugin('done', async stats => {
|
||||
// Don't reload failed builds
|
||||
/* istanbul ignore if */
|
||||
if (stats.hasErrors() || stats.hasWarnings()) {
|
||||
if (stats.hasErrors()) {
|
||||
return
|
||||
}
|
||||
// Reload renderer if available
|
||||
|
@ -35,7 +35,7 @@ export default class Generator extends Tapable {
|
||||
await this.builder.build()
|
||||
}
|
||||
|
||||
await this.nuxt.applyPluginsAsync('generate', this)
|
||||
await this.nuxt.applyPluginsAsync('generator', this)
|
||||
|
||||
// Initialize dist directory
|
||||
if (init) {
|
||||
|
@ -5,3 +5,8 @@ export default {
|
||||
Builder,
|
||||
Generator
|
||||
}
|
||||
|
||||
export {
|
||||
Builder,
|
||||
Generator
|
||||
}
|
||||
|
@ -116,6 +116,20 @@ export default function webpackBaseConfig ({ isClient, isServer }) {
|
||||
)
|
||||
}
|
||||
|
||||
// Workaround for hiding Warnings about plugins without a default export (#1179)
|
||||
config.plugins.push({
|
||||
apply (compiler) {
|
||||
compiler.plugin('done', stats => {
|
||||
stats.compilation.warnings = stats.compilation.warnings.filter(warn => {
|
||||
if (warn.name === 'ModuleDependencyWarning' && warn.message.includes(`export 'default'`) && warn.message.includes('plugin')) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
// --------------------------------------
|
||||
// Dev specific config
|
||||
// --------------------------------------
|
||||
|
@ -15,7 +15,7 @@ export default function ({ isClient }) {
|
||||
'js': 'babel-loader?' + babelOptions,
|
||||
'css': styleLoader.call(this, 'css'),
|
||||
'less': styleLoader.call(this, 'less', 'less-loader'),
|
||||
'sass': styleLoader.call(this, 'sass', 'sass-loader?indentedSyntax&?sourceMap'),
|
||||
'sass': styleLoader.call(this, 'sass', 'sass-loader?indentedSyntax&sourceMap'),
|
||||
'scss': styleLoader.call(this, 'sass', 'sass-loader?sourceMap'),
|
||||
'stylus': styleLoader.call(this, 'stylus', 'stylus-loader'),
|
||||
'styl': styleLoader.call(this, 'stylus', 'stylus-loader')
|
||||
|
@ -1,5 +1,12 @@
|
||||
import * as Utils from './utils'
|
||||
import Options from './options'
|
||||
|
||||
export default {
|
||||
Utils
|
||||
Utils,
|
||||
Options
|
||||
}
|
||||
|
||||
export {
|
||||
Utils,
|
||||
Options
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ export default function Options (_options) {
|
||||
}
|
||||
|
||||
// Apply defaults
|
||||
_.defaultsDeep(options, defaultOptions)
|
||||
_.defaultsDeep(options, Options.defaults)
|
||||
|
||||
// Resolve dirs
|
||||
options.rootDir = (typeof options.rootDir === 'string' && options.rootDir ? options.rootDir : process.cwd())
|
||||
@ -38,7 +38,7 @@ export default function Options (_options) {
|
||||
// Ignore publicPath on dev
|
||||
/* istanbul ignore if */
|
||||
if (options.dev && isUrl(options.build.publicPath)) {
|
||||
options.build.publicPath = defaultOptions.build.publicPath
|
||||
options.build.publicPath = Options.defaults.build.publicPath
|
||||
}
|
||||
|
||||
// If store defined, update store options to true unless explicitly disabled
|
||||
@ -52,7 +52,7 @@ export default function Options (_options) {
|
||||
mode = mode()
|
||||
}
|
||||
if (typeof mode === 'string') {
|
||||
mode = Modes[mode]
|
||||
mode = Options.modes[mode]
|
||||
}
|
||||
|
||||
// Apply mode
|
||||
@ -61,7 +61,7 @@ export default function Options (_options) {
|
||||
return options
|
||||
}
|
||||
|
||||
const Modes = {
|
||||
Options.modes = {
|
||||
universal: {
|
||||
build: {
|
||||
ssr: true
|
||||
@ -88,7 +88,7 @@ const Modes = {
|
||||
}
|
||||
}
|
||||
|
||||
export const defaultOptions = {
|
||||
Options.defaults = {
|
||||
mode: 'universal',
|
||||
dev: process.env.NODE_ENV !== 'production',
|
||||
buildDir: '.nuxt',
|
||||
@ -107,7 +107,7 @@ export const defaultOptions = {
|
||||
vendor: [],
|
||||
plugins: [],
|
||||
babel: {},
|
||||
postcss: [],
|
||||
postcss: undefined,
|
||||
templates: [],
|
||||
watch: [],
|
||||
devMiddleware: {},
|
@ -1,13 +1,20 @@
|
||||
import Options from './options'
|
||||
import ModuleContainer from './module'
|
||||
import { Options, Utils } from 'common'
|
||||
import Module from './module'
|
||||
import Nuxt from './nuxt'
|
||||
import Renderer from './renderer'
|
||||
import * as Utils from 'utils'
|
||||
|
||||
export default {
|
||||
Options,
|
||||
ModuleContainer,
|
||||
Nuxt,
|
||||
Module,
|
||||
Renderer,
|
||||
Options,
|
||||
Utils
|
||||
}
|
||||
|
||||
export {
|
||||
Nuxt,
|
||||
Module,
|
||||
Renderer,
|
||||
Options,
|
||||
Utils
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ export default class ModuleContainer extends Tapable {
|
||||
|
||||
async _ready () {
|
||||
await sequence(this.options.modules, this.addModule.bind(this))
|
||||
await this.nuxt.applyPluginsAsync('module', this)
|
||||
await this.applyPluginsAsync('ready', this)
|
||||
}
|
||||
|
||||
addVendor (vendor) {
|
||||
|
@ -1,10 +1,11 @@
|
||||
import Tapable from 'tappable'
|
||||
import chalk from 'chalk'
|
||||
import { Options } from 'common'
|
||||
import ModuleContainer from './module'
|
||||
import Renderer from './renderer'
|
||||
import Options from './options'
|
||||
import Debug from 'debug'
|
||||
import enableDestroy from 'server-destroy'
|
||||
import Module from 'module'
|
||||
import { join, resolve } from 'path'
|
||||
|
||||
const debug = Debug('nuxt:')
|
||||
@ -16,6 +17,9 @@ export default class Nuxt extends Tapable {
|
||||
|
||||
this.options = Options(_options)
|
||||
|
||||
// Paths for resolving requires from `rootDir`
|
||||
this.nodeModulePaths = Module._nodeModulePaths(this.options.rootDir)
|
||||
|
||||
this.initialized = false
|
||||
this.errorHandler = this.errorHandler.bind(this)
|
||||
|
||||
@ -70,7 +74,7 @@ export default class Nuxt extends Tapable {
|
||||
})
|
||||
}))
|
||||
|
||||
resolve()
|
||||
resolve(this.applyPluginsAsync('listen', { server, port, host }))
|
||||
})
|
||||
|
||||
// Add server.destroy(cb) method
|
||||
@ -101,7 +105,7 @@ export default class Nuxt extends Tapable {
|
||||
resolvePath (path) {
|
||||
// Try to resolve using NPM resolve path first
|
||||
try {
|
||||
let resolvedPath = require.resolve(path)
|
||||
let resolvedPath = Module._resolveFilename(path, { paths: this.nodeModulePaths })
|
||||
return resolvedPath
|
||||
} catch (e) {
|
||||
// Just continue
|
||||
|
@ -11,9 +11,9 @@ import { join, resolve } from 'path'
|
||||
import fs from 'fs-extra'
|
||||
import { createBundleRenderer } from 'vue-server-renderer'
|
||||
import { encodeHtml, getContext, setAnsiColors, isUrl } from 'utils'
|
||||
import { defaultOptions } from './options'
|
||||
import Debug from 'debug'
|
||||
import connect from 'connect'
|
||||
import { Options } from 'common'
|
||||
|
||||
const debug = Debug('nuxt:render')
|
||||
debug.color = 4 // Force blue color
|
||||
@ -46,14 +46,12 @@ export default class Renderer extends Tapable {
|
||||
spaTemplate: null,
|
||||
errorTemplate: parseTemplate('<pre>{{ stack }}</pre>') // Will be loaded on ready
|
||||
}
|
||||
|
||||
// Bind middleware to this context
|
||||
this.nuxtMiddleware = this.nuxtMiddleware.bind(this)
|
||||
this.errorMiddleware = this.errorMiddleware.bind(this)
|
||||
}
|
||||
|
||||
async _ready () {
|
||||
// Setup all middleWare
|
||||
await this.nuxt.applyPluginsAsync('renderer', this)
|
||||
|
||||
// Setup nuxt middleware
|
||||
await this.setupMiddleware()
|
||||
|
||||
// Load error template
|
||||
@ -67,7 +65,8 @@ export default class Renderer extends Tapable {
|
||||
await this.loadResources()
|
||||
}
|
||||
|
||||
await this.nuxt.applyPluginsAsync('renderer', this)
|
||||
// Call ready plugin
|
||||
await this.applyPluginsAsync('ready', this)
|
||||
}
|
||||
|
||||
async loadResources (_fs = fs) {
|
||||
@ -197,7 +196,7 @@ export default class Renderer extends Tapable {
|
||||
if (!this.options.dev) {
|
||||
const distDir = resolve(this.options.buildDir, 'dist')
|
||||
this.useMiddleware({
|
||||
path: isUrl(this.options.build.publicPath) ? defaultOptions.build.publicPath : this.options.build.publicPath,
|
||||
path: isUrl(this.options.build.publicPath) ? Options.defaults.build.publicPath : this.options.build.publicPath,
|
||||
handler: serveStatic(distDir, {
|
||||
index: false, // Don't serve index.html template
|
||||
maxAge: (this.options.dev ? 0 : '1y') // 1 year in production
|
||||
@ -211,10 +210,10 @@ export default class Renderer extends Tapable {
|
||||
})
|
||||
|
||||
// Finally use nuxtMiddleware
|
||||
this.useMiddleware(this.nuxtMiddleware)
|
||||
this.useMiddleware(this.nuxtMiddleware.bind(this))
|
||||
|
||||
// Error middleware for errors that occurred in middleware that declared above
|
||||
this.useMiddleware(this.errorMiddleware)
|
||||
this.useMiddleware(this.errorMiddleware.bind(this))
|
||||
}
|
||||
|
||||
async nuxtMiddleware (req, res, next) {
|
||||
|
24
package.json
24
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "nuxt",
|
||||
"version": "1.0.0-alpha.4",
|
||||
"version": "1.0.0-rc3",
|
||||
"description": "A minimalistic framework for server-rendered Vue.js applications (inspired by Next.js)",
|
||||
"contributors": [
|
||||
{
|
||||
@ -94,25 +94,21 @@
|
||||
"lodash": "^4.17.4",
|
||||
"memory-fs": "^0.4.1",
|
||||
"minimist": "^1.2.0",
|
||||
"offline-plugin": "^4.8.3",
|
||||
"opencollective": "^1.0.3",
|
||||
"pify": "^3.0.0",
|
||||
"preload-webpack-plugin": "^1.2.2",
|
||||
"progress-bar-webpack-plugin": "^1.10.0",
|
||||
"script-ext-html-webpack-plugin": "^1.8.3",
|
||||
"serialize-javascript": "^1.3.0",
|
||||
"serve-static": "^1.12.3",
|
||||
"server-destroy": "^1.0.1",
|
||||
"source-map-support": "^0.4.15",
|
||||
"tapable": "^0.2.6",
|
||||
"tappable": "^1.1.0",
|
||||
"url-loader": "^0.5.9",
|
||||
"vue": "~2.4.1",
|
||||
"vue": "~2.4.2",
|
||||
"vue-loader": "^13.0.1",
|
||||
"vue-meta": "^1.0.4",
|
||||
"vue-router": "^2.7.0",
|
||||
"vue-server-renderer": "~2.4.1",
|
||||
"vue-ssr-html-stream": "^2.2.0",
|
||||
"vue-template-compiler": "~2.4.1",
|
||||
"vue-server-renderer": "~2.4.2",
|
||||
"vue-template-compiler": "~2.4.2",
|
||||
"vuex": "^2.3.1",
|
||||
"webpack": "^3.3.0",
|
||||
"webpack-bundle-analyzer": "^2.8.2",
|
||||
@ -132,16 +128,17 @@
|
||||
"codecov": "^2.2.0",
|
||||
"copy-webpack-plugin": "^4.0.1",
|
||||
"cross-env": "^5.0.1",
|
||||
"eslint": "^4.2.0",
|
||||
"eslint": "^4.3.0",
|
||||
"eslint-config-standard": "^10.2.1",
|
||||
"eslint-plugin-html": "^3.1.0",
|
||||
"eslint-plugin-html": "^3.1.1",
|
||||
"eslint-plugin-import": "^2.6.1",
|
||||
"eslint-plugin-node": "^5.1.0",
|
||||
"eslint-plugin-node": "^5.1.1",
|
||||
"eslint-plugin-promise": "^3.5.0",
|
||||
"eslint-plugin-standard": "^3.0.1",
|
||||
"express": "^4.15.3",
|
||||
"finalhandler": "^1.0.3",
|
||||
"jsdom": "^11.1.0",
|
||||
"json-loader": "^0.5.4",
|
||||
"json-loader": "^0.5.6",
|
||||
"nyc": "^11.0.3",
|
||||
"request": "^2.81.0",
|
||||
"request-promise-native": "^1.0.4",
|
||||
@ -153,7 +150,6 @@
|
||||
"rollup-plugin-node-resolve": "^3.0.0",
|
||||
"rollup-plugin-replace": "^1.1.1",
|
||||
"rollup-watch": "^4.3.1",
|
||||
"server-destroy": "^1.0.1",
|
||||
"std-mocks": "^1.0.1",
|
||||
"uglify-js": "^3.0.23"
|
||||
},
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "nuxt-start",
|
||||
"version": "1.0.0-alpha.4",
|
||||
"version": "1.0.0-rc3",
|
||||
"description": "runtime-only build for nuxt",
|
||||
"contributors": [
|
||||
{
|
||||
@ -61,8 +61,9 @@
|
||||
"serve-static": "^1.12.3",
|
||||
"compression": "^1.7.0",
|
||||
"fs-extra": "^4.0.0",
|
||||
"vue-server-renderer": "~2.4.1",
|
||||
"connect": "^3.6.2"
|
||||
"vue-server-renderer": "~2.4.2",
|
||||
"connect": "^3.6.2",
|
||||
"server-destroy": "^1.0.1"
|
||||
},
|
||||
"collective": {
|
||||
"type": "opencollective",
|
||||
|
@ -6,7 +6,6 @@ test('Fail with routes() which throw an error', async t => {
|
||||
const options = {
|
||||
rootDir: resolve(__dirname, 'fixtures/basic'),
|
||||
dev: false,
|
||||
runBuild: true,
|
||||
generate: {
|
||||
async routes () {
|
||||
throw new Error('Not today!')
|
||||
|
@ -18,7 +18,6 @@ test.before('Init Nuxt.js', async t => {
|
||||
let config = require(resolve(rootDir, 'nuxt.config.js'))
|
||||
config.rootDir = rootDir
|
||||
config.dev = false
|
||||
config.runBuild = true
|
||||
nuxt = new Nuxt(config)
|
||||
const builder = new Builder(nuxt)
|
||||
const generator = new Generator(nuxt, builder)
|
||||
|
@ -13,8 +13,7 @@ let nuxt = null
|
||||
test.before('Init Nuxt.js', async t => {
|
||||
const options = {
|
||||
rootDir: resolve(__dirname, 'fixtures/basic'),
|
||||
dev: false,
|
||||
runBuild: true
|
||||
dev: false
|
||||
}
|
||||
nuxt = new Nuxt(options)
|
||||
await new Builder(nuxt).build()
|
||||
@ -102,6 +101,11 @@ test('/redirect -> check redirected source', async t => {
|
||||
t.true(html.includes('<h1>Index page</h1>'))
|
||||
})
|
||||
|
||||
test('/special-state -> check window.__NUXT__.test = true', async t => {
|
||||
const window = await nuxt.renderAndGetWindow(url('/special-state'))
|
||||
t.is(window.__NUXT__.test, true)
|
||||
})
|
||||
|
||||
test('/error', async t => {
|
||||
try {
|
||||
await nuxt.renderRoute('/error', { req: {}, res: {} })
|
||||
|
@ -11,8 +11,7 @@ let nuxt = null
|
||||
test.before('Init Nuxt.js', async t => {
|
||||
const options = {
|
||||
rootDir: resolve(__dirname, 'fixtures/children'),
|
||||
dev: false,
|
||||
runBuild: true
|
||||
dev: false
|
||||
}
|
||||
nuxt = new Nuxt(options)
|
||||
await new Builder(nuxt).build()
|
||||
|
@ -9,8 +9,7 @@ const readFile = pify(fs.readFile)
|
||||
test.before('Init Nuxt.js', async t => {
|
||||
const nuxt = new Nuxt({
|
||||
rootDir: resolve(__dirname, 'fixtures/dynamic-routes'),
|
||||
dev: false,
|
||||
runBuild: true
|
||||
dev: false
|
||||
})
|
||||
await new Builder(nuxt).build()
|
||||
})
|
||||
|
@ -11,8 +11,7 @@ let nuxt = null
|
||||
test.before('Init Nuxt.js', async t => {
|
||||
const options = {
|
||||
rootDir: resolve(__dirname, 'fixtures/error'),
|
||||
dev: false,
|
||||
runBuild: true
|
||||
dev: false
|
||||
}
|
||||
nuxt = new Nuxt(options)
|
||||
await new Builder(nuxt).build()
|
||||
|
40
test/express.test.js
Normal file
40
test/express.test.js
Normal file
@ -0,0 +1,40 @@
|
||||
import test from 'ava'
|
||||
import { resolve } from 'path'
|
||||
import { Nuxt, Builder } from '../index.js'
|
||||
import express from 'express'
|
||||
import rp from 'request-promise-native'
|
||||
|
||||
const port = 4000
|
||||
const url = (route) => 'http://localhost:' + port + route
|
||||
|
||||
let nuxt
|
||||
let app
|
||||
|
||||
// Init nuxt.js and create express server
|
||||
test.before('Init Nuxt.js', async t => {
|
||||
const options = {
|
||||
rootDir: resolve(__dirname, 'fixtures/basic'),
|
||||
dev: false
|
||||
}
|
||||
|
||||
// Create nuxt instace
|
||||
nuxt = new Nuxt(options)
|
||||
|
||||
// Build
|
||||
await new Builder(nuxt).build()
|
||||
|
||||
// Create express app
|
||||
app = express()
|
||||
|
||||
// Register nuxt
|
||||
app.use(nuxt.render)
|
||||
|
||||
// Start listening on localhost:4000
|
||||
app.listen(port)
|
||||
})
|
||||
|
||||
test('/stateless with express', async t => {
|
||||
const html = await rp(url('/stateless'))
|
||||
|
||||
t.true(html.includes('<h1>My component!</h1>'))
|
||||
})
|
15
test/fixtures/basic/pages/special-state.vue
vendored
Normal file
15
test/fixtures/basic/pages/special-state.vue
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
<template>
|
||||
<h1>Special state in `window.__NUXT__`</h1>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
fetch ({ isServer, beforeNuxtRender }) {
|
||||
if (isServer) {
|
||||
beforeNuxtRender(({ nuxtState }) => {
|
||||
nuxtState.test = true
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
@ -2,7 +2,7 @@ module.exports = function () {
|
||||
let ctr = 1
|
||||
|
||||
// Add hook for module
|
||||
this.nuxt.plugin('module', moduleContainer => {
|
||||
this.plugin('ready', moduleContainer => {
|
||||
this.nuxt.__module_hook = moduleContainer && ctr++
|
||||
})
|
||||
|
||||
|
2
test/fixtures/with-config/nuxt.config.js
vendored
2
test/fixtures/with-config/nuxt.config.js
vendored
@ -14,7 +14,7 @@ module.exports = {
|
||||
transition: 'test',
|
||||
offline: true,
|
||||
plugins: [
|
||||
'~/plugins/test.js', // Use ~ for deprication warning coverage
|
||||
'~/plugins/test.js',
|
||||
{ src: '~/plugins/only-client.js', ssr: false }
|
||||
],
|
||||
loading: '~/components/loading',
|
||||
|
@ -20,7 +20,6 @@ test.serial('Nuxt.js Instance', async t => {
|
||||
test.serial('Fail to build when no pages/ directory but is in the parent', t => {
|
||||
const nuxt = new Nuxt({
|
||||
dev: false,
|
||||
runBuild: true,
|
||||
rootDir: resolve(__dirname, 'fixtures', 'empty', 'pages')
|
||||
})
|
||||
return new Builder(nuxt).build().catch(err => {
|
||||
@ -33,7 +32,6 @@ test.serial('Fail to build when no pages/ directory but is in the parent', t =>
|
||||
test.serial('Fail to build when no pages/ directory', t => {
|
||||
const nuxt = new Nuxt({
|
||||
dev: false,
|
||||
runBuild: true,
|
||||
rootDir: resolve(__dirname)
|
||||
})
|
||||
return new Builder(nuxt).build().catch(err => {
|
||||
|
@ -14,7 +14,6 @@ test.before('Init Nuxt.js', async t => {
|
||||
let config = require(resolve(rootDir, 'nuxt.config.js'))
|
||||
config.rootDir = rootDir
|
||||
config.dev = false
|
||||
config.runBuild = true
|
||||
nuxt = new Nuxt(config)
|
||||
await new Builder(nuxt).build()
|
||||
|
||||
|
@ -62,10 +62,9 @@ test('unique responses with component', async t => {
|
||||
await uniqueTest(t, '/component')
|
||||
})
|
||||
|
||||
test.todo('unique responses with async components (wait Vue 2.4)')
|
||||
// test('unique responses with async components', async t => {
|
||||
// await uniqueTest(t, '/asyncComponent')
|
||||
// })
|
||||
test('unique responses with async components', async t => {
|
||||
await uniqueTest(t, '/asyncComponent')
|
||||
})
|
||||
|
||||
test('unique responses with asyncData()', async t => {
|
||||
await uniqueTest(t, '/asyncData')
|
||||
|
@ -14,7 +14,6 @@ test.before('Init Nuxt.js', async t => {
|
||||
let config = require(resolve(rootDir, 'nuxt.config.js'))
|
||||
config.rootDir = rootDir
|
||||
config.dev = false
|
||||
config.runBuild = true
|
||||
nuxt = new Nuxt(config)
|
||||
await new Builder(nuxt).build()
|
||||
|
||||
|
379
yarn.lock
379
yarn.lock
@ -45,8 +45,8 @@
|
||||
arrify "^1.0.1"
|
||||
|
||||
"@types/node@^6.0.46":
|
||||
version "6.0.84"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.84.tgz#193ffe5a9f42864d425ffd9739d95b753c6a1eab"
|
||||
version "6.0.85"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.85.tgz#ec02bfe54a61044f2be44f13b389c6a0e8ee05ae"
|
||||
|
||||
abab@^1.0.3:
|
||||
version "1.0.3"
|
||||
@ -164,10 +164,10 @@ ansi-styles@^2.2.1:
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
|
||||
|
||||
ansi-styles@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.1.0.tgz#09c202d5c917ec23188caa5c9cb9179cd9547750"
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88"
|
||||
dependencies:
|
||||
color-convert "^1.0.0"
|
||||
color-convert "^1.9.0"
|
||||
|
||||
ansi-styles@~1.0.0:
|
||||
version "1.0.0"
|
||||
@ -932,8 +932,8 @@ babel-plugin-transform-strict-mode@^6.24.1:
|
||||
babel-types "^6.24.1"
|
||||
|
||||
babel-plugin-transform-vue-jsx@^3.1.2:
|
||||
version "3.4.3"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-3.4.3.tgz#de57d8dd7d619333c981867728f3e6fdf68982ff"
|
||||
version "3.5.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-3.5.0.tgz#6b1ad29351ad753919403675f0bf8b2a43e17671"
|
||||
dependencies:
|
||||
esutils "^2.0.2"
|
||||
|
||||
@ -1068,8 +1068,8 @@ babel-register@^6.24.1:
|
||||
source-map-support "^0.4.2"
|
||||
|
||||
babel-runtime@^6.18.0, babel-runtime@^6.20.0, babel-runtime@^6.22.0:
|
||||
version "6.23.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b"
|
||||
version "6.25.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.25.0.tgz#33b98eaa5d482bb01a8d1aa6b437ad2b01aec41c"
|
||||
dependencies:
|
||||
core-js "^2.4.0"
|
||||
regenerator-runtime "^0.10.0"
|
||||
@ -1134,8 +1134,8 @@ big.js@^3.1.3:
|
||||
resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978"
|
||||
|
||||
binary-extensions@^1.0.0:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774"
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.9.0.tgz#66506c16ce6f4d6928a5b3cd6a33ca41e941e37b"
|
||||
|
||||
block-stream@*:
|
||||
version "0.0.9"
|
||||
@ -1166,8 +1166,8 @@ boom@2.x.x:
|
||||
hoek "2.x.x"
|
||||
|
||||
boxen@^1.0.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.0.tgz#03478d84be7fe02189b80904d81d6a80384368f1"
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.1.tgz#0f11e7fe344edb9397977fc13ede7f64d956481d"
|
||||
dependencies:
|
||||
ansi-align "^2.0.0"
|
||||
camelcase "^4.0.0"
|
||||
@ -1261,11 +1261,11 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
|
||||
electron-to-chromium "^1.2.7"
|
||||
|
||||
browserslist@^2.1.2, browserslist@^2.1.5:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.2.0.tgz#5e35ec993e467c6464b8cb708447386891de9f50"
|
||||
version "2.2.2"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.2.2.tgz#e9b4618b8a01c193f9786beea09f6fd10dbe31c3"
|
||||
dependencies:
|
||||
caniuse-lite "^1.0.30000701"
|
||||
electron-to-chromium "^1.3.15"
|
||||
caniuse-lite "^1.0.30000704"
|
||||
electron-to-chromium "^1.3.16"
|
||||
|
||||
buf-compare@^1.0.0:
|
||||
version "1.0.1"
|
||||
@ -1366,12 +1366,12 @@ caniuse-api@^1.5.2:
|
||||
lodash.uniq "^4.5.0"
|
||||
|
||||
caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
|
||||
version "1.0.30000701"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000701.tgz#2e32b06993bf3dbd90b43d93f04e26d11afddcba"
|
||||
version "1.0.30000708"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000708.tgz#c2e736bd3b7fc5f6c14e4c6dfe62b98ed15e8a5b"
|
||||
|
||||
caniuse-lite@^1.0.30000697, caniuse-lite@^1.0.30000701:
|
||||
version "1.0.30000701"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000701.tgz#9d673cf6b74dcb3d5c21d213176b011ac6a45baa"
|
||||
caniuse-lite@^1.0.30000697, caniuse-lite@^1.0.30000704:
|
||||
version "1.0.30000708"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000708.tgz#71dbf388c57f379b1bb66c89a890edc04c2509b6"
|
||||
|
||||
capture-stack-trace@^1.0.0:
|
||||
version "1.0.0"
|
||||
@ -1410,7 +1410,7 @@ chalk@^0.4.0:
|
||||
has-color "~0.1.0"
|
||||
strip-ansi "~0.1.0"
|
||||
|
||||
chalk@^2.0.1:
|
||||
chalk@^2.0.0, chalk@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.0.1.tgz#dbec49436d2ae15f536114e76d14656cdbc0f44d"
|
||||
dependencies:
|
||||
@ -1445,8 +1445,8 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
circular-json@^0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d"
|
||||
version "0.3.3"
|
||||
resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
|
||||
|
||||
clap@^1.0.9:
|
||||
version "1.2.0"
|
||||
@ -1483,10 +1483,10 @@ cli-spinners@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.0.0.tgz#ef987ed3d48391ac3dab9180b406a742180d6e6a"
|
||||
|
||||
cli-truncate@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.0.0.tgz#21eb91f47b3f6560f004db77a769b4668d9c5518"
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.1.0.tgz#2b2dfd83c53cfd3572b87fc4d430a808afb04086"
|
||||
dependencies:
|
||||
slice-ansi "0.0.4"
|
||||
slice-ansi "^1.0.0"
|
||||
string-width "^2.0.0"
|
||||
|
||||
cli-width@^2.0.0:
|
||||
@ -1551,7 +1551,7 @@ codecov@^2.2.0:
|
||||
request "2.79.0"
|
||||
urlgrey "0.4.4"
|
||||
|
||||
color-convert@^1.0.0, color-convert@^1.3.0:
|
||||
color-convert@^1.3.0, color-convert@^1.9.0:
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
|
||||
dependencies:
|
||||
@ -1593,11 +1593,9 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
|
||||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
commander@2.9.x, commander@^2.9.0, commander@~2.9.0:
|
||||
version "2.9.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
|
||||
dependencies:
|
||||
graceful-readlink ">= 1.0.0"
|
||||
commander@2.11.x, commander@^2.9.0, commander@~2.11.0:
|
||||
version "2.11.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
|
||||
|
||||
common-path-prefix@^1.0.0:
|
||||
version "1.0.0"
|
||||
@ -1661,8 +1659,8 @@ config-chain@~1.1.5:
|
||||
proto-list "~1.2.1"
|
||||
|
||||
configstore@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.0.tgz#45df907073e26dfa1cf4b2d52f5b60545eaa11d1"
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.1.tgz#094ee662ab83fad9917678de114faaea8fcdca90"
|
||||
dependencies:
|
||||
dot-prop "^4.1.0"
|
||||
graceful-fs "^4.1.2"
|
||||
@ -1761,8 +1759,8 @@ core-util-is@~1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||
|
||||
cosmiconfig@^2.1.0, cosmiconfig@^2.1.1:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.1.3.tgz#952771eb0dddc1cb3fa2f6fbe51a522e93b3ee0a"
|
||||
version "2.2.2"
|
||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892"
|
||||
dependencies:
|
||||
is-directory "^0.3.1"
|
||||
js-yaml "^3.4.3"
|
||||
@ -1812,7 +1810,7 @@ cross-env@^5.0.1:
|
||||
cross-spawn "^5.1.0"
|
||||
is-windows "^1.0.0"
|
||||
|
||||
cross-spawn@^4, cross-spawn@^4.0.0:
|
||||
cross-spawn@^4:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41"
|
||||
dependencies:
|
||||
@ -2014,7 +2012,7 @@ deep-equal@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
|
||||
|
||||
deep-extend@^0.4.0, deep-extend@~0.4.0:
|
||||
deep-extend@~0.4.0:
|
||||
version "0.4.2"
|
||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
|
||||
|
||||
@ -2168,8 +2166,8 @@ domutils@^1.5.1:
|
||||
domelementtype "1"
|
||||
|
||||
dot-prop@^4.1.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.1.1.tgz#a8493f0b7b5eeec82525b5c7587fa7de7ca859c1"
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
|
||||
dependencies:
|
||||
is-obj "^1.0.0"
|
||||
|
||||
@ -2200,13 +2198,13 @@ ee-first@1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
||||
|
||||
ejs@^2.3.4, ejs@^2.5.6:
|
||||
ejs@^2.5.6:
|
||||
version "2.5.6"
|
||||
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.6.tgz#479636bfa3fe3b1debd52087f0acb204b4f19c88"
|
||||
|
||||
electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.15:
|
||||
version "1.3.15"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.15.tgz#08397934891cbcfaebbd18b82a95b5a481138369"
|
||||
electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.16:
|
||||
version "1.3.16"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.16.tgz#d0e026735754770901ae301a21664cba45d92f7d"
|
||||
|
||||
elliptic@^6.0.0:
|
||||
version "6.4.0"
|
||||
@ -2241,14 +2239,14 @@ encoding@^0.1.11:
|
||||
dependencies:
|
||||
iconv-lite "~0.4.13"
|
||||
|
||||
enhanced-resolve@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz#950964ecc7f0332a42321b673b38dc8ff15535b3"
|
||||
enhanced-resolve@^3.4.0:
|
||||
version "3.4.1"
|
||||
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e"
|
||||
dependencies:
|
||||
graceful-fs "^4.1.2"
|
||||
memory-fs "^0.4.0"
|
||||
object-assign "^4.0.1"
|
||||
tapable "^0.2.5"
|
||||
tapable "^0.2.7"
|
||||
|
||||
entities@^1.1.1, entities@~1.1.1:
|
||||
version "1.1.1"
|
||||
@ -2382,9 +2380,9 @@ eslint-module-utils@^2.1.1:
|
||||
debug "^2.6.8"
|
||||
pkg-dir "^1.0.0"
|
||||
|
||||
eslint-plugin-html@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-3.1.0.tgz#2eb999b48840b7184edf1c953976a73307151e44"
|
||||
eslint-plugin-html@^3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-3.1.1.tgz#d6c03796e89ac6b735da6fef9ca9162b423daee3"
|
||||
dependencies:
|
||||
htmlparser2 "^3.8.2"
|
||||
|
||||
@ -2403,9 +2401,9 @@ eslint-plugin-import@^2.6.1:
|
||||
minimatch "^3.0.3"
|
||||
read-pkg-up "^2.0.0"
|
||||
|
||||
eslint-plugin-node@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-5.1.0.tgz#bc8cdb85180d0b4d946a2531640e2a4dd7a4e6d4"
|
||||
eslint-plugin-node@^5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-5.1.1.tgz#a7ed956e780c22aef6afd1116005acd82f26eac6"
|
||||
dependencies:
|
||||
ignore "^3.3.3"
|
||||
minimatch "^3.0.4"
|
||||
@ -2427,14 +2425,15 @@ eslint-scope@^3.7.1:
|
||||
esrecurse "^4.1.0"
|
||||
estraverse "^4.1.1"
|
||||
|
||||
eslint@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.2.0.tgz#a2b3184111b198e02e9c7f3cca625a5e01c56b3d"
|
||||
eslint@^4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.3.0.tgz#fcd7c96376bbf34c85ee67ed0012a299642b108f"
|
||||
dependencies:
|
||||
ajv "^5.2.0"
|
||||
babel-code-frame "^6.22.0"
|
||||
chalk "^1.1.3"
|
||||
concat-stream "^1.6.0"
|
||||
cross-spawn "^5.1.0"
|
||||
debug "^2.6.8"
|
||||
doctrine "^2.0.0"
|
||||
eslint-scope "^3.7.1"
|
||||
@ -2443,6 +2442,7 @@ eslint@^4.2.0:
|
||||
estraverse "^4.2.0"
|
||||
esutils "^2.0.2"
|
||||
file-entry-cache "^2.0.0"
|
||||
functional-red-black-tree "^1.0.1"
|
||||
glob "^7.1.2"
|
||||
globals "^9.17.0"
|
||||
ignore "^3.3.3"
|
||||
@ -2461,6 +2461,7 @@ eslint@^4.2.0:
|
||||
pluralize "^4.0.0"
|
||||
progress "^2.0.0"
|
||||
require-uncached "^1.0.3"
|
||||
semver "^5.3.0"
|
||||
strip-json-comments "~2.0.1"
|
||||
table "^4.0.1"
|
||||
text-table "~0.2.0"
|
||||
@ -2549,18 +2550,6 @@ evp_bytestokey@^1.0.0:
|
||||
dependencies:
|
||||
create-hash "^1.1.1"
|
||||
|
||||
execa@^0.5.0:
|
||||
version "0.5.1"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-0.5.1.tgz#de3fb85cb8d6e91c85bcbceb164581785cb57b36"
|
||||
dependencies:
|
||||
cross-spawn "^4.0.0"
|
||||
get-stream "^2.2.0"
|
||||
is-stream "^1.1.0"
|
||||
npm-run-path "^2.0.0"
|
||||
p-finally "^1.0.0"
|
||||
signal-exit "^3.0.0"
|
||||
strip-eof "^1.0.0"
|
||||
|
||||
execa@^0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
|
||||
@ -2585,7 +2574,7 @@ expand-range@^1.8.1:
|
||||
dependencies:
|
||||
fill-range "^2.1.0"
|
||||
|
||||
express@^4.15.2:
|
||||
express@^4.15.2, express@^4.15.3:
|
||||
version "4.15.3"
|
||||
resolved "https://registry.yarnpkg.com/express/-/express-4.15.3.tgz#bab65d0f03aa80c358408972fc700f916944b662"
|
||||
dependencies:
|
||||
@ -2622,7 +2611,7 @@ extend@~3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
|
||||
|
||||
external-editor@^2.0.1:
|
||||
external-editor@^2.0.1, external-editor@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972"
|
||||
dependencies:
|
||||
@ -2863,6 +2852,10 @@ function-name-support@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/function-name-support/-/function-name-support-0.2.0.tgz#55d3bfaa6eafd505a50f9bc81fdf57564a0bb071"
|
||||
|
||||
functional-red-black-tree@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
|
||||
|
||||
gauge@~2.7.3:
|
||||
version "2.7.4"
|
||||
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
|
||||
@ -2898,13 +2891,6 @@ get-stdin@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
|
||||
|
||||
get-stream@^2.2.0:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
|
||||
dependencies:
|
||||
object-assign "^4.0.1"
|
||||
pinkie-promise "^2.0.0"
|
||||
|
||||
get-stream@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
|
||||
@ -2994,10 +2980,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
|
||||
|
||||
"graceful-readlink@>= 1.0.0":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
|
||||
|
||||
gzip-size@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
|
||||
@ -3134,12 +3116,12 @@ html-entities@^1.2.0:
|
||||
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
|
||||
|
||||
html-minifier@^3.2.3, html-minifier@^3.5.2:
|
||||
version "3.5.2"
|
||||
resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.2.tgz#d73bc3ff448942408818ce609bf3fb0ea7ef4eb7"
|
||||
version "3.5.3"
|
||||
resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.3.tgz#4a275e3b1a16639abb79b4c11191ff0d0fcf1ab9"
|
||||
dependencies:
|
||||
camel-case "3.0.x"
|
||||
clean-css "4.1.x"
|
||||
commander "2.9.x"
|
||||
commander "2.11.x"
|
||||
he "1.1.x"
|
||||
ncname "1.0.x"
|
||||
param-case "2.1.x"
|
||||
@ -3269,8 +3251,8 @@ indent-string@^2.1.0:
|
||||
repeating "^2.0.0"
|
||||
|
||||
indent-string@^3.0.0, indent-string@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.1.0.tgz#08ff4334603388399b329e6b9538dc7a3cf5de7d"
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
|
||||
|
||||
indexes-of@^1.0.1:
|
||||
version "1.0.1"
|
||||
@ -3299,7 +3281,7 @@ ini@^1.3.4, ini@~1.3.0:
|
||||
version "1.3.4"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
|
||||
|
||||
inquirer@3.0.6, inquirer@^3.0.6:
|
||||
inquirer@3.0.6:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.0.6.tgz#e04aaa9d05b7a3cb9b0f407d04375f0447190347"
|
||||
dependencies:
|
||||
@ -3317,6 +3299,25 @@ inquirer@3.0.6, inquirer@^3.0.6:
|
||||
strip-ansi "^3.0.0"
|
||||
through "^2.3.6"
|
||||
|
||||
inquirer@^3.0.6:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.1.tgz#06ceb0f540f45ca548c17d6840959878265fa175"
|
||||
dependencies:
|
||||
ansi-escapes "^2.0.0"
|
||||
chalk "^2.0.0"
|
||||
cli-cursor "^2.1.0"
|
||||
cli-width "^2.0.0"
|
||||
external-editor "^2.0.4"
|
||||
figures "^2.0.0"
|
||||
lodash "^4.3.0"
|
||||
mute-stream "0.0.7"
|
||||
run-async "^2.2.0"
|
||||
rx-lite "^4.0.8"
|
||||
rx-lite-aggregates "^4.0.8"
|
||||
string-width "^2.1.0"
|
||||
strip-ansi "^4.0.0"
|
||||
through "^2.3.6"
|
||||
|
||||
interpret@^1.0.0:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
|
||||
@ -3331,9 +3332,9 @@ invert-kv@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
|
||||
|
||||
ipaddr.js@1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.3.0.tgz#1e03a52fdad83a8bbb2b25cbf4998b4cffcd3dec"
|
||||
ipaddr.js@1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.4.0.tgz#296aca878a821816e5b85d0a285a99bcff4582f0"
|
||||
|
||||
irregular-plurals@^1.0.0:
|
||||
version "1.3.0"
|
||||
@ -3692,9 +3693,9 @@ jsesc@~0.5.0:
|
||||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
|
||||
|
||||
json-loader@^0.5.4:
|
||||
version "0.5.4"
|
||||
resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de"
|
||||
json-loader@^0.5.4, json-loader@^0.5.6:
|
||||
version "0.5.7"
|
||||
resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d"
|
||||
|
||||
json-schema-traverse@^0.3.0:
|
||||
version "0.3.1"
|
||||
@ -3817,7 +3818,7 @@ loader-runner@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
|
||||
|
||||
loader-utils@0.2.x, loader-utils@^0.2.15, loader-utils@^0.2.16:
|
||||
loader-utils@^0.2.15, loader-utils@^0.2.16:
|
||||
version "0.2.17"
|
||||
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
|
||||
dependencies:
|
||||
@ -4079,19 +4080,15 @@ miller-rabin@^4.0.0:
|
||||
bn.js "^4.0.0"
|
||||
brorand "^1.0.1"
|
||||
|
||||
"mime-db@>= 1.27.0 < 2":
|
||||
"mime-db@>= 1.27.0 < 2", mime-db@~1.29.0:
|
||||
version "1.29.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878"
|
||||
|
||||
mime-db@~1.27.0:
|
||||
version "1.27.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1"
|
||||
|
||||
mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7:
|
||||
version "2.1.15"
|
||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed"
|
||||
version "2.1.16"
|
||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23"
|
||||
dependencies:
|
||||
mime-db "~1.27.0"
|
||||
mime-db "~1.29.0"
|
||||
|
||||
mime@1.3.4:
|
||||
version "1.3.4"
|
||||
@ -4119,7 +4116,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimist@0.0.8, minimist@~0.0.1:
|
||||
minimist@0.0.8:
|
||||
version "0.0.8"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
|
||||
|
||||
@ -4127,6 +4124,10 @@ minimist@1.2.0, minimist@^1.1.3, minimist@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
|
||||
|
||||
minimist@~0.0.1:
|
||||
version "0.0.10"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
|
||||
|
||||
"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
|
||||
version "0.5.1"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
|
||||
@ -4369,16 +4370,6 @@ observable-to-promise@^0.5.0:
|
||||
is-observable "^0.2.0"
|
||||
symbol-observable "^1.0.4"
|
||||
|
||||
offline-plugin@^4.8.3:
|
||||
version "4.8.3"
|
||||
resolved "https://registry.yarnpkg.com/offline-plugin/-/offline-plugin-4.8.3.tgz#9e95bd342ea2ac836b001b81f204c40638694d6c"
|
||||
dependencies:
|
||||
deep-extend "^0.4.0"
|
||||
ejs "^2.3.4"
|
||||
loader-utils "0.2.x"
|
||||
minimatch "^3.0.3"
|
||||
slash "^1.0.0"
|
||||
|
||||
on-finished@~2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
|
||||
@ -4453,17 +4444,11 @@ os-homedir@^1.0.0, os-homedir@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
|
||||
|
||||
os-locale@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
|
||||
dependencies:
|
||||
lcid "^1.0.0"
|
||||
|
||||
os-locale@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.0.0.tgz#15918ded510522b81ee7ae5a309d54f639fc39a4"
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
|
||||
dependencies:
|
||||
execa "^0.5.0"
|
||||
execa "^0.7.0"
|
||||
lcid "^1.0.0"
|
||||
mem "^1.1.0"
|
||||
|
||||
@ -4958,19 +4943,13 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0
|
||||
supports-color "^3.2.3"
|
||||
|
||||
postcss@^6.0.1, postcss@^6.0.6:
|
||||
version "6.0.7"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.7.tgz#6a097477c46d13d0560a817d69abc0bae549d0a0"
|
||||
version "6.0.8"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.8.tgz#89067a9ce8b11f8a84cbc5117efc30419a0857b3"
|
||||
dependencies:
|
||||
chalk "^2.0.1"
|
||||
source-map "^0.5.6"
|
||||
supports-color "^4.2.0"
|
||||
|
||||
preload-webpack-plugin@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/preload-webpack-plugin/-/preload-webpack-plugin-1.2.2.tgz#d1b6f0eab3c2d0bb4c249d409cf6b7a8b0a415dd"
|
||||
dependencies:
|
||||
object-assign "^4.1.1"
|
||||
|
||||
prelude-ls@~1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
||||
@ -5037,11 +5016,11 @@ proto-list@~1.2.1:
|
||||
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
|
||||
|
||||
proxy-addr@~1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.4.tgz#27e545f6960a44a627d9b44467e35c1b6b4ce2f3"
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.5.tgz#71c0ee3b102de3f202f3b64f608d173fcba1a918"
|
||||
dependencies:
|
||||
forwarded "~0.1.0"
|
||||
ipaddr.js "1.3.0"
|
||||
ipaddr.js "1.4.0"
|
||||
|
||||
prr@~0.0.0:
|
||||
version "0.0.0"
|
||||
@ -5419,8 +5398,8 @@ resolve@1.1.7:
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
|
||||
|
||||
resolve@^1.1.6, resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.3:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5"
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86"
|
||||
dependencies:
|
||||
path-parse "^1.0.5"
|
||||
|
||||
@ -5526,6 +5505,16 @@ run-async@^2.2.0:
|
||||
dependencies:
|
||||
is-promise "^2.1.0"
|
||||
|
||||
rx-lite-aggregates@^4.0.8:
|
||||
version "4.0.8"
|
||||
resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
|
||||
dependencies:
|
||||
rx-lite "*"
|
||||
|
||||
rx-lite@*, rx-lite@^4.0.8:
|
||||
version "4.0.8"
|
||||
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
|
||||
|
||||
rx@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782"
|
||||
@ -5548,19 +5537,17 @@ schema-utils@^0.3.0:
|
||||
dependencies:
|
||||
ajv "^5.0.0"
|
||||
|
||||
script-ext-html-webpack-plugin@^1.8.3:
|
||||
version "1.8.5"
|
||||
resolved "https://registry.yarnpkg.com/script-ext-html-webpack-plugin/-/script-ext-html-webpack-plugin-1.8.5.tgz#7a408383d7f3329da8f59d503be25cc39a53f3f3"
|
||||
dependencies:
|
||||
debug "^2.6.8"
|
||||
|
||||
semver-diff@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
|
||||
dependencies:
|
||||
semver "^5.0.3"
|
||||
|
||||
"semver@2 || 3 || 4 || 5", semver@5.3.0, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0:
|
||||
"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0:
|
||||
version "5.4.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
|
||||
|
||||
semver@5.3.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
|
||||
|
||||
@ -5647,6 +5634,12 @@ slice-ansi@0.0.4:
|
||||
version "0.0.4"
|
||||
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
|
||||
|
||||
slice-ansi@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
|
||||
dependencies:
|
||||
is-fullwidth-code-point "^2.0.0"
|
||||
|
||||
slide@^1.1.5:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
|
||||
@ -5799,9 +5792,9 @@ string-width@^1.0.1, string-width@^1.0.2:
|
||||
is-fullwidth-code-point "^1.0.0"
|
||||
strip-ansi "^3.0.0"
|
||||
|
||||
string-width@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.0.tgz#030664561fc146c9423ec7d978fe2457437fe6d0"
|
||||
string-width@^2.0.0, string-width@^2.1.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
|
||||
dependencies:
|
||||
is-fullwidth-code-point "^2.0.0"
|
||||
strip-ansi "^4.0.0"
|
||||
@ -5870,15 +5863,15 @@ supports-color@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
||||
|
||||
supports-color@^3.1.0, supports-color@^3.1.2, supports-color@^3.2.3:
|
||||
supports-color@^3.1.2, supports-color@^3.2.3:
|
||||
version "3.2.3"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
|
||||
dependencies:
|
||||
has-flag "^1.0.0"
|
||||
|
||||
supports-color@^4.0.0, supports-color@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.0.tgz#ad986dc7eb2315d009b4d77c8169c2231a684037"
|
||||
supports-color@^4.0.0, supports-color@^4.2.0, supports-color@^4.2.1:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836"
|
||||
dependencies:
|
||||
has-flag "^2.0.0"
|
||||
|
||||
@ -5917,9 +5910,9 @@ table@^4.0.1:
|
||||
slice-ansi "0.0.4"
|
||||
string-width "^2.0.0"
|
||||
|
||||
tapable@^0.2.5, tapable@^0.2.6, tapable@~0.2.5:
|
||||
version "0.2.6"
|
||||
resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d"
|
||||
tapable@^0.2.6, tapable@^0.2.7:
|
||||
version "0.2.7"
|
||||
resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.7.tgz#e46c0daacbb2b8a98b9b0cea0f4052105817ed5c"
|
||||
|
||||
tappable@^1.1.0:
|
||||
version "1.1.0"
|
||||
@ -6083,10 +6076,10 @@ typedarray@^0.0.6:
|
||||
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
||||
|
||||
uglify-js@3.0.x, uglify-js@^3.0.23:
|
||||
version "3.0.25"
|
||||
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.25.tgz#3dc190b0ee437497e449bc6f785665b06afbe052"
|
||||
version "3.0.26"
|
||||
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.0.26.tgz#ba279ca597b13fe6c62c2d87dd5188e57a7a3233"
|
||||
dependencies:
|
||||
commander "~2.9.0"
|
||||
commander "~2.11.0"
|
||||
source-map "~0.5.1"
|
||||
|
||||
uglify-js@^2.6, uglify-js@^2.8.29:
|
||||
@ -6151,8 +6144,8 @@ unique-temp-dir@^1.0.0:
|
||||
uid2 "0.0.3"
|
||||
|
||||
universalify@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778"
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.1.tgz#fa71badd4437af4c148841e3b3b165f9e9e590b7"
|
||||
|
||||
unpipe@~1.0.0:
|
||||
version "1.0.0"
|
||||
@ -6294,9 +6287,9 @@ vue-router@^2.7.0:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-2.7.0.tgz#16d424493aa51c3c8cce8b7c7210ea4c3a89aff1"
|
||||
|
||||
vue-server-renderer@~2.4.1:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.4.1.tgz#9a1986c459387eaa319c16ca5c0d0f2ebb2c66c5"
|
||||
vue-server-renderer@~2.4.2:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.4.2.tgz#0ba0f984181ea1c455362b09bddf60bc0e0a03fa"
|
||||
dependencies:
|
||||
chalk "^1.1.3"
|
||||
hash-sum "^1.0.2"
|
||||
@ -6307,12 +6300,6 @@ vue-server-renderer@~2.4.1:
|
||||
serialize-javascript "^1.3.0"
|
||||
source-map "0.5.6"
|
||||
|
||||
vue-ssr-html-stream@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/vue-ssr-html-stream/-/vue-ssr-html-stream-2.2.0.tgz#56d78b96c9c172b43749a324c156e888aca96d92"
|
||||
dependencies:
|
||||
serialize-javascript "^1.3.0"
|
||||
|
||||
vue-style-loader@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/vue-style-loader/-/vue-style-loader-3.0.1.tgz#c8b639bb2f24baf9d78274dc17e4f264c1deda08"
|
||||
@ -6320,9 +6307,9 @@ vue-style-loader@^3.0.0:
|
||||
hash-sum "^1.0.2"
|
||||
loader-utils "^1.0.2"
|
||||
|
||||
vue-template-compiler@~2.4.1:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.4.1.tgz#20115cf8714f222f9be4111ec75b079a1c9b8197"
|
||||
vue-template-compiler@~2.4.2:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.4.2.tgz#5a45d843f148b098f6c1d1e35ac20c4956d30ad1"
|
||||
dependencies:
|
||||
de-indent "^1.0.2"
|
||||
he "^1.1.0"
|
||||
@ -6331,9 +6318,9 @@ vue-template-es2015-compiler@^1.5.3:
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.5.3.tgz#22787de4e37ebd9339b74223bc467d1adee30545"
|
||||
|
||||
vue@~2.4.1:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/vue/-/vue-2.4.1.tgz#76e0b8eee614613532216b7bfe784e0b5695b160"
|
||||
vue@~2.4.2:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/vue/-/vue-2.4.2.tgz#a9855261f191c978cc0dc1150531b8d08149b58c"
|
||||
|
||||
vuex@^2.3.1:
|
||||
version "2.3.1"
|
||||
@ -6397,15 +6384,15 @@ webpack-sources@^1.0.1:
|
||||
source-map "~0.5.3"
|
||||
|
||||
webpack@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.3.0.tgz#ce2f9e076566aba91f74887133a883fd7da187bc"
|
||||
version "3.4.1"
|
||||
resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.4.1.tgz#4c3f4f3fb318155a4db0cb6a36ff05c5697418f4"
|
||||
dependencies:
|
||||
acorn "^5.0.0"
|
||||
acorn-dynamic-import "^2.0.0"
|
||||
ajv "^5.1.5"
|
||||
ajv-keywords "^2.0.0"
|
||||
async "^2.1.2"
|
||||
enhanced-resolve "^3.3.0"
|
||||
enhanced-resolve "^3.4.0"
|
||||
escope "^3.6.0"
|
||||
interpret "^1.0.0"
|
||||
json-loader "^0.5.4"
|
||||
@ -6416,12 +6403,12 @@ webpack@^3.3.0:
|
||||
mkdirp "~0.5.0"
|
||||
node-libs-browser "^2.0.0"
|
||||
source-map "^0.5.3"
|
||||
supports-color "^3.1.0"
|
||||
tapable "~0.2.5"
|
||||
supports-color "^4.2.1"
|
||||
tapable "^0.2.7"
|
||||
uglifyjs-webpack-plugin "^0.4.6"
|
||||
watchpack "^1.4.0"
|
||||
webpack-sources "^1.0.1"
|
||||
yargs "^6.0.0"
|
||||
yargs "^8.0.2"
|
||||
|
||||
well-known-symbols@^1.0.0:
|
||||
version "1.0.0"
|
||||
@ -6445,10 +6432,6 @@ whet.extend@~0.9.9:
|
||||
version "0.9.9"
|
||||
resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
|
||||
|
||||
which-module@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
|
||||
|
||||
which-module@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
||||
@ -6569,12 +6552,6 @@ yallist@^2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
|
||||
|
||||
yargs-parser@^4.2.0:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
|
||||
dependencies:
|
||||
camelcase "^3.0.0"
|
||||
|
||||
yargs-parser@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
|
||||
@ -6587,25 +6564,7 @@ yargs-parser@^7.0.0:
|
||||
dependencies:
|
||||
camelcase "^4.1.0"
|
||||
|
||||
yargs@^6.0.0:
|
||||
version "6.6.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
|
||||
dependencies:
|
||||
camelcase "^3.0.0"
|
||||
cliui "^3.2.0"
|
||||
decamelize "^1.1.1"
|
||||
get-caller-file "^1.0.1"
|
||||
os-locale "^1.4.0"
|
||||
read-pkg-up "^1.0.1"
|
||||
require-directory "^2.1.1"
|
||||
require-main-filename "^1.0.1"
|
||||
set-blocking "^2.0.0"
|
||||
string-width "^1.0.2"
|
||||
which-module "^1.0.0"
|
||||
y18n "^3.2.1"
|
||||
yargs-parser "^4.2.0"
|
||||
|
||||
yargs@^8.0.1:
|
||||
yargs@^8.0.1, yargs@^8.0.2:
|
||||
version "8.0.2"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
|
||||
dependencies:
|
||||
|
Loading…
Reference in New Issue
Block a user