diff --git a/addons/info/README.md b/addons/info/README.md index e6504e7da09b..c3fdf1c69d2a 100644 --- a/addons/info/README.md +++ b/addons/info/README.md @@ -80,7 +80,7 @@ setDefaults({ inline: true, // Displays info inline vs click button to view source: true, // Displays the source of story Component propTables: [/* Components used in story */], // displays Prop Tables with this components - propTablesExclude: [], // Exclude Components from being shoun in Prop Tables section + propTablesExclude: [], // Exclude Components from being shown in Prop Tables section styles: {}, // Overrides styles of addon marksyConf: {}, // Overrides components used to display markdown. Warning! This option's name will be likely deprecated in favor to "components" with the same API in 3.3 release. Follow this PR #1501 for details maxPropsIntoLine: 1, // Max props to display per line in source code diff --git a/addons/knobs/README.md b/addons/knobs/README.md index 4c3788d9d0ae..8869ab26ef48 100644 --- a/addons/knobs/README.md +++ b/addons/knobs/README.md @@ -231,6 +231,18 @@ const value = date(label, defaultValue); > Note: the default value must not change - e.g., do not do `date('Label', new Date())` or `date('Label')` +### button + +Allows you to include a button and associated handler. + +```js +import { button } from '@storybook/addon-knobs'; + +const label = 'Do Something'; +const handler = () => doSomething('foobar'); +button(label, handler); +``` + ### withKnobs vs withKnobsOptions If you feel like this addon is not performing well enough there is an option to use `withKnobsOptions` instead of `withKnobs`. diff --git a/addons/knobs/package.json b/addons/knobs/package.json index 4b7f77ee9f4c..03f065699eb0 100644 --- a/addons/knobs/package.json +++ b/addons/knobs/package.json @@ -28,8 +28,8 @@ "util-deprecate": "^1.0.2" }, "devDependencies": { - "@types/node": "^7.0.12", - "@types/react": "^16.0.11", + "@types/node": "^7.0.46", + "@types/react": "^16.0.15", "git-url-parse": "^6.2.2", "raw-loader": "^0.5.1", "react": "^16.0.0", diff --git a/addons/knobs/src/components/Panel.js b/addons/knobs/src/components/Panel.js index 429958e71b29..062f660c23a1 100644 --- a/addons/knobs/src/components/Panel.js +++ b/addons/knobs/src/components/Panel.js @@ -46,6 +46,7 @@ export default class Panel extends React.Component { constructor(props) { super(props); this.handleChange = this.handleChange.bind(this); + this.handleClick = this.handleClick.bind(this); this.setKnobs = this.setKnobs.bind(this); this.reset = this.reset.bind(this); this.setOptions = this.setOptions.bind(this); @@ -133,6 +134,10 @@ export default class Panel extends React.Component { this.setState({ knobs: newKnobs }, this.emitChange(changedKnob)); } + handleClick(knob) { + this.props.channel.emit('addon:knobs:knobClick', knob); + } + render() { const { knobs } = this.state; const knobsArray = Object.keys(knobs) @@ -146,7 +151,11 @@ export default class Panel extends React.Component { return (
- +
+ ); + } +} + +ButtonType.defaultProps = { + knob: {}, +}; + +ButtonType.propTypes = { + knob: PropTypes.shape({ + name: PropTypes.string, + }), + onClick: PropTypes.func.isRequired, +}; + +ButtonType.serialize = value => value; +ButtonType.deserialize = value => value; + +export default ButtonType; diff --git a/addons/knobs/src/components/types/index.js b/addons/knobs/src/components/types/index.js index a74e2459eaa6..ebd51deb858e 100644 --- a/addons/knobs/src/components/types/index.js +++ b/addons/knobs/src/components/types/index.js @@ -6,6 +6,7 @@ import ObjectType from './Object'; import SelectType from './Select'; import ArrayType from './Array'; import DateType from './Date'; +import ButtonType from './Button'; export default { text: TextType, @@ -16,4 +17,5 @@ export default { select: SelectType, array: ArrayType, date: DateType, + button: ButtonType, }; diff --git a/addons/knobs/src/index.js b/addons/knobs/src/index.js index 2f4c16dcddca..84df833e5c5a 100644 --- a/addons/knobs/src/index.js +++ b/addons/knobs/src/index.js @@ -58,6 +58,10 @@ export function date(name, value = new Date()) { return manager.knob(name, { type: 'date', value: proxyValue }); } +export function button(name, callback) { + return manager.knob(name, { type: 'button', callback, hideLabel: true }); +} + // "Higher order component" / wrapper style API // In 3.3, this will become `withKnobs`, once our decorator API supports it. // See https://github.com/storybooks/storybook/pull/1527 diff --git a/addons/knobs/src/react/WrapStory.js b/addons/knobs/src/react/WrapStory.js index 29568e2950ad..d3f7652c9678 100644 --- a/addons/knobs/src/react/WrapStory.js +++ b/addons/knobs/src/react/WrapStory.js @@ -7,6 +7,7 @@ export default class WrapStory extends React.Component { constructor(props) { super(props); this.knobChanged = this.knobChanged.bind(this); + this.knobClicked = this.knobClicked.bind(this); this.resetKnobs = this.resetKnobs.bind(this); this.setPaneKnobs = this.setPaneKnobs.bind(this); this._knobsAreReset = false; @@ -16,6 +17,8 @@ export default class WrapStory extends React.Component { componentDidMount() { // Watch for changes in knob editor. this.props.channel.on('addon:knobs:knobChange', this.knobChanged); + // Watch for clicks in knob editor. + this.props.channel.on('addon:knobs:knobClick', this.knobClicked); // Watch for the reset event and reset knobs. this.props.channel.on('addon:knobs:reset', this.resetKnobs); // Watch for any change in the knobStore and set the panel again for those @@ -31,6 +34,7 @@ export default class WrapStory extends React.Component { componentWillUnmount() { this.props.channel.removeListener('addon:knobs:knobChange', this.knobChanged); + this.props.channel.removeListener('addon:knobs:knobClick', this.knobClicked); this.props.channel.removeListener('addon:knobs:reset', this.resetKnobs); this.props.knobStore.unsubscribe(this.setPaneKnobs); } @@ -45,11 +49,17 @@ export default class WrapStory extends React.Component { const { knobStore, storyFn, context } = this.props; // Update the related knob and it's value. const knobOptions = knobStore.get(name); + knobOptions.value = value; knobStore.markAllUnused(); this.setState({ storyContent: storyFn(context) }); } + knobClicked(knob) { + const knobOptions = this.props.knobStore.get(knob.name); + knobOptions.callback(); + } + resetKnobs() { const { knobStore, storyFn, context } = this.props; knobStore.reset(); diff --git a/addons/knobs/src/vue/index.js b/addons/knobs/src/vue/index.js index ae99e44f1c1a..a59285819aa5 100644 --- a/addons/knobs/src/vue/index.js +++ b/addons/knobs/src/vue/index.js @@ -8,10 +8,16 @@ export const vueHandler = (channel, knobStore) => getStory => context => ({ const { name, value } = change; // Update the related knob and it's value. const knobOptions = knobStore.get(name); + knobOptions.value = value; this.$forceUpdate(); }, + onKnobClick(knob) { + const knobOptions = knobStore.get(knob.name); + knobOptions.callback(); + }, + onKnobReset() { knobStore.reset(); this.setPaneKnobs(false); @@ -26,12 +32,14 @@ export const vueHandler = (channel, knobStore) => getStory => context => ({ created() { channel.on('addon:knobs:reset', this.onKnobReset); channel.on('addon:knobs:knobChange', this.onKnobChange); + channel.on('addon:knobs:knobClick', this.onKnobClick); knobStore.subscribe(this.setPaneKnobs); }, beforeDestroy() { channel.removeListener('addon:knobs:reset', this.onKnobReset); channel.removeListener('addon:knobs:knobChange', this.onKnobChange); + channel.removeListener('addon:knobs:knobClick', this.onKnobClick); knobStore.unsubscribe(this.setPaneKnobs); }, }); diff --git a/addons/knobs/src/vue/index.test.js b/addons/knobs/src/vue/index.test.js index dcf2528ce45d..9e2b4ca7a3d3 100644 --- a/addons/knobs/src/vue/index.test.js +++ b/addons/knobs/src/vue/index.test.js @@ -32,8 +32,9 @@ describe('Vue handler', () => { const testStore = new KnobStore(); new Vue(vueHandler(testChannel, testStore)(testStory)(testContext)).$mount(); - expect(testChannel.on).toHaveBeenCalledTimes(2); + expect(testChannel.on).toHaveBeenCalledTimes(3); expect(testChannel.on).toHaveBeenCalledWith('addon:knobs:reset', expect.any(Function)); expect(testChannel.on).toHaveBeenCalledWith('addon:knobs:knobChange', expect.any(Function)); + expect(testChannel.on).toHaveBeenCalledWith('addon:knobs:knobClick', expect.any(Function)); }); }); diff --git a/app/react-native/package.json b/app/react-native/package.json index 545f1fc64d29..0c4cd9b0fc03 100644 --- a/app/react-native/package.json +++ b/app/react-native/package.json @@ -40,7 +40,7 @@ "babel-plugin-transform-regenerator": "^6.26.0", "babel-plugin-transform-runtime": "^6.23.0", "babel-polyfill": "^6.26.0", - "babel-preset-env": "^1.6.0", + "babel-preset-env": "^1.6.1", "babel-preset-minify": "^0.2.0", "babel-preset-react": "^6.24.1", "babel-preset-stage-0": "^6.24.1", @@ -64,7 +64,7 @@ "url-parse": "^1.1.9", "util-deprecate": "^1.0.2", "uuid": "^3.1.0", - "webpack": "^3.7.1", + "webpack": "^3.8.1", "webpack-dev-middleware": "^1.12.0", "webpack-hot-middleware": "^2.20.0", "ws": "^3.0.0" diff --git a/app/react/package.json b/app/react/package.json index 3a34bdef0886..db703e1c42c6 100644 --- a/app/react/package.json +++ b/app/react/package.json @@ -34,14 +34,14 @@ "babel-plugin-react-docgen": "^1.8.0", "babel-plugin-transform-regenerator": "^6.26.0", "babel-plugin-transform-runtime": "^6.23.0", - "babel-preset-env": "^1.6.0", + "babel-preset-env": "^1.6.1", "babel-preset-minify": "^0.2.0", "babel-preset-react": "^6.24.1", "babel-preset-react-app": "^3.0.3", "babel-preset-stage-0": "^6.24.1", "babel-runtime": "^6.26.0", "case-sensitive-paths-webpack-plugin": "^2.1.1", - "chalk": "^2.1.0", + "chalk": "^2.2.0", "commander": "^2.11.0", "common-tags": "^1.4.0", "configstore": "^3.1.1", @@ -71,7 +71,7 @@ "url-loader": "^0.6.2", "util-deprecate": "^1.0.2", "uuid": "^3.1.0", - "webpack": "^3.7.1", + "webpack": "^3.8.1", "webpack-dev-middleware": "^1.12.0", "webpack-hot-middleware": "^2.20.0" }, diff --git a/app/vue/package.json b/app/vue/package.json index 25f105463486..f4f857ea5140 100644 --- a/app/vue/package.json +++ b/app/vue/package.json @@ -41,7 +41,7 @@ "babel-preset-stage-0": "^6.24.1", "babel-runtime": "^6.26.0", "case-sensitive-paths-webpack-plugin": "^2.1.1", - "chalk": "^2.1.0", + "chalk": "^2.2.0", "commander": "^2.11.0", "common-tags": "^1.4.0", "configstore": "^3.1.1", diff --git a/dependencies.yml b/dependencies.yml index 3520b7e252cb..bd6995784eac 100644 --- a/dependencies.yml +++ b/dependencies.yml @@ -29,9 +29,10 @@ collectors: bootstrap_command: yarn actors: # pull requests for updates to our major version - - type: js-lerna + - type: js-lerna:0.9.0-beta versions: "L.Y.Y" settings: + batch_mode: true bootstrap_command: yarn github_labels: - dependencies:update diff --git a/docs/package.json b/docs/package.json index 7b2bdb99d10a..95bf6e18d1e1 100644 --- a/docs/package.json +++ b/docs/package.json @@ -25,7 +25,7 @@ "babel-core": "^6.26.0", "babel-plugin-transform-runtime": "^6.23.0", "babel-polyfill": "^6.26.0", - "babel-preset-env": "^1.6.0", + "babel-preset-env": "^1.6.1", "babel-preset-react": "^6.24.1", "babel-preset-stage-0": "^6.24.1", "bootstrap": "^3.3.7", diff --git a/docs/yarn.lock b/docs/yarn.lock index dc0f12abc65b..5b2aef3a88ee 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -1364,6 +1364,41 @@ babel-preset-env@^1.6.0: invariant "^2.2.2" semver "^5.3.0" +babel-preset-env@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^2.1.2" + invariant "^2.2.2" + semver "^5.3.0" + babel-preset-es2015@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" diff --git a/examples/cra-kitchen-sink/src/__snapshots__/storyshots.test.js.snap b/examples/cra-kitchen-sink/src/__snapshots__/storyshots.test.js.snap index 61ad984c0719..ffe4f769c193 100644 --- a/examples/cra-kitchen-sink/src/__snapshots__/storyshots.test.js.snap +++ b/examples/cra-kitchen-sink/src/__snapshots__/storyshots.test.js.snap @@ -1318,6 +1318,13 @@ exports[`Storyshots Button with knobs 1`] = `

Nice to meet you!

+
+

+ PS. My shirt pocket contains: +

+
  • + No items! +
  • `; diff --git a/examples/cra-kitchen-sink/src/stories/index.js b/examples/cra-kitchen-sink/src/stories/index.js index 6668fb687166..b067b63ffa14 100644 --- a/examples/cra-kitchen-sink/src/stories/index.js +++ b/examples/cra-kitchen-sink/src/stories/index.js @@ -1,4 +1,5 @@ import React from 'react'; +import PropTypes from 'prop-types'; import EventEmiter from 'eventemitter3'; import { storiesOf } from '@storybook/react'; @@ -16,6 +17,7 @@ import { select, array, date, + button, object, } from '@storybook/addon-knobs'; import centered from '@storybook/addon-centered'; @@ -59,6 +61,23 @@ const InfoButton = () => ( ); +class AsyncItemLoader extends React.Component { + constructor() { + super(); + this.state = { items: [] }; + } + + loadItems() { + setTimeout(() => this.setState({ items: ['pencil', 'pen', 'eraser'] }), 1500); + } + + render() { + button('Load the items', () => this.loadItems()); + return this.props.children(this.state.items); + } +} +AsyncItemLoader.propTypes = { children: PropTypes.func.isRequired }; + storiesOf('Button', module) .addDecorator(withKnobs) .add('with text', () => ( @@ -118,6 +137,14 @@ storiesOf('Button', module)

    In my backpack, I have:

    {salutation}

    +
    +

    PS. My shirt pocket contains:

    + + {loadedItems => { + if (!loadedItems.length) return
  • No items!
  • ; + return ; + }} +
    ); }) diff --git a/examples/vue-kitchen-sink/src/stories/index.js b/examples/vue-kitchen-sink/src/stories/index.js index 82c9820433c8..9ea6dfdd6ceb 100644 --- a/examples/vue-kitchen-sink/src/stories/index.js +++ b/examples/vue-kitchen-sink/src/stories/index.js @@ -14,6 +14,7 @@ import { select, color, date, + button, } from '@storybook/addon-knobs'; import Centered from '@storybook/addon-centered'; @@ -231,6 +232,8 @@ storiesOf('Addon Knobs', module) : `I'm out of ${fruit}${nice ? ', Sorry!' : '.'}`; const salutation = nice ? 'Nice to meet you!' : 'Leave me alone!'; + button('Arbitrary action', action('You clicked it!')); + return { template: `
    diff --git a/lib/cli/package.json b/lib/cli/package.json index 96033e021f3c..20fb6de2096d 100644 --- a/lib/cli/package.json +++ b/lib/cli/package.json @@ -22,7 +22,7 @@ }, "dependencies": { "@storybook/codemod": "^3.2.12", - "chalk": "^2.1.0", + "chalk": "^2.2.0", "child-process-promise": "^2.2.1", "commander": "^2.11.0", "cross-spawn": "^5.0.1", diff --git a/lib/ui/package.json b/lib/ui/package.json index 36819df84c42..138c80f97eb1 100644 --- a/lib/ui/package.json +++ b/lib/ui/package.json @@ -16,7 +16,7 @@ "dependencies": { "@hypnosphi/fuse.js": "^3.0.9", "@storybook/components": "^3.2.12", - "@storybook/react-fuzzy": "^0.4.0", + "@storybook/react-fuzzy": "^0.4.1", "babel-runtime": "^6.26.0", "deep-equal": "^1.0.1", "events": "^1.1.1", diff --git a/package.json b/package.json index 7d2fea5df9b0..57634c6f8934 100644 --- a/package.json +++ b/package.json @@ -44,19 +44,19 @@ "babel-plugin-transform-md-import-to-string": "^1.0.6", "babel-plugin-transform-runtime": "^6.23.0", "babel-polyfill": "^6.26.0", - "babel-preset-env": "^1.6.0", + "babel-preset-env": "^1.6.1", "babel-preset-react": "^6.24.1", "babel-preset-stage-0": "^6.24.1", - "chalk": "^2.1.0", + "chalk": "^2.2.0", "codecov": "^2.3.1", "commander": "^2.11.0", "danger": "^1.2.0", "enzyme": "^3.1.0", - "enzyme-adapter-react-16": "^1.0.1", + "enzyme-adapter-react-16": "^1.0.2", "eslint": "^4.9.0", "eslint-config-airbnb": "^15.1.0", "eslint-config-prettier": "^2.4.0", - "eslint-plugin-import": "^2.7.0", + "eslint-plugin-import": "^2.8.0", "eslint-plugin-jest": "^21.0.0", "eslint-plugin-json": "^1.2.0", "eslint-plugin-jsx-a11y": "^6.0.2", @@ -71,7 +71,7 @@ "jest": "^21.2.0", "jest-enzyme": "^4.0.1", "lerna": "^2.4.0", - "lint-staged": "^4.1.0", + "lint-staged": "^4.3.0", "lodash": "^4.17.4", "nodemon": "^1.12.1", "npmlog": "^4.1.2", diff --git a/yarn.lock b/yarn.lock index b3a88bd23b88..2abe25e6db80 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21,9 +21,9 @@ git-url-parse "^6.0.2" shelljs "^0.7.0" -"@storybook/react-fuzzy@^0.4.0": - version "0.4.0" - resolved "https://registry.yarnpkg.com/@storybook/react-fuzzy/-/react-fuzzy-0.4.0.tgz#2961e8a1f6c1afcce97e9e9a14d1dfe9d9061087" +"@storybook/react-fuzzy@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@storybook/react-fuzzy/-/react-fuzzy-0.4.1.tgz#612bdf7768585ad6e086b4738efbf204e94290a0" dependencies: babel-runtime "^6.23.0" classnames "^2.2.5" @@ -44,17 +44,17 @@ version "6.0.88" resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.88.tgz#f618f11a944f6a18d92b5c472028728a3e3d4b66" -"@types/node@^7.0.12": - version "7.0.43" - resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.43.tgz#a187e08495a075f200ca946079c914e1a5fe962c" +"@types/node@^7.0.46": + version "7.0.46" + resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.46.tgz#c3dedd25558c676b3d6303e51799abb9c3f8f314" "@types/react@^15.0.24": version "15.6.4" resolved "https://registry.yarnpkg.com/@types/react/-/react-15.6.4.tgz#3bb57bd43183a05919ceb025a264287348f47e9d" -"@types/react@^16.0.11": - version "16.0.11" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.0.11.tgz#ab505dc60bd1dcd6113577d71d1c96e58b6bd9f0" +"@types/react@^16.0.15": + version "16.0.15" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.0.15.tgz#1b1eba408fc75735b3e53a83333c346eeeb0022b" JSONStream@^1.0.4: version "1.3.1" @@ -1651,6 +1651,41 @@ babel-preset-env@^1.6.0: invariant "^2.2.2" semver "^5.3.0" +babel-preset-env@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^2.1.2" + invariant "^2.2.2" + semver "^5.3.0" + babel-preset-es2015-node@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/babel-preset-es2015-node/-/babel-preset-es2015-node-6.1.1.tgz#60b23157024b0cfebf3a63554cb05ee035b4e55f" @@ -2471,6 +2506,14 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: escape-string-regexp "^1.0.5" supports-color "^4.0.0" +chalk@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.2.0.tgz#477b3bf2f9b8fd5ca9e429747e37f724ee7af240" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + chalk@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" @@ -3896,15 +3939,16 @@ entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" -enzyme-adapter-react-16@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.1.tgz#066cb1735e65d8d95841a023f94dab3ce6109e17" +enzyme-adapter-react-16@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.2.tgz#8c6f431f17c69e1e9eeb25ca4bd92f31971eb2dd" dependencies: enzyme-adapter-utils "^1.0.0" lodash "^4.17.4" object.assign "^4.0.4" object.values "^1.0.4" prop-types "^15.5.10" + react-test-renderer "^16.0.0-0" enzyme-adapter-utils@^1.0.0: version "1.0.0" @@ -4130,7 +4174,7 @@ eslint-plugin-flowtype@2.35.0: dependencies: lodash "^4.15.0" -eslint-plugin-import@2.7.0, eslint-plugin-import@^2.7.0: +eslint-plugin-import@2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f" dependencies: @@ -4145,6 +4189,21 @@ eslint-plugin-import@2.7.0, eslint-plugin-import@^2.7.0: minimatch "^3.0.3" read-pkg-up "^2.0.0" +eslint-plugin-import@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz#fa1b6ef31fcb3c501c09859c1b86f1fc5b986894" + dependencies: + builtin-modules "^1.1.1" + contains-path "^0.1.0" + debug "^2.6.8" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.1" + eslint-module-utils "^2.1.1" + has "^1.0.1" + lodash.cond "^4.3.0" + minimatch "^3.0.3" + read-pkg-up "^2.0.0" + eslint-plugin-jest@^21.0.0: version "21.2.0" resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-21.2.0.tgz#292044df9cf0866ad9c530e78e6528fae287b926" @@ -7197,12 +7256,13 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lint-staged@^4.1.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-4.2.3.tgz#5a1f12256af06110b96225f109dbf215009a37a9" +lint-staged@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-4.3.0.tgz#ed0779ad9a42c0dc62bb3244e522870b41125879" dependencies: app-root-path "^2.0.0" chalk "^2.1.0" + commander "^2.11.0" cosmiconfig "^1.1.0" execa "^0.8.0" is-glob "^4.0.0" @@ -9686,7 +9746,7 @@ react-style-proptype@^3.0.0: dependencies: prop-types "^15.5.4" -react-test-renderer@^16.0.0: +react-test-renderer@^16.0.0, react-test-renderer@^16.0.0-0: version "16.0.0" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.0.0.tgz#9fe7b8308f2f71f29fc356d4102086f131c9cb15" dependencies: @@ -12376,9 +12436,9 @@ webpack@^3.6.0: webpack-sources "^1.0.1" yargs "^8.0.2" -webpack@^3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.7.1.tgz#6046b5c415ff7df7a0dc54c5b6b86098e8b952da" +webpack@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.8.1.tgz#b16968a81100abe61608b0153c9159ef8bb2bd83" dependencies: acorn "^5.0.0" acorn-dynamic-import "^2.0.0"