Merge branch 'dev' of github.com:Atinux/nuxt.js into dev

This commit is contained in:
Sébastien Chopin 2017-08-24 19:53:26 +02:00
commit 1a6a183e43
47 changed files with 634 additions and 392 deletions

View File

@ -6,6 +6,6 @@
"scripts": {
"dev": "nuxt",
"build": "nuxt build",
"start": "nuxt"
"start": "nuxt start"
}
}

View File

@ -1,6 +1,6 @@
export default function ({ app, store, route, params, error, redirect, hotReload }) {
// If middleware is called from hot-reloading, ignore it
if (hotReload) return
export default function ({ isHMR, app, store, route, params, error, redirect }) {
// If middleware is called from hot module replacement, ignore it
if (isHMR) return
// Get locale from params
const locale = params.lang || 'en'
if (store.state.locales.indexOf(locale) === -1) {

View File

@ -0,0 +1,3 @@
# `<no-ssr>` with Nuxt.js
https://nuxtjs.org/examples

View File

@ -0,0 +1,11 @@
{
"name": "no-ssr-cmp-nuxt",
"dependencies": {
"nuxt": "latest"
},
"scripts": {
"dev": "nuxt",
"build": "nuxt build",
"start": "nuxt start"
}
}

17
examples/no-ssr/pages/index.vue Executable file
View File

@ -0,0 +1,17 @@
<template>
<div class="page">
<h1>Home</h1>
<no-ssr placeholder="Loading...">
<h2>This part is rendered on the client-side only</h2>
</no-ssr>
<no-ssr>
<p><code>placeholder</code> prop is optional</p>
</no-ssr>
</div>
</template>
<style scoped>
.no-ssr-placeholder {
color: #41b883;
}
</style>

7
examples/uikit/README.md Normal file
View File

@ -0,0 +1,7 @@
# UIKit with Nuxt.js
UIkit: https://github.com/uikit/uikit
Live demo: https://uikit.nuxtjs.org
Live edit: https://glitch.com/edit/#!/nuxt-uitkit

View File

@ -0,0 +1,5 @@
<template>
<div class="uk-container">
<nuxt/>
</div>
</template>

View File

@ -0,0 +1,6 @@
module.exports = {
css: ['uikit/dist/css/uikit.css'],
plugins: [
{ src: '~/plugins/uikit.js', ssr: false }
]
}

View File

@ -0,0 +1,13 @@
{
"name": "uikit-nuxt",
"dependencies": {
"nuxt": "latest",
"uikit": "^3.0.0-beta.30",
"jquery": "^3.2.1"
},
"scripts": {
"dev": "nuxt",
"build": "nuxt build",
"start": "nuxt start"
}
}

View File

@ -0,0 +1,19 @@
<template>
<div class="uk-card uk-card-body">
<p>Hi from {{ name }}</p>
<span class="uk-margin-small-right" uk-icon="icon: check"></span>
<a href="#" uk-icon="icon: heart"></a>
<hr class="uk-divider-icon">
<nuxt-link to="/">Home page</nuxt-link>
</div>
</template>
<script>
export default {
asyncData ({ req }) {
return {
name: req ? 'server' : 'client'
}
}
}
</script>

View File

@ -0,0 +1,12 @@
<template>
<div class="uk-card uk-card-body uk-card-primary">
<h3 class="uk-card-title">Nuxt.js + UIKIT</h3>
<button class="uk-button uk-button-default" title="Hello World" uk-tooltip>Hover</button>
<div class="uk-inline">
<button class="uk-button uk-button-default" type="button">Click</button>
<div uk-dropdown="mode: click" class="uk-dropdown">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</div>
</div>
<hr class="uk-divider-icon">
<nuxt-link to="/about">About page</nuxt-link>
</div>
</template>

View File

@ -0,0 +1,5 @@
import UIkit from 'uikit'
import Icons from 'uikit/dist/js/uikit-icons'
// loads the Icon plugin
UIkit.use(Icons);

View File

@ -0,0 +1,3 @@
# Vue-ChartJS with Nuxt.js
https://nuxtjs.org/examples

View File

@ -0,0 +1,8 @@
import { Bar } from 'vue-chartjs'
export default Bar.extend({
props: ['data', 'options'],
mounted () {
this.renderChart(this.data, this.options)
}
})

View File

@ -0,0 +1,8 @@
import { Doughnut } from 'vue-chartjs'
export default Doughnut.extend({
props: ['data', 'options'],
mounted () {
this.renderChart(this.data, this.options)
}
})

View File

@ -0,0 +1,36 @@
<template>
<div>
<ul>
<li><nuxt-link to="/">Activity</nuxt-link></li>
<li><nuxt-link to="/contributors">Contributors</nuxt-link></li>
</ul>
<nuxt/>
</div>
</template>
<style scoped>
* {
box-sizing: border-box;
}
ul {
margin: 0;
padding: 0;
list-style-type: none;
}
ul li {
display: inline-block;
float: left;
border: 1px #ddd solid;
}
ul li a {
display: inline-block;
width: 100%;
height: 100%;
padding: 10px;
color: #222;
text-decoration: none;
}
ul li a.nuxt-link-exact-active {
text-decoration: underline;
}
</style>

View File

@ -0,0 +1,15 @@
module.exports = {
head: {
title: 'Nuxt.js + Vue-ChartJS',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' }
]
},
build: {
vendor: ['axios', 'moment', 'chart.js', 'vue-chartjs']
},
env: {
githubToken: '42cdf9fd55abf41d24f34c0f8a4d9ada5f9e9b93'
}
}

View File

@ -0,0 +1,15 @@
{
"name": "vue-chartjs-nuxt",
"dependencies": {
"axios": "^0.16.2",
"chart.js": "^2.6.0",
"moment": "^2.18.1",
"nuxt": "latest",
"vue-chartjs": "^2.8.2"
},
"scripts": {
"dev": "nuxt",
"build": "nuxt build",
"start": "nuxt start"
}
}

View File

@ -0,0 +1,51 @@
<template>
<div class="doughnut-chart">
<doughnut-chart :data="doughnutChartData" :options="{ legend: { display: false }, maintainAspectRatio: false }"/>
</div>
</template>
<script>
import DoughnutChart from '~/components/doughnut-chart'
import axios from 'axios'
import moment from 'moment'
function getRandomColor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
export default {
async asyncData({ env }) {
const res = await axios.get(`https://api.github.com/repos/nuxt/nuxt.js/stats/contributors?access_token=${env.githubToken}`)
return {
doughnutChartData: {
labels: res.data.map((stat) => stat.author.login),
datasets: [
{
label: 'Nuxt.js Contributors',
backgroundColor: res.data.map(() => getRandomColor()),
data: res.data.map((stat) => 1)
}
]
}
}
},
components: {
DoughnutChart
}
}
</script>
<style scoped>
.doughnut-chart {
position: fixed;
left: 10%;
top: 10%;
width: 80%;
height: 80%;
}
</style>

View File

@ -0,0 +1,42 @@
<template>
<div class="bar-chart">
<bar-chart :data="barChartData" :options="{ maintainAspectRatio: false }"/>
</div>
</template>
<script>
import BarChart from '~/components/bar-chart'
import axios from 'axios'
import moment from 'moment'
export default {
async asyncData({ env }) {
const res = await axios.get(`https://api.github.com/repos/nuxt/nuxt.js/stats/commit_activity?access_token=${env.githubToken}`)
return {
barChartData: {
labels: res.data.map((stat) => moment(stat.week * 1000).format('GGGG[-W]WW')),
datasets: [
{
label: 'Nuxt.js Commit Activity',
backgroundColor: '#41b883',
data: res.data.map((stat) => stat.total)
}
]
}
}
},
components: {
BarChart
}
}
</script>
<style scoped>
.bar-chart {
position: fixed;
left: 10%;
top: 10%;
width: 80%;
height: 80%;
}
</style>

View File

@ -0,0 +1,3 @@
# Nuxt.js with Vuex persisted state (localStorage)
See https://github.com/robinvdvleuten/vuex-persistedstate

View File

@ -0,0 +1,6 @@
module.exports = {
/*
** We set `spa` mode to have only client-side rendering
*/
mode: 'spa'
}

View File

@ -0,0 +1,12 @@
{
"name": "nuxt-vuex-store",
"dependencies": {
"nuxt": "^1.0.0-rc6",
"vuex-persistedstate": "^2.0.0"
},
"scripts": {
"dev": "nuxt",
"build": "nuxt build",
"start": "nuxt start"
}
}

View File

@ -0,0 +1,22 @@
<template>
<div>
<p>{{ counter }}</p>
<p>
<button @click="increment">+</button>
<button @click="decrement">-</button>
</p>
</div>
</template>
<script>
import { mapState, mapMutations } from 'vuex'
export default {
computed: {
...mapState(['counter'])
},
methods: {
...mapMutations(['increment', 'decrement'])
}
}
</script>

View File

@ -0,0 +1,14 @@
import createPersistedState from 'vuex-persistedstate'
export const state = () => ({
counter: 0
})
export const mutations = {
increment: (state) => state.counter++,
decrement: (state) => state.counter--
}
export const plugins = [
createPersistedState()
]

View File

@ -0,0 +1,3 @@
# Hello World with Nuxt.js
https://nuxtjs.org/examples

View File

@ -0,0 +1,9 @@
module.exports = {
head: {
title: 'Nuxt-Cookies',
meta: [
{ content: 'width=device-width,initial-scale=1', name: 'viewport' }
]
},
plugins: ['~/plugins/cookies']
}

View File

@ -0,0 +1,13 @@
{
"name": "hello-nuxt",
"dependencies": {
"cookie": "^0.3.1",
"js-cookie": "^2.1.4",
"nuxt": "latest"
},
"scripts": {
"dev": "nuxt",
"build": "nuxt build",
"start": "nuxt start"
}
}

View File

@ -0,0 +1,74 @@
<template>
<div>
<h1>Cookies</h1>
<table>
<thead>
<tr>
<th>Key</th><th>Value</th><th></th>
</tr>
</thead>
<tbody>
<tr v-for="(value, key) in cookies">
<td>{{ key }}</td>
<td>{{ value }}</td>
<td><button @click="removeCookie(key)">Remove</button></td>
</tr>
</tbody>
</table>
<h2>Add a new cookie</h2>
<form @submit.prevent="addCookie">
<input type="text" v-model="cookie.key" placeholder="Key" class="key"/>:
<input type="text" v-model="cookie.value" placeholder="Value" class="value"/>
<button type="submit">Add</button>
</form>
</div>
</template>
<script>
import { cookies, refreshCookies } from '~/plugins/cookies'
import Cookies from 'js-cookie'
export default {
data() {
return {
cookies,
cookie: { key: '', value: '' }
}
},
methods: {
addCookie() {
if (!this.cookie.key || !this.cookie.value) return
Cookies.set(this.cookie.key.replace(/\s/g, '-'), this.cookie.value)
this.cookies = refreshCookies()
this.cookie.key = this.cookie.value = ''
},
removeCookie(key) {
Cookies.remove(key)
this.cookies = refreshCookies()
}
}
}
</script>
<style scoped>
table {
text-align: left;
}
th, td {
padding-right: 10px;
}
input.key {
width: 50px;
}
input.value {
width: 100px;
}
input, button {
border: 1px #ddd solid;
background: white;
padding: 5px;
}
button[type="submit"] {
margin-left: 5px;
}
</style>

View File

@ -0,0 +1,19 @@
import cookie from 'cookie'
export let cookies
// Called only on client-side
export const refreshCookies = () => {
cookies = cookie.parse(document.cookie)
return cookies
}
/*
** Executed by ~/.nuxt/index.js with context given
** This method can be asynchronous
*/
export default ({ isServer, req }) => {
// We update the cookies variable
// So we can read it into our page with: import { cookies } from '~/plugins/cookies.js'
cookies = cookie.parse(isServer ? req.headers.cookie : document.cookie)
}

View File

@ -457,7 +457,7 @@ function addHotReload ($component, depth) {
<%= (loading ? 'this.$loading.finish && this.$loading.finish()' : '') %>
router.push(path)
}
let context = getContext({ route: router.currentRoute<%= (store ? ', store' : '') %>, isClient: true, hotReload: true, next: next.bind(this), error: this.error }, app)
let context = getContext({ route: router.currentRoute<%= (store ? ', store' : '') %>, isClient: true, isHMR: true, next: next.bind(this), error: this.error }, app)
<%= (loading ? 'this.$loading.start && this.$loading.start()' : '') %>
callMiddleware.call(this, Components, context)
.then(() => {

View File

@ -0,0 +1,28 @@
/*
** From https://github.com/egoist/vue-no-ssr
** With the authorization of @egoist
*/
export default {
name: 'no-ssr',
props: ['placeholder'],
data () {
return {
canRender: false
}
},
mounted () {
this.canRender = true
},
render (h) {
if (this.canRender) {
if (
process.env.NODE_ENV === 'development' &&
this.$slots.default.length > 1
) {
throw new Error('<no-ssr> You cannot use multiple child components')
}
return this.$slots.default[0]
}
return h('div', { class: { 'no-ssr-placeholder': true } }, this.placeholder)
}
}

View File

@ -2,6 +2,7 @@ import 'es6-promise/auto'
import Vue from 'vue'
import Meta from 'vue-meta'
import { createRouter } from './router.js'
import NoSSR from './components/no-ssr.js'
import NuxtChild from './components/nuxt-child.js'
import NuxtLink from './components/nuxt-link.js'
import NuxtError from '<%= components.ErrorPage ? components.ErrorPage : "./components/nuxt-error.vue" %>'
@ -12,6 +13,9 @@ import { getContext, getLocation } from './utils'
<% plugins.forEach(plugin => { %>import <%= plugin.name %> from '<%= plugin.name %>'
<% }) %>
// Component: <no-ssr>
Vue.component(NoSSR.name, NoSSR)
// Component: <nuxt-child>
Vue.component(NuxtChild.name, NuxtChild)
@ -41,21 +45,6 @@ async function createApp (ssrContext) {
<% if (store) { %>const store = createStore()<% } %>
if (process.server && ssrContext && ssrContext.url) {
await new Promise((resolve, reject) => {
router.push(ssrContext.url, resolve, reject)
})
}
<% if (store) { %>
if (process.browser) {
// Replace store state before calling plugins
if (window.__NUXT__ && window.__NUXT__.state) {
store.replaceState(window.__NUXT__.state)
}
}
<% } %>
// Create Root instance
// here we inject the router and store to all child components,
// making them available everywhere as `this.$router` and `this.$store`.
@ -99,8 +88,10 @@ async function createApp (ssrContext) {
}
const next = ssrContext ? ssrContext.next : location => app.router.push(location)
let route = router.currentRoute
if (!ssrContext) {
let route
if (ssrContext) {
route = router.resolve(ssrContext.url).route
} else {
const path = getLocation(router.options.base)
route = router.resolve(path).route
}
@ -123,6 +114,21 @@ async function createApp (ssrContext) {
if (typeof <%= plugin.name %> === 'function') await <%= plugin.name %>(ctx)<% }) %>
}<% } %>
<% if (store) { %>
if (process.browser) {
// Replace store state before calling plugins
if (window.__NUXT__ && window.__NUXT__.state) {
store.replaceState(window.__NUXT__.state)
}
}
<% } %>
if (process.server && ssrContext && ssrContext.url) {
await new Promise((resolve, reject) => {
router.push(ssrContext.url, resolve, reject)
})
}
return {
app,
router,

View File

@ -75,14 +75,14 @@ export function getContext (context, app) {
isClient: !!context.isClient,
isStatic: process.static,
isDev: <%= isDev %>,
isHMR: context.isHMR || false,
app: app,
<%= (store ? 'store: context.store,' : '') %>
route: (context.to ? context.to : context.route),
payload: context.payload,
error: context.error,
base: '<%= router.base %>',
env: <%= JSON.stringify(env) %>,
hotReload: context.hotReload || false
env: <%= JSON.stringify(env) %>
}
const next = context.next
ctx.params = ctx.route.params || {}

View File

@ -195,6 +195,7 @@ export default class Builder extends Tapable {
'components/nuxt-child.js',
'components/nuxt-link.js',
'components/nuxt.vue',
'components/no-ssr.js',
'views/app.template.html',
'views/error.html'
]
@ -259,7 +260,11 @@ export default class Builder extends Tapable {
// router.extendRoutes method
if (typeof this.options.router.extendRoutes === 'function') {
// let the user extend the routes
this.options.router.extendRoutes(templateVars.router.routes, r)
const extendedRoutes = this.options.router.extendRoutes(templateVars.router.routes, r)
// Only overwrite routes when something is returned for backwards compatibility
if (extendedRoutes !== undefined) {
templateVars.router.routes = extendedRoutes
}
}
// Make routes accessible for other modules and webpack configs
@ -365,8 +370,9 @@ export default class Builder extends Tapable {
compilersOptions.push(clientConfig)
// Server
const serverConfig = serverWebpackConfig.call(this)
let serverConfig = null
if (this.options.build.ssr) {
serverConfig = serverWebpackConfig.call(this)
compilersOptions.push(serverConfig)
}
@ -380,7 +386,7 @@ export default class Builder extends Tapable {
}
// Server config
if (!serverConfig.resolve.alias[p.name]) {
if (serverConfig && !serverConfig.resolve.alias[p.name]) {
// Alias to noop for ssr:false plugins
serverConfig.resolve.alias[p.name] = p.ssr ? src : './empty.js'
}

View File

@ -128,6 +128,7 @@ export default function webpackClientConfig () {
new webpack.DefinePlugin(Object.assign(env, {
'process.env.NODE_ENV': JSON.stringify(env.NODE_ENV || (this.options.dev ? 'development' : 'production')),
'process.env.VUE_ENV': JSON.stringify('client'),
'process.mode': JSON.stringify(this.options.mode),
'process.browser': true,
'process.server': false,
'process.static': this.isStatic
@ -220,10 +221,14 @@ export default function webpackClientConfig () {
// Extend config
if (typeof this.options.build.extend === 'function') {
this.options.build.extend.call(this, config, {
const extendedConfig = this.options.build.extend.call(this, config, {
dev: this.options.dev,
isClient: true
})
// Only overwrite config when something is returned for backwards compatibility
if (extendedConfig !== undefined) {
config = extendedConfig
}
}
return config

View File

@ -41,6 +41,7 @@ export default function webpackServerConfig () {
new webpack.DefinePlugin(Object.assign(env, {
'process.env.NODE_ENV': JSON.stringify(env.NODE_ENV || (this.options.dev ? 'development' : 'production')),
'process.env.VUE_ENV': JSON.stringify('server'),
'process.mode': JSON.stringify(this.options.mode),
'process.browser': false,
'process.server': true,
'process.static': this.isStatic
@ -74,10 +75,14 @@ export default function webpackServerConfig () {
// Extend config
if (typeof this.options.build.extend === 'function') {
this.options.build.extend.call(this, config, {
const extendedConfig = this.options.build.extend.call(this, config, {
dev: this.options.dev,
isServer: true
})
// Only overwrite config when something is returned for backwards compatibility
if (extendedConfig !== undefined) {
config = extendedConfig
}
}
return config

View File

@ -35,7 +35,6 @@ export default function styleLoader (ext, loaders = [], isVueLoader = false) {
minimize: true,
importLoaders: 1,
sourceMap: this.options.build.cssSourceMap,
root: '~', // https://github.com/webpack/loader-utils#root-relative-urls
alias: {
'/static': join(this.options.srcDir, 'static'),
'/assets': join(this.options.srcDir, 'assets')

View File

@ -73,10 +73,20 @@ export function chainFn (base, fn) {
return
}
return function () {
if (base instanceof Function) {
base.apply(this, arguments)
if (typeof base !== 'function') {
return fn.apply(this, arguments)
}
fn.apply(this, arguments)
let baseResult = base.apply(this, arguments)
// Allow function to mutate the first argument instead of returning the result
if (baseResult === undefined) {
baseResult = arguments[0]
}
let fnResult = fn.call(this, baseResult, ...Array.prototype.slice.call(arguments, 1))
// Return mutated argument if no result was returned
if (fnResult === undefined) {
return baseResult
}
return fnResult
}
}

View File

@ -174,6 +174,10 @@ export default class Renderer extends Tapable {
if (typeof m === 'string') {
m = require(this.nuxt.resolvePath(m))
}
// Handler
if (m && typeof m.handler === 'string') {
m.handler = require(this.nuxt.resolvePath(m.handler))
}
// Use middleware
if (m instanceof Function) {
this.app.use(m)
@ -315,7 +319,7 @@ export default class Renderer extends Tapable {
const sendResponse = (content, type = 'text/html') => {
// Set Headers
res.statusCode = err.statusCode
res.statusMessage = this.options.debug ? err.message : err.name
res.statusMessage = err.name
res.setHeader('Content-Type', type + '; charset=utf-8')
res.setHeader('Content-Length', Buffer.byteLength(content))

View File

@ -76,7 +76,7 @@
"clone": "^2.1.1",
"compression": "^1.7.0",
"connect": "^3.6.3",
"css-loader": "^0.28.5",
"css-loader": "https://github.com/nuxt/css-loader.git",
"debug": "^3.0.0",
"es6-promise": "^4.1.1",
"etag": "^1.8.0",

View File

@ -148,6 +148,17 @@ test('/redirect2', async t => {
t.true(output.stderr.length === 0)
})
test('/no-ssr', async t => {
const { html } = await nuxt.renderRoute('/no-ssr')
t.true(html.includes('<div class="no-ssr-placeholder">&lt;p&gt;Loading...&lt;/p&gt;</div>'))
})
test('/no-ssr (clien-side)', async t => {
const window = await nuxt.renderAndGetWindow(url('/no-ssr'))
const html = window.document.body.innerHTML
t.true(html.includes('<h1>Displayed only on client-side</h1>'))
})
test('ETag Header', async t => {
const { headers: { etag } } = await rp(url('/stateless'), { resolveWithFullResponse: true })
// Validate etag

5
test/fixtures/basic/pages/no-ssr.vue vendored Normal file
View File

@ -0,0 +1,5 @@
<template>
<no-ssr placeholder="<p>Loading...</p>">
<h1>Displayed only on client-side</h1>
</no-ssr>
</template>

View File

@ -15,11 +15,13 @@ module.exports = function basicModule (options, resolve) {
// Extend build again
this.extendBuild((config, { isClient, isServer }) => {
// Do nothing!
return config
})
// Extend routes
this.extendRoutes((routes, resolve) => {
// Do nothing!
return routes
})
// Require same module twice

View File

@ -4,11 +4,14 @@ module.exports = {
base: '/test/',
middleware: 'noop',
extendRoutes (routes) {
routes.push({
name: 'about-bis',
path: '/about-bis',
component: '~/pages/about.vue'
})
return [
...routes,
{
name: 'about-bis',
path: '/about-bis',
component: '~/pages/about.vue'
}
]
}
},
transition: 'test',
@ -31,7 +34,9 @@ module.exports = {
generateStatsFile: true
},
extend (config, options) {
config.devtool = 'nosources-source-map'
return Object.assign({}, config, {
devtool: 'nosources-source-map'
})
}
},
css: [

View File

@ -94,3 +94,52 @@ test('promisifyRoute (fn(cb) with result)', t => {
t.is(res, array)
})
})
test('chainFn (mutate, mutate)', t => {
// Pass more than one argument to test that they're actually taken into account
const firstFn = function (obj, count) {
obj.foo = count + 1
}
const secondFn = function (obj, count) {
obj.bar = count + 2
}
const chainedFn = Utils.chainFn(firstFn, secondFn)
const expectedResult = { foo: 11, bar: 12 }
t.deepEqual(chainedFn({}, 10), expectedResult)
})
test('chainFn (mutate, return)', t => {
const firstFn = function (obj, count) {
obj.foo = count + 1
}
const secondFn = function (obj, count) {
return Object.assign({}, obj, { bar: count + 2 })
}
const chainedFn = Utils.chainFn(firstFn, secondFn)
const expectedResult = { foo: 11, bar: 12 }
t.deepEqual(chainedFn({}, 10), expectedResult)
})
test('chainFn (return, mutate)', t => {
const firstFn = function (obj, count) {
return Object.assign({}, obj, { foo: count + 1 })
}
const secondFn = function (obj, count) {
obj.bar = count + 2
}
const chainedFn = Utils.chainFn(firstFn, secondFn)
const expectedResult = { foo: 11, bar: 12 }
t.deepEqual(chainedFn({}, 10), expectedResult)
})
test('chainFn (return, return)', t => {
const firstFn = function (obj, count) {
return Object.assign({}, obj, { foo: count + 1 })
}
const secondFn = function (obj, count) {
return Object.assign({}, obj, { bar: count + 2 })
}
const chainedFn = Utils.chainFn(firstFn, secondFn)
const expectedResult = { foo: 11, bar: 12 }
t.deepEqual(chainedFn({}, 10), expectedResult)
})

358
yarn.lock
View File

@ -101,18 +101,6 @@ acorn@^5.0.0, acorn@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75"
adjust-sourcemap-loader@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-1.1.0.tgz#412d92404eb61e4113635012cba53a33d008e0e2"
dependencies:
assert "^1.3.0"
camelcase "^1.2.1"
loader-utils "^1.0.2"
lodash.assign "^4.0.1"
lodash.defaults "^3.1.2"
object-path "^0.9.2"
regex-parser "^2.2.1"
ajv-keywords@^1.0.0:
version "1.5.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
@ -299,7 +287,7 @@ assert-plus@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
assert@^1.1.1, assert@^1.3.0:
assert@^1.1.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
dependencies:
@ -323,10 +311,6 @@ asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
atob@~1.1.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/atob/-/atob-1.1.3.tgz#95f13629b12c3a51a5d215abdce2aa9f32f80773"
auto-bind@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-1.1.0.tgz#93b864dc7ee01a326281775d5c75ca0a751e5961"
@ -464,7 +448,7 @@ babel-code-frame@^6.11.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
esutils "^2.0.2"
js-tokens "^3.0.2"
babel-core@^6.17.0, babel-core@^6.24.1, babel-core@^6.26.0:
babel-core@^6.17.0, babel-core@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8"
dependencies:
@ -544,10 +528,6 @@ babel-helper-define-map@^6.24.1:
babel-types "^6.26.0"
lodash "^4.17.4"
babel-helper-evaluate-path@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.2.0.tgz#0bb2eb01996c0cef53c5e8405e999fe4a0244c08"
babel-helper-explode-assignable-expression@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa"
@ -565,10 +545,6 @@ babel-helper-explode-class@^6.24.1:
babel-traverse "^6.24.1"
babel-types "^6.24.1"
babel-helper-flip-expressions@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.2.0.tgz#160d2090a3d9f9c64a750905321a0bc218f884ec"
babel-helper-function-name@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9"
@ -593,18 +569,6 @@ babel-helper-hoist-variables@^6.24.1:
babel-runtime "^6.22.0"
babel-types "^6.24.1"
babel-helper-is-nodes-equiv@^0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz#34e9b300b1479ddd98ec77ea0bbe9342dfe39684"
babel-helper-is-void-0@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-helper-is-void-0/-/babel-helper-is-void-0-0.2.0.tgz#6ed0ada8a9b1c5b6e88af6b47c1b3b5c080860eb"
babel-helper-mark-eval-scopes@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.2.0.tgz#7648aaf2ec92aae9b09a20ad91e8df5e1fcc94b2"
babel-helper-optimise-call-expression@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257"
@ -630,10 +594,6 @@ babel-helper-remap-async-to-generator@^6.24.1:
babel-traverse "^6.24.1"
babel-types "^6.24.1"
babel-helper-remove-or-void@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.2.0.tgz#8e46ad5b30560d57d7510b3fd93f332ee7c67386"
babel-helper-replace-supers@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a"
@ -645,10 +605,6 @@ babel-helper-replace-supers@^6.24.1:
babel-traverse "^6.24.1"
babel-types "^6.24.1"
babel-helper-to-multiple-sequence-expressions@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.2.0.tgz#d1a419634c6cb301f27858c659167cfee0a9d318"
babel-helper-vue-jsx-merge-props@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.2.tgz#aceb1c373588279e2755ea1cfd35c22394fd33f8"
@ -674,14 +630,6 @@ babel-messages@^6.23.0:
dependencies:
babel-runtime "^6.22.0"
babel-minify-webpack-plugin@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-minify-webpack-plugin/-/babel-minify-webpack-plugin-0.2.0.tgz#ef9694d11a1b8ab8f3204d89f5c9278dd28fc2a9"
dependencies:
babel-core "^6.24.1"
babel-preset-minify "^0.2.0"
webpack-sources "^1.0.1"
babel-plugin-array-includes@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/babel-plugin-array-includes/-/babel-plugin-array-includes-2.0.3.tgz#cf5452e81c7b803fb7959f1045ac88e2ec28ff76"
@ -718,71 +666,6 @@ babel-plugin-istanbul@^4.1.4:
istanbul-lib-instrument "^1.7.2"
test-exclude "^4.1.1"
babel-plugin-minify-builtins@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.2.0.tgz#317f824b0907210b6348671bb040ca072e2e0c82"
dependencies:
babel-helper-evaluate-path "^0.2.0"
babel-plugin-minify-constant-folding@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.2.0.tgz#8c70b528b2eb7c13e94d95c8789077d4cdbc3970"
dependencies:
babel-helper-evaluate-path "^0.2.0"
babel-plugin-minify-dead-code-elimination@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.2.0.tgz#e8025ee10a1e5e4f202633a6928ce892c33747e3"
dependencies:
babel-helper-evaluate-path "^0.2.0"
babel-helper-mark-eval-scopes "^0.2.0"
babel-helper-remove-or-void "^0.2.0"
lodash.some "^4.6.0"
babel-plugin-minify-flip-comparisons@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.2.0.tgz#0c9c8e93155c8f09dedad8118b634c259f709ef5"
dependencies:
babel-helper-is-void-0 "^0.2.0"
babel-plugin-minify-guarded-expressions@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.2.0.tgz#8a8c950040fce3e258a12e6eb21eab94ad7235ab"
dependencies:
babel-helper-flip-expressions "^0.2.0"
babel-plugin-minify-infinity@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.2.0.tgz#30960c615ddbc657c045bb00a1d8eb4af257cf03"
babel-plugin-minify-mangle-names@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.2.0.tgz#719892297ff0106a6ec1a4b0fc062f1f8b6a8529"
dependencies:
babel-helper-mark-eval-scopes "^0.2.0"
babel-plugin-minify-numeric-literals@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.2.0.tgz#5746e851700167a380c05e93f289a7070459a0d1"
babel-plugin-minify-replace@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.2.0.tgz#3c1f06bc4e6d3e301eacb763edc1be611efc39b0"
babel-plugin-minify-simplify@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.2.0.tgz#21ceec4857100c5476d7cef121f351156e5c9bc0"
dependencies:
babel-helper-flip-expressions "^0.2.0"
babel-helper-is-nodes-equiv "^0.0.1"
babel-helper-to-multiple-sequence-expressions "^0.2.0"
babel-plugin-minify-type-constructors@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.2.0.tgz#7f3b6458be0863cfd59e9985bed6d134aa7a2e17"
dependencies:
babel-helper-is-void-0 "^0.2.0"
babel-plugin-syntax-async-functions@^6.8.0:
version "6.13.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95"
@ -1030,22 +913,6 @@ babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-e
babel-plugin-syntax-exponentiation-operator "^6.8.0"
babel-runtime "^6.22.0"
babel-plugin-transform-inline-consecutive-adds@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.2.0.tgz#15dae78921057f4004f8eafd79e15ddc5f12f426"
babel-plugin-transform-member-expression-literals@^6.8.5:
version "6.8.5"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.8.5.tgz#e06ae305cf48d819822e93a70d79269f04d89eec"
babel-plugin-transform-merge-sibling-variables@^6.8.6:
version "6.8.6"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.8.6.tgz#6d21efa5ee4981f71657fae716f9594bb2622aef"
babel-plugin-transform-minify-booleans@^6.8.3:
version "6.8.3"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.8.3.tgz#5906ed776d3718250519abf1bace44b0b613ddf9"
babel-plugin-transform-object-rest-spread@^6.22.0, babel-plugin-transform-object-rest-spread@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06"
@ -1053,46 +920,18 @@ babel-plugin-transform-object-rest-spread@^6.22.0, babel-plugin-transform-object
babel-plugin-syntax-object-rest-spread "^6.8.0"
babel-runtime "^6.26.0"
babel-plugin-transform-property-literals@^6.8.5:
version "6.8.5"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.8.5.tgz#67ed5930b34805443452c8b9690c7ebe1e206c40"
dependencies:
esutils "^2.0.2"
babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.24.1:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f"
dependencies:
regenerator-transform "^0.10.0"
babel-plugin-transform-regexp-constructors@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.2.0.tgz#6aa5dd0acc515db4be929bbcec4ed4c946c534a3"
babel-plugin-transform-remove-console@^6.8.5:
version "6.8.5"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.8.5.tgz#fde9d2d3d725530b0fadd8d31078402410386810"
babel-plugin-transform-remove-debugger@^6.8.5:
version "6.8.5"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.8.5.tgz#809584d412bf918f071fdf41e1fdb15ea89cdcd5"
babel-plugin-transform-remove-undefined@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.2.0.tgz#94f052062054c707e8d094acefe79416b63452b1"
dependencies:
babel-helper-evaluate-path "^0.2.0"
babel-plugin-transform-runtime@^6.15.0, babel-plugin-transform-runtime@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee"
dependencies:
babel-runtime "^6.22.0"
babel-plugin-transform-simplify-comparison-operators@^6.8.5:
version "6.8.5"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.8.5.tgz#a838786baf40cc33a93b95ae09e05591227e43bf"
babel-plugin-transform-strict-mode@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758"
@ -1100,10 +939,6 @@ babel-plugin-transform-strict-mode@^6.24.1:
babel-runtime "^6.22.0"
babel-types "^6.24.1"
babel-plugin-transform-undefined-to-void@^6.8.3:
version "6.8.3"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.8.3.tgz#fc52707f6ee1ddc71bb91b0d314fbefdeef9beb4"
babel-plugin-transform-vue-jsx@^3.1.2:
version "3.5.0"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-3.5.0.tgz#6b1ad29351ad753919403675f0bf8b2a43e17671"
@ -1190,34 +1025,6 @@ babel-preset-es2015@^6.24.1, babel-preset-es2015@^6.3.13:
babel-plugin-transform-es2015-unicode-regex "^6.24.1"
babel-plugin-transform-regenerator "^6.24.1"
babel-preset-minify@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.2.0.tgz#006566552d9b83834472273f306c0131062a0acc"
dependencies:
babel-plugin-minify-builtins "^0.2.0"
babel-plugin-minify-constant-folding "^0.2.0"
babel-plugin-minify-dead-code-elimination "^0.2.0"
babel-plugin-minify-flip-comparisons "^0.2.0"
babel-plugin-minify-guarded-expressions "^0.2.0"
babel-plugin-minify-infinity "^0.2.0"
babel-plugin-minify-mangle-names "^0.2.0"
babel-plugin-minify-numeric-literals "^0.2.0"
babel-plugin-minify-replace "^0.2.0"
babel-plugin-minify-simplify "^0.2.0"
babel-plugin-minify-type-constructors "^0.2.0"
babel-plugin-transform-inline-consecutive-adds "^0.2.0"
babel-plugin-transform-member-expression-literals "^6.8.5"
babel-plugin-transform-merge-sibling-variables "^6.8.6"
babel-plugin-transform-minify-booleans "^6.8.3"
babel-plugin-transform-property-literals "^6.8.5"
babel-plugin-transform-regexp-constructors "^0.2.0"
babel-plugin-transform-remove-console "^6.8.5"
babel-plugin-transform-remove-debugger "^6.8.5"
babel-plugin-transform-remove-undefined "^0.2.0"
babel-plugin-transform-simplify-comparison-operators "^6.8.5"
babel-plugin-transform-undefined-to-void "^6.8.3"
lodash.isplainobject "^4.0.6"
babel-preset-stage-2@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1"
@ -1545,7 +1352,7 @@ camelcase-keys@^2.0.0:
camelcase "^2.0.0"
map-obj "^1.0.0"
camelcase@^1.0.2, camelcase@^1.2.1:
camelcase@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
@ -1938,11 +1745,7 @@ content-type@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed"
convert-source-map@^0.3.3:
version "0.3.5"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190"
convert-source-map@^1.1.1, convert-source-map@^1.2.0, convert-source-map@^1.3.0, convert-source-map@^1.5.0:
convert-source-map@^1.2.0, convert-source-map@^1.3.0, convert-source-map@^1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5"
@ -2091,9 +1894,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-loader@^0.28.5:
"css-loader@https://github.com/nuxt/css-loader.git":
version "0.28.5"
resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.5.tgz#dd02bb91b94545710212ef7f6aaa66663113d754"
resolved "https://github.com/nuxt/css-loader.git#d29deeeddd4bf6684fa24c65ed5fc280d080456f"
dependencies:
babel-code-frame "^6.11.0"
css-selector-tokenizer "^0.7.0"
@ -2135,15 +1938,6 @@ css-what@2.1:
version "2.1.0"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
css@^2.0.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/css/-/css-2.2.1.tgz#73a4c81de85db664d4ee674f7d47085e3b2d55dc"
dependencies:
inherits "^2.0.1"
source-map "^0.1.38"
source-map-resolve "^0.3.0"
urix "^0.1.0"
cssesc@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
@ -4039,7 +3833,7 @@ loader-utils@^0.2.15, loader-utils@^0.2.16:
json5 "^0.5.0"
object-assign "^4.0.1"
loader-utils@^1.0.0, loader-utils@^1.0.2, loader-utils@^1.1.0:
loader-utils@^1.0.2, loader-utils@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
dependencies:
@ -4054,53 +3848,10 @@ locate-path@^2.0.0:
p-locate "^2.0.0"
path-exists "^3.0.0"
lodash._baseassign@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
dependencies:
lodash._basecopy "^3.0.0"
lodash.keys "^3.0.0"
lodash._basecopy@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
lodash._bindcallback@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
lodash._createassigner@^3.0.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11"
dependencies:
lodash._bindcallback "^3.0.0"
lodash._isiterateecall "^3.0.0"
lodash.restparam "^3.0.0"
lodash._getnative@^3.0.0:
version "3.9.1"
resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
lodash._isiterateecall@^3.0.0:
version "3.0.9"
resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
lodash._reinterpolate@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
lodash.assign@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa"
dependencies:
lodash._baseassign "^3.0.0"
lodash._createassigner "^3.0.0"
lodash.keys "^3.0.0"
lodash.assign@^4.0.1:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
lodash.camelcase@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
@ -4121,17 +3872,6 @@ lodash.debounce@^4.0.3:
version "4.0.8"
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
lodash.defaults@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-3.1.2.tgz#c7308b18dbf8bc9372d701a73493c61192bd2e2c"
dependencies:
lodash.assign "^3.0.0"
lodash.restparam "^3.0.0"
lodash.defaults@^4.0.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
lodash.difference@^4.3.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c"
@ -4144,14 +3884,6 @@ lodash.flattendeep@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2"
lodash.isarguments@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
lodash.isarray@^3.0.0:
version "3.0.4"
resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
lodash.isequal@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
@ -4160,14 +3892,6 @@ lodash.isplainobject@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
lodash.keys@^3.0.0:
version "3.1.2"
resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
dependencies:
lodash._getnative "^3.0.0"
lodash.isarguments "^3.0.0"
lodash.isarray "^3.0.0"
lodash.memoize@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
@ -4176,14 +3900,6 @@ lodash.merge@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5"
lodash.restparam@^3.0.0:
version "3.6.1"
resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
lodash.some@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d"
lodash.sortby@^4.7.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
@ -4638,10 +4354,6 @@ object-keys@^1.0.10, object-keys@^1.0.8:
version "1.0.11"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
object-path@^0.9.2:
version "0.9.2"
resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5"
object.assign@^4.0.1:
version "4.0.4"
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc"
@ -5786,10 +5498,6 @@ regex-cache@^0.4.2:
is-equal-shallow "^0.1.3"
is-primitive "^2.0.0"
regex-parser@^2.2.1:
version "2.2.7"
resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.7.tgz#bd090e09181849acc45457e765f7be2a63f50ef1"
regexpu-core@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
@ -5953,24 +5661,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-loader@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-2.1.0.tgz#27c95cc16a4353923fdbdc2dbaf5eef22232c477"
dependencies:
adjust-sourcemap-loader "^1.1.0"
camelcase "^4.0.0"
convert-source-map "^1.1.1"
loader-utils "^1.0.0"
lodash.defaults "^4.0.0"
rework "^1.0.1"
rework-visit "^1.0.0"
source-map "^0.5.6"
urix "^0.1.0"
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:
version "1.1.7"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
@ -5988,17 +5678,6 @@ restore-cursor@^2.0.0:
onetime "^2.0.0"
signal-exit "^3.0.2"
rework-visit@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a"
rework@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7"
dependencies:
convert-source-map "^0.3.3"
css "^2.0.0"
rgb-hex@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/rgb-hex/-/rgb-hex-2.1.0.tgz#c773c5fe2268a25578d92539a82a7a5ce53beda6"
@ -6254,35 +5933,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.3.0:
version "0.3.1"
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.3.1.tgz#610f6122a445b8dd51535a2a71b783dfc1248761"
dependencies:
atob "~1.1.0"
resolve-url "~0.2.1"
source-map-url "~0.3.0"
urix "~0.1.0"
source-map-support@^0.4.0, source-map-support@^0.4.15, source-map-support@^0.4.16:
version "0.4.16"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.16.tgz#16fecf98212467d017d586a2af68d628b9421cd8"
dependencies:
source-map "^0.5.6"
source-map-url@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.3.0.tgz#7ecaf13b57bcd09da8a40c5d269db33799d4aaf9"
source-map@0.5.6, source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3:
version "0.5.6"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
source-map@^0.1.38:
version "0.1.43"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
dependencies:
amdefine ">=0.0.4"
source-map@^0.4.4:
version "0.4.4"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
@ -6786,10 +6446,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, urix@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
url-loader@^0.5.9:
version "0.5.9"
resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.9.tgz#cc8fea82c7b906e7777019250869e569e995c295"