1
0
Fork 0
mirror of https://github.com/terribleplan/next.js.git synced 2024-01-19 02:48:18 +00:00

Merge branch 'master' into v3-beta

This commit is contained in:
Guillermo Rauch 2017-06-01 18:30:57 -07:00
commit 850a931e88
45 changed files with 940 additions and 372 deletions

View file

@ -30,7 +30,16 @@ export default () => {
return return
} }
const { err } = Router.components[route] || {} const { err, Component } = Router.components[route] || {}
if (!Component) {
// This only happens when we create a new page without a default export.
// If you removed a default export from a exising viewing page, this has no effect.
console.log(`Hard reloading due to no default component in page: ${route}`)
window.location.reload()
return
}
if (err) { if (err) {
// reload to recover from runtime errors // reload to recover from runtime errors
Router.reload(route) Router.reload(route)

View file

@ -19,7 +19,7 @@ export default ({ children, title = 'This is the default title' }) => (
{ children } { children }
<footer> <footer>
I`m here to stay {'I`m here to stay'}
</footer> </footer>
</div> </div>
) )

View file

@ -3,8 +3,8 @@
"next/babel" "next/babel"
], ],
"plugins": [ "plugins": [
["wrap-in-js", { ["import", {
"extensions": ["css$"] "libraryName": "antd"
}] }]
] ]
} }

View file

@ -0,0 +1,29 @@
[![Deploy to now](https://deploy.now.sh/static/button.svg)](https://deploy.now.sh/?repo=https://github.com/zeit/next.js/tree/master/examples/with-ant-design)
# Ant Design example
## How to use
Download the example [or clone the repo](https://github.com/zeit/next.js):
```bash
curl https://codeload.github.com/zeit/next.js/tar.gz/master | tar -xz --strip=2 next.js-master/examples/with-ant-design
cd with-ant-design
```
Install it and run:
```bash
npm install
npm run dev
```
Deploy it to the cloud with [now](https://zeit.co/now) ([download](https://zeit.co/download))
```bash
now
```
## The idea behind the example
This example shows how to use Next.js along with [Ant Design of React](http://ant.design). This is intended to show the integration of this UI toolkit with the Framework.

View file

@ -0,0 +1,18 @@
{
"name": "with-ant-design",
"version": "1.0.0",
"scripts": {
"dev": "next",
"build": "next build",
"start": "next start"
},
"dependencies": {
"antd": "^2.10.2",
"babel-plugin-import": "^1.1.1",
"next": "latest",
"react": "^15.5.4",
"react-dom": "^15.5.4"
},
"author": "",
"license": "ISC"
}

View file

@ -0,0 +1,74 @@
import Head from 'next/head'
import { Form, Select, InputNumber, DatePicker, Switch, Slider, Button, LocaleProvider } from 'antd'
import enUS from 'antd/lib/locale-provider/en_US'
const FormItem = Form.Item
const Option = Select.Option
export default () => (
<LocaleProvider locale={enUS}>
<div style={{ marginTop: 100 }}>
<Head>
<link rel='stylesheet' href='//cdnjs.cloudflare.com/ajax/libs/antd/2.9.3/antd.min.css' />
</Head>
<Form layout='horizontal'>
<FormItem
label='Input Number'
labelCol={{ span: 8 }}
wrapperCol={{ span: 8 }}
>
<InputNumber size='large' min={1} max={10} style={{ width: 100 }} defaultValue={3} name='inputNumber' />
<a href='#'>Link</a>
</FormItem>
<FormItem
label='Switch'
labelCol={{ span: 8 }}
wrapperCol={{ span: 8 }}
>
<Switch defaultChecked name='switch' />
</FormItem>
<FormItem
label='Slider'
labelCol={{ span: 8 }}
wrapperCol={{ span: 8 }}
>
<Slider defaultValue={70} />
</FormItem>
<FormItem
label='Select'
labelCol={{ span: 8 }}
wrapperCol={{ span: 8 }}
>
<Select size='large' defaultValue='lucy' style={{ width: 192 }} name='select'>
<Option value='jack'>jack</Option>
<Option value='lucy'>lucy</Option>
<Option value='disabled' disabled>disabled</Option>
<Option value='yiminghe'>yiminghe</Option>
</Select>
</FormItem>
<FormItem
label='DatePicker'
labelCol={{ span: 8 }}
wrapperCol={{ span: 8 }}
>
<DatePicker name='startDate' />
</FormItem>
<FormItem
style={{ marginTop: 48 }}
wrapperCol={{ span: 8, offset: 8 }}
>
<Button size='large' type='primary' htmlType='submit'>
OK
</Button>
<Button size='large' style={{ marginLeft: 8 }}>
Cancel
</Button>
</FormItem>
</Form>
</div>
</LocaleProvider>
)

View file

@ -0,0 +1,13 @@
{
"presets": [
"next/babel"
],
"plugins": [
[
"import",
{
"libraryName": "antd-mobile"
}
]
]
}

View file

@ -0,0 +1,28 @@
[![Deploy to now](https://deploy.now.sh/static/button.svg)](https://deploy.now.sh/?repo=https://github.com/zeit/next.js/tree/master/examples/with-material-ui)
# Ant Design Mobile example
## How to use
Download the example [or clone the repo](https://github.com/zeit/next.js):
```bash
curl https://codeload.github.com/zeit/next.js/tar.gz/master | tar -xz --strip=2 next.js-master/examples/with-antd-mobile
cd with-antd-mobile
```
Install it and run:
```bash
npm install
npm run dev
```
Deploy it to the cloud with [now](https://zeit.co/now) ([download](https://zeit.co/download))
```bash
now
```
## The idea behind the example
This example features how you use [antd-mobile](https://github.com/ant-design/ant-design-mobile) (Ant Design Mobile FrontEnd Framwork) with Next.js.

View file

@ -0,0 +1,16 @@
import React, { Component } from 'react'
import { LocaleProvider } from 'antd-mobile'
import enUS from 'antd-mobile/lib/locale-provider/en_US'
export default class Layout extends Component {
render () {
const { language, children } = this.props
const locale = language.substr(0, 2) === 'en' ? enUS : undefined
return (
<LocaleProvider locale={locale}>
{children}
</LocaleProvider>
)
}
}

View file

@ -0,0 +1,44 @@
import React, { Component } from 'react'
import Router from 'next/router'
import { TabBar, Icon } from 'antd-mobile'
export default class MenuBar extends Component {
render () {
const {
pathname,
children
} = this.props
return (
<TabBar>
{tabBarData.map(({ title, icon, selectedIcon, link, dot, component: Component }) => (
<TabBar.Item
key={link}
title={title}
icon={<Icon type={icon} />}
selectedIcon={<Icon type={selectedIcon} />}
selected={pathname === link}
onPress={() => Router.push(link)}
>
{children}
</TabBar.Item>
))}
</TabBar>
)
}
}
const tabBarData = [
{
title: 'Home',
icon: 'koubei-o',
selectedIcon: 'koubei',
link: '/home'
},
{
title: 'Trick',
icon: 'check-circle-o',
selectedIcon: 'check-circle',
link: '/trick'
}
]

View file

@ -0,0 +1,54 @@
const path = require('path')
const fs = require('fs')
const requireHacker = require('require-hacker')
function setupRequireHacker () {
requireHacker.resolver((filename, module) => {
if (filename.endsWith('/style/css')) {
return requireHacker.resolve(`${filename}.web.js`, module)
}
})
requireHacker.hook('js', filename => {
if (
filename.endsWith('.web.js') ||
!filename.includes('/node_modules/') ||
['antd-mobile', 'rc-swipeout', 'rmc-picker'].every(p => !filename.includes(p))
) return
const webjs = filename.replace(/\.js$/, '.web.js')
if (!fs.existsSync(webjs)) return
return fs.readFileSync(webjs, { encoding: 'utf8' })
})
requireHacker.hook('css', () => '')
requireHacker.hook('svg', filename => {
return requireHacker.to_javascript_module_source(fs.readFileSync(filename, { encoding: 'utf8' }))
})
}
setupRequireHacker()
function moduleDir (m) {
return path.dirname(require.resolve(`${m}/package.json`))
}
module.exports = {
webpack: (config, { dev }) => {
config.resolve.extensions = ['.web.js', '.js', '.json']
config.module.rules.push(
{
test: /\.(svg)$/i,
loader: 'svg-sprite-loader',
include: [
moduleDir('antd-mobile')
]
}
)
return config
}
}

View file

@ -0,0 +1,16 @@
{
"dependencies": {
"antd-mobile": "^1.1.2",
"babel-plugin-import": "^1.1.1",
"next": "latest",
"react": "^15.5.4",
"react-dom": "^15.5.4",
"require-hacker": "^3.0.0",
"svg-sprite-loader": "~0.3.0"
},
"scripts": {
"dev": "next",
"build": "next build",
"start": "next start"
}
}

View file

@ -0,0 +1,18 @@
import Document, { Head, Main, NextScript } from 'next/document'
export default class extends Document {
render () {
return (
<html>
<Head>
<script src='/static/hd.min.js' />
<link rel='stylesheet' type='text/css' href='//unpkg.com/antd-mobile/dist/antd-mobile.min.css' />
</Head>
<body style={{margin: 0}}>
<Main />
<NextScript />
</body>
</html>
)
}
}

View file

@ -0,0 +1,54 @@
import React, {Component} from 'react'
import {
WhiteSpace, WingBlank,
NavBar, Icon, Pagination, Steps
} from 'antd-mobile'
import Layout from '../components/Layout'
import MenuBar from '../components/MenuBar'
export default class Home extends Component {
static getInitialProps ({ req }) {
const language = req ? req.headers['accept-language'] : navigator.language
return {
language
}
}
render () {
const {
language,
url: { pathname }
} = this.props
return (
<Layout language={language}>
<MenuBar
pathname={pathname}
>
<NavBar
leftContent='back'
mode='light'
onLeftClick={() => console.log('onLeftClick')}
rightContent={[
<Icon key='0' type='search' style={{ marginRight: '0.32rem' }} />,
<Icon key='1' type='ellipsis' />
]}
>
NavBar
</NavBar>
<WhiteSpace />
<Pagination total={5} current={0} />
<WhiteSpace />
<WingBlank>
<Steps current={1}>
<Steps.Step title='Finished' description='Most components has supported' />
<Steps.Step title='In Progress' description='Switch Modal and Menu' />
<Steps.Step title='Waiting' description='1.2.0' />
</Steps>
</WingBlank>
</MenuBar>
</Layout>
)
}
}

View file

@ -0,0 +1,9 @@
import { Component } from 'react'
export default class Index extends Component {
static async getInitialProps ({ res }) {
res.setHeader('Location', '/home')
res.statusCode = 302
res.end()
}
}

View file

@ -0,0 +1,122 @@
import React, { Component } from 'react'
import {
WhiteSpace,
List, Switch, Modal, Button, Menu
} from 'antd-mobile'
import Layout from '../components/Layout'
import MenuBar from '../components/MenuBar'
export default class Trick extends Component {
static getInitialProps ({ req }) {
const language = req ? req.headers['accept-language'] : navigator.language
const userAgent = req ? req.headers['user-agent'] : navigator.userAgent
const android = /android/i.test(userAgent)
const platform = android ? 'android' : 'ios'
return {
language,
platform
}
}
constructor (props) {
super(props)
this.menuData = [
{
label: 'Menu 1',
value: '1',
children: [
{
label: 'Submenu 1-1',
value: '11'
},
{
label: 'Submenu 1-2',
value: '12'
}
]
},
{
label: 'Menu 2',
value: '2',
children: [
{
label: 'Submenu 2-1',
value: '21'
},
{
label: 'Submenu 2-2',
value: '22'
},
{
label: 'Submenu 2-3',
value: '23'
}
]
}
]
this.state = {
switchChecked: true,
modalOpened: false
}
}
render () {
const {
language,
platform,
url: { pathname }
} = this.props
const {
switchChecked,
modalOpened
} = this.state
return (
<Layout language={language}>
<MenuBar
pathname={pathname}
>
<WhiteSpace />
<List renderHeader={() => 'Switch and Modal platform prop is required in SSR mode'}>
<List.Item
extra={
<Switch
platform={platform}
checked={switchChecked}
onChange={val => this.setState({ switchChecked: val })}
/>
}
>
Switch {platform}
</List.Item>
<Button onClick={() => this.setState({ modalOpened: true })}>
Open {platform} modal
</Button>
</List>
<Modal
title='Modal'
platform={platform}
visible={modalOpened}
transparent
closable
footer={[{ text: 'OK', onPress: () => this.setState({ modalOpened: false }) }]}
onClose={() => this.setState({ modalOpened: false })}
>
I am a modal.<br />
Must set platform prop
</Modal>
<List renderHeader={() => 'Menu height prop is required in SSR mode'}>
<Menu
height={500}
data={this.menuData}
/>
</List>
</MenuBar>
</Layout>
)
}
}

View file

@ -0,0 +1,2 @@
!function(e){function t(a){if(i[a])return i[a].exports;var n=i[a]={exports:{},id:a,loaded:!1};return e[a].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}var i={};return t.m=e,t.c=i,t.p="",t(0)}([function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=window;t["default"]=i.flex=function(e,t){var a=e||100,n=t||1,r=i.document,o=navigator.userAgent,d=o.match(/Android[\S\s]+AppleWebkit\/(\d{3})/i),l=o.match(/U3\/((\d+|\.){5,})/i),c=l&&parseInt(l[1].split(".").join(""),10)>=80,p=navigator.appVersion.match(/(iphone|ipad|ipod)/gi),s=i.devicePixelRatio||1;p||d&&d[1]>534||c||(s=1);var u=1/s,m=r.querySelector('meta[name="viewport"]');m||(m=r.createElement("meta"),m.setAttribute("name","viewport"),r.head.appendChild(m)),m.setAttribute("content","width=device-width,user-scalable=no,initial-scale="+u+",maximum-scale="+u+",minimum-scale="+u),r.documentElement.style.fontSize=a/2*s*n+"px"},e.exports=t["default"]}]);
flex(100, 1);

View file

@ -4,6 +4,7 @@
[ [
"css-modules-transform", { "css-modules-transform", {
"extensions": [".css", ".sass"], "extensions": [".css", ".sass"],
"append": [ "postcss-cssnext" ],
"extractCss": "./static/css/bundle.css", "extractCss": "./static/css/bundle.css",
"preprocessCss": "./pre-processor.js" "preprocessCss": "./pre-processor.js"
} }

View file

@ -0,0 +1,3 @@
@mixin opacity($opacity)
opacity: $opacity
filter: alpha(opacity=($opacity * 100))

View file

@ -16,6 +16,8 @@
}, },
"devDependencies": { "devDependencies": {
"babel-plugin-css-modules-transform": "^1.2.1", "babel-plugin-css-modules-transform": "^1.2.1",
"node-sass": "^4.5.0" "node-sass": "^4.5.0",
"postcss": "^5.2.16",
"postcss-cssnext": "^2.10.0"
} }
} }

View file

@ -1,4 +1,7 @@
@import "../global"
.example .example
@include opacity(0.5)
font-size: 36px font-size: 36px
width: 300px width: 300px
margin: 100px auto display: flex

View file

@ -10,7 +10,7 @@ if (typeof window !== 'undefined') {
} }
export default () => { export default () => {
css.global('html, body', { padding: '3rem 1rem', margin: 0, background: 'papayawhip', 'min-height': '100%', 'font-family': 'Helvetica, Arial, sans-serif', 'font-size': '24px' }) css.global('html, body', { padding: '3rem 1rem', margin: 0, background: 'papayawhip', minHeight: '100%', fontFamily: 'Helvetica, Arial, sans-serif', fontSize: '24px' })
const basicStyles = { const basicStyles = {
backgroundColor: 'white', backgroundColor: 'white',

View file

@ -1,2 +1,2 @@
import { translate } from 'react-i18next' import { translate } from 'react-i18next'
export default translate(['common'])((props) => (<h1>{props.t('hello')}</h1>)) export default translate(['common'])((props) => (<h1>{props.t('hello')}, {props.t('morning')}</h1>))

View file

@ -4,9 +4,12 @@ import startI18n from '../tools/startI18n'
import { getTranslation } from '../tools/translationHelpers' import { getTranslation } from '../tools/translationHelpers'
import Title from '../components/Title' import Title from '../components/Title'
// get language from query parameter or url path
const lang = 'id'
export default class Homepage extends Component { export default class Homepage extends Component {
static async getInitialProps () { static async getInitialProps () {
const translations = await getTranslation('pt', 'common', 'http://localhost:3000/static/locales/') const translations = await getTranslation(lang, 'common', 'http://localhost:3000/static/locales/')
return { translations } return { translations }
} }
@ -14,7 +17,7 @@ export default class Homepage extends Component {
constructor (props) { constructor (props) {
super(props) super(props)
this.i18n = startI18n(props.translations) this.i18n = startI18n(props.translations, lang)
} }
render (props) { render (props) {

View file

@ -0,0 +1,3 @@
{
"hello": "halo"
}

View file

@ -1,3 +1,4 @@
{ {
"hello": "e ae tche" "hello": "e ae tche",
"morning": "manha"
} }

View file

@ -1,6 +1,7 @@
import i18n from 'i18next' import i18n from 'i18next'
const startI18n = file => i18n.init({ const startI18n = (file, lang) => i18n.init({
lng: lang, // active language http://i18next.com/translate/
fallbackLng: 'pt', fallbackLng: 'pt',
resources: file, resources: file,
ns: ['common'], ns: ['common'],

View file

@ -29,26 +29,6 @@ now
Scoped CSS is neat and keeps your JS clean. PostCSS is amazing for extended features, such as nesting. CSS Modules keep your class names “local”. Scoped CSS is neat and keeps your JS clean. PostCSS is amazing for extended features, such as nesting. CSS Modules keep your class names “local”.
# Known bugs # Known issues
There's a bug, possibly within `next.js`, making composition between files unuseable. Consider the following: Composed CSS files are not watched by next.js, and thus, if you change one, nothing will happen. You'll need to edit a JS file or the CSS file you're composing for it to hot reload.
*`styles.css`*
```css
.paragraph {
composes: font-sans from '../global.css';
}
```
*`global.css`*
```css
.font-sans {
font-family: georgia; /* ;) */
}
```
The following error is thrown:
```
Module build failed: Error: Cannot find module '-!./../node_modules/css-loader/index.js??ref--6-4!./../node_modules/postcss-loader/index.js!../global.css'
```

View file

@ -1,3 +1,5 @@
const trash = require('trash')
module.exports = { module.exports = {
webpack: (config) => { webpack: (config) => {
config.module.rules.push( config.module.rules.push(
@ -10,27 +12,21 @@ module.exports = {
name: 'dist/[path][name].[ext]' name: 'dist/[path][name].[ext]'
} }
}, },
'raw-loader',
'val-loader',
{ {
loader: 'skeleton-loader', loader: 'skeleton-loader',
options: { options: {
procedure: (content) => ( procedure: function (content) {
`${content} \n` + ['module.exports = {', const fileName = `${this._module.userRequest}.json`
'stylesheet: module.exports.toString(),', const classNames = JSON.stringify(require(fileName))
'classNames: exports.locals',
trash(fileName)
return ['module.exports = {',
`classNames: ${classNames},`,
`stylesheet: \`${content}\``,
'}' '}'
].join('') ].join('')
) }
}
},
{
loader: 'css-loader',
options: {
modules: true,
minimize: true,
importLoaders: 1,
localIdentName: '[local]-[hash:base64:5]'
} }
}, },
'postcss-loader' 'postcss-loader'

View file

@ -10,18 +10,17 @@
"author": "Thomas Lindstrøm <t@hom.as>", "author": "Thomas Lindstrøm <t@hom.as>",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"babel-plugin-wrap-in-js": "^1.1.1", "cssnano": "^3.10.0",
"css-loader": "^0.26.1",
"next": "latest", "next": "latest",
"postcss-cssnext": "^2.9.0", "postcss-cssnext": "^2.9.0",
"postcss-loader": "^1.3.0", "postcss-loader": "^1.3.0",
"raw-loader": "^0.5.1", "postcss-modules": "^0.6.4",
"react": "^15.4.2", "react": "^15.4.2",
"react-dom": "^15.4.2", "react-dom": "^15.4.2",
"skeleton-loader": "0.0.7", "skeleton-loader": "^1.1.2",
"val-loader": "^0.5.0" "trash": "^4.0.1"
}, },
"devDependencies": { "devDependencies": {
"now": "^3.1.0" "now": "^4.10.3"
} }
} }

View file

@ -0,0 +1,3 @@
.font-color {
color: blue;
}

View file

@ -1,4 +1,4 @@
.paragraph { .paragraph {
composes: font-color from './global.css';
font-size: 20px; font-size: 20px;
color: red;
} }

View file

@ -1,5 +1,9 @@
module.exports = { module.exports = {
plugins: [ plugins: [
require('postcss-cssnext')() require('postcss-cssnext')(),
require('postcss-modules')({
generateScopedName: '[local]-[hash:base64:5]'
}),
require('cssnano')()
] ]
} }

View file

@ -4,7 +4,6 @@ const isWindows = /^win/.test(process.platform)
export async function compile(fly) { export async function compile(fly) {
await fly.parallel(['bin', 'server', 'lib', 'client']) await fly.parallel(['bin', 'server', 'lib', 'client'])
await fly.start('unrestrict')
} }
export async function bin(fly, opts) { export async function bin(fly, opts) {
@ -27,14 +26,6 @@ export async function client(fly, opts) {
notify('Compiled client files') notify('Compiled client files')
} }
export async function unrestrict(fly) {
await fly.source('dist/lib/eval-script.js').babel({
babelrc: false,
plugins: ['babel-plugin-transform-remove-strict-mode']
}).target('dist/lib')
notify('Completed removing strict mode for eval script')
}
export async function copy(fly) { export async function copy(fly) {
await fly.source('pages/**/*.js').target('dist/pages') await fly.source('pages/**/*.js').target('dist/pages')
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "next", "name": "next",
"version": "3.0.0-beta6", "version": "3.0.0-beta7",
"description": "Minimalistic framework for server-rendered React applications", "description": "Minimalistic framework for server-rendered React applications",
"main": "./dist/server/next.js", "main": "./dist/server/next.js",
"license": "MIT", "license": "MIT",
@ -82,12 +82,11 @@
"path-match": "1.2.4", "path-match": "1.2.4",
"pkg-up": "2.0.0", "pkg-up": "2.0.0",
"prop-types": "15.5.10", "prop-types": "15.5.10",
"react-hot-loader": "3.0.0-beta.6",
"recursive-copy": "^2.0.6", "recursive-copy": "^2.0.6",
"send": "0.15.3", "react-hot-loader": "3.0.0-beta.7",
"source-map-support": "0.4.15", "source-map-support": "0.4.15",
"strip-ansi": "3.0.1", "strip-ansi": "3.0.1",
"styled-jsx": "0.5.7", "styled-jsx": "1.0.2",
"touch": "1.0.0", "touch": "1.0.0",
"unfetch": "2.1.2", "unfetch": "2.1.2",
"url": "0.11.0", "url": "0.11.0",

View file

@ -583,6 +583,7 @@ Supported options:
- `dev` (`bool`) whether to launch Next.js in dev mode - default `false` - `dev` (`bool`) whether to launch Next.js in dev mode - default `false`
- `dir` (`string`) where the Next project is located - default `'.'` - `dir` (`string`) where the Next project is located - default `'.'`
- `quiet` (`bool`) Hide error messages containing server information - default `false` - `quiet` (`bool`) Hide error messages containing server information - default `false`
- `conf` (`object`) the same object you would use in `next.config.js` - default `{}`
Then, change your `start` script to `NODE_ENV=production node server.js`. Then, change your `start` script to `NODE_ENV=production node server.js`.
@ -863,7 +864,7 @@ Then run `now` and enjoy!
Next.js can be deployed to other hosting solutions too. Please have a look at the ['Deployment'](https://github.com/zeit/next.js/wiki/Deployment) section of the wiki. Next.js can be deployed to other hosting solutions too. Please have a look at the ['Deployment'](https://github.com/zeit/next.js/wiki/Deployment) section of the wiki.
Note: we recommend putting `.next`, or your custom dist folder (Please have a look at ['Custom Config'](You can set a custom folder in config https://github.com/zeit/next.js#custom-configuration.)), in `.npmignore` or `.gitignore`. Otherwise, use `files` or `now.files` to opt-into a whitelist of files you want to deploy (and obviously exclude `.next` or your custom dist folder) Note: we recommend putting `.next`, or your custom dist folder (you can set a custom folder in ['Custom Config'](https://github.com/zeit/next.js#custom-configuration)), in `.npmignore` or `.gitignore`. Otherwise, use `files` or `now.files` to opt-into a whitelist of files you want to deploy (and obviously exclude `.next` or your custom dist folder)
## Static HTML export ## Static HTML export

View file

@ -314,7 +314,7 @@ export default async function createCompiler (dir, { dev = false, quiet = false,
} }
if (config.webpack) { if (config.webpack) {
console.log('> Using "webpack" config function defined in next.config.js.') console.log(`> Using "webpack" config function defined in ${config.configOrigin}.`)
webpackConfig = await config.webpack(webpackConfig, { dev }) webpackConfig = await config.webpack(webpackConfig, { dev })
} }
return webpack(webpackConfig) return webpack(webpackConfig)

View file

@ -8,17 +8,23 @@ const defaultConfig = {
webpackDevMiddleware: null, webpackDevMiddleware: null,
poweredByHeader: true, poweredByHeader: true,
distDir: '.next', distDir: '.next',
assetPrefix: '' assetPrefix: '',
configOrigin: 'default',
useFileSystemPublicRoutes: true
} }
export default function getConfig (dir) { export default function getConfig (dir, customConfig) {
if (!cache.has(dir)) { if (!cache.has(dir)) {
cache.set(dir, loadConfig(dir)) cache.set(dir, loadConfig(dir, customConfig))
} }
return cache.get(dir) return cache.get(dir)
} }
function loadConfig (dir) { function loadConfig (dir, customConfig) {
if (customConfig && typeof customConfig === 'object') {
customConfig.configOrigin = 'server'
return withDefaults(customConfig)
}
const path = join(dir, 'next.config.js') const path = join(dir, 'next.config.js')
let userConfig = {} let userConfig = {}
@ -27,7 +33,12 @@ function loadConfig (dir) {
if (userHasConfig) { if (userHasConfig) {
const userConfigModule = require(path) const userConfigModule = require(path)
userConfig = userConfigModule.default || userConfigModule userConfig = userConfigModule.default || userConfigModule
userConfig.configOrigin = 'next.config.js'
} }
return Object.assign({}, defaultConfig, userConfig) return withDefaults(userConfig)
}
function withDefaults (config) {
return Object.assign({}, defaultConfig, config)
} }

View file

@ -36,8 +36,8 @@ export class Head extends Component {
getChunkPreloadLink (filename) { getChunkPreloadLink (filename) {
const { __NEXT_DATA__ } = this.context._documentProps const { __NEXT_DATA__ } = this.context._documentProps
let { buildStats, assetPrefix } = __NEXT_DATA__ let { buildStats, assetPrefix, buildId } = __NEXT_DATA__
const hash = buildStats ? buildStats[filename].hash : '-' const hash = buildStats ? buildStats[filename].hash : buildId
return ( return (
<link <link
@ -118,8 +118,8 @@ export class NextScript extends Component {
getChunkScript (filename, additionalProps = {}) { getChunkScript (filename, additionalProps = {}) {
const { __NEXT_DATA__ } = this.context._documentProps const { __NEXT_DATA__ } = this.context._documentProps
let { buildStats, assetPrefix } = __NEXT_DATA__ let { buildStats, assetPrefix, buildId } = __NEXT_DATA__
const hash = buildStats ? buildStats[filename].hash : '-' const hash = buildStats ? buildStats[filename].hash : buildId
return ( return (
<script <script

View file

@ -8,7 +8,7 @@ import clean from './build/clean'
import getConfig from './config' import getConfig from './config'
export default class HotReloader { export default class HotReloader {
constructor (dir, { quiet } = {}) { constructor (dir, { quiet, conf } = {}) {
this.dir = dir this.dir = dir
this.quiet = quiet this.quiet = quiet
this.middlewares = [] this.middlewares = []
@ -22,7 +22,7 @@ export default class HotReloader {
this.prevFailedChunkNames = null this.prevFailedChunkNames = null
this.prevChunkHashes = null this.prevChunkHashes = null
this.config = getConfig(dir) this.config = getConfig(dir, conf)
} }
async run (req, res) { async run (req, res) {
@ -148,7 +148,7 @@ export default class HotReloader {
} }
if (this.config.webpackDevMiddleware) { if (this.config.webpackDevMiddleware) {
console.log('> Using "webpackDevMiddleware" config function defined in next.config.js.') console.log(`> Using "webpackDevMiddleware" config function defined in ${this.config.configOrigin}.`)
webpackDevMiddlewareConfig = this.config.webpackDevMiddleware(webpackDevMiddlewareConfig) webpackDevMiddlewareConfig = this.config.webpackDevMiddleware(webpackDevMiddlewareConfig)
} }

View file

@ -1,4 +1,4 @@
import { resolve, join } from 'path' import { resolve, join, sep } from 'path'
import { parse as parseUrl } from 'url' import { parse as parseUrl } from 'url'
import { parse as parseQs } from 'querystring' import { parse as parseQs } from 'querystring'
import fs from 'fs' import fs from 'fs'
@ -24,14 +24,14 @@ const internalPrefixes = [
] ]
export default class Server { export default class Server {
constructor ({ dir = '.', dev = false, staticMarkup = false, quiet = false } = {}) { constructor ({ dir = '.', dev = false, staticMarkup = false, quiet = false, conf = null } = {}) {
this.dir = resolve(dir) this.dir = resolve(dir)
this.dev = dev this.dev = dev
this.quiet = quiet this.quiet = quiet
this.router = new Router() this.router = new Router()
this.hotReloader = dev ? new HotReloader(this.dir, { quiet }) : null this.hotReloader = dev ? new HotReloader(this.dir, { quiet, conf }) : null
this.http = null this.http = null
this.config = getConfig(this.dir) this.config = getConfig(this.dir, conf)
this.dist = this.config.distDir this.dist = this.config.distDir
this.buildStats = !dev ? require(join(this.dir, this.dist, 'build-stats.json')) : null this.buildStats = !dev ? require(join(this.dir, this.dist, 'build-stats.json')) : null
this.buildId = !dev ? this.readBuildId() : '-' this.buildId = !dev ? this.readBuildId() : '-'
@ -113,24 +113,32 @@ export default class Server {
}, },
'/_next/:hash/manifest.js': async (req, res, params) => { '/_next/:hash/manifest.js': async (req, res, params) => {
if (!this.dev) return this.send404(res)
this.handleBuildHash('manifest.js', params.hash, res) this.handleBuildHash('manifest.js', params.hash, res)
const p = join(this.dir, `${this.dist}/manifest.js`) const p = join(this.dir, `${this.dist}/manifest.js`)
await this.serveStatic(req, res, p) await this.serveStatic(req, res, p)
}, },
'/_next/:hash/main.js': async (req, res, params) => { '/_next/:hash/main.js': async (req, res, params) => {
if (!this.dev) return this.send404(res)
this.handleBuildHash('main.js', params.hash, res) this.handleBuildHash('main.js', params.hash, res)
const p = join(this.dir, `${this.dist}/main.js`) const p = join(this.dir, `${this.dist}/main.js`)
await this.serveStatic(req, res, p) await this.serveStatic(req, res, p)
}, },
'/_next/:hash/commons.js': async (req, res, params) => { '/_next/:hash/commons.js': async (req, res, params) => {
if (!this.dev) return this.send404(res)
this.handleBuildHash('commons.js', params.hash, res) this.handleBuildHash('commons.js', params.hash, res)
const p = join(this.dir, `${this.dist}/commons.js`) const p = join(this.dir, `${this.dist}/commons.js`)
await this.serveStatic(req, res, p) await this.serveStatic(req, res, p)
}, },
'/_next/:hash/app.js': async (req, res, params) => { '/_next/:hash/app.js': async (req, res, params) => {
if (this.dev) return this.send404(res)
this.handleBuildHash('app.js', params.hash, res) this.handleBuildHash('app.js', params.hash, res)
const p = join(this.dir, `${this.dist}/app.js`) const p = join(this.dir, `${this.dist}/app.js`)
await this.serveStatic(req, res, p) await this.serveStatic(req, res, p)
@ -184,9 +192,11 @@ export default class Server {
'/static/:path+': async (req, res, params) => { '/static/:path+': async (req, res, params) => {
const p = join(this.dir, 'static', ...(params.path || [])) const p = join(this.dir, 'static', ...(params.path || []))
await this.serveStatic(req, res, p) await this.serveStatic(req, res, p)
}, }
}
'/:path*': async (req, res, params, parsedUrl) => { if (this.config.useFileSystemPublicRoutes) {
routes['/:path*'] = async (req, res, params, parsedUrl) => {
const { pathname, query } = parsedUrl const { pathname, query } = parsedUrl
await this.render(req, res, pathname, query) await this.render(req, res, pathname, query)
} }
@ -238,7 +248,7 @@ export default class Server {
res.setHeader('X-Powered-By', `Next.js ${pkg.version}`) res.setHeader('X-Powered-By', `Next.js ${pkg.version}`)
} }
const html = await this.renderToHTML(req, res, pathname, query) const html = await this.renderToHTML(req, res, pathname, query)
return sendHTML(req, res, html, req.method) return sendHTML(req, res, html, req.method, this.renderOpts)
} }
async renderToHTML (req, res, pathname, query) { async renderToHTML (req, res, pathname, query) {
@ -266,7 +276,7 @@ export default class Server {
async renderError (err, req, res, pathname, query) { async renderError (err, req, res, pathname, query) {
const html = await this.renderErrorToHTML(err, req, res, pathname, query) const html = await this.renderErrorToHTML(err, req, res, pathname, query)
return sendHTML(req, res, html, req.method) return sendHTML(req, res, html, req.method, this.renderOpts)
} }
async renderErrorToHTML (err, req, res, pathname, query) { async renderErrorToHTML (err, req, res, pathname, query) {
@ -298,6 +308,10 @@ export default class Server {
} }
async serveStatic (req, res, path) { async serveStatic (req, res, path) {
if (!this.isServeableUrl(path)) {
return this.render404(req, res)
}
try { try {
return await serveStatic(req, res, path) return await serveStatic(req, res, path)
} catch (err) { } catch (err) {
@ -309,6 +323,19 @@ export default class Server {
} }
} }
isServeableUrl (path) {
const resolved = resolve(path)
if (
resolved.indexOf(join(this.dir, this.dist) + sep) !== 0 &&
resolved.indexOf(join(this.dir, 'static') + sep) !== 0
) {
// Seems like the user is trying to traverse the filesystem.
return false
}
return true
}
isInternalUrl (req) { isInternalUrl (req) {
for (const prefix of internalPrefixes) { for (const prefix of internalPrefixes) {
if (prefix.test(req.url)) { if (prefix.test(req.url)) {
@ -348,10 +375,16 @@ export default class Server {
handleBuildHash (filename, hash, res) { handleBuildHash (filename, hash, res) {
if (this.dev) return if (this.dev) return
if (hash !== this.buildStats[filename].hash) { if (hash !== this.buildStats[filename].hash) {
throw new Error(`Invalid Build File Hash(${hash}) for chunk: ${filename}`) throw new Error(`Invalid Build File Hash(${hash}) for chunk: ${filename}`)
} }
res.setHeader('Cache-Control', 'max-age=365000000, immutable') res.setHeader('Cache-Control', 'max-age=365000000, immutable')
} }
send404 (res) {
res.statusCode = 404
res.end('404 - Not Found')
}
} }

View file

@ -16,7 +16,7 @@ import { flushChunks } from '../lib/dynamic'
export async function render (req, res, pathname, query, opts) { export async function render (req, res, pathname, query, opts) {
const html = await renderToHTML(req, res, pathname, opts) const html = await renderToHTML(req, res, pathname, opts)
sendHTML(req, res, html, req.method) sendHTML(req, res, html, req.method, opts)
} }
export function renderToHTML (req, res, pathname, query, opts) { export function renderToHTML (req, res, pathname, query, opts) {
@ -25,7 +25,7 @@ export function renderToHTML (req, res, pathname, query, opts) {
export async function renderError (err, req, res, pathname, query, opts) { export async function renderError (err, req, res, pathname, query, opts) {
const html = await renderErrorToHTML(err, req, res, query, opts) const html = await renderErrorToHTML(err, req, res, query, opts)
sendHTML(req, res, html, req.method) sendHTML(req, res, html, req.method, opts)
} }
export function renderErrorToHTML (err, req, res, pathname, query, opts = {}) { export function renderErrorToHTML (err, req, res, pathname, query, opts = {}) {
@ -90,15 +90,21 @@ async function doRender (req, res, pathname, query, {
} }
const docProps = await loadGetInitialProps(Document, { ...ctx, renderPage }) const docProps = await loadGetInitialProps(Document, { ...ctx, renderPage })
// While developing, we should not cache any assets.
// So, we use a different buildId for each page load.
// With that we can ensure, we have unique URL for assets per every page load.
// So, it'll prevent issues like this: https://git.io/vHLtb
const devBuildId = Date.now()
if (res.finished) return if (res.finished) return
if (!Document.prototype || !Document.prototype.isReactComponent) throw new Error('_document.js is not exporting a React element')
const doc = createElement(Document, { const doc = createElement(Document, {
__NEXT_DATA__: { __NEXT_DATA__: {
props, props,
pathname, pathname,
query, query,
buildId, buildId: dev ? devBuildId : buildId,
buildStats, buildStats,
assetPrefix, assetPrefix,
nextExport, nextExport,
@ -160,7 +166,7 @@ export async function renderScriptError (req, res, page, error, customFields, op
`) `)
} }
export function sendHTML (req, res, html, method) { export function sendHTML (req, res, html, method, { dev }) {
if (res.finished) return if (res.finished) return
const etag = generateETag(html) const etag = generateETag(html)
@ -170,6 +176,12 @@ export function sendHTML (req, res, html, method) {
return return
} }
if (dev) {
// In dev, we should not cache pages for any reason.
// That's why we do this.
res.setHeader('Cache-Control', 'no-store, must-revalidate')
}
res.setHeader('ETag', etag) res.setHeader('ETag', etag)
res.setHeader('Content-Type', 'text/html') res.setHeader('Content-Type', 'text/html')
res.setHeader('Content-Length', Buffer.byteLength(html)) res.setHeader('Content-Length', Buffer.byteLength(html))

View file

@ -1,5 +1,4 @@
/* global describe, test, expect */ /* global describe, test, expect */
import fetch from 'node-fetch'
export default function (context) { export default function (context) {
describe('Misc', () => { describe('Misc', () => {
@ -13,14 +12,5 @@ export default function (context) {
const html = await context.app.renderToHTML({}, res, '/finish-response', {}) const html = await context.app.renderToHTML({}, res, '/finish-response', {})
expect(html).toBeFalsy() expect(html).toBeFalsy()
}) })
test('allow etag header support', async () => {
const url = `http://localhost:${context.appPort}/stateless`
const etag = (await fetch(url)).headers.get('ETag')
const headers = { 'If-None-Match': etag }
const res2 = await fetch(url, { headers })
expect(res2.status).toBe(304)
})
}) })
} }

View file

@ -9,6 +9,7 @@ import {
renderViaHTTP renderViaHTTP
} from 'next-test-utils' } from 'next-test-utils'
import webdriver from 'next-webdriver' import webdriver from 'next-webdriver'
import fetch from 'node-fetch'
const appDir = join(__dirname, '../') const appDir = join(__dirname, '../')
let appPort let appPort
@ -35,6 +36,15 @@ describe('Production Usage', () => {
const html = await renderViaHTTP(appPort, '/') const html = await renderViaHTTP(appPort, '/')
expect(html).toMatch(/Hello World/) expect(html).toMatch(/Hello World/)
}) })
it('should allow etag header support', async () => {
const url = `http://localhost:${appPort}/`
const etag = (await fetch(url)).headers.get('ETag')
const headers = { 'If-None-Match': etag }
const res2 = await fetch(url, { headers })
expect(res2.status).toBe(304)
})
}) })
describe('With navigation', () => { describe('With navigation', () => {

546
yarn.lock
View file

@ -40,8 +40,8 @@ acorn@^3.0.4:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
acorn@^4.0.3, acorn@^4.0.4: acorn@^4.0.3, acorn@^4.0.4:
version "4.0.11" version "4.0.13"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
acorn@^5.0.0, acorn@^5.0.1: acorn@^5.0.0, acorn@^5.0.1:
version "5.0.3" version "5.0.3"
@ -255,8 +255,8 @@ async@^1.4.0:
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
async@^2.0.0, async@^2.1.2, async@^2.1.4: async@^2.0.0, async@^2.1.2, async@^2.1.4:
version "2.4.0" version "2.4.1"
resolved "https://registry.yarnpkg.com/async/-/async-2.4.0.tgz#4990200f18ea5b837c2cc4f8c031a6985c385611" resolved "https://registry.yarnpkg.com/async/-/async-2.4.1.tgz#62a56b279c98a11d0987096a01cc3eeb8eb7bbd7"
dependencies: dependencies:
lodash "^4.14.0" lodash "^4.14.0"
@ -459,13 +459,21 @@ babel-helpers@^6.23.0, babel-helpers@^6.24.1:
babel-runtime "^6.22.0" babel-runtime "^6.22.0"
babel-template "^6.24.1" babel-template "^6.24.1"
babel-jest@20.0.1, babel-jest@^20.0.1: babel-jest@20.0.2:
version "20.0.1" version "20.0.2"
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-20.0.1.tgz#9cbe9a15bbe3f1ca1b727dc8e45a4161771d3655" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-20.0.2.tgz#0894fb1f44dca32edc0ca6a90020d8e6a5991a59"
dependencies: dependencies:
babel-core "^6.0.0" babel-core "^6.0.0"
babel-plugin-istanbul "^4.0.0" babel-plugin-istanbul "^4.0.0"
babel-preset-jest "^20.0.1" babel-preset-jest "^20.0.2"
babel-jest@^20.0.3:
version "20.0.3"
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-20.0.3.tgz#e4a03b13dc10389e140fc645d09ffc4ced301671"
dependencies:
babel-core "^6.0.0"
babel-plugin-istanbul "^4.0.0"
babel-preset-jest "^20.0.3"
babel-loader@7.0.0: babel-loader@7.0.0:
version "7.0.0" version "7.0.0"
@ -495,9 +503,9 @@ babel-plugin-istanbul@4.1.3, babel-plugin-istanbul@^4.0.0:
istanbul-lib-instrument "^1.7.1" istanbul-lib-instrument "^1.7.1"
test-exclude "^4.1.0" test-exclude "^4.1.0"
babel-plugin-jest-hoist@^20.0.1: babel-plugin-jest-hoist@^20.0.3:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.1.tgz#1b9cc322cff704d3812d1bca8dccd12205eedfd5" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz#afedc853bd3f8dc3548ea671fbe69d03cc2c1767"
babel-plugin-module-resolver@2.6.2: babel-plugin-module-resolver@2.6.2:
version "2.6.2" version "2.6.2"
@ -807,9 +815,9 @@ babel-plugin-transform-strict-mode@^6.24.1:
babel-runtime "^6.22.0" babel-runtime "^6.22.0"
babel-types "^6.24.1" babel-types "^6.24.1"
babel-preset-env@1.3.3: babel-preset-env@1.5.0:
version "1.3.3" version "1.5.0"
resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.3.3.tgz#5913407784e3d98de2aa814a3ef9059722b34e0b" resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.5.0.tgz#6e5452f7c8742afe3b9a917883ccf3f7a4f340c5"
dependencies: dependencies:
babel-plugin-check-es2015-constants "^6.22.0" babel-plugin-check-es2015-constants "^6.22.0"
babel-plugin-syntax-trailing-function-commas "^6.22.0" babel-plugin-syntax-trailing-function-commas "^6.22.0"
@ -838,8 +846,9 @@ babel-preset-env@1.3.3:
babel-plugin-transform-es2015-unicode-regex "^6.22.0" babel-plugin-transform-es2015-unicode-regex "^6.22.0"
babel-plugin-transform-exponentiation-operator "^6.22.0" babel-plugin-transform-exponentiation-operator "^6.22.0"
babel-plugin-transform-regenerator "^6.22.0" babel-plugin-transform-regenerator "^6.22.0"
browserslist "^1.4.0" browserslist "^2.1.2"
invariant "^2.2.2" invariant "^2.2.2"
semver "^5.3.0"
babel-preset-es2015@6.24.1: babel-preset-es2015@6.24.1:
version "6.24.1" version "6.24.1"
@ -876,11 +885,11 @@ babel-preset-flow@^6.23.0:
dependencies: dependencies:
babel-plugin-transform-flow-strip-types "^6.22.0" babel-plugin-transform-flow-strip-types "^6.22.0"
babel-preset-jest@^20.0.1: babel-preset-jest@^20.0.2, babel-preset-jest@^20.0.3:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-20.0.1.tgz#8a9e23ce8a0f0c49835de53ed73ecf75dd6daa2e" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz#cbacaadecb5d689ca1e1de1360ebfc66862c178a"
dependencies: dependencies:
babel-plugin-jest-hoist "^20.0.1" babel-plugin-jest-hoist "^20.0.3"
babel-preset-react@6.24.1: babel-preset-react@6.24.1:
version "6.24.1" version "6.24.1"
@ -950,6 +959,15 @@ babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1:
invariant "^2.2.0" invariant "^2.2.0"
lodash "^4.2.0" lodash "^4.2.0"
babel-types@6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.23.0.tgz#bb17179d7538bad38cd0c9e115d340f77e7e9acf"
dependencies:
babel-runtime "^6.22.0"
esutils "^2.0.2"
lodash "^4.2.0"
to-fast-properties "^1.0.1"
babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.21.0, babel-types@^6.23.0, babel-types@^6.24.1: babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.21.0, babel-types@^6.23.0, babel-types@^6.24.1:
version "6.24.1" version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.24.1.tgz#a136879dc15b3606bda0d90c1fc74304c2ff0975"
@ -964,8 +982,8 @@ babylon@6.14.1:
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.14.1.tgz#956275fab72753ad9b3435d7afe58f8bf0a29815" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.14.1.tgz#956275fab72753ad9b3435d7afe58f8bf0a29815"
babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0, babylon@^6.17.0: babylon@^6.11.0, babylon@^6.13.0, babylon@^6.15.0, babylon@^6.17.0:
version "6.17.1" version "6.17.2"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.1.tgz#17f14fddf361b695981fe679385e4f1c01ebd86f" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.2.tgz#201d25ef5f892c41bae49488b08db0dd476e9f5c"
balanced-match@^0.4.1: balanced-match@^0.4.1:
version "0.4.2" version "0.4.2"
@ -1102,12 +1120,12 @@ browserify-zlib@^0.1.4:
dependencies: dependencies:
pako "~0.2.0" pako "~0.2.0"
browserslist@^1.4.0: browserslist@^2.1.2:
version "1.7.7" version "2.1.4"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.1.4.tgz#cc526af4a1312b7d2e05653e56d0c8ab70c0e053"
dependencies: dependencies:
caniuse-db "^1.0.30000639" caniuse-lite "^1.0.30000670"
electron-to-chromium "^1.2.7" electron-to-chromium "^1.3.11"
bser@1.0.2: bser@1.0.2:
version "1.0.2" version "1.0.2"
@ -1179,9 +1197,9 @@ camelcase@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
caniuse-db@^1.0.30000639: caniuse-lite@^1.0.30000670:
version "1.0.30000669" version "1.0.30000676"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000669.tgz#dbe8f25700ecda631dfb05cb71027762bd4b03e5" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000676.tgz#1e962123f48073f0c51c4ea0651dd64d25786498"
case-sensitive-paths-webpack-plugin@2.0.0: case-sensitive-paths-webpack-plugin@2.0.0:
version "2.0.0" version "2.0.0"
@ -1534,6 +1552,12 @@ css-select@~1.2.0:
domutils "1.5.1" domutils "1.5.1"
nth-check "~1.0.1" nth-check "~1.0.1"
css-tree@1.0.0-alpha17:
version "1.0.0-alpha17"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha17.tgz#7ab95ab72c533917af8be54313fec81841c5223a"
dependencies:
source-map "^0.5.3"
css-what@2.1: css-what@2.1:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
@ -1561,8 +1585,8 @@ dashdash@^1.12.0:
assert-plus "^1.0.0" assert-plus "^1.0.0"
date-fns@^1.27.2: date-fns@^1.27.2:
version "1.28.4" version "1.28.5"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.28.4.tgz#7938aec34ba31fc8bd134d2344bc2e0bbfd95165" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.28.5.tgz#257cfc45d322df45ef5658665967ee841cd73faf"
date-now@^0.1.4: date-now@^0.1.4:
version "0.1.4" version "0.1.4"
@ -1578,17 +1602,17 @@ debug@2.6.1:
dependencies: dependencies:
ms "0.7.2" ms "0.7.2"
debug@2.6.4: debug@2.6.7:
version "2.6.4" version "2.6.7"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e"
dependencies: dependencies:
ms "0.7.3" ms "2.0.0"
debug@^2.1.1, debug@^2.2.0, debug@^2.6.3: debug@^2.1.1, debug@^2.2.0, debug@^2.6.3:
version "2.6.6" version "2.6.8"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.6.tgz#a9fa6fbe9ca43cf1e79f73b75c0189cbb7d6db5a" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
dependencies: dependencies:
ms "0.7.3" ms "2.0.0"
decamelize@^1.0.0, decamelize@^1.1.1: decamelize@^1.0.0, decamelize@^1.1.1:
version "1.2.0" version "1.2.0"
@ -1739,9 +1763,9 @@ ee-first@1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
electron-to-chromium@^1.2.7: electron-to-chromium@^1.3.11:
version "1.3.10" version "1.3.13"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.10.tgz#63d62b785471f0d8dda85199d64579de8a449f08" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.13.tgz#1b3a5eace6e087bb5e257a100b0cbfe81b2891fc"
elegant-spinner@^1.0.1: elegant-spinner@^1.0.1:
version "1.0.1" version "1.0.1"
@ -1820,7 +1844,7 @@ error-stack-parser@^2.0.0:
dependencies: dependencies:
stackframe "^1.0.3" stackframe "^1.0.3"
es-abstract@^1.6.1, es-abstract@^1.7.0: es-abstract@^1.7.0:
version "1.7.0" version "1.7.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c"
dependencies: dependencies:
@ -1838,8 +1862,8 @@ es-to-primitive@^1.1.1:
is-symbol "^1.0.1" is-symbol "^1.0.1"
es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14:
version "0.10.16" version "0.10.22"
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.16.tgz#1ef1b04f3d09db6a5d630226d62202f2e425e45a" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.22.tgz#1876c51f990769c112c781ea3ebe89f84fd39071"
dependencies: dependencies:
es6-iterator "2" es6-iterator "2"
es6-symbol "~3.1" es6-symbol "~3.1"
@ -2181,8 +2205,8 @@ fileset@^2.0.2:
minimatch "^3.0.3" minimatch "^3.0.3"
filesize@^3.2.1: filesize@^3.2.1:
version "3.5.9" version "3.5.10"
resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.9.tgz#9e3dd8a9b124f5b2f1fb2ee9cd13a86c707bb222" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.10.tgz#fc8fa23ddb4ef9e5e0ab6e1e64f679a24a56761f"
fill-range@^2.1.0: fill-range@^2.1.0:
version "2.2.3" version "2.2.3"
@ -2195,10 +2219,10 @@ fill-range@^2.1.0:
repeat-string "^1.5.2" repeat-string "^1.5.2"
finalhandler@~1.0.0: finalhandler@~1.0.0:
version "1.0.2" version "1.0.3"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.2.tgz#d0e36f9dbc557f2de14423df6261889e9d60c93a" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.3.tgz#ef47e77950e999780e86022a560e3217e0d0cc89"
dependencies: dependencies:
debug "2.6.4" debug "2.6.7"
encodeurl "~1.0.1" encodeurl "~1.0.1"
escape-html "~1.0.3" escape-html "~1.0.3"
on-finished "~2.3.0" on-finished "~2.3.0"
@ -2493,8 +2517,8 @@ growly@^1.3.0:
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
handlebars@^4.0.3: handlebars@^4.0.3:
version "4.0.8" version "4.0.10"
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.8.tgz#22b875cd3f0e6cbea30314f144e82bc7a72ff420" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f"
dependencies: dependencies:
async "^1.4.0" async "^1.4.0"
optimist "^0.6.1" optimist "^0.6.1"
@ -2665,8 +2689,8 @@ ieee754@^1.1.4:
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
ignore@^3.0.9, ignore@^3.2.0: ignore@^3.0.9, ignore@^3.2.0:
version "3.3.0" version "3.3.3"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.0.tgz#3812d22cbe9125f2c2b4915755a1b8abd745a001" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d"
imurmurhash@^0.1.4: imurmurhash@^0.1.4:
version "0.1.4" version "0.1.4"
@ -2776,8 +2800,8 @@ is-date-object@^1.0.1:
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
is-dotfile@^1.0.0: is-dotfile@^1.0.0:
version "1.0.2" version "1.0.3"
resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
is-equal-shallow@^0.1.3: is-equal-shallow@^0.1.3:
version "0.1.3" version "0.1.3"
@ -2928,75 +2952,75 @@ isstream@~0.1.2:
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
istanbul-api@^1.1.1: istanbul-api@^1.1.1:
version "1.1.8" version "1.1.9"
resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.8.tgz#a844e55c6f9aeee292e7f42942196f60b23dc93e" resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.9.tgz#2827920d380d4286d857d57a2968a841db8a7ec8"
dependencies: dependencies:
async "^2.1.4" async "^2.1.4"
fileset "^2.0.2" fileset "^2.0.2"
istanbul-lib-coverage "^1.1.0" istanbul-lib-coverage "^1.1.1"
istanbul-lib-hook "^1.0.6" istanbul-lib-hook "^1.0.7"
istanbul-lib-instrument "^1.7.1" istanbul-lib-instrument "^1.7.2"
istanbul-lib-report "^1.1.0" istanbul-lib-report "^1.1.1"
istanbul-lib-source-maps "^1.2.0" istanbul-lib-source-maps "^1.2.1"
istanbul-reports "^1.1.0" istanbul-reports "^1.1.1"
js-yaml "^3.7.0" js-yaml "^3.7.0"
mkdirp "^0.5.1" mkdirp "^0.5.1"
once "^1.4.0" once "^1.4.0"
istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.0: istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.0, istanbul-lib-coverage@^1.1.1:
version "1.1.0" version "1.1.1"
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.0.tgz#caca19decaef3525b5d6331d701f3f3b7ad48528" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da"
istanbul-lib-hook@^1.0.6: istanbul-lib-hook@^1.0.6, istanbul-lib-hook@^1.0.7:
version "1.0.6" version "1.0.7"
resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.6.tgz#c0866d1e81cf2d5319249510131fc16dee49231f" resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc"
dependencies: dependencies:
append-transform "^0.4.0" append-transform "^0.4.0"
istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.1: istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.1, istanbul-lib-instrument@^1.7.2:
version "1.7.1" version "1.7.2"
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.1.tgz#169e31bc62c778851a99439dd99c3cc12184d360" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.2.tgz#6014b03d3470fb77638d5802508c255c06312e56"
dependencies: dependencies:
babel-generator "^6.18.0" babel-generator "^6.18.0"
babel-template "^6.16.0" babel-template "^6.16.0"
babel-traverse "^6.18.0" babel-traverse "^6.18.0"
babel-types "^6.18.0" babel-types "^6.18.0"
babylon "^6.13.0" babylon "^6.13.0"
istanbul-lib-coverage "^1.1.0" istanbul-lib-coverage "^1.1.1"
semver "^5.3.0" semver "^5.3.0"
istanbul-lib-report@^1.1.0: istanbul-lib-report@^1.1.0, istanbul-lib-report@^1.1.1:
version "1.1.0" version "1.1.1"
resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.0.tgz#444c4ecca9afa93cf584f56b10f195bf768c0770" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9"
dependencies: dependencies:
istanbul-lib-coverage "^1.1.0" istanbul-lib-coverage "^1.1.1"
mkdirp "^0.5.1" mkdirp "^0.5.1"
path-parse "^1.0.5" path-parse "^1.0.5"
supports-color "^3.1.2" supports-color "^3.1.2"
istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.0: istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.0, istanbul-lib-source-maps@^1.2.1:
version "1.2.0" version "1.2.1"
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.0.tgz#8c7706d497e26feeb6af3e0c28fd5b0669598d0e" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c"
dependencies: dependencies:
debug "^2.6.3" debug "^2.6.3"
istanbul-lib-coverage "^1.1.0" istanbul-lib-coverage "^1.1.1"
mkdirp "^0.5.1" mkdirp "^0.5.1"
rimraf "^2.6.1" rimraf "^2.6.1"
source-map "^0.5.3" source-map "^0.5.3"
istanbul-reports@^1.1.0: istanbul-reports@^1.1.0, istanbul-reports@^1.1.1:
version "1.1.0" version "1.1.1"
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.0.tgz#1ef3b795889219cfb5fad16365f6ce108d5f8c66" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.1.tgz#042be5c89e175bc3f86523caab29c014e77fee4e"
dependencies: dependencies:
handlebars "^4.0.3" handlebars "^4.0.3"
jest-changed-files@^20.0.1: jest-changed-files@^20.0.2:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-20.0.1.tgz#ba9bd42c3fddb1b7c4ae40065199b44a2335e152" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-20.0.3.tgz#9394d5cc65c438406149bef1bf4d52b68e03e3f8"
jest-cli@20.0.1: jest-cli@20.0.2:
version "20.0.1" version "20.0.2"
resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-20.0.1.tgz#86ca0bc2e47215ad8e7dc85455c0210f86648502" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-20.0.2.tgz#98316e8eb45b4aee817395f38c3d08b7e13ca5b2"
dependencies: dependencies:
ansi-escapes "^1.4.0" ansi-escapes "^1.4.0"
callsites "^2.0.0" callsites "^2.0.0"
@ -3007,18 +3031,18 @@ jest-cli@20.0.1:
istanbul-lib-coverage "^1.0.1" istanbul-lib-coverage "^1.0.1"
istanbul-lib-instrument "^1.4.2" istanbul-lib-instrument "^1.4.2"
istanbul-lib-source-maps "^1.1.0" istanbul-lib-source-maps "^1.1.0"
jest-changed-files "^20.0.1" jest-changed-files "^20.0.2"
jest-config "^20.0.1" jest-config "^20.0.2"
jest-docblock "^20.0.1" jest-docblock "^20.0.2"
jest-environment-jsdom "^20.0.1" jest-environment-jsdom "^20.0.2"
jest-haste-map "^20.0.1" jest-haste-map "^20.0.2"
jest-jasmine2 "^20.0.1" jest-jasmine2 "^20.0.2"
jest-message-util "^20.0.1" jest-message-util "^20.0.2"
jest-regex-util "^20.0.1" jest-regex-util "^20.0.2"
jest-resolve-dependencies "^20.0.1" jest-resolve-dependencies "^20.0.2"
jest-runtime "^20.0.1" jest-runtime "^20.0.2"
jest-snapshot "^20.0.1" jest-snapshot "^20.0.2"
jest-util "^20.0.1" jest-util "^20.0.2"
micromatch "^2.3.11" micromatch "^2.3.11"
node-notifier "^5.0.2" node-notifier "^5.0.2"
pify "^2.3.0" pify "^2.3.0"
@ -3029,171 +3053,171 @@ jest-cli@20.0.1:
worker-farm "^1.3.1" worker-farm "^1.3.1"
yargs "^7.0.2" yargs "^7.0.2"
jest-config@^20.0.1: jest-config@^20.0.2, jest-config@^20.0.4:
version "20.0.1" version "20.0.4"
resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-20.0.1.tgz#c6934f585c3e1775c96133efb302f986c3909ad8" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-20.0.4.tgz#e37930ab2217c913605eff13e7bd763ec48faeea"
dependencies: dependencies:
chalk "^1.1.3" chalk "^1.1.3"
glob "^7.1.1" glob "^7.1.1"
jest-environment-jsdom "^20.0.1" jest-environment-jsdom "^20.0.3"
jest-environment-node "^20.0.1" jest-environment-node "^20.0.3"
jest-jasmine2 "^20.0.1" jest-jasmine2 "^20.0.4"
jest-matcher-utils "^20.0.1" jest-matcher-utils "^20.0.3"
jest-regex-util "^20.0.1" jest-regex-util "^20.0.3"
jest-resolve "^20.0.1" jest-resolve "^20.0.4"
jest-validate "^20.0.1" jest-validate "^20.0.3"
pretty-format "^20.0.1" pretty-format "^20.0.3"
jest-diff@^20.0.1: jest-diff@^20.0.3:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-20.0.1.tgz#2567c80c324243328321386f8871a28ec9d350ac" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-20.0.3.tgz#81f288fd9e675f0fb23c75f1c2b19445fe586617"
dependencies: dependencies:
chalk "^1.1.3" chalk "^1.1.3"
diff "^3.2.0" diff "^3.2.0"
jest-matcher-utils "^20.0.1" jest-matcher-utils "^20.0.3"
pretty-format "^20.0.1" pretty-format "^20.0.3"
jest-docblock@^20.0.1: jest-docblock@^20.0.2, jest-docblock@^20.0.3:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-20.0.1.tgz#055e0bbcb76798198479901f92d2733bf619f854" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-20.0.3.tgz#17bea984342cc33d83c50fbe1545ea0efaa44712"
jest-environment-jsdom@^20.0.1: jest-environment-jsdom@^20.0.2, jest-environment-jsdom@^20.0.3:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-20.0.1.tgz#2d29f81368987d387c70ce4f500c6aa560f9b4f7" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz#048a8ac12ee225f7190417713834bb999787de99"
dependencies: dependencies:
jest-mock "^20.0.1" jest-mock "^20.0.3"
jest-util "^20.0.1" jest-util "^20.0.3"
jsdom "^9.12.0" jsdom "^9.12.0"
jest-environment-node@^20.0.1: jest-environment-node@^20.0.3:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-20.0.1.tgz#75ab5358072ee1efebc54f43474357d7b3d674c7" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-20.0.3.tgz#d488bc4612af2c246e986e8ae7671a099163d403"
dependencies: dependencies:
jest-mock "^20.0.1" jest-mock "^20.0.3"
jest-util "^20.0.1" jest-util "^20.0.3"
jest-haste-map@^20.0.1: jest-haste-map@^20.0.2, jest-haste-map@^20.0.4:
version "20.0.1" version "20.0.4"
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-20.0.1.tgz#e6ba4db99ab512e7c081a5b0a0af731d0e193d56" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-20.0.4.tgz#653eb55c889ce3c021f7b94693f20a4159badf03"
dependencies: dependencies:
fb-watchman "^2.0.0" fb-watchman "^2.0.0"
graceful-fs "^4.1.11" graceful-fs "^4.1.11"
jest-docblock "^20.0.1" jest-docblock "^20.0.3"
micromatch "^2.3.11" micromatch "^2.3.11"
sane "~1.6.0" sane "~1.6.0"
worker-farm "^1.3.1" worker-farm "^1.3.1"
jest-jasmine2@^20.0.1: jest-jasmine2@^20.0.2, jest-jasmine2@^20.0.4:
version "20.0.1" version "20.0.4"
resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-20.0.1.tgz#675772b1fd32ad74e92e8ae8282f8ea71d1de168" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz#fcc5b1411780d911d042902ef1859e852e60d5e1"
dependencies: dependencies:
chalk "^1.1.3" chalk "^1.1.3"
graceful-fs "^4.1.11" graceful-fs "^4.1.11"
jest-diff "^20.0.1" jest-diff "^20.0.3"
jest-matcher-utils "^20.0.1" jest-matcher-utils "^20.0.3"
jest-matchers "^20.0.1" jest-matchers "^20.0.3"
jest-message-util "^20.0.1" jest-message-util "^20.0.3"
jest-snapshot "^20.0.1" jest-snapshot "^20.0.3"
once "^1.4.0" once "^1.4.0"
p-map "^1.1.1" p-map "^1.1.1"
jest-matcher-utils@^20.0.1: jest-matcher-utils@^20.0.3:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-20.0.1.tgz#31aef67f59535af3c2271a3a3685db604dbd1622" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz#b3a6b8e37ca577803b0832a98b164f44b7815612"
dependencies: dependencies:
chalk "^1.1.3" chalk "^1.1.3"
pretty-format "^20.0.1" pretty-format "^20.0.3"
jest-matchers@^20.0.1: jest-matchers@^20.0.3:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-matchers/-/jest-matchers-20.0.1.tgz#053b7654ce60129268f39992886e987a5201bb90" resolved "https://registry.yarnpkg.com/jest-matchers/-/jest-matchers-20.0.3.tgz#ca69db1c32db5a6f707fa5e0401abb55700dfd60"
dependencies: dependencies:
jest-diff "^20.0.1" jest-diff "^20.0.3"
jest-matcher-utils "^20.0.1" jest-matcher-utils "^20.0.3"
jest-message-util "^20.0.1" jest-message-util "^20.0.3"
jest-regex-util "^20.0.1" jest-regex-util "^20.0.3"
jest-message-util@^20.0.1: jest-message-util@^20.0.2, jest-message-util@^20.0.3:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-20.0.1.tgz#ac21cb055a6a5786b7f127ac7e705df5ffb1c335" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-20.0.3.tgz#6aec2844306fcb0e6e74d5796c1006d96fdd831c"
dependencies: dependencies:
chalk "^1.1.3" chalk "^1.1.3"
micromatch "^2.3.11" micromatch "^2.3.11"
slash "^1.0.0" slash "^1.0.0"
jest-mock@^20.0.1: jest-mock@^20.0.3:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-20.0.1.tgz#f4cca2e87e441b66fabe4ead6a6d61773ec0773a" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-20.0.3.tgz#8bc070e90414aa155c11a8d64c869a0d5c71da59"
jest-regex-util@^20.0.1: jest-regex-util@^20.0.2, jest-regex-util@^20.0.3:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-20.0.1.tgz#ecbcca8fbe4e217bca7f6f42a9b831d051224dc4" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-20.0.3.tgz#85bbab5d133e44625b19faf8c6aa5122d085d762"
jest-resolve-dependencies@^20.0.1: jest-resolve-dependencies@^20.0.2:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.1.tgz#38fc012191775b0b277fabebb37aa8282e26846f" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz#6e14a7b717af0f2cb3667c549de40af017b1723a"
dependencies: dependencies:
jest-regex-util "^20.0.1" jest-regex-util "^20.0.3"
jest-resolve@^20.0.1: jest-resolve@^20.0.4:
version "20.0.1" version "20.0.4"
resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-20.0.1.tgz#cace553663f25c703dc977a4ce176e29eda92772" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-20.0.4.tgz#9448b3e8b6bafc15479444c6499045b7ffe597a5"
dependencies: dependencies:
browser-resolve "^1.11.2" browser-resolve "^1.11.2"
is-builtin-module "^1.0.0" is-builtin-module "^1.0.0"
resolve "^1.3.2" resolve "^1.3.2"
jest-runtime@^20.0.1: jest-runtime@^20.0.2:
version "20.0.1" version "20.0.4"
resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-20.0.1.tgz#384f9298b8e8a177870c6d9ad0023db10ddcaedc" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-20.0.4.tgz#a2c802219c4203f754df1404e490186169d124d8"
dependencies: dependencies:
babel-core "^6.0.0" babel-core "^6.0.0"
babel-jest "^20.0.1" babel-jest "^20.0.3"
babel-plugin-istanbul "^4.0.0" babel-plugin-istanbul "^4.0.0"
chalk "^1.1.3" chalk "^1.1.3"
convert-source-map "^1.4.0" convert-source-map "^1.4.0"
graceful-fs "^4.1.11" graceful-fs "^4.1.11"
jest-config "^20.0.1" jest-config "^20.0.4"
jest-haste-map "^20.0.1" jest-haste-map "^20.0.4"
jest-regex-util "^20.0.1" jest-regex-util "^20.0.3"
jest-resolve "^20.0.1" jest-resolve "^20.0.4"
jest-util "^20.0.1" jest-util "^20.0.3"
json-stable-stringify "^1.0.1" json-stable-stringify "^1.0.1"
micromatch "^2.3.11" micromatch "^2.3.11"
strip-bom "3.0.0" strip-bom "3.0.0"
yargs "^7.0.2" yargs "^7.0.2"
jest-snapshot@^20.0.1: jest-snapshot@^20.0.2, jest-snapshot@^20.0.3:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-20.0.1.tgz#3704c599705042f20ec7c95ba76a4524c744dfac" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-20.0.3.tgz#5b847e1adb1a4d90852a7f9f125086e187c76566"
dependencies: dependencies:
chalk "^1.1.3" chalk "^1.1.3"
jest-diff "^20.0.1" jest-diff "^20.0.3"
jest-matcher-utils "^20.0.1" jest-matcher-utils "^20.0.3"
jest-util "^20.0.1" jest-util "^20.0.3"
natural-compare "^1.4.0" natural-compare "^1.4.0"
pretty-format "^20.0.1" pretty-format "^20.0.3"
jest-util@^20.0.1: jest-util@^20.0.2, jest-util@^20.0.3:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-20.0.1.tgz#a3e7afb67110b2c3ac77b82e9a51ca57f4ff72a1" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-20.0.3.tgz#0c07f7d80d82f4e5a67c6f8b9c3fe7f65cfd32ad"
dependencies: dependencies:
chalk "^1.1.3" chalk "^1.1.3"
graceful-fs "^4.1.11" graceful-fs "^4.1.11"
jest-message-util "^20.0.1" jest-message-util "^20.0.3"
jest-mock "^20.0.1" jest-mock "^20.0.3"
jest-validate "^20.0.1" jest-validate "^20.0.3"
leven "^2.1.0" leven "^2.1.0"
mkdirp "^0.5.1" mkdirp "^0.5.1"
jest-validate@^20.0.1: jest-validate@^20.0.3:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-20.0.1.tgz#a236c29e3c29e9b92a1e5da211a732f0238da928" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-20.0.3.tgz#d0cfd1de4f579f298484925c280f8f1d94ec3cab"
dependencies: dependencies:
chalk "^1.1.3" chalk "^1.1.3"
jest-matcher-utils "^20.0.1" jest-matcher-utils "^20.0.3"
leven "^2.1.0" leven "^2.1.0"
pretty-format "^20.0.1" pretty-format "^20.0.3"
jodid25519@^1.0.0: jodid25519@^1.0.0:
version "1.0.2" version "1.0.2"
@ -3307,8 +3331,8 @@ kew@^0.7.0:
resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b" resolved "https://registry.yarnpkg.com/kew/-/kew-0.7.0.tgz#79d93d2d33363d6fdd2970b335d9141ad591d79b"
kind-of@^3.0.2: kind-of@^3.0.2:
version "3.2.0" version "3.2.2"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.0.tgz#b58abe4d5c044ad33726a8c1525b48cf891bff07" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
dependencies: dependencies:
is-buffer "^1.1.5" is-buffer "^1.1.5"
@ -3344,15 +3368,17 @@ levn@^0.3.0, levn@~0.3.0:
type-check "~0.3.2" type-check "~0.3.2"
lint-staged@^3.4.0: lint-staged@^3.4.0:
version "3.4.1" version "3.6.0"
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-3.4.1.tgz#96cd1cf7a1ac92d81662643c37d1cca28b91b046" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-3.6.0.tgz#cda8f0bef16e7928cc14b735186ae12cd662599c"
dependencies: dependencies:
app-root-path "^2.0.0" app-root-path "^2.0.0"
cosmiconfig "^1.1.0" cosmiconfig "^1.1.0"
execa "^0.6.0" execa "^0.6.0"
listr "^0.12.0" listr "^0.12.0"
lodash.chunk "^4.2.0"
minimatch "^3.0.0" minimatch "^3.0.0"
npm-which "^3.0.1" npm-which "^3.0.1"
p-map "^1.1.1"
staged-git-files "0.0.4" staged-git-files "0.0.4"
listr-silent-renderer@^1.1.1: listr-silent-renderer@^1.1.1:
@ -3457,6 +3483,10 @@ lodash.bind@^4.1.4:
version "4.2.1" version "4.2.1"
resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35"
lodash.chunk@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc"
lodash.defaults@^4.0.1: lodash.defaults@^4.0.1:
version "4.2.0" version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
@ -3632,10 +3662,14 @@ mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7:
dependencies: dependencies:
mime-db "~1.27.0" mime-db "~1.27.0"
mime@1.3.4, mime@^1.3.4: mime@1.3.4:
version "1.3.4" version "1.3.4"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
mime@^1.3.4:
version "1.3.6"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0"
min-document@^2.19.0: min-document@^2.19.0:
version "2.19.0" version "2.19.0"
resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
@ -3689,13 +3723,9 @@ ms@0.7.2:
version "0.7.2" version "0.7.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
ms@0.7.3: ms@2.0.0:
version "0.7.3" version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
ms@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-1.0.0.tgz#59adcd22edc543f7b5381862d31387b1f4bc9473"
mute-stream@0.0.5: mute-stream@0.0.5:
version "0.0.5" version "0.0.5"
@ -3782,8 +3812,8 @@ node-notifier@5.1.2, node-notifier@^5.0.2:
which "^1.2.12" which "^1.2.12"
node-pre-gyp@^0.6.29: node-pre-gyp@^0.6.29:
version "0.6.34" version "0.6.36"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz#db604112cb74e0d477554e9b505b17abddfab786"
dependencies: dependencies:
mkdirp "^0.5.1" mkdirp "^0.5.1"
nopt "^4.0.1" nopt "^4.0.1"
@ -3867,8 +3897,8 @@ number-is-nan@^1.0.0:
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
"nwmatcher@>= 1.3.9 < 2.0.0": "nwmatcher@>= 1.3.9 < 2.0.0":
version "1.3.9" version "1.4.0"
resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.3.9.tgz#8bab486ff7fa3dfd086656bbe8b17116d3692d2a" resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.0.tgz#b4389362170e7ef9798c3c7716d80ebc0106fccf"
nyc@10.3.2: nyc@10.3.2:
version "10.3.2" version "10.3.2"
@ -3914,15 +3944,6 @@ object-keys@^1.0.8:
version "1.0.11" version "1.0.11"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
object.entries@1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f"
dependencies:
define-properties "^1.1.2"
es-abstract "^1.6.1"
function-bind "^1.1.0"
has "^1.0.1"
object.omit@^2.0.0: object.omit@^2.0.0:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
@ -4179,9 +4200,9 @@ preserve@^0.2.0:
version "0.2.0" version "0.2.0"
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
pretty-format@^20.0.1: pretty-format@^20.0.3:
version "20.0.1" version "20.0.3"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-20.0.1.tgz#ba95329771907c189643dd251e244061ff642350" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-20.0.3.tgz#020e350a560a1fe1a98dc3beb6ccffb386de8b14"
dependencies: dependencies:
ansi-regex "^2.1.1" ansi-regex "^2.1.1"
ansi-styles "^3.0.0" ansi-styles "^3.0.0"
@ -4309,15 +4330,15 @@ react-dom@15.5.3:
object-assign "^4.1.0" object-assign "^4.1.0"
prop-types "~15.5.0" prop-types "~15.5.0"
react-hot-loader@3.0.0-beta.6: react-hot-loader@3.0.0-beta.7:
version "3.0.0-beta.6" version "3.0.0-beta.7"
resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-3.0.0-beta.6.tgz#463fac0bfc8b63a8385258af20c91636abce75f4" resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-3.0.0-beta.7.tgz#d5847b8165d731c4d5b30d86d5d4716227a0fa83"
dependencies: dependencies:
babel-template "^6.7.0" babel-template "^6.7.0"
global "^4.3.0" global "^4.3.0"
react-deep-force-update "^2.0.1" react-deep-force-update "^2.0.1"
react-proxy "^3.0.0-alpha.0" react-proxy "^3.0.0-alpha.0"
redbox-react "^1.2.5" redbox-react "^1.3.6"
source-map "^0.4.4" source-map "^0.4.4"
react-proxy@^3.0.0-alpha.0: react-proxy@^3.0.0-alpha.0:
@ -4400,13 +4421,14 @@ recursive-copy@^2.0.6:
promise "^7.0.1" promise "^7.0.1"
slash "^1.0.0" slash "^1.0.0"
redbox-react@^1.2.5: redbox-react@^1.3.6:
version "1.3.6" version "1.3.7"
resolved "https://registry.yarnpkg.com/redbox-react/-/redbox-react-1.3.6.tgz#70314c57c066257eb70b0a24dc794b5cef4f1c4e" resolved "https://registry.yarnpkg.com/redbox-react/-/redbox-react-1.3.7.tgz#bb3a1a73c07ebe1d67b55860908ee2bc35386968"
dependencies: dependencies:
error-stack-parser "^1.3.6" error-stack-parser "^1.3.6"
object-assign "^4.0.1" object-assign "^4.0.1"
prop-types "^15.5.4" prop-types "^15.5.4"
sourcemapped-stacktrace "^1.1.6"
regenerate@^1.2.1: regenerate@^1.2.1:
version "1.3.2" version "1.3.2"
@ -4654,24 +4676,6 @@ send@0.15.1:
range-parser "~1.2.0" range-parser "~1.2.0"
statuses "~1.3.1" statuses "~1.3.1"
send@0.15.2:
version "0.15.2"
resolved "https://registry.yarnpkg.com/send/-/send-0.15.2.tgz#f91fab4403bcf87e716f70ceb5db2f578bdc17d6"
dependencies:
debug "2.6.4"
depd "~1.1.0"
destroy "~1.0.4"
encodeurl "~1.0.1"
escape-html "~1.0.3"
etag "~1.8.0"
fresh "0.5.0"
http-errors "~1.6.1"
mime "1.3.4"
ms "1.0.0"
on-finished "~2.3.0"
range-parser "~1.2.0"
statuses "~1.3.1"
serve-static@1.12.1: serve-static@1.12.1:
version "1.12.1" version "1.12.1"
resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.1.tgz#7443a965e3ced647aceb5639fa06bf4d1bbe0039" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.1.tgz#7443a965e3ced647aceb5639fa06bf4d1bbe0039"
@ -4777,6 +4781,12 @@ source-map@~0.2.0:
dependencies: dependencies:
amdefine ">=0.0.4" amdefine ">=0.0.4"
sourcemapped-stacktrace@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/sourcemapped-stacktrace/-/sourcemapped-stacktrace-1.1.6.tgz#112d8749c942c3cd3b630dfac9514577b86a3a51"
dependencies:
source-map "0.5.6"
spawn-wrap@1.2.4: spawn-wrap@1.2.4:
version "1.2.4" version "1.2.4"
resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.2.4.tgz#920eb211a769c093eebfbd5b0e7a5d2e68ab2e40" resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.2.4.tgz#920eb211a769c093eebfbd5b0e7a5d2e68ab2e40"
@ -4803,8 +4813,8 @@ spdx-license-ids@^1.0.2:
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
sprintf-js@^1.0.3: sprintf-js@^1.0.3:
version "1.1.0" version "1.1.1"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.0.tgz#cffcaf702daf65ea39bb4e0fa2b299cec1a1be46" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.1.tgz#36be78320afe5801f6cea3ee78b6e5aab940ea0c"
sprintf-js@~1.0.2: sprintf-js@~1.0.2:
version "1.0.3" version "1.0.3"
@ -4914,10 +4924,10 @@ string_decoder@^0.10.25:
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
string_decoder@~1.0.0: string_decoder@~1.0.0:
version "1.0.0" version "1.0.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.1.tgz#62e200f039955a6810d8df0a33ffc0f013662d98"
dependencies: dependencies:
buffer-shims "~1.0.0" safe-buffer "^5.0.1"
stringstream@~0.0.4: stringstream@~0.0.4:
version "0.0.5" version "0.0.5"
@ -4947,18 +4957,24 @@ strip-json-comments@~2.0.1:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
styled-jsx@0.5.7: styled-jsx@1.0.2:
version "0.5.7" version "1.0.2"
resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-0.5.7.tgz#2cb02263ffa719b1435a864fdd6c62802ae86669" resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-1.0.2.tgz#84b4855e19ac49238e0b6bea3d3af3aaf296cb22"
dependencies: dependencies:
babel-plugin-syntax-jsx "6.18.0" babel-plugin-syntax-jsx "6.18.0"
babel-traverse "6.21.0" babel-traverse "6.21.0"
babel-types "6.23.0"
babylon "6.14.1" babylon "6.14.1"
convert-source-map "1.3.0" convert-source-map "1.3.0"
css-tree "1.0.0-alpha17"
escape-string-regexp "1.0.5" escape-string-regexp "1.0.5"
object.entries "1.0.4"
source-map "0.5.6" source-map "0.5.6"
string-hash "1.1.1" string-hash "1.1.1"
stylis "3.0.10"
stylis@3.0.10:
version "3.0.10"
resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.0.10.tgz#9f561e8a9799c2c317c596583bcaaa52a0d27663"
supports-color@^2.0.0: supports-color@^2.0.0:
version "2.0.0" version "2.0.0"
@ -5024,8 +5040,8 @@ tar@^2.2.1:
inherits "2" inherits "2"
test-exclude@^4.1.0: test-exclude@^4.1.0:
version "4.1.0" version "4.1.1"
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.0.tgz#04ca70b7390dd38c98d4a003a173806ca7991c91" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26"
dependencies: dependencies:
arrify "^1.0.1" arrify "^1.0.1"
micromatch "^2.3.11" micromatch "^2.3.11"
@ -5044,8 +5060,8 @@ thenify-all@^1.0.0:
thenify ">= 3.1.0 < 4" thenify ">= 3.1.0 < 4"
"thenify@>= 3.1.0 < 4": "thenify@>= 3.1.0 < 4":
version "3.2.1" version "3.3.0"
resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.2.1.tgz#251fd1c80aff6e5cf57cb179ab1fcb724269bd11" resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839"
dependencies: dependencies:
any-promise "^1.0.0" any-promise "^1.0.0"
@ -5139,8 +5155,8 @@ ua-parser-js@^0.7.9:
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb"
uglify-js@^2.6, uglify-js@^2.8.5: uglify-js@^2.6, uglify-js@^2.8.5:
version "2.8.24" version "2.8.27"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.24.tgz#48eb5175cf32e22ec11a47e638d7c8b4e0faf2dd" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.27.tgz#47787f912b0f242e5b984343be8e35e95f694c9c"
dependencies: dependencies:
source-map "~0.5.1" source-map "~0.5.1"
yargs "~3.10.0" yargs "~3.10.0"