diff --git a/.eslintrc.js b/.eslintrc.js index d05fded1d6a9..bd9f16f747f8 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -30,6 +30,7 @@ module.exports = { singleQuote: true, }, ], + 'no-debugger': process.env.NODE_ENV === 'production' ? error : ignore, quotes: [warn, 'single', { avoidEscape: true }], 'class-methods-use-this': ignore, 'arrow-parens': [warn, 'as-needed'], diff --git a/.remarkrc.js b/.remarkrc.js index 078472d14052..9a2b8e63e7e5 100644 --- a/.remarkrc.js +++ b/.remarkrc.js @@ -14,12 +14,5 @@ module.exports = { }, }, ], - [ - 'remark-toc', - { - tight: true, - maxDepth: 3, - }, - ], ], }; diff --git a/CHANGELOG.md b/CHANGELOG.md index 571b02c7375b..2d8ccbb5aeb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -152,6 +152,180 @@ - Update eslint-plugin-jest to the latest version 🚀 [#1795](https://github.com/storybooks/storybook/pull/1795) - Update lerna to the latest version 🚀 [#1768](https://github.com/storybooks/storybook/pull/1768) +# 3.2.18 + +2017-December-18 + +#### Bug Fixes + +- Number knob: apply default min/max/step values only in range mode [#2437](https://github.com/storybooks/storybook/pull/2437) +- [addon-actions] Check result of getPropertyDescriptor for IE11 [#2428](https://github.com/storybooks/storybook/pull/2428) +- Edited template of search box result item to fix overflow text in row [#2419](https://github.com/storybooks/storybook/pull/2419) +- Fix missing supported extension check in case when asset is a string [#2468](https://github.com/storybooks/storybook/pull/2468) + +#### Documentation + +- Fix react-native-vanilla to actually run storybook and document how to run it [#2274](https://github.com/storybooks/storybook/pull/2274) +- Add another state addon to the gallery [#2391](https://github.com/storybooks/storybook/pull/2391) +- Create ISSUE_TEMPLATE.md [#2426](https://github.com/storybooks/storybook/pull/2426) +- fix Button dependency & typo in composant name in documentation [#2465](https://github.com/storybooks/storybook/pull/2465) +- add vue storybook boilerplate [#2421](https://github.com/storybooks/storybook/pull/2421) +- fix: update links to webpack docs [#2512](https://github.com/storybooks/storybook/pull/2512) + +#### Maintenance + +- Do not remove debugger-statements during development [#2493](https://github.com/storybooks/storybook/pull/2493) +- FIX react-native-test in CI [#2444](https://github.com/storybooks/storybook/pull/2444) + +#### Dependency Upgrades + +
+ +139 PRs + + +- Update gatsby in /docs from 1.9.139 to 1.9.141 [#2510](https://github.com/storybooks/storybook/pull/2510) +- Update gatsby in /docs from 1.9.138 to 1.9.139 [#2499](https://github.com/storybooks/storybook/pull/2499) +- Upgraded `eslint-plugin-prettier` in `/` from "2.3.1" to "2.4.0" [#2500](https://github.com/storybooks/storybook/pull/2500) +- Upgraded `graphql` in `addons/graphql` from "0.11.7" to "0.12.3" [#2500](https://github.com/storybooks/storybook/pull/2500) +- Upgraded `moment` in `addons/knobs` from "2.19.4" to "2.20.0" [#2500](https://github.com/storybooks/storybook/pull/2500) +- Upgraded `ws` in `app/react-native` from "3.3.2" to "3.3.3" [#2500](https://github.com/storybooks/storybook/pull/2500) +- Upgraded `moment` in `addons/comments` from "2.19.4" to "2.20.0" [#2500](https://github.com/storybooks/storybook/pull/2500) +- Update gatsby in /docs from 1.9.135 to 1.9.138 [#2497](https://github.com/storybooks/storybook/pull/2497) +- Upgraded `eslint-plugin-jest` in `/` from "21.4.3" to "21.5.0" [#2496](https://github.com/storybooks/storybook/pull/2496) +- Upgraded `nodemon` in `/` from "1.12.7" to "1.13.2" [#2496](https://github.com/storybooks/storybook/pull/2496) +- Upgraded `nodemon` in `app/react` from "1.12.7" to "1.13.2" [#2496](https://github.com/storybooks/storybook/pull/2496) +- Upgraded `nodemon` in `app/vue` from "1.12.7" to "1.13.2" [#2496](https://github.com/storybooks/storybook/pull/2496) +- Update gatsby-remark-copy-linked-files in /docs from 1.5.23 to 1.5.24 [#2495](https://github.com/storybooks/storybook/pull/2495) +- Update gatsby in /docs from 1.9.134 to 1.9.135 [#2491](https://github.com/storybooks/storybook/pull/2491) +- Update danger in / from 2.1.4 to 2.1.5 [#2489](https://github.com/storybooks/storybook/pull/2489) +- Upgraded `gatsby-plugin-sharp` in `/docs` from "1.6.23" to "1.6.24" [#2490](https://github.com/storybooks/storybook/pull/2490) +- Upgraded `gatsby-remark-images` in `/docs` from "1.5.35" to "1.5.36" [#2490](https://github.com/storybooks/storybook/pull/2490) +- Upgraded `eslint-plugin-jest` in `/` from "21.4.2" to "21.4.3" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `nodemon` in `/` from "1.12.6" to "1.12.7" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `symlink-dir` in `/` from "1.1.0" to "1.1.1" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `@types/node` in `addons/knobs` from "8.0.58" to "8.5.1" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `@types/react` in `addons/knobs` from "16.0.29" to "16.0.30" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `style-loader` in `addons/knobs` from "0.19.0" to "0.19.1" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `vue` in `addons/knobs` from "2.5.10" to "2.5.11" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `autoprefixer` in `app/react-native` from "7.2.2" to "7.2.3" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `style-loader` in `app/react-native` from "0.18.2" to "0.19.1" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `autoprefixer` in `app/react` from "7.2.2" to "7.2.3" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `style-loader` in `app/react` from "0.18.2" to "0.19.1" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `nodemon` in `app/react` from "1.12.6" to "1.12.7" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `autoprefixer` in `app/vue` from "7.2.2" to "7.2.3" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `style-loader` in `app/vue` from "0.18.2" to "0.19.1" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `nodemon` in `app/vue` from "1.12.6" to "1.12.7" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `vue` in `app/vue` from "2.5.10" to "2.5.11" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `vue-template-compiler` in `app/vue` from "2.5.10" to "2.5.11" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `vue` in `examples/vue-kitchen-sink` from "2.5.10" to "2.5.11" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `vue-template-compiler` in `examples/vue-kitchen-sink` from "2.5.10" to "2.5.11" [#2488](https://github.com/storybooks/storybook/pull/2488) +- Upgraded `gatsby-link` in `/docs` from "1.6.31" to "1.6.32" [#2486](https://github.com/storybooks/storybook/pull/2486) +- Upgraded `gatsby-transformer-remark` in `/docs` from "1.7.24" to "1.7.25" [#2486](https://github.com/storybooks/storybook/pull/2486) +- Upgraded `gatsby` in `/docs` from "1.9.131" to "1.9.134" [#2486](https://github.com/storybooks/storybook/pull/2486) +- Upgraded `gatsby-remark-images` in `/docs` from "1.5.34" to "1.5.35" [#2476](https://github.com/storybooks/storybook/pull/2476) +- Upgraded `gatsby-source-filesystem` in `/docs` from "1.5.10" to "1.5.11" [#2476](https://github.com/storybooks/storybook/pull/2476) +- Upgraded `gatsby` in `/docs` from "1.9.130" to "1.9.131" [#2476](https://github.com/storybooks/storybook/pull/2476) +- Upgraded `eslint-plugin-jsx-a11y` in `/` from "6.0.2" to "6.0.3" [#2477](https://github.com/storybooks/storybook/pull/2477) +- Upgraded `nodemon` in `/` from "1.12.5" to "1.12.6" [#2477](https://github.com/storybooks/storybook/pull/2477) +- Upgraded `vue` in `addons/knobs` from "2.5.9" to "2.5.10" [#2477](https://github.com/storybooks/storybook/pull/2477) +- Upgraded `react-modal` in `lib/ui` from "3.1.7" to "3.1.8" [#2477](https://github.com/storybooks/storybook/pull/2477) +- Upgraded `nodemon` in `app/react` from "1.12.5" to "1.12.6" [#2477](https://github.com/storybooks/storybook/pull/2477) +- Upgraded `nodemon` in `app/vue` from "1.12.5" to "1.12.6" [#2477](https://github.com/storybooks/storybook/pull/2477) +- Upgraded `vue` in `app/vue` from "2.5.9" to "2.5.10" [#2477](https://github.com/storybooks/storybook/pull/2477) +- Upgraded `vue-template-compiler` in `app/vue` from "2.5.9" to "2.5.10" [#2477](https://github.com/storybooks/storybook/pull/2477) +- Upgraded `vue` in `examples/vue-kitchen-sink` from "2.5.9" to "2.5.10" [#2477](https://github.com/storybooks/storybook/pull/2477) +- Upgraded `vue-template-compiler` in `examples/vue-kitchen-sink` from "2.5.9" to "2.5.10" [#2477](https://github.com/storybooks/storybook/pull/2477) +- Upgraded `danger` in `/` from "2.1.3" to "2.1.4" [#2473](https://github.com/storybooks/storybook/pull/2473) +- Upgraded `eslint` in `/` from "4.13.0" to "4.13.1" [#2473](https://github.com/storybooks/storybook/pull/2473) +- Upgraded `prettier` in `/` from "1.9.1" to "1.9.2" [#2473](https://github.com/storybooks/storybook/pull/2473) +- Upgraded `@types/node` in `addons/knobs` from "8.0.57" to "8.0.58" [#2473](https://github.com/storybooks/storybook/pull/2473) +- Upgraded `@types/react` in `addons/knobs` from "16.0.28" to "16.0.29" [#2473](https://github.com/storybooks/storybook/pull/2473) +- Upgraded `core-js` in `app/react` from "2.5.2" to "2.5.3" [#2473](https://github.com/storybooks/storybook/pull/2473) +- Upgraded `core-js` in `app/vue` from "2.5.2" to "2.5.3" [#2473](https://github.com/storybooks/storybook/pull/2473) +- Upgraded `moment` in `addons/knobs` from "2.19.3" to "2.19.4" [#2462](https://github.com/storybooks/storybook/pull/2462) +- Upgraded `moment` in `addons/comments` from "2.19.3" to "2.19.4" [#2462](https://github.com/storybooks/storybook/pull/2462) +- Upgraded `react-inspector` in `addons/actions` from "2.2.1" to "2.2.2" [#2457](https://github.com/storybooks/storybook/pull/2457) +- Upgraded `react-inspector` in `lib/ui` from "2.2.1" to "2.2.2" [#2457](https://github.com/storybooks/storybook/pull/2457) +- Upgraded `gatsby-link` in `/docs` from "1.6.30" to "1.6.31" [#2458](https://github.com/storybooks/storybook/pull/2458) +- Upgraded `gatsby-plugin-sharp` in `/docs` from "1.6.22" to "1.6.23" [#2458](https://github.com/storybooks/storybook/pull/2458) +- Upgraded `gatsby-remark-autolink-headers` in `/docs` from "1.4.9" to "1.4.10" [#2458](https://github.com/storybooks/storybook/pull/2458) +- Upgraded `gatsby-remark-copy-linked-files` in `/docs` from "1.5.22" to "1.5.23" [#2458](https://github.com/storybooks/storybook/pull/2458) +- Upgraded `gatsby-remark-images` in `/docs` from "1.5.33" to "1.5.34" [#2458](https://github.com/storybooks/storybook/pull/2458) +- Upgraded `gatsby-remark-smartypants` in `/docs` from "1.4.9" to "1.4.10" [#2458](https://github.com/storybooks/storybook/pull/2458) +- Upgraded `gatsby-source-filesystem` in `/docs` from "1.5.9" to "1.5.10" [#2458](https://github.com/storybooks/storybook/pull/2458) +- Upgraded `gatsby-transformer-remark` in `/docs` from "1.7.23" to "1.7.24" [#2458](https://github.com/storybooks/storybook/pull/2458) +- Upgraded `gatsby` in `/docs` from "1.9.128" to "1.9.130" [#2458](https://github.com/storybooks/storybook/pull/2458) +- Update react-stack-grid in /docs from 0.6.0 to 0.7.0 [#2453](https://github.com/storybooks/storybook/pull/2453) +- Upgraded `eslint` in `/` from "4.12.1" to "4.13.0" [#2454](https://github.com/storybooks/storybook/pull/2454) +- Upgraded `core-js` in `app/react` from "2.5.1" to "2.5.2" [#2454](https://github.com/storybooks/storybook/pull/2454) +- Upgraded `core-js` in `app/vue` from "2.5.1" to "2.5.2" [#2454](https://github.com/storybooks/storybook/pull/2454) +- Upgraded `@types/node` in `addons/knobs` from "8.0.56" to "8.0.57" [#2448](https://github.com/storybooks/storybook/pull/2448) +- Upgraded `@types/react` in `addons/knobs` from "16.0.27" to "16.0.28" [#2448](https://github.com/storybooks/storybook/pull/2448) +- Upgraded `autoprefixer` in `app/react-native` from "7.2.1" to "7.2.2" [#2448](https://github.com/storybooks/storybook/pull/2448) +- Upgraded `autoprefixer` in `app/react` from "7.2.1" to "7.2.2" [#2448](https://github.com/storybooks/storybook/pull/2448) +- Upgraded `autoprefixer` in `app/vue` from "7.2.1" to "7.2.2" [#2448](https://github.com/storybooks/storybook/pull/2448) +- Upgraded `danger` in `/` from "2.1.2" to "2.1.3" [#2447](https://github.com/storybooks/storybook/pull/2447) +- Upgraded `jscodeshift` in `lib/codemod` from "0.3.32" to "0.4.0" [#2447](https://github.com/storybooks/storybook/pull/2447) +- Upgraded `jscodeshift` in `lib/cli` from "0.3.32" to "0.4.0" [#2447](https://github.com/storybooks/storybook/pull/2447) +- Upgraded `webpack-dev-server` in `examples/vue-kitchen-sink` from "2.9.6" to "2.9.7" [#2447](https://github.com/storybooks/storybook/pull/2447) +- Upgraded `danger` in `/` from "2.0.3" to "2.1.2" [#2442](https://github.com/storybooks/storybook/pull/2442) +- Upgraded `eslint-plugin-jest` in `/` from "21.4.1" to "21.4.2" [#2442](https://github.com/storybooks/storybook/pull/2442) +- Upgraded `github-release-from-changelog` in `/` from "1.2.1" to "1.3.0" [#2442](https://github.com/storybooks/storybook/pull/2442) +- Upgraded `nodemon` in `/` from "1.12.4" to "1.12.5" [#2442](https://github.com/storybooks/storybook/pull/2442) +- Upgraded `prettier` in `/` from "1.9.0" to "1.9.1" [#2442](https://github.com/storybooks/storybook/pull/2442) +- Upgraded `@types/node` in `addons/knobs` from "8.0.54" to "8.0.55" [#2442](https://github.com/storybooks/storybook/pull/2442) +- Upgraded `react-native` in `app/react-native` from "0.50.4" to "0.51.0" [#2442](https://github.com/storybooks/storybook/pull/2442) +- Upgraded `nodemon` in `app/react` from "1.12.4" to "1.12.5" [#2442](https://github.com/storybooks/storybook/pull/2442) +- Upgraded `nodemon` in `app/vue` from "1.12.4" to "1.12.5" [#2442](https://github.com/storybooks/storybook/pull/2442) +- Upgraded `@types/node` in `addons/knobs` from "8.0.54" to "8.0.56" [#2443](https://github.com/storybooks/storybook/pull/2443) +- Upgraded `webpack-dev-server` in `examples/vue-kitchen-sink` from "2.9.5" to "2.9.6" [#2443](https://github.com/storybooks/storybook/pull/2443) +- Update fs-extra in / from 4.0.2 to 4.0.3 [#2433](https://github.com/storybooks/storybook/pull/2433) +- Upgraded `eslint-plugin-jest` in `/` from "21.4.0" to "21.4.1" [#2430](https://github.com/storybooks/storybook/pull/2430) +- Upgraded `prettier` in `/` from "1.8.2" to "1.9.0" [#2430](https://github.com/storybooks/storybook/pull/2430) +- Upgraded `babel-eslint` in `/` from "8.0.2" to "8.0.3" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `commander` in `/` from "2.12.1" to "2.12.2" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `eslint` in `/` from "4.12.0" to "4.12.1" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `eslint-plugin-jest` in `/` from "21.3.2" to "21.4.0" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `inquirer` in `/` from "4.0.0" to "4.0.1" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `nodemon` in `/` from "1.12.1" to "1.12.4" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `moment` in `addons/knobs` from "2.19.2" to "2.19.3" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `react-datetime` in `addons/knobs` from "2.11.0" to "2.11.1" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `@types/node` in `addons/knobs` from "8.0.53" to "8.0.54" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `@types/react` in `addons/knobs` from "16.0.25" to "16.0.27" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `typescript` in `addons/knobs` from "2.6.1" to "2.6.2" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `vue` in `addons/knobs` from "2.5.8" to "2.5.9" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `commander` in `lib/cli` from "2.12.1" to "2.12.2" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `react-modal` in `lib/ui` from "3.1.4" to "3.1.7" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `autoprefixer` in `app/react-native` from "7.1.6" to "7.2.1" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `commander` in `app/react-native` from "2.12.1" to "2.12.2" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `webpack` in `app/react-native` from "3.8.1" to "3.10.0" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `airbnb-js-shims` in `app/react` from "1.3.0" to "1.4.0" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `autoprefixer` in `app/react` from "7.1.6" to "7.2.1" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `commander` in `app/react` from "2.12.1" to "2.12.2" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `webpack` in `app/react` from "3.8.1" to "3.10.0" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `nodemon` in `app/react` from "1.12.1" to "1.12.4" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `airbnb-js-shims` in `app/vue` from "1.3.0" to "1.4.0" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `autoprefixer` in `app/vue` from "7.1.6" to "7.2.1" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `commander` in `app/vue` from "2.12.1" to "2.12.2" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `webpack` in `app/vue` from "3.8.1" to "3.10.0" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `nodemon` in `app/vue` from "1.12.1" to "1.12.4" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `vue` in `app/vue` from "2.5.8" to "2.5.9" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `vue-template-compiler` in `app/vue` from "2.5.8" to "2.5.9" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `marked` in `addons/comments` from "0.3.6" to "0.3.7" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `moment` in `addons/comments` from "2.19.2" to "2.19.3" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `vue` in `examples/vue-kitchen-sink` from "2.5.8" to "2.5.9" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `vue-template-compiler` in `examples/vue-kitchen-sink` from "2.5.8" to "2.5.9" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `webpack` in `examples/vue-kitchen-sink` from "3.8.1" to "3.10.0" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `webpack-dev-server` in `examples/vue-kitchen-sink` from "2.9.4" to "2.9.5" [#2429](https://github.com/storybooks/storybook/pull/2429) +- Upgraded `@storybook/addon-actions` in `/docs` from "3.2.16" to "3.2.17" [#2427](https://github.com/storybooks/storybook/pull/2427) +- Upgraded `@storybook/addon-links` in `/docs` from "3.2.16" to "3.2.17" [#2427](https://github.com/storybooks/storybook/pull/2427) +- Upgraded `@storybook/addons` in `/docs` from "3.2.16" to "3.2.17" [#2427](https://github.com/storybooks/storybook/pull/2427) +- Upgraded `@storybook/react` in `/docs` from "3.2.16" to "3.2.17" [#2427](https://github.com/storybooks/storybook/pull/2427) +- React 16.2 [#2393](https://github.com/storybooks/storybook/pull/2393) + +
+ # 3.2.17 2017-December-03 diff --git a/addons/actions/package.json b/addons/actions/package.json index a01ea3f71eb0..1e6697574a80 100644 --- a/addons/actions/package.json +++ b/addons/actions/package.json @@ -20,8 +20,10 @@ }, "dependencies": { "deep-equal": "^1.0.1", + "global": "^4.3.2", + "make-error": "^1.3.0", "prop-types": "^15.6.0", - "react-inspector": "^2.2.1", + "react-inspector": "^2.2.2", "uuid": "^3.1.0" }, "peerDependencies": { diff --git a/addons/actions/src/containers/ActionLogger/index.js b/addons/actions/src/containers/ActionLogger/index.js index 383c1c13a584..2048442dd7b8 100644 --- a/addons/actions/src/containers/ActionLogger/index.js +++ b/addons/actions/src/containers/ActionLogger/index.js @@ -3,7 +3,8 @@ import React from 'react'; import PropTypes from 'prop-types'; import deepEqual from 'deep-equal'; -import { CYCLIC_KEY, isObject, retrocycle } from '../../util'; +import { CYCLIC_KEY, retrocycle } from '../../lib'; +import { isObject } from '../../lib/util'; import ActionLoggerComponent from '../../components/ActionLogger/'; import { EVENT_ID } from '../../'; diff --git a/addons/actions/src/lib/__mocks__/example.js b/addons/actions/src/lib/__mocks__/example.js new file mode 100644 index 000000000000..5e7cfcbb7917 --- /dev/null +++ b/addons/actions/src/lib/__mocks__/example.js @@ -0,0 +1,45 @@ +import { File } from 'global'; + +const date = '2017-12-02T11:13:22.492Z'; +const file = new File([''], 'filename.txt', { + type: 'text/plain', + lastModified: new Date(date), +}); + +const input = { + a: 'A', + b: 1, + c: true, + d: /AA/g, + e: date, + f: file, +}; +input.circular = input; + +const output = { + '$___storybook.objectName': 'Object', + '$___storybook.isCyclic': true, + a: 'A', + b: 1, + c: true, + circular: { + $ref: '$', + }, + d: { + '$___storybook.regExpKey': '/AA/g', + }, + e: '2017-12-02T11:13:22.492Z', + f: { + '$___storybook.objectName': 'File', + isClosed: false, + lastModified: 1512213202492, + name: 'filename.txt', + size: 0, + type: 'text/plain', + }, +}; + +export default { + input, + output, +}; diff --git a/addons/actions/src/lib/__tests__/decycle.test.js b/addons/actions/src/lib/__tests__/decycle.test.js new file mode 100644 index 000000000000..e0e5b4c3fea6 --- /dev/null +++ b/addons/actions/src/lib/__tests__/decycle.test.js @@ -0,0 +1,8 @@ +import decycle from '../decycle'; +import example from '../__mocks__/example'; + +describe('Decycle', () => { + it('can handle cyclic object', () => { + expect(decycle(example.input)).toEqual(example.output); + }); +}); diff --git a/addons/actions/src/lib/__tests__/retrocycle.test.js b/addons/actions/src/lib/__tests__/retrocycle.test.js new file mode 100644 index 000000000000..0428192eb319 --- /dev/null +++ b/addons/actions/src/lib/__tests__/retrocycle.test.js @@ -0,0 +1,42 @@ +import retrocycle from '../retrocycle'; +import example from '../__mocks__/example'; + +describe('Retrocycle', () => { + it('can restore cyclic object', () => { + const FileMock = function File() { + this.close = function close() {}; + this.isClosed = example.input.f.isClosed; + this.lastModified = example.input.f.lastModified; + this.name = example.input.f.name; + this.size = 0; + this.type = 'text/plain'; + }; + + const file = new FileMock(); + + const result = { + a: example.input.a, + b: example.input.b, + c: example.input.c, + d: example.input.d, + e: example.input.e, + f: file, + }; + + result.circular = result; + + const revived = retrocycle(JSON.stringify(example.output)); + + expect(revived.a).toEqual(example.input.a); + expect(revived.b).toEqual(example.input.b); + expect(revived.c).toEqual(example.input.c); + expect(revived.d).toEqual(example.input.d); + expect(revived.e).toEqual(example.input.e); + expect(revived.f.constructor.name).toEqual('File'); + expect(revived.f.isClosed).toEqual(example.input.f.isClosed); + expect(revived.f.lastModified).toEqual(example.input.f.lastModified); + expect(revived.f.name).toEqual(example.input.f.name); + expect(revived.f.size).toEqual(example.input.f.size); + expect(revived.f.type).toEqual(example.input.f.type); + }); +}); diff --git a/addons/actions/src/lib/decycle.js b/addons/actions/src/lib/decycle.js new file mode 100644 index 000000000000..c6a3e9ec44f8 --- /dev/null +++ b/addons/actions/src/lib/decycle.js @@ -0,0 +1,80 @@ +import { DecycleError } from './errors'; + +import { getPropertiesList, typeReplacer } from './util'; + +import { CYCLIC_KEY } from './'; + +import { objectType } from './types'; + +export default function decycle(object, depth = 10) { + const objects = new WeakMap(); + + let isCyclic = false; + + const res = (function derez(value, path, _depth) { + let oldPath; + let obj; + + if (Object(value) === value && _depth > depth) { + const name = value.constructor ? value.constructor.name : typeof value; + + return `[${name}...]`; + } + + const result = typeReplacer(value); + + if (result) { + return result.value; + } + + const type = typeof value; + + if (value instanceof Boolean || value instanceof Number || value instanceof String) { + return value; + } + + if (type === 'object' && value !== null) { + oldPath = objects.get(value); + if (oldPath !== undefined) { + isCyclic = true; + + return { $ref: oldPath }; + } + + try { + objects.set(value, path); + } catch (error) { + console.error(error); // eslint-disable-line no-console + return new DecycleError(error.message); + } + + if (Array.isArray(value)) { + obj = []; + for (let i = 0; i < value.length; i += 1) { + obj[i] = derez(value[i], `${path}[${i}]`, _depth + 1); + } + } else { + obj = objectType.serialize(value); + + getPropertiesList(value).forEach(name => { + try { + obj[name] = derez(value[name], `${path}[${JSON.stringify(name)}]`, _depth + 1); + } catch (error) { + console.error(error); // eslint-disable-line no-console + obj[name] = new DecycleError(error.message); + } + }); + } + + if (_depth === 0 && value instanceof Object && isCyclic) { + obj[CYCLIC_KEY] = true; + } + + return obj; + } + + return value; + })(object, '$', 0); + + return res; +} diff --git a/addons/actions/src/lib/errors/DecycleError.js b/addons/actions/src/lib/errors/DecycleError.js new file mode 100644 index 000000000000..b488431d8be9 --- /dev/null +++ b/addons/actions/src/lib/errors/DecycleError.js @@ -0,0 +1,3 @@ +import { BaseError } from 'make-error'; + +export default class DecycleError extends BaseError {} diff --git a/addons/actions/src/lib/errors/index.js b/addons/actions/src/lib/errors/index.js new file mode 100644 index 000000000000..d39a34074158 --- /dev/null +++ b/addons/actions/src/lib/errors/index.js @@ -0,0 +1 @@ +export DecycleError from './DecycleError'; diff --git a/addons/actions/src/lib/index.js b/addons/actions/src/lib/index.js new file mode 100644 index 000000000000..9cc430caa788 --- /dev/null +++ b/addons/actions/src/lib/index.js @@ -0,0 +1,4 @@ +export const CYCLIC_KEY = '$___storybook.isCyclic'; +export decycle from './decycle'; +export retrocycle from './retrocycle'; +export reviver from './reviver'; diff --git a/addons/actions/src/lib/retrocycle.js b/addons/actions/src/lib/retrocycle.js new file mode 100644 index 000000000000..ca57b41c53cd --- /dev/null +++ b/addons/actions/src/lib/retrocycle.js @@ -0,0 +1,50 @@ +import reviver from './reviver'; +import { muteProperty } from './util'; +import { CYCLIC_KEY } from './'; + +const pathReg = /^\$(?:\[(?:\d+|"(?:[^\\"\u0000-\u001f]|\\([\\"/bfnrt]|u[0-9a-zA-Z]{4}))*")])*$/; + +export default function retrocycle(json) { + const $ = JSON.parse(json, reviver); + + if (typeof $ !== 'object' || $ === null) { + return $; + } + + (function rez(value) { + if (value && typeof value === 'object') { + if (Array.isArray(value)) { + for (let i = 0; i < value.length; i += 1) { + const item = value[i]; + if (item && typeof item === 'object') { + const path = item.$ref; + if (typeof path === 'string' && pathReg.test(path)) { + value[i] = eval(path); // eslint-disable-line no-eval, no-param-reassign + } else { + rez(item); + } + } + } + } else { + // eslint-disable-next-line no-restricted-syntax, guard-for-in + for (const name in value) { + const item = value[name]; + + if (typeof item === 'object' && item !== null) { + const path = item.$ref; + + if (typeof path === 'string' && pathReg.test(path)) { + value[name] = eval(path); // eslint-disable-line no-eval, no-param-reassign + } else { + rez(item); + } + } + } + } + } + })($); + + muteProperty(CYCLIC_KEY, $); + + return $; +} diff --git a/addons/actions/src/lib/reviver.js b/addons/actions/src/lib/reviver.js new file mode 100644 index 000000000000..8c173b8cf55a --- /dev/null +++ b/addons/actions/src/lib/reviver.js @@ -0,0 +1,15 @@ +import { isObject, typeReviver } from './util'; + +function reviver(key, value) { + if (isObject(value)) { + const result = typeReviver(value); + + if (result) { + return result.value; + } + } + + return value; +} + +export default reviver; diff --git a/addons/actions/src/lib/types/date/__tests__/index.js b/addons/actions/src/lib/types/date/__tests__/index.js new file mode 100644 index 000000000000..92df8dc0e9e9 --- /dev/null +++ b/addons/actions/src/lib/types/date/__tests__/index.js @@ -0,0 +1,19 @@ +import dateType from '../'; + +const date = new Date(1512137134873); +const isoString = date.toISOString(); + +describe('Date', () => { + it('Recognizes Date', () => { + expect(dateType.is(date)).toBe(true); + expect(dateType.is(1)).toBe(false); + }); + + it('Serializes Date', () => { + expect(dateType.serialize(date)).toEqual({ [dateType.KEY]: isoString }); + }); + + it('Deserializes Date', () => { + expect(dateType.deserialize({ [dateType.KEY]: isoString })).toEqual(date); + }); +}); diff --git a/addons/actions/src/lib/types/date/index.js b/addons/actions/src/lib/types/date/index.js new file mode 100644 index 000000000000..1ead4c75021d --- /dev/null +++ b/addons/actions/src/lib/types/date/index.js @@ -0,0 +1,10 @@ +const KEY = '$___storybook.Date'; + +const dateType = { + KEY, + is: value => value instanceof Date, + serialize: value => ({ [KEY]: value.toISOString() }), + deserialize: value => new Date(value[KEY]), +}; + +export default dateType; diff --git a/addons/actions/src/lib/types/function/__tests__/createFunction.test.js b/addons/actions/src/lib/types/function/__tests__/createFunction.test.js new file mode 100644 index 000000000000..ceb6250de775 --- /dev/null +++ b/addons/actions/src/lib/types/function/__tests__/createFunction.test.js @@ -0,0 +1,10 @@ +import createFunction from '../createFunction'; +import reservedKeywords from '../reservedKeywords'; + +describe('createFunction', () => { + it('Can create functions with reserved names', () => { + reservedKeywords.forEach(reservedKeyword => { + expect(createFunction(reservedKeyword).name).toBe(`${reservedKeyword}`); + }); + }); +}); diff --git a/addons/actions/src/lib/types/function/__tests__/createFunctionEval.test.js b/addons/actions/src/lib/types/function/__tests__/createFunctionEval.test.js new file mode 100644 index 000000000000..273f9bf97d39 --- /dev/null +++ b/addons/actions/src/lib/types/function/__tests__/createFunctionEval.test.js @@ -0,0 +1,10 @@ +import createFunctionEval from '../createFunctionEval'; +import reservedKeywords from '../reservedKeywords'; + +describe('createFunctionEval', () => { + it('Adds $ suffix for reserved names', () => { + reservedKeywords.forEach(reservedKeyword => { + expect(createFunctionEval(reservedKeyword).name).toBe(`${reservedKeyword}$`); + }); + }); +}); diff --git a/addons/actions/src/lib/types/function/__tests__/index.js b/addons/actions/src/lib/types/function/__tests__/index.js new file mode 100644 index 000000000000..9e4f0e8b7836 --- /dev/null +++ b/addons/actions/src/lib/types/function/__tests__/index.js @@ -0,0 +1,46 @@ +import functionType from '../'; +import reservedKeywords from '../reservedKeywords'; +import createFunction from '../createFunction'; +import createBoundFunction from '../createBoundFunction'; + +const A = createFunction('A'); +const B = createBoundFunction('B'); +const C = createFunction(); + +describe('function', () => { + it('Recognizes function', () => { + expect(functionType.is(A)).toBe(true); + }); + + it('Serializes function', () => { + expect(functionType.serialize(A)).toEqual({ [functionType.KEY]: 'A' }); + }); + + it('Serializes anonymous function', () => { + expect(functionType.serialize(C)).toEqual({ [functionType.KEY]: '' }); + }); + + it('Serializes bound function', () => { + expect(functionType.serialize(B)).toEqual({ [functionType.KEY]: 'bound B' }); + }); + + it('Deserializes function', () => { + const func = functionType.deserialize({ [functionType.KEY]: 'A' }); + + expect(func.name).toEqual('A'); + }); + + it('Deserializes bound function', () => { + const func = functionType.deserialize({ [functionType.KEY]: 'bound B' }); + + expect(func.name).toEqual('bound B'); + }); + + it('Deserializes functions with reserved names', () => { + reservedKeywords.forEach(reservedKeyword => { + const func = functionType.deserialize({ [functionType.KEY]: reservedKeyword }); + + expect(func.name).toEqual(reservedKeyword); + }); + }); +}); diff --git a/addons/actions/src/lib/types/function/createBoundFunction.js b/addons/actions/src/lib/types/function/createBoundFunction.js new file mode 100644 index 000000000000..36dbaf7035f4 --- /dev/null +++ b/addons/actions/src/lib/types/function/createBoundFunction.js @@ -0,0 +1,5 @@ +import createFunction from './createFunction'; + +export default function createBoundFunction(name) { + return createFunction(name).bind({}); +} diff --git a/addons/actions/src/lib/types/function/createFunction.js b/addons/actions/src/lib/types/function/createFunction.js new file mode 100644 index 000000000000..d45671f4d2c1 --- /dev/null +++ b/addons/actions/src/lib/types/function/createFunction.js @@ -0,0 +1,14 @@ +import canConfigureName from '../../util/canConfigureName'; +import createFunctionEval from './createFunctionEval'; + +export default function createFunction(name = '') { + if (canConfigureName) { + const func = function unnamed() {}; + + Object.defineProperty(func, 'name', { value: name }); + + return func; + } + + return createFunctionEval(name); +} diff --git a/addons/actions/src/lib/types/function/createFunctionEval.js b/addons/actions/src/lib/types/function/createFunctionEval.js new file mode 100644 index 000000000000..1827426d0a29 --- /dev/null +++ b/addons/actions/src/lib/types/function/createFunctionEval.js @@ -0,0 +1,8 @@ +import isReserved from './isReserved'; + +export default function createFunctionEval(name) { + const fnName = isReserved(name) ? `${name}$` : name; + + // eslint-disable-next-line no-new-func + return new Function(`return function ${fnName}() {}`)(); +} diff --git a/addons/actions/src/lib/types/function/index.js b/addons/actions/src/lib/types/function/index.js new file mode 100644 index 000000000000..b89af3fbca5d --- /dev/null +++ b/addons/actions/src/lib/types/function/index.js @@ -0,0 +1,19 @@ +import createBoundFunction from './createBoundFunction'; +import createFunction from './createFunction'; + +const KEY = '$___storybook.functionName'; + +const functionType = { + KEY, + is: value => typeof value === 'function', + serialize: value => ({ [KEY]: value.name || '' }), + deserialize: value => { + const parts = value[KEY].split(' '); + + return parts.length === 2 && parts[0] === 'bound' + ? createBoundFunction(parts[1]) + : createFunction(parts[0]); + }, +}; + +export default functionType; diff --git a/addons/actions/src/lib/types/function/isReserved.js b/addons/actions/src/lib/types/function/isReserved.js new file mode 100644 index 000000000000..3cb256279f43 --- /dev/null +++ b/addons/actions/src/lib/types/function/isReserved.js @@ -0,0 +1,5 @@ +import reservedKeywords from './reservedKeywords'; + +export default function isReserved(name) { + return reservedKeywords.indexOf(name) >= 0; +} diff --git a/addons/actions/src/lib/types/function/reservedKeywords.js b/addons/actions/src/lib/types/function/reservedKeywords.js new file mode 100644 index 000000000000..9fe1ad79c887 --- /dev/null +++ b/addons/actions/src/lib/types/function/reservedKeywords.js @@ -0,0 +1,36 @@ +const reservedWords = [ + 'break', + 'case', + 'catch', + 'class', + 'continue', + 'debugger', + 'default', + 'delete', + 'do', + 'else', + 'export', + 'extends', + 'finally', + 'for', + 'function', + 'if', + 'import', + 'in', + 'instanceof', + 'new', + 'return', + 'super', + 'switch', + 'this', + 'throw', + 'try', + 'typeof', + 'var', + 'void', + 'while', + 'with', + 'yield', +]; + +export default reservedWords; diff --git a/addons/actions/src/lib/types/index.js b/addons/actions/src/lib/types/index.js new file mode 100644 index 000000000000..c2f6e6c1f658 --- /dev/null +++ b/addons/actions/src/lib/types/index.js @@ -0,0 +1,27 @@ +import objectType from './object'; +import dateType from './date'; +import functionType from './function'; +import infinityType from './infinity'; +import nanType from './nan'; +import regexpType from './regexp'; +import symbolType from './symbol'; +import undefinedType from './undefined'; + +export { objectType }; +export { dateType }; +export { functionType }; +export { infinityType }; +export { nanType }; +export { regexpType }; +export { symbolType }; +export { undefinedType }; + +export const types = [ + dateType, + functionType, + nanType, + infinityType, + regexpType, + symbolType, + undefinedType, +]; diff --git a/addons/actions/src/lib/types/infinity/__tests__/index.js b/addons/actions/src/lib/types/infinity/__tests__/index.js new file mode 100644 index 000000000000..926d8b78466f --- /dev/null +++ b/addons/actions/src/lib/types/infinity/__tests__/index.js @@ -0,0 +1,29 @@ +import infinityType from '../'; + +describe('Infinity', () => { + it('Recognizes Infinity', () => { + expect(infinityType.is(Infinity)).toBe(true); + expect(infinityType.is(1)).toBe(false); + }); + + it('Recognizes -Infinity', () => { + expect(infinityType.is(-Infinity)).toBe(true); + expect(infinityType.is(-1)).toBe(false); + }); + + it('Serializes Infinity', () => { + expect(infinityType.serialize(Infinity)).toEqual({ [infinityType.KEY]: true }); + }); + + it('Serializes -Infinity', () => { + expect(infinityType.serialize(-Infinity)).toEqual({ [infinityType.KEY]: false }); + }); + + it('Deserializes Infinity', () => { + expect(infinityType.deserialize({ [infinityType.KEY]: true })).toEqual(Infinity); + }); + + it('Deserializes -Infinity', () => { + expect(infinityType.deserialize({ [infinityType.KEY]: false })).toEqual(-Infinity); + }); +}); diff --git a/addons/actions/src/lib/types/infinity/index.js b/addons/actions/src/lib/types/infinity/index.js new file mode 100644 index 000000000000..30a02d26142e --- /dev/null +++ b/addons/actions/src/lib/types/infinity/index.js @@ -0,0 +1,10 @@ +const KEY = '$___storybook.Infinity'; + +const InfinityType = { + KEY, + is: value => typeof value === 'number' && !Number.isFinite(value), + serialize: value => ({ [KEY]: value === Infinity }), + deserialize: value => (value[KEY] ? Infinity : -Infinity), +}; + +export default InfinityType; diff --git a/addons/actions/src/lib/types/nan/__tests__/index.js b/addons/actions/src/lib/types/nan/__tests__/index.js new file mode 100644 index 000000000000..7a2e4a5b77f8 --- /dev/null +++ b/addons/actions/src/lib/types/nan/__tests__/index.js @@ -0,0 +1,16 @@ +import nanType from '../'; + +describe('NaN', () => { + it('Recognizes NaN', () => { + expect(nanType.is(NaN)).toBe(true); + expect(nanType.is(1)).toBe(false); + }); + + it('Serializes NaN', () => { + expect(nanType.serialize(NaN)).toEqual({ [nanType.KEY]: true }); + }); + + it('Deserializes NaN', () => { + expect(nanType.deserialize({ [nanType.KEY]: true })).toEqual(NaN); + }); +}); diff --git a/addons/actions/src/lib/types/nan/index.js b/addons/actions/src/lib/types/nan/index.js new file mode 100644 index 000000000000..a7e54b36ae74 --- /dev/null +++ b/addons/actions/src/lib/types/nan/index.js @@ -0,0 +1,9 @@ +const KEY = '$___storybook.NaN'; +const NaNType = { + KEY, + is: value => typeof value === 'number' && Number.isNaN(value), + serialize: () => ({ [KEY]: true }), + deserialize: () => NaN, +}; + +export default NaNType; diff --git a/addons/actions/src/lib/types/object/__tests__/createNamedObject.test.js b/addons/actions/src/lib/types/object/__tests__/createNamedObject.test.js new file mode 100644 index 000000000000..1533e58bb93f --- /dev/null +++ b/addons/actions/src/lib/types/object/__tests__/createNamedObject.test.js @@ -0,0 +1,14 @@ +import createNamedObject from '../createNamedObject'; + +describe('createNamedObject', () => { + it('creates named object', () => { + expect( + createNamedObject( + { + name_key: 'A', + }, + 'name_key' + ).constructor.name + ).toEqual('A'); + }); +}); diff --git a/addons/actions/src/lib/types/object/__tests__/getObjectName.test.js b/addons/actions/src/lib/types/object/__tests__/getObjectName.test.js new file mode 100644 index 000000000000..aaa0710cda69 --- /dev/null +++ b/addons/actions/src/lib/types/object/__tests__/getObjectName.test.js @@ -0,0 +1,20 @@ +import getObjectName from '../getObjectName'; + +class A {} +const a = new A(); +function B() {} +const b = new B(); + +describe('getObjectName', () => { + it('get name of instance', () => { + expect(getObjectName(a)).toBe('A'); + }); + + it('get name of function', () => { + expect(getObjectName(B)).toBe('B'); + }); + + it('get constructor name', () => { + expect(getObjectName(b)).toBe('B'); + }); +}); diff --git a/addons/actions/src/lib/types/object/__tests__/index.js b/addons/actions/src/lib/types/object/__tests__/index.js new file mode 100644 index 000000000000..56341c9d11b2 --- /dev/null +++ b/addons/actions/src/lib/types/object/__tests__/index.js @@ -0,0 +1,19 @@ +import objectType from '../'; + +describe('Object', () => { + it('Serializes Object', () => { + function C() {} + const c = new C(); + + expect(objectType.serialize(c)).toEqual({ [objectType.KEY]: 'C' }); + }); + + it('Deserializes Object', () => { + const value = { [objectType.KEY]: 'C' }; + const c = objectType.deserialize(value); + + expect(c.constructor.name).toEqual('C'); + + expect(value).toEqual({}); + }); +}); diff --git a/addons/actions/src/lib/types/object/canAccessProperty.js b/addons/actions/src/lib/types/object/canAccessProperty.js new file mode 100644 index 000000000000..e71989ac5088 --- /dev/null +++ b/addons/actions/src/lib/types/object/canAccessProperty.js @@ -0,0 +1,11 @@ +export default function canAccessProperty(key, value) { + let prop; + + try { + prop = value[key]; + } catch (error) { + console.error(error); // eslint-disable-line no-console + } + + return !!prop; +} diff --git a/addons/actions/src/lib/types/object/createNamedObject.js b/addons/actions/src/lib/types/object/createNamedObject.js new file mode 100644 index 000000000000..dd471db46e05 --- /dev/null +++ b/addons/actions/src/lib/types/object/createNamedObject.js @@ -0,0 +1,12 @@ +import createFunction from '../function/createFunction'; + +export default function createNamedObject(obj, key) { + const Func = createFunction(obj[key]); + const namedObj = new Func(); + + delete obj[key]; // eslint-disable-line no-param-reassign + + Object.assign(namedObj, obj); + + return namedObj; +} diff --git a/addons/actions/src/lib/types/object/getObjectName.js b/addons/actions/src/lib/types/object/getObjectName.js new file mode 100644 index 000000000000..2ca626860d03 --- /dev/null +++ b/addons/actions/src/lib/types/object/getObjectName.js @@ -0,0 +1,25 @@ +import canAccessProperty from './canAccessProperty'; + +export default function getObjectName(value) { + if (canAccessProperty('toString', value)) { + const stringValue = value.toString(); + + if (stringValue.slice(0, 5) === 'class') { + return stringValue.slice(6, -3); + } + + const type = stringValue.slice(8, -1); + + if (stringValue.slice(1, 7) === 'object' && type !== 'Object') { + return type; + } + + const parts = stringValue.match(/function (\w+).*/); + + if (parts && parts.length === 2) { + return parts[1]; + } + } + + return value.constructor ? value.constructor.name : 'Object'; +} diff --git a/addons/actions/src/lib/types/object/index.js b/addons/actions/src/lib/types/object/index.js new file mode 100644 index 000000000000..fdaee125c7b7 --- /dev/null +++ b/addons/actions/src/lib/types/object/index.js @@ -0,0 +1,13 @@ +import createNamedObject from './createNamedObject'; +import getObjectName from './getObjectName'; + +const KEY = '$___storybook.objectName'; + +const objectType = { + KEY, + // is: (value) => , // not used + serialize: value => ({ [KEY]: getObjectName(value) }), + deserialize: value => createNamedObject(value, KEY), +}; + +export default objectType; diff --git a/addons/actions/src/lib/types/regexp/__tests__/index.js b/addons/actions/src/lib/types/regexp/__tests__/index.js new file mode 100644 index 000000000000..f00cb58e82a6 --- /dev/null +++ b/addons/actions/src/lib/types/regexp/__tests__/index.js @@ -0,0 +1,18 @@ +import regExpType from '../'; + +const regExp = /aRegExp/g; + +describe('RegExp', () => { + it('Recognizes RegExp', () => { + expect(regExpType.is(regExp)).toBe(true); + expect(regExpType.is(1)).toBe(false); + }); + + it('Serializes RegExp', () => { + expect(regExpType.serialize(regExp)).toEqual({ [regExpType.KEY]: '/aRegExp/g' }); + }); + + it('Deserializes RegExp', () => { + expect(regExpType.deserialize({ [regExpType.KEY]: '/aRegExp/g' })).toEqual(regExp); + }); +}); diff --git a/addons/actions/src/lib/types/regexp/createRegExp.js b/addons/actions/src/lib/types/regexp/createRegExp.js new file mode 100644 index 000000000000..d4e5b94fd3bc --- /dev/null +++ b/addons/actions/src/lib/types/regexp/createRegExp.js @@ -0,0 +1,5 @@ +export default function createRegExp(regExp) { + const parts = regExp.split('/'); + + return new RegExp(parts[1], parts[2]); +} diff --git a/addons/actions/src/lib/types/regexp/index.js b/addons/actions/src/lib/types/regexp/index.js new file mode 100644 index 000000000000..3c0107fd7ec4 --- /dev/null +++ b/addons/actions/src/lib/types/regexp/index.js @@ -0,0 +1,12 @@ +import createRegExp from './createRegExp'; + +const KEY = '$___storybook.regExpKey'; + +const regExpType = { + KEY, + is: value => value instanceof RegExp, + serialize: value => ({ [KEY]: value.toString() }), + deserialize: value => createRegExp(value[KEY]), +}; + +export default regExpType; diff --git a/addons/actions/src/lib/types/symbol/__tests__/index.js b/addons/actions/src/lib/types/symbol/__tests__/index.js new file mode 100644 index 000000000000..6b23044ba591 --- /dev/null +++ b/addons/actions/src/lib/types/symbol/__tests__/index.js @@ -0,0 +1,18 @@ +import symbolType from '../'; + +const symbol = Symbol('S'); + +describe('Symbol', () => { + it('Recognizes Symbol', () => { + expect(symbolType.is(symbol)).toBe(true); + expect(symbolType.is(1)).toBe(false); + }); + + it('Serializes Symbol', () => { + expect(symbolType.serialize(symbol)).toEqual({ [symbolType.KEY]: 'S' }); + }); + + it('Deserializes Symbol', () => { + expect(symbolType.deserialize({ [symbolType.KEY]: 'S' }).toString()).toEqual(symbol.toString()); + }); +}); diff --git a/addons/actions/src/lib/types/symbol/createSymbol.js b/addons/actions/src/lib/types/symbol/createSymbol.js new file mode 100644 index 000000000000..6ffcb754c1e1 --- /dev/null +++ b/addons/actions/src/lib/types/symbol/createSymbol.js @@ -0,0 +1,3 @@ +export default function createSymbol(name) { + return Symbol(name); +} diff --git a/addons/actions/src/lib/types/symbol/index.js b/addons/actions/src/lib/types/symbol/index.js new file mode 100644 index 000000000000..9d62469b1639 --- /dev/null +++ b/addons/actions/src/lib/types/symbol/index.js @@ -0,0 +1,12 @@ +import createSymbol from './createSymbol'; + +const KEY = '$___storybook.symbolName'; + +const symbolType = { + KEY, + is: value => typeof value === 'symbol', + serialize: value => ({ [KEY]: String(value).slice(7, -1) || null }), + deserialize: value => createSymbol(value[KEY]), +}; + +export default symbolType; diff --git a/addons/actions/src/lib/types/undefined/__tests__/index.js b/addons/actions/src/lib/types/undefined/__tests__/index.js new file mode 100644 index 000000000000..b144f47f1035 --- /dev/null +++ b/addons/actions/src/lib/types/undefined/__tests__/index.js @@ -0,0 +1,16 @@ +import undefinedType from '../'; + +describe('undefined', () => { + it('Recognizes undefined', () => { + expect(undefinedType.is(undefined)).toBe(true); + expect(undefinedType.is(1)).toBe(false); + }); + + it('Serializes undefined', () => { + expect(undefinedType.serialize(undefined)).toEqual({ [undefinedType.KEY]: true }); + }); + + it('Deserializes undefined', () => { + expect(undefinedType.deserialize({ [undefinedType.KEY]: true })).toEqual(undefined); + }); +}); diff --git a/addons/actions/src/lib/types/undefined/index.js b/addons/actions/src/lib/types/undefined/index.js new file mode 100644 index 000000000000..d1a580345f17 --- /dev/null +++ b/addons/actions/src/lib/types/undefined/index.js @@ -0,0 +1,10 @@ +const KEY = '$___storybook.undefined'; + +const undefinedType = { + KEY, + is: value => value === undefined, + serialize: () => ({ [KEY]: true }), + deserialize: () => undefined, +}; + +export default undefinedType; diff --git a/addons/actions/src/lib/util/__tests__/getPropertiesList.test.js b/addons/actions/src/lib/util/__tests__/getPropertiesList.test.js new file mode 100644 index 000000000000..65ca5f038b30 --- /dev/null +++ b/addons/actions/src/lib/util/__tests__/getPropertiesList.test.js @@ -0,0 +1,14 @@ +import { File } from 'global'; +import getPropertiesList from '../getPropertiesList'; + +describe('getPropertiesList', () => { + it('for plain object', () => { + expect(getPropertiesList({ a: 'A', b: 'B' })).toEqual(['a', 'b']); + }); + + it('for File object', () => { + const file = new File([''], 'filename.txt', { type: 'text/plain', lastModified: new Date() }); + + expect(getPropertiesList(file)).toEqual(['name', 'lastModified', 'size', 'type', 'isClosed']); + }); +}); diff --git a/addons/actions/src/lib/util/__tests__/muteProperty.test.js b/addons/actions/src/lib/util/__tests__/muteProperty.test.js new file mode 100644 index 000000000000..4506a79ae206 --- /dev/null +++ b/addons/actions/src/lib/util/__tests__/muteProperty.test.js @@ -0,0 +1,7 @@ +import muteProperty from '../muteProperty'; + +describe('muteProperty', () => { + it('mutes property', () => { + expect(Object.keys(muteProperty('key', { key: 1 }))).toEqual([]); + }); +}); diff --git a/addons/actions/src/lib/util/__tests__/typeReplacer.test.js b/addons/actions/src/lib/util/__tests__/typeReplacer.test.js new file mode 100644 index 000000000000..a5a85cd81a2a --- /dev/null +++ b/addons/actions/src/lib/util/__tests__/typeReplacer.test.js @@ -0,0 +1,53 @@ +import typeReplacer from '../typeReplacer'; +import { + dateType, + functionType, + infinityType, + nanType, + regexpType, + symbolType, + undefinedType, +} from '../../types'; + +function A() {} + +const date = '2017-12-02T11:13:22.492Z'; + +describe('typeReplacer', () => { + it('Replaces Date', () => { + expect(typeReplacer(new Date(date))).toEqual({ + value: { [dateType.KEY]: date }, + }); + }); + + it('Replaces Function', () => { + expect(typeReplacer(A)).toEqual({ + value: { [functionType.KEY]: 'A' }, + }); + }); + it('Replaces Infinity', () => { + expect(typeReplacer(Infinity)).toEqual({ + value: { [infinityType.KEY]: true }, + }); + }); + it('Replaces NaN', () => { + expect(typeReplacer(NaN)).toEqual({ + value: { [nanType.KEY]: true }, + }); + }); + it('Replaces Symbol', () => { + expect(typeReplacer(Symbol('A'))).toEqual({ + value: { [symbolType.KEY]: 'A' }, + }); + }); + it('Replaces undefined', () => { + expect(typeReplacer(undefined)).toEqual({ + value: { [undefinedType.KEY]: true }, + }); + }); + it('Replaces RegExp', () => { + expect(typeReplacer(/works/g)).toEqual({ + value: { [regexpType.KEY]: '/works/g' }, + }); + }); +}); diff --git a/addons/actions/src/lib/util/__tests__/typeReviver.test.js b/addons/actions/src/lib/util/__tests__/typeReviver.test.js new file mode 100644 index 000000000000..b016b015034c --- /dev/null +++ b/addons/actions/src/lib/util/__tests__/typeReviver.test.js @@ -0,0 +1,52 @@ +import typeReviver from '../typeReviver'; +import { + objectType, + dateType, + functionType, + infinityType, + nanType, + regexpType, + symbolType, + undefinedType, +} from '../../types'; + +const date = '2017-12-02T11:13:22.492Z'; + +describe('typeReviver', () => { + it('Revives object name', () => { + expect(typeReviver({ [objectType.KEY]: 'C' }).value.constructor.name).toEqual('C'); + }); + it('Revives Date', () => { + expect(typeReviver({ [dateType.KEY]: date })).toEqual({ + value: new Date(date), + }); + }); + + it('Revives Function', () => { + expect(typeReviver({ [functionType.KEY]: 'A' }).value.name).toEqual('A'); + }); + + it('Revives Infinity', () => { + expect(typeReviver({ [infinityType.KEY]: true })).toEqual({ value: Infinity }); + }); + + it('Revives -Infinity', () => { + expect(typeReviver({ [infinityType.KEY]: false })).toEqual({ value: -Infinity }); + }); + + it('Revives NaN', () => { + expect(typeReviver({ [nanType.KEY]: true })).toEqual({ value: NaN }); + }); + + it('Revives Symbol', () => { + expect(typeReviver({ [symbolType.KEY]: 'A' }).value.toString()).toEqual(Symbol('A').toString()); + }); + + it('Revives undefined', () => { + expect(typeReviver({ [undefinedType.KEY]: true })).toEqual({ value: undefined }); + }); + + it('Revives RegExp', () => { + expect(typeReviver({ [regexpType.KEY]: '/works/g' })).toEqual({ value: /works/g }); + }); +}); diff --git a/addons/actions/src/lib/util/canConfigureName.js b/addons/actions/src/lib/util/canConfigureName.js new file mode 100644 index 000000000000..10709a3043cd --- /dev/null +++ b/addons/actions/src/lib/util/canConfigureName.js @@ -0,0 +1,7 @@ +// IE11 may return an undefined descriptor, but it supports Function#name +const func = function unnamed() {}; +const nameDescriptor = Object.getOwnPropertyDescriptor(func, 'name'); +// This condition is true in modern browsers that implement Function#name properly +const canConfigureName = !nameDescriptor || nameDescriptor.configurable; + +export default canConfigureName; diff --git a/addons/actions/src/lib/util/getPropertiesList.js b/addons/actions/src/lib/util/getPropertiesList.js new file mode 100644 index 000000000000..35ccdd49818e --- /dev/null +++ b/addons/actions/src/lib/util/getPropertiesList.js @@ -0,0 +1,19 @@ +const { hasOwnProperty } = Object.prototype; + +export default function getPropertiesList(value) { + const keys = []; + + // eslint-disable-next-line no-restricted-syntax, guard-for-in + for (const name in value) { + try { + if (hasOwnProperty.call(value, name) || typeof value[name] !== 'function') { + keys.push(name); + } + } catch (error) { + // eslint-disable-next-line no-console + console.error(`Error accessing property ${name}`, error); + } + } + + return keys; +} diff --git a/addons/actions/src/lib/util/index.js b/addons/actions/src/lib/util/index.js new file mode 100644 index 000000000000..2c1c33077bc0 --- /dev/null +++ b/addons/actions/src/lib/util/index.js @@ -0,0 +1,6 @@ +export canConfigureName from './canConfigureName.js'; +export getPropertiesList from './getPropertiesList.js'; +export isObject from './isObject.js'; +export muteProperty from './muteProperty.js'; +export typeReviver from './typeReviver.js'; +export typeReplacer from './typeReplacer.js'; diff --git a/addons/actions/src/lib/util/isObject.js b/addons/actions/src/lib/util/isObject.js new file mode 100644 index 000000000000..1b34a74785da --- /dev/null +++ b/addons/actions/src/lib/util/isObject.js @@ -0,0 +1,5 @@ +const { toString } = Object.prototype; + +export default function isObject(value) { + return toString.call(value) === '[object Object]'; +} diff --git a/addons/actions/src/lib/util/muteProperty.js b/addons/actions/src/lib/util/muteProperty.js new file mode 100644 index 000000000000..7d504520ddce --- /dev/null +++ b/addons/actions/src/lib/util/muteProperty.js @@ -0,0 +1,3 @@ +export default function muteProperty(key, value) { + return Object.defineProperty(value, key, { enumerable: false }); +} diff --git a/addons/actions/src/lib/util/typeReplacer.js b/addons/actions/src/lib/util/typeReplacer.js new file mode 100644 index 000000000000..89f797bef876 --- /dev/null +++ b/addons/actions/src/lib/util/typeReplacer.js @@ -0,0 +1,15 @@ +import { types } from '../types'; + +function typeReplacer(value) { + const found = types.find(type => type.is(value)); + + if (found) { + return { + value: found.serialize(value), + }; + } + + return false; +} + +export default typeReplacer; diff --git a/addons/actions/src/lib/util/typeReviver.js b/addons/actions/src/lib/util/typeReviver.js new file mode 100644 index 000000000000..42921761dbb4 --- /dev/null +++ b/addons/actions/src/lib/util/typeReviver.js @@ -0,0 +1,19 @@ +import { types, objectType } from '../types'; + +const { hasOwnProperty } = Object.prototype; + +const allTypes = types.concat(objectType); + +function typeFilter(value) { + const found = allTypes.find(type => hasOwnProperty.call(value, type.KEY)); + + if (found) { + return { + value: found.deserialize(value), + }; + } + + return false; +} + +export default typeFilter; diff --git a/addons/actions/src/preview.js b/addons/actions/src/preview.js index ab926ff8487d..c7dc47ac51b5 100644 --- a/addons/actions/src/preview.js +++ b/addons/actions/src/preview.js @@ -3,12 +3,25 @@ import addons from '@storybook/addons'; import uuid from 'uuid/v1'; import { EVENT_ID } from './'; -import { decycle } from './util'; +import { decycle } from './lib'; +import { canConfigureName } from './lib/util'; export function action(name) { // eslint-disable-next-line no-shadow const handler = function action(..._args) { - const args = _args.map(arg => JSON.stringify(decycle(arg))); + const args = _args.map(arg => { + let result; + + try { + result = JSON.stringify(decycle(arg)); + } catch (error) { + // IE still cyclic. + + return JSON.stringify(error.toString()); + } + + return result; + }); const channel = addons.getChannel(); const id = uuid(); channel.emit(EVENT_ID, { @@ -17,11 +30,6 @@ export function action(name) { }); }; - // IE11 may return an undefined descriptor, but it supports Function#name - const nameDescriptor = Object.getOwnPropertyDescriptor(handler, 'name'); - // This condition is true in modern browsers that implement Function#name properly - const canConfigureName = !nameDescriptor || nameDescriptor.configurable; - if (canConfigureName && name && typeof name === 'string') { Object.defineProperty(handler, 'name', { value: name }); } diff --git a/addons/actions/src/preview.test.js b/addons/actions/src/preview.test.js index 665c655a5368..d96cef9576eb 100644 --- a/addons/actions/src/preview.test.js +++ b/addons/actions/src/preview.test.js @@ -1,6 +1,7 @@ import addons from '@storybook/addons'; import uuid from 'uuid/v1'; import { action } from './preview'; +import { undefinedType, symbolType } from './lib/types'; jest.mock('uuid/v1'); jest.mock('@storybook/addons'); @@ -35,5 +36,77 @@ describe('preview', () => { expect(() => JSON.stringify(cyclicObject)).toThrow(); expect(() => action('foo')(cyclicObject)).not.toThrow(); }); + + it('should be able to handle non plain object', () => { + function A(val) { + this.a = val; + } + + const a = new A('b'); + + const channel = { emit: jest.fn() }; + addons.getChannel.mockReturnValue(channel); + + action('foo')(a); + + expect(JSON.parse(channel.emit.mock.calls[0][1].data.args[0])).toEqual({ + '$___storybook.objectName': 'A', + a: 'b', + }); + }); + + it('should be able to handle non plain cyclic object', () => { + function A() {} + const a = new A(); + a.a = a; + + const channel = { emit: jest.fn() }; + addons.getChannel.mockReturnValue(channel); + + action('foo')(a); + + expect(JSON.parse(channel.emit.mock.calls[0][1].data.args[0])).toEqual({ + '$___storybook.objectName': 'A', + '$___storybook.isCyclic': true, + a: { + $ref: '$', + }, + }); + }); + + describe('should be able to emit primitive value type:', () => { + [true, false, null, 10, 'a'].forEach(value => { + it(`${typeof value} value ${JSON.stringify(value)}`, () => { + const channel = { emit: jest.fn() }; + addons.getChannel.mockReturnValue(channel); + + action('foo')(value); + + expect(JSON.parse(channel.emit.mock.calls[0][1].data.args[0])).toBe(value); + }); + }); + + it('undefined value', () => { + const channel = { emit: jest.fn() }; + addons.getChannel.mockReturnValue(channel); + + action('foo')(undefined); + + expect(JSON.parse(channel.emit.mock.calls[0][1].data.args[0])).toEqual({ + [undefinedType.KEY]: true, + }); + }); + + it('symbol value', () => { + const channel = { emit: jest.fn() }; + addons.getChannel.mockReturnValue(channel); + + action('foo')(Symbol('A Symbol')); + + expect(JSON.parse(channel.emit.mock.calls[0][1].data.args[0])).toEqual({ + [symbolType.KEY]: 'A Symbol', + }); + }); + }); }); }); diff --git a/addons/actions/src/util.js b/addons/actions/src/util.js deleted file mode 100644 index b93c00ceea41..000000000000 --- a/addons/actions/src/util.js +++ /dev/null @@ -1,129 +0,0 @@ -export const CLASS_NAME_KEY = '$___storybook.className'; -export const CYCLIC_KEY = '$___storybook.isCyclic'; - -export function muteProperty(key, value) { - return Object.defineProperty(value, key, { enumerable: false }); -} - -export function isObject(value) { - return Object.prototype.toString.call(value) === '[object Object]'; -} - -export function createFakeConstructor(obj) { - function FakeConstructor(data) { - Object.assign(this, data); - } - - Object.defineProperty(FakeConstructor, 'name', { - value: obj[CLASS_NAME_KEY], - }); - - delete obj[CLASS_NAME_KEY]; // eslint-disable-line no-param-reassign - - return new FakeConstructor(obj); -} - -export function reviver(key, value) { - if (isObject(value) && value[CLASS_NAME_KEY]) { - return createFakeConstructor(value); - } - - return value; -} - -// Based on: https://github.com/douglascrockford/JSON-js/blob/master/cycle.js -export function decycle(object, depth = 15) { - const objects = new WeakMap(); - let isCyclic = false; - - return (function derez(value, path, _depth) { - let oldPath; - let obj; - - if (Object(value) === value && _depth > depth) { - return `[${value.constructor.name}...]`; - } - - if ( - typeof value === 'object' && - value !== null && - !(value instanceof Boolean) && - !(value instanceof Date) && - !(value instanceof Number) && - !(value instanceof RegExp) && - !(value instanceof String) - ) { - oldPath = objects.get(value); - if (oldPath !== undefined) { - isCyclic = true; - - return { $ref: oldPath }; - } - - objects.set(value, path); - - if (Array.isArray(value)) { - obj = []; - for (let i = 0; i < value.length; i += 1) { - obj[i] = derez(value[i], `${path}[${i}]`, _depth + 1); - } - } else { - obj = { [CLASS_NAME_KEY]: value.constructor ? value.constructor.name : 'Object' }; - - Object.keys(value).forEach(name => { - obj[name] = derez(value[name], `${path}[${JSON.stringify(name)}]`, _depth + 1); - }); - } - - if (_depth === 0 && isObject(value) && isCyclic) { - obj[CYCLIC_KEY] = true; - } - - return obj; - } - - return value; - })(object, '$', 0); -} - -export function retrocycle(json) { - const pathReg = /^\$(?:\[(?:\d+|"(?:[^\\"\u0000-\u001f]|\\([\\"/bfnrt]|u[0-9a-zA-Z]{4}))*")])*$/; - - const $ = JSON.parse(json, reviver); - - (function rez(value) { - if (value && typeof value === 'object') { - if (Array.isArray(value)) { - for (let i = 0; i < value.length; i += 1) { - const item = value[i]; - if (item && typeof item === 'object') { - const path = item.$ref; - if (typeof path === 'string' && pathReg.test(path)) { - value[i] = eval(path); // eslint-disable-line no-eval, no-param-reassign - } else { - rez(item); - } - } - } - } else { - Object.keys(value).forEach(name => { - const item = value[name]; - - if (typeof item === 'object' && item !== null) { - const path = item.$ref; - - if (typeof path === 'string' && pathReg.test(path)) { - value[name] = eval(path); // eslint-disable-line no-eval, no-param-reassign - } else { - rez(item); - } - } - }); - } - } - })($); - - muteProperty(CYCLIC_KEY, $); - - return $; -} diff --git a/addons/graphql/package.json b/addons/graphql/package.json index 74ad10facd85..39b34c9b880f 100644 --- a/addons/graphql/package.json +++ b/addons/graphql/package.json @@ -23,7 +23,7 @@ "dependencies": { "global": "^4.3.2", "graphiql": "^0.11.10", - "graphql": "^0.11.7", + "graphql": "^0.12.3", "prop-types": "^15.6.0" }, "peerDependencies": { diff --git a/addons/info/README.md b/addons/info/README.md index dd1735005b23..38dea7546af5 100644 --- a/addons/info/README.md +++ b/addons/info/README.md @@ -59,6 +59,13 @@ import { withInfo } from '@storybook/addon-info'; storiesOf('Component', module) .add('simple info', withInfo({ + styles: { + header: { + h1: { + color: 'red' + } + } + }, text: 'String or React Element with docs about my component', // Warning! This option's name will be likely renamed to "summary" in 3.3 release. Follow this PR #1501 for details // other possible options see in Global options section below })(() => @@ -67,6 +74,30 @@ storiesOf('Component', module) ) ``` +The `styles` prop can also accept a function. The default stylesheet is passed as argument: + +```js +import { withInfo } from '@storybook/addon-info'; + +storiesOf('Component', module) + .add('custom info styles using a function', + withInfo({ + styles: stylesheet => ({ + ...stylesheet, + header: { + ...stylesheet.header, + h1: { + ...stylesheet.header.h1, + color: 'red' + } + } + }) + })(() => + Click the "?" mark at top-right to view the info. + ) + ) +``` + ## Usage as decorator It is possible to add infos by default to all components by using a global or story decorator. The drawback is you won't be able to display a distinct info message per story. @@ -100,8 +131,8 @@ setDefaults({ source: true, // Displays the source of story Component propTables: [/* Components used in story */], // displays Prop Tables with this components 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 + styles: {}, // Overrides styles of addon. The object should follow this shape: https://github.com/storybooks/storybook/blob/master/addons/info/src/components/Story.js#L19. This prop can also accept a function which has the default stylesheet passed as an argument. + components: {}, // Overrides components used to display markdown maxPropsIntoLine: 1, // Max props to display per line in source code maxPropObjectKeys: 10, // Displays the first 10 characters of the prop name maxPropArrayLength: 10, // Displays the first 10 items in the default prop array diff --git a/addons/info/package.json b/addons/info/package.json index ef0f5b757949..8428047f54f9 100644 --- a/addons/info/package.json +++ b/addons/info/package.json @@ -14,10 +14,12 @@ "storybook": "start-storybook -p 9010" }, "dependencies": { + "@storybook/client-logger": "^3.3.0-alpha.4", "@storybook/components": "^3.3.0-alpha.4", "babel-runtime": "^6.26.0", "global": "^4.3.2", - "marksy": "^2.0.0", + "nested-object-assign": "^1.0.1", + "marksy": "^6.0.1", "prop-types": "^15.6.0", "react-addons-create-fragment": "^15.5.3", "util-deprecate": "^1.0.2" diff --git a/addons/info/src/components/Story.js b/addons/info/src/components/Story.js index bd6e8f992f85..746856a95d85 100644 --- a/addons/info/src/components/Story.js +++ b/addons/info/src/components/Story.js @@ -1,6 +1,6 @@ /* eslint no-underscore-dangle: 0 */ -import React from 'react'; +import React, { createElement } from 'react'; import PropTypes from 'prop-types'; import global from 'global'; import { baseFonts } from '@storybook/components'; @@ -105,14 +105,17 @@ export default class Story extends React.Component { super(...args); this.state = { open: false, - stylesheet: this.props.styles(JSON.parse(JSON.stringify(stylesheet))), + stylesheet: this.props.styles(stylesheet), }; - this.marksy = marksy(this.props.marksyConf); + this.marksy = marksy({ + createElement, + elements: this.props.components, + }); } componentWillReceiveProps(nextProps) { this.setState({ - stylesheet: nextProps.styles(JSON.parse(JSON.stringify(stylesheet))), + stylesheet: nextProps.styles(stylesheet), }); } @@ -383,7 +386,7 @@ Story.propTypes = { showSource: PropTypes.bool, styles: PropTypes.func.isRequired, children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]), - marksyConf: PropTypes.object, // eslint-disable-line react/forbid-prop-types + components: PropTypes.shape({}), maxPropsIntoLine: PropTypes.number.isRequired, maxPropObjectKeys: PropTypes.number.isRequired, maxPropArrayLength: PropTypes.number.isRequired, @@ -398,5 +401,5 @@ Story.defaultProps = { showInline: false, showHeader: true, showSource: true, - marksyConf: {}, + components: {}, }; diff --git a/addons/info/src/index.js b/addons/info/src/index.js index a89ea2ea9c93..bdd505735906 100644 --- a/addons/info/src/index.js +++ b/addons/info/src/index.js @@ -1,5 +1,7 @@ import React from 'react'; import deprecate from 'util-deprecate'; +import nestedObjectAssign from 'nested-object-assign'; +import logger from '@storybook/client-logger'; import Story from './components/Story'; import PropTable from './components/PropTable'; import makeTableComponent from './components/makeTableComponent'; @@ -17,7 +19,7 @@ const defaultOptions = { maxPropStringLength: 50, }; -const defaultMarksyConf = { +const defaultComponents = { h1: H1, h2: H2, h3: H3, @@ -31,6 +33,8 @@ const defaultMarksyConf = { ul: UL, }; +let hasWarned = false; + function addInfo(storyFn, context, infoOptions) { const options = { ...defaultOptions, @@ -44,9 +48,17 @@ function addInfo(storyFn, context, infoOptions) { options.propTables = null; } - const marksyConf = { ...defaultMarksyConf }; + const components = { ...defaultComponents }; + if (options && options.components) { + Object.assign(components, options.components); + } if (options && options.marksyConf) { - Object.assign(marksyConf, options.marksyConf); + if (!hasWarned) { + logger.warn('@storybook/addon-info: "marksyConf" option has been renamed to "components"'); + hasWarned = true; + } + + Object.assign(components, options.marksyConf); } const props = { info: options.text, @@ -54,11 +66,14 @@ function addInfo(storyFn, context, infoOptions) { showInline: Boolean(options.inline), showHeader: Boolean(options.header), showSource: Boolean(options.source), + styles: + typeof options.styles === 'function' + ? options.styles + : s => nestedObjectAssign({}, s, options.styles), propTables: options.propTables, propTablesExclude: options.propTablesExclude, PropTable: makeTableComponent(options.TableComponent), - styles: typeof options.styles === 'function' ? options.styles : s => s, - marksyConf, + components, maxPropObjectKeys: options.maxPropObjectKeys, maxPropArrayLength: options.maxPropArrayLength, maxPropsIntoLine: options.maxPropsIntoLine, diff --git a/addons/knobs/package.json b/addons/knobs/package.json index 04de1fb645e1..738089b7dc6f 100644 --- a/addons/knobs/package.json +++ b/addons/knobs/package.json @@ -19,7 +19,7 @@ "global": "^4.3.2", "insert-css": "^2.0.0", "lodash.debounce": "^4.0.8", - "moment": "^2.19.3", + "moment": "^2.20.0", "prop-types": "^15.6.0", "react-color": "^2.11.4", "react-datetime": "^2.11.1", @@ -28,12 +28,12 @@ }, "devDependencies": { "raw-loader": "^0.5.1", - "style-loader": "^0.19.0", - "vue": "^2.5.9" + "style-loader": "^0.19.1", + "vue": "^2.5.11" }, "peerDependencies": { "@storybook/addons": "^3.3.0-alpha.4", - "@angular/core": "*", + "@angular/core": "=>4.0.0", "react": "*", "react-dom": "*" } diff --git a/addons/knobs/src/angular/helpers.js b/addons/knobs/src/angular/helpers.js index 170abe74ce63..7cf86cf06333 100644 --- a/addons/knobs/src/angular/helpers.js +++ b/addons/knobs/src/angular/helpers.js @@ -1,16 +1,9 @@ /* eslint no-underscore-dangle: 0 */ import { Component, SimpleChange, ChangeDetectorRef } from '@angular/core'; +import { getParameters, getAnnotations, getPropMetadata } from './utils'; -import { - getParameters, - getAnnotations, - getPropMetadata, - setAnnotations, - setParameters, -} from './utils'; - -const getComponentMetadata = ({ component, props = {} }) => { +const getComponentMetadata = ({ component, props = {}, pipes = [] }) => { if (!component || typeof component !== 'function') throw new Error('No valid component provided'); const componentMeta = getAnnotations(component)[0] || {}; @@ -20,6 +13,7 @@ const getComponentMetadata = ({ component, props = {} }) => { return { component, props, + pipes, componentMeta, propsMeta, params: paramsMetadata, @@ -27,19 +21,19 @@ const getComponentMetadata = ({ component, props = {} }) => { }; const getAnnotatedComponent = ({ componentMeta, component, params, knobStore, channel }) => { - const NewComponent = function NewComponent(cd, ...args) { + const KnobWrapperComponent = function KnobWrapperComponent(cd, ...args) { component.call(this, ...args); this.cd = cd; this.knobChanged = this.knobChanged.bind(this); this.setPaneKnobs = this.setPaneKnobs.bind(this); }; - NewComponent.prototype = Object.create(component.prototype); - setAnnotations(NewComponent, [new Component(componentMeta)]); - setParameters(NewComponent, [[ChangeDetectorRef], ...params]); + KnobWrapperComponent.prototype = Object.create(component.prototype); + KnobWrapperComponent.__annotations__ = [new Component(componentMeta)]; + KnobWrapperComponent.__parameters__ = [[ChangeDetectorRef], ...params]; - NewComponent.prototype.constructor = NewComponent; - NewComponent.prototype.ngOnInit = function onInit() { + KnobWrapperComponent.prototype.constructor = KnobWrapperComponent; + KnobWrapperComponent.prototype.ngOnInit = function onInit() { if (component.prototype.ngOnInit) { component.prototype.ngOnInit(); } @@ -50,7 +44,7 @@ const getAnnotatedComponent = ({ componentMeta, component, params, knobStore, ch this.setPaneKnobs(); }; - NewComponent.prototype.ngOnDestroy = function onDestroy() { + KnobWrapperComponent.prototype.ngOnDestroy = function onDestroy() { if (component.prototype.ngOnDestroy) { component.prototype.ngOnDestroy(); } @@ -60,20 +54,20 @@ const getAnnotatedComponent = ({ componentMeta, component, params, knobStore, ch knobStore.unsubscribe(this.setPaneKnobs); }; - NewComponent.prototype.ngOnChanges = function onChanges(changes) { + KnobWrapperComponent.prototype.ngOnChanges = function onChanges(changes) { if (component.prototype.ngOnChanges) { component.prototype.ngOnChanges(changes); } }; - NewComponent.prototype.setPaneKnobs = function setPaneKnobs(timestamp = +new Date()) { + KnobWrapperComponent.prototype.setPaneKnobs = function setPaneKnobs(timestamp = +new Date()) { channel.emit('addon:knobs:setKnobs', { knobs: knobStore.getAll(), timestamp, }); }; - NewComponent.prototype.knobChanged = function knobChanged(change) { + KnobWrapperComponent.prototype.knobChanged = function knobChanged(change) { const { name, value } = change; const knobOptions = knobStore.get(name); const oldValue = knobOptions.value; @@ -87,12 +81,12 @@ const getAnnotatedComponent = ({ componentMeta, component, params, knobStore, ch }); }; - NewComponent.prototype.knobClicked = function knobClicked(clicked) { + KnobWrapperComponent.prototype.knobClicked = function knobClicked(clicked) { const knobOptions = knobStore.get(clicked.name); knobOptions.callback(); }; - return NewComponent; + return KnobWrapperComponent; }; const resetKnobs = (knobStore, channel) => { @@ -105,7 +99,7 @@ const resetKnobs = (knobStore, channel) => { export function prepareComponent({ getStory, context, channel, knobStore }) { resetKnobs(knobStore, channel); - const { component, componentMeta, props, propsMeta, params } = getComponentMetadata( + const { component, componentMeta, props, pipes, propsMeta, params } = getComponentMetadata( getStory(context) ); @@ -122,6 +116,7 @@ export function prepareComponent({ getStory, context, channel, knobStore }) { return { component: AnnotatedComponent, props, + pipes, propsMeta, }; } diff --git a/addons/knobs/src/angular/utils.js b/addons/knobs/src/angular/utils.js index e2c38ac9bf7f..03a810a8d7e8 100644 --- a/addons/knobs/src/angular/utils.js +++ b/addons/knobs/src/angular/utils.js @@ -1,45 +1,21 @@ /* eslint-disable no-param-reassign */ -/* eslint no-underscore-dangle: 0 */ /* globals window */ -import { VERSION } from '@angular/core'; - function getMeta(component, [name1, name2], defaultValue) { if (!name2) { name2 = name1; name1 = `__${name1}__`; } - if (VERSION.major >= 5) { - if (component[name1]) { - return component[name1]; - } - - if (component[name2]) { - return component[name2]; - } - } - - if (VERSION.major >= 4) { - return window.Reflect.getMetadata(name2, component) || defaultValue; - } - - return defaultValue; -} - -function setMeta(component, [name1, name2], value) { - if (!name2) { - name2 = name1; - name1 = `__${name1}__`; + if (component[name1]) { + return component[name1]; } - if (VERSION.major >= 5) { - component[name1] = value; + if (component[name2]) { + return component[name2]; } - if (VERSION.major >= 4) { - window.Reflect.defineMetadata(name2, value, component); - } + return window.Reflect.getMetadata(name2, component) || defaultValue; } export function getAnnotations(component) { @@ -53,11 +29,3 @@ export function getPropMetadata(component) { export function getParameters(component) { return getMeta(component, ['parameters'], []); } - -export function setAnnotations(component, value) { - setMeta(component, ['annotations'], value); -} - -export function setParameters(component, value) { - setMeta(component, ['parameters'], value); -} diff --git a/addons/storyshots/package.json b/addons/storyshots/package.json index 3f6e7a0bc007..b1649df3c930 100644 --- a/addons/storyshots/package.json +++ b/addons/storyshots/package.json @@ -15,7 +15,7 @@ "example": "jest storyshot.test" }, "dependencies": { - "@storybook/channels": "^3.2.17", + "@storybook/channels": "^3.3.0-alpha.4", "babel-core": "^6.26.0", "babel-runtime": "^6.26.0", "glob": "^7.1.2", diff --git a/app/angular/package.json b/app/angular/package.json index a4bed3decad7..f6a66e8cd1f6 100644 --- a/app/angular/package.json +++ b/app/angular/package.json @@ -18,7 +18,7 @@ "url": "https://github.com/storybooks/storybook.git" }, "scripts": { - "dev": "DEV_BUILD=1 nodemon -e js,ts --watch ./src --exec 'npm run prepublish'", + "dev": "cross-env DEV_BUILD=1 nodemon -e js,ts --watch ./src --exec \"yarn prepare\"", "prepare": "node ../../scripts/prepare.js" }, "dependencies": { @@ -45,6 +45,7 @@ "configstore": "^3.1.0", "core-js": "^2.4.1", "css-loader": "^0.28.1", + "cross-env": "^5.1.1", "express": "^4.15.3", "file-loader": "^0.11.1", "find-cache-dir": "^1.0.0", @@ -87,10 +88,10 @@ "typescript": "^2.4.0" }, "peerDependencies": { - "@angular/common": "*", - "@angular/compiler": "*", - "@angular/core": "*", - "@angular/platform-browser": "*", - "@angular/platform-browser-dynamic": "*" + "@angular/common": "=>4.0.0", + "@angular/compiler": "=>4.0.0", + "@angular/core": "=>4.0.0", + "@angular/platform-browser": "=>4.0.0", + "@angular/platform-browser-dynamic": "=>4.0.0" } } diff --git a/app/angular/src/client/preview/angular/app.token.ts b/app/angular/src/client/preview/angular/app.token.ts index 278844d0a449..2ebf349781d8 100644 --- a/app/angular/src/client/preview/angular/app.token.ts +++ b/app/angular/src/client/preview/angular/app.token.ts @@ -1,4 +1,4 @@ -import { InjectionToken } from "@angular/core"; +import { InjectionToken, PipeTransform } from "@angular/core"; export const STORY = new InjectionToken("story"); @@ -6,4 +6,5 @@ export type Data = { component: any; props: object; propsMeta: object; + pipes: PipeTransform[]; } \ No newline at end of file diff --git a/app/angular/src/client/preview/angular/helpers.ts b/app/angular/src/client/preview/angular/helpers.ts index 50d19f4c8ce2..2f348acbf8b9 100644 --- a/app/angular/src/client/preview/angular/helpers.ts +++ b/app/angular/src/client/preview/angular/helpers.ts @@ -2,8 +2,6 @@ import { enableProdMode, NgModule, Component, - NgModuleRef, - ApplicationRef, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; @@ -13,7 +11,7 @@ import { AppComponent } from "./components/app.component"; import { ErrorComponent } from "./components/error.component"; import { NoPreviewComponent } from "./components/no-preview.component"; import { STORY } from "./app.token"; -import { getAnnotations, getParameters, getPropMetadata } from '../utils'; +import { getAnnotations, getParameters, getPropMetadata } from './utils'; let platform = null; let promises = []; @@ -22,21 +20,21 @@ let promises = []; // We don't want to pull underscore const debounce = (func, wait = 100, immediate = false) => { - var timeout; - return function() { - var context = this, args = arguments; - var later = function() { - timeout = null; - if (!immediate) func.apply(context, args); - }; - var callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) func.apply(context, args); - }; + var timeout; + return function () { + var context = this, args = arguments; + var later = function () { + timeout = null; + if (!immediate) func.apply(context, args); + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) func.apply(context, args); + }; }; -const getComponentMetadata = ({ component, props = {}, propsMeta = {} }) => { +const getComponentMetadata = ({ component, props = {}, propsMeta = {}, pipes = [] }) => { if (!component || typeof component !== "function") throw new Error("No valid component provided"); @@ -51,6 +49,7 @@ const getComponentMetadata = ({ component, props = {}, propsMeta = {} }) => { return { component, props, + pipes, componentMeta: componentMetadata, propsMeta: propsMetadata, params: paramsMetadata @@ -61,10 +60,12 @@ const getAnnotatedComponent = (meta, component, propsMeta, params) => { const NewComponent: any = function NewComponent(...args) { component.call(this, ...args); }; + NewComponent.prototype = Object.create(component.prototype); NewComponent.annotations = [new Component(meta)]; NewComponent.parameters = params; NewComponent.propsMetadata = propsMeta; + return NewComponent; }; @@ -79,6 +80,7 @@ const getModule = (declarations, entryComponents, bootstrap, data) => { }); const NewModule: any = function NewModule() {}; + NewModule.annotations = [moduleMeta]; return NewModule; @@ -89,6 +91,7 @@ const initModule = (currentStory, context, reRender) => { component, componentMeta, props, + pipes, propsMeta, params } = getComponentMetadata(currentStory(context)); @@ -108,7 +111,7 @@ const initModule = (currentStory, context, reRender) => { propsMeta }; const Module = getModule( - [AppComponent, AnnotatedComponent], + [AppComponent, AnnotatedComponent, ...pipes], [AnnotatedComponent], [AppComponent], story diff --git a/app/angular/src/client/preview/angular/utils.ts b/app/angular/src/client/preview/angular/utils.ts new file mode 100644 index 000000000000..843aa5ac4df4 --- /dev/null +++ b/app/angular/src/client/preview/angular/utils.ts @@ -0,0 +1,28 @@ +function getMeta(component, [name1, name2]: any, defaultValue) { + if (!name2) { + name2 = name1; + name1 = `__${name1}__`; + } + + if (component[name1]) { + return component[name1]; + } + + if (component[name2]) { + return component[name2]; + } + + return window['Reflect'].getMetadata(name2, component) || defaultValue; +} + +export function getAnnotations(component) { + return getMeta(component, ['annotations'], []); +} + +export function getPropMetadata(component) { + return getMeta(component, ['__prop__metadata__', 'propMetadata'], {}); +} + +export function getParameters(component) { + return getMeta(component, ['parameters'], []); +} \ No newline at end of file diff --git a/app/angular/src/client/preview/utils.js b/app/angular/src/client/preview/utils.js deleted file mode 100644 index e2c38ac9bf7f..000000000000 --- a/app/angular/src/client/preview/utils.js +++ /dev/null @@ -1,63 +0,0 @@ -/* eslint-disable no-param-reassign */ -/* eslint no-underscore-dangle: 0 */ -/* globals window */ - -import { VERSION } from '@angular/core'; - -function getMeta(component, [name1, name2], defaultValue) { - if (!name2) { - name2 = name1; - name1 = `__${name1}__`; - } - - if (VERSION.major >= 5) { - if (component[name1]) { - return component[name1]; - } - - if (component[name2]) { - return component[name2]; - } - } - - if (VERSION.major >= 4) { - return window.Reflect.getMetadata(name2, component) || defaultValue; - } - - return defaultValue; -} - -function setMeta(component, [name1, name2], value) { - if (!name2) { - name2 = name1; - name1 = `__${name1}__`; - } - - if (VERSION.major >= 5) { - component[name1] = value; - } - - if (VERSION.major >= 4) { - window.Reflect.defineMetadata(name2, value, component); - } -} - -export function getAnnotations(component) { - return getMeta(component, ['annotations'], []); -} - -export function getPropMetadata(component) { - return getMeta(component, ['__prop__metadata__', 'propMetadata'], {}); -} - -export function getParameters(component) { - return getMeta(component, ['parameters'], []); -} - -export function setAnnotations(component, value) { - setMeta(component, ['annotations'], value); -} - -export function setParameters(component, value) { - setMeta(component, ['parameters'], value); -} diff --git a/app/angular/src/server/config/webpack.config.js b/app/angular/src/server/config/webpack.config.js index 92d05118f876..e479e77efd8b 100644 --- a/app/angular/src/server/config/webpack.config.js +++ b/app/angular/src/server/config/webpack.config.js @@ -56,7 +56,7 @@ export default function() { new WatchMissingNodeModulesPlugin(nodeModulesPaths), new webpack.ProgressPlugin(), new webpack.ContextReplacementPlugin( - /angular(\\|\/)core(\\|\/)@angular/, + /angular(\\|\/)core(\\|\/)(@angular|esm5)/, path.resolve(__dirname, '../src') ), ], diff --git a/app/angular/src/server/config/webpack.config.prod.js b/app/angular/src/server/config/webpack.config.prod.js index 465127ec1a32..33e6c5ff1e50 100644 --- a/app/angular/src/server/config/webpack.config.prod.js +++ b/app/angular/src/server/config/webpack.config.prod.js @@ -56,7 +56,7 @@ export default function() { }, }), new webpack.ContextReplacementPlugin( - /angular(\\|\/)core(\\|\/)@angular/, + /angular(\\|\/)core(\\|\/)(@angular|esm5)/, path.resolve(__dirname, '../src') ), ], diff --git a/app/react-native/package.json b/app/react-native/package.json index c4a206667856..af87cd2edde8 100644 --- a/app/react-native/package.json +++ b/app/react-native/package.json @@ -29,7 +29,7 @@ "@storybook/addons": "^3.3.0-alpha.4", "@storybook/channel-websocket": "^3.3.0-alpha.4", "@storybook/ui": "^3.3.0-alpha.4", - "autoprefixer": "^7.2.2", + "autoprefixer": "^7.2.3", "babel-core": "^6.26.0", "babel-loader": "^7.1.2", "babel-plugin-syntax-async-functions": "^6.13.0", @@ -50,7 +50,7 @@ "css-loader": "^0.28.7", "events": "^1.1.1", "express": "^4.16.2", - "file-loader": "^1.1.5", + "file-loader": "^1.1.6", "find-cache-dir": "^1.0.0", "global": "^4.3.2", "html-webpack-plugin": "^2.30.1", @@ -61,7 +61,7 @@ "react-native-compat": "^1.0.0", "react-native-iphone-x-helper": "^1.0.1", "shelljs": "^0.7.8", - "style-loader": "^0.18.2", + "style-loader": "^0.19.1", "url-loader": "^0.6.2", "url-parse": "^1.1.9", "util-deprecate": "^1.0.2", @@ -69,7 +69,7 @@ "webpack": "^3.10.0", "webpack-dev-middleware": "^1.12.2", "webpack-hot-middleware": "^2.21.0", - "ws": "^3.3.2" + "ws": "^3.3.3" }, "devDependencies": { "react-native": "^0.51.0" diff --git a/app/react/package.json b/app/react/package.json index 630137c009fa..522a79d50881 100644 --- a/app/react/package.json +++ b/app/react/package.json @@ -30,7 +30,7 @@ "@storybook/node-logger": "^3.3.0-alpha.4", "@storybook/ui": "^3.3.0-alpha.4", "airbnb-js-shims": "^1.4.0", - "autoprefixer": "^7.2.2", + "autoprefixer": "^7.2.3", "babel-core": "^6.26.0", "babel-loader": "^7.1.2", "babel-plugin-react-docgen": "^1.8.0", @@ -47,11 +47,11 @@ "commander": "^2.12.2", "common-tags": "^1.5.1", "configstore": "^3.1.1", - "core-js": "^2.5.2", + "core-js": "^2.5.3", "css-loader": "^0.28.7", "dotenv-webpack": "^1.5.4", "express": "^4.16.2", - "file-loader": "^1.1.5", + "file-loader": "^1.1.6", "find-cache-dir": "^1.0.0", "glamor": "^2.20.40", "glamorous": "^4.11.0", @@ -72,7 +72,7 @@ "request": "^2.83.0", "serve-favicon": "^2.4.5", "shelljs": "^0.7.8", - "style-loader": "^0.18.2", + "style-loader": "^0.19.1", "url-loader": "^0.6.2", "util-deprecate": "^1.0.2", "uuid": "^3.1.0", @@ -81,7 +81,7 @@ "webpack-hot-middleware": "^2.21.0" }, "devDependencies": { - "nodemon": "^1.12.5" + "nodemon": "^1.13.3" }, "peerDependencies": { "react": ">=15.0.0 || ^16.0.0", diff --git a/app/vue/package.json b/app/vue/package.json index 4c467f2e4991..60ed290161ef 100644 --- a/app/vue/package.json +++ b/app/vue/package.json @@ -28,7 +28,7 @@ "@storybook/channel-postmessage": "^3.3.0-alpha.4", "@storybook/ui": "^3.3.0-alpha.4", "airbnb-js-shims": "^1.4.0", - "autoprefixer": "^7.2.2", + "autoprefixer": "^7.2.3", "babel-core": "^6.26.0", "babel-loader": "^7.1.2", "babel-plugin-react-docgen": "^1.8.0", @@ -45,11 +45,11 @@ "commander": "^2.12.2", "common-tags": "^1.5.1", "configstore": "^3.1.1", - "core-js": "^2.5.2", + "core-js": "^2.5.3", "css-loader": "^0.28.7", "dotenv-webpack": "^1.5.4", "express": "^4.16.2", - "file-loader": "^1.1.5", + "file-loader": "^1.1.6", "find-cache-dir": "^1.0.0", "global": "^4.3.2", "html-webpack-plugin": "^2.30.1", @@ -66,7 +66,7 @@ "request": "^2.83.0", "serve-favicon": "^2.4.5", "shelljs": "^0.7.8", - "style-loader": "^0.18.2", + "style-loader": "^0.19.1", "url-loader": "^0.6.2", "util-deprecate": "^1.0.2", "uuid": "^3.1.0", @@ -77,14 +77,14 @@ "webpack-hot-middleware": "^2.21.0" }, "devDependencies": { - "nodemon": "^1.12.5", - "vue": "^2.5.9", - "vue-loader": "^13.5.0", - "vue-template-compiler": "^2.5.9" + "nodemon": "^1.13.3", + "vue": "^2.5.11", + "vue-loader": "^13.6.0", + "vue-template-compiler": "^2.5.11" }, "peerDependencies": { - "vue": "*", - "vue-loader": "*", - "vue-template-compiler": "*" + "vue": "2.5.11", + "vue-loader": "13.6.0", + "vue-template-compiler": "2.5.11" } } diff --git a/dependencies.yml b/dependencies.yml index ddf53ad9110a..b018845da85b 100644 --- a/dependencies.yml +++ b/dependencies.yml @@ -26,14 +26,14 @@ collectors: path: / settings: collect_root: true - bootstrap_command: yarn + bootstrap_command: yarn --ignore-scripts --ignore-engines --silent --prefer-offline actors: # pull requests for updates to our major version - type: js-lerna versions: "L.Y.Y" settings: batch_mode: true - bootstrap_command: yarn + bootstrap_command: yarn --ignore-scripts --ignore-engines --silent --prefer-offline github_labels: - dependencies:update github_assignees: diff --git a/docs/package.json b/docs/package.json index aa3bd01e0bc2..9bb9dc97efe4 100644 --- a/docs/package.json +++ b/docs/package.json @@ -18,10 +18,10 @@ "storybook": "start-storybook -p 9009 -s src/pages" }, "dependencies": { - "@storybook/addon-actions": "^3.2.17", - "@storybook/addon-links": "^3.2.17", - "@storybook/addons": "^3.2.17", - "@storybook/react": "^3.2.17", + "@storybook/addon-actions": "^3.2.18", + "@storybook/addon-links": "^3.2.18", + "@storybook/addons": "^3.2.18", + "@storybook/react": "^3.2.18", "babel-cli": "^6.26.0", "babel-core": "^6.26.0", "babel-plugin-transform-runtime": "^6.23.0", @@ -30,15 +30,15 @@ "babel-preset-react": "^6.24.1", "babel-preset-stage-0": "^6.24.1", "bootstrap": "^3.3.7", - "gatsby": "^1.9.128", - "gatsby-link": "^1.6.30", - "gatsby-plugin-sharp": "^1.6.22", - "gatsby-remark-autolink-headers": "^1.4.9", - "gatsby-remark-copy-linked-files": "^1.5.22", - "gatsby-remark-images": "^1.5.33", - "gatsby-remark-smartypants": "^1.4.9", - "gatsby-source-filesystem": "^1.5.9", - "gatsby-transformer-remark": "^1.7.23", + "gatsby": "^1.9.142", + "gatsby-link": "^1.6.32", + "gatsby-plugin-sharp": "^1.6.24", + "gatsby-remark-autolink-headers": "^1.4.10", + "gatsby-remark-copy-linked-files": "^1.5.24", + "gatsby-remark-images": "^1.5.36", + "gatsby-remark-smartypants": "^1.4.10", + "gatsby-source-filesystem": "^1.5.11", + "gatsby-transformer-remark": "^1.7.25", "gh-pages": "^1.1.0", "global": "^4.3.2", "highlight.js": "^9.12.0", diff --git a/docs/src/pages/basics/guide-react/index.md b/docs/src/pages/basics/guide-react/index.md index dd955c0dc844..4f9202ac4199 100644 --- a/docs/src/pages/basics/guide-react/index.md +++ b/docs/src/pages/basics/guide-react/index.md @@ -79,14 +79,15 @@ Now you can write some stories inside the `../stories/index.js` file, like this: import React from 'react'; import { storiesOf } from '@storybook/react'; import { action } from '@storybook/addon-actions'; +import Button from '../components/Button'; storiesOf('Button', module) .add('with text', () => ( - + )) .add('with some emoji', () => ( - - )); + + )); ``` Story is a single state of your component. In the above case, there are two stories for the native button component: diff --git a/docs/src/pages/basics/writing-stories/index.md b/docs/src/pages/basics/writing-stories/index.md index e9e074fde80a..0b993ea118bd 100644 --- a/docs/src/pages/basics/writing-stories/index.md +++ b/docs/src/pages/basics/writing-stories/index.md @@ -63,7 +63,7 @@ function loadStories() { configure(loadStories, module); ``` -Here we use Webpack's [require.context](https://webpack.github.io/docs/context.html#require-context) to load modules dynamically. Have a look at the relevant Webpack [docs](https://webpack.github.io/docs/context.html#require-context) to learn more about how to use require.context. +Here we use Webpack's [require.context](https://webpack.js.org/guides/dependency-management/#require-context) to load modules dynamically. Have a look at the relevant Webpack [docs](https://webpack.js.org/guides/dependency-management/#require-context) to learn more about how to use require.context. The **React Native** packager resolves all the imports at build-time, so it's not possible to load modules dynamically. If you don't want to import all your stories manually you can use [react-native-storybook-loader](https://github.com/elderfo/react-native-storybook-loader) to automatically create the import statements for all of your stories. diff --git a/docs/yarn.lock b/docs/yarn.lock index 9ed8b3169911..8f3daab7fe05 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -6,42 +6,42 @@ version "3.0.9" resolved "https://registry.yarnpkg.com/@hypnosphi/fuse.js/-/fuse.js-3.0.9.tgz#ea99f6121b4a8f065b4c71f85595db2714498807" -"@storybook/addon-actions@^3.2.17": - version "3.2.17" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-3.2.17.tgz#e85d38f743125157fdaf6669708e089bc2008e50" +"@storybook/addon-actions@^3.2.18": + version "3.2.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-3.2.18.tgz#46d97b0add955698d66becb5d51e68a4d387b822" dependencies: - "@storybook/addons" "^3.2.17" + "@storybook/addons" "^3.2.18" deep-equal "^1.0.1" json-stringify-safe "^5.0.1" prop-types "^15.6.0" - react-inspector "^2.2.1" + react-inspector "^2.2.2" uuid "^3.1.0" -"@storybook/addon-links@^3.2.17": - version "3.2.17" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-3.2.17.tgz#fb1d5f5f16575e56d560955d70c2a756c9f5b612" +"@storybook/addon-links@^3.2.18": + version "3.2.18" + resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-3.2.18.tgz#a1fd96dd91d56204da92632baa36a2263d2aeebb" dependencies: - "@storybook/addons" "^3.2.17" + "@storybook/addons" "^3.2.18" -"@storybook/addons@^3.2.17": - version "3.2.17" - resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-3.2.17.tgz#5c2ece24c5f7fbf7cedf4cfe503c5e356543e62d" +"@storybook/addons@^3.2.18": + version "3.2.18" + resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-3.2.18.tgz#2c1d42a0b661db2e429d1c406e79765ae5c71458" -"@storybook/channel-postmessage@^3.2.17": - version "3.2.17" - resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-3.2.17.tgz#530c1d6852b2c77df08490988fa943ba1373b1ec" +"@storybook/channel-postmessage@^3.2.18": + version "3.2.18" + resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-3.2.18.tgz#8193e2fbae4f46a20a58fb6cdfd722c1743a3dd0" dependencies: - "@storybook/channels" "^3.2.17" + "@storybook/channels" "^3.2.18" global "^4.3.2" json-stringify-safe "^5.0.1" -"@storybook/channels@^3.2.17": - version "3.2.17" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-3.2.17.tgz#09219a512564d1aa2292419d8d6064dbf7f5a5b3" +"@storybook/channels@^3.2.18": + version "3.2.18" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-3.2.18.tgz#c5d8c4ac780c6ebb4b1c360d8faf9207fd4fbafd" -"@storybook/components@^3.2.17": - version "3.2.17" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-3.2.17.tgz#318c6e6a1d3ffb469523b5dcfee775639ccc500b" +"@storybook/components@^3.2.18": + version "3.2.18" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-3.2.18.tgz#142dd10414a717c24734f063af6b2b7b9bd06b4a" dependencies: glamor "^2.20.40" glamorous "^4.11.0" @@ -87,17 +87,17 @@ dependencies: babel-runtime "^6.5.0" -"@storybook/react@^3.2.17": - version "3.2.17" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-3.2.17.tgz#c7b0595efef049d4dae89202994c17f332ee4662" - dependencies: - "@storybook/addon-actions" "^3.2.17" - "@storybook/addon-links" "^3.2.17" - "@storybook/addons" "^3.2.17" - "@storybook/channel-postmessage" "^3.2.17" - "@storybook/ui" "^3.2.17" - airbnb-js-shims "^1.3.0" - autoprefixer "^7.1.6" +"@storybook/react@^3.2.18": + version "3.2.18" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-3.2.18.tgz#bb0a86cf808c3c90fedc11e489f10660f650c781" + dependencies: + "@storybook/addon-actions" "^3.2.18" + "@storybook/addon-links" "^3.2.18" + "@storybook/addons" "^3.2.18" + "@storybook/channel-postmessage" "^3.2.18" + "@storybook/ui" "^3.2.18" + airbnb-js-shims "^1.4.0" + autoprefixer "^7.2.3" babel-core "^6.26.0" babel-loader "^7.1.2" babel-plugin-react-docgen "^1.8.0" @@ -111,10 +111,10 @@ babel-runtime "^6.26.0" case-sensitive-paths-webpack-plugin "^2.1.1" chalk "^2.3.0" - commander "^2.12.1" + commander "^2.12.2" common-tags "^1.5.1" configstore "^3.1.1" - core-js "^2.5.1" + core-js "^2.5.3" css-loader "^0.28.7" dotenv-webpack "^1.5.4" express "^4.16.2" @@ -127,7 +127,6 @@ json-stringify-safe "^5.0.1" json5 "^0.5.1" lodash.flattendeep "^4.4.0" - lodash.pick "^4.4.0" postcss-flexbugs-fixes "^3.2.0" postcss-loader "^2.0.9" prop-types "^15.6.0" @@ -136,20 +135,20 @@ request "^2.83.0" serve-favicon "^2.4.5" shelljs "^0.7.8" - style-loader "^0.18.2" + style-loader "^0.19.1" url-loader "^0.6.2" util-deprecate "^1.0.2" uuid "^3.1.0" - webpack "^3.8.1" + webpack "^3.10.0" webpack-dev-middleware "^1.12.2" webpack-hot-middleware "^2.21.0" -"@storybook/ui@^3.2.17": - version "3.2.17" - resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-3.2.17.tgz#8838fc5bbe21cedfafc65ee90fe525499370118a" +"@storybook/ui@^3.2.18": + version "3.2.18" + resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-3.2.18.tgz#4d19f8daff7ec37cebe4d2b5d20e81e3676d8938" dependencies: "@hypnosphi/fuse.js" "^3.0.9" - "@storybook/components" "^3.2.17" + "@storybook/components" "^3.2.18" "@storybook/mantra-core" "^1.7.0" "@storybook/react-fuzzy" "^0.4.3" "@storybook/react-komposer" "^2.0.0" @@ -166,8 +165,8 @@ prop-types "^15.6.0" qs "^6.5.1" react-icons "^2.2.7" - react-inspector "^2.2.1" - react-modal "^3.1.4" + react-inspector "^2.2.2" + react-modal "^3.1.8" react-split-pane "^0.1.71" react-treebeard "^2.0.3" redux "^3.7.2" @@ -228,18 +227,20 @@ after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" -airbnb-js-shims@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/airbnb-js-shims/-/airbnb-js-shims-1.3.0.tgz#aac46d80057fb0b414f70e06d07e362fd99ee2fa" +airbnb-js-shims@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/airbnb-js-shims/-/airbnb-js-shims-1.4.0.tgz#b920b0bc9fafe8b8ae2a073f29fb10303b1b2b18" dependencies: array-includes "^3.0.3" + array.prototype.flatmap "^1.1.1" + array.prototype.flatten "^1.1.1" es5-shim "^4.5.9" es6-shim "^0.35.3" function.prototype.name "^1.0.3" object.entries "^1.0.4" object.getownpropertydescriptors "^2.0.3" object.values "^1.0.4" - promise.prototype.finally "^3.0.0" + promise.prototype.finally "^3.1.0" string.prototype.padend "^3.0.0" string.prototype.padstart "^3.0.0" @@ -452,6 +453,22 @@ array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" +array.prototype.flatmap@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.1.1.tgz#dbb6c44693c2a2a2fcab24e551dfbf47f67fde03" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.10.0" + function-bind "^1.1.1" + +array.prototype.flatten@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array.prototype.flatten/-/array.prototype.flatten-1.1.1.tgz#301b351aa8a632356ee2f5311c6c8e8f50d318cc" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.10.0" + function-bind "^1.1.1" + arraybuffer.slice@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" @@ -541,15 +558,15 @@ autoprefixer@^6.0.2, autoprefixer@^6.3.1: postcss "^5.2.16" postcss-value-parser "^3.2.3" -autoprefixer@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.6.tgz#fb933039f74af74a83e71225ce78d9fd58ba84d7" +autoprefixer@^7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.3.tgz#c2841e38b7940c2d0a9bbffd72c75f33637854f8" dependencies: - browserslist "^2.5.1" - caniuse-lite "^1.0.30000748" + browserslist "^2.10.0" + caniuse-lite "^1.0.30000783" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^6.0.13" + postcss "^6.0.14" postcss-value-parser "^3.2.3" aws-sign2@~0.6.0: @@ -1720,6 +1737,18 @@ better-assert@~1.0.0: dependencies: callsite "1.0.0" +better-queue-memory@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-queue-memory/-/better-queue-memory-1.0.2.tgz#aa6d169aa1d0cc77409185cb9cb5c7dc251bcd41" + +better-queue@^3.8.6: + version "3.8.6" + resolved "https://registry.yarnpkg.com/better-queue/-/better-queue-3.8.6.tgz#73220bdfab403924cffa7497220dd387abb73a63" + dependencies: + better-queue-memory "^1.0.1" + node-eta "^0.9.0" + uuid "^3.0.0" + big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" @@ -1988,12 +2017,12 @@ browserslist@^2.1.2: caniuse-lite "^1.0.30000718" electron-to-chromium "^1.3.18" -browserslist@^2.5.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.8.0.tgz#27d64028130a2e8585ca96f7c3b7730eff4de493" +browserslist@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.10.0.tgz#bac5ee1cc69ca9d96403ffb8a3abdc5b6aed6346" dependencies: - caniuse-lite "^1.0.30000758" - electron-to-chromium "^1.3.27" + caniuse-lite "^1.0.30000780" + electron-to-chromium "^1.3.28" bser@^2.0.0: version "2.0.0" @@ -2123,9 +2152,9 @@ caniuse-lite@^1.0.30000718: version "1.0.30000740" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000740.tgz#f2c4c04d6564eb812e61006841700ad557f6f973" -caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000758: - version "1.0.30000760" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000760.tgz#ec720395742f1c7ec8947fd6dd2604e77a8f98ff" +caniuse-lite@^1.0.30000780, caniuse-lite@^1.0.30000783: + version "1.0.30000783" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000783.tgz#9b5499fb1b503d2345d12aa6b8612852f4276ffd" capture-stack-trace@^1.0.0: version "1.0.0" @@ -2474,7 +2503,7 @@ commander@2.9.0, commander@2.9.x: dependencies: graceful-readlink ">= 1.0.0" -commander@^2.12.1: +commander@^2.12.2: version "2.12.2" resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" @@ -2635,10 +2664,14 @@ core-js@^1.0.0, core-js@^1.2.6: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" -core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0, core-js@^2.5.1: +core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: version "2.5.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" +core-js@^2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -3290,9 +3323,9 @@ electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.18: version "1.3.24" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.24.tgz#9b7b88bb05ceb9fa016a177833cc2dde388f21b6" -electron-to-chromium@^1.3.27: - version "1.3.27" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d" +electron-to-chromium@^1.3.28: + version "1.3.29" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.29.tgz#7a58236b95468c3e7660091348522d65d7736b36" element-resize-detector@^1.1.12: version "1.1.12" @@ -3424,7 +3457,17 @@ error-stack-parser@^2.0.0: dependencies: stackframe "^1.0.3" -es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0, es-abstract@^1.8.2: +es-abstract@^1.10.0, es-abstract@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0: version "1.8.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.2.tgz#25103263dc4decbda60e0c737ca32313518027ee" dependencies: @@ -4186,15 +4229,15 @@ fuse.js@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.1.0.tgz#9062146c471552189b0f678b4f5a155731ae3b3c" -gatsby-1-config-css-modules@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/gatsby-1-config-css-modules/-/gatsby-1-config-css-modules-1.0.7.tgz#c280ecdaf6f44ade490b4b87b6ed496addac9488" +gatsby-1-config-css-modules@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/gatsby-1-config-css-modules/-/gatsby-1-config-css-modules-1.0.8.tgz#c051b7be22c6d07d485c2d9d05e0b88c13f4a572" dependencies: babel-runtime "^6.26.0" -gatsby-cli@^1.1.25: - version "1.1.25" - resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-1.1.25.tgz#767899c351711870a3b08a9758da94e224abbfe7" +gatsby-cli@^1.1.27: + version "1.1.27" + resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-1.1.27.tgz#40be97cde1721ee61c25d21a21c84867e7ba3678" dependencies: babel-code-frame "^6.26.0" babel-runtime "^6.26.0" @@ -4210,12 +4253,13 @@ gatsby-cli@^1.1.25: resolve-cwd "^2.0.0" source-map "^0.5.7" stack-trace "^0.0.10" + update-notifier "^2.3.0" yargs "^8.0.2" yurnalist "^0.2.1" -gatsby-link@^1.6.30: - version "1.6.30" - resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-1.6.30.tgz#d75a7ceaa9e138b5f4f64cc6dbf1e0632876bd09" +gatsby-link@^1.6.30, gatsby-link@^1.6.32: + version "1.6.32" + resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-1.6.32.tgz#49114e5fc649f274254953e06bfaafebb296ccb8" dependencies: babel-runtime "^6.26.0" prop-types "^15.5.8" @@ -4228,9 +4272,9 @@ gatsby-module-loader@^1.0.9: babel-runtime "^6.26.0" loader-utils "^0.2.16" -gatsby-plugin-sharp@^1.6.22: - version "1.6.22" - resolved "https://registry.yarnpkg.com/gatsby-plugin-sharp/-/gatsby-plugin-sharp-1.6.22.tgz#7d1c71a881e89c4327450b15820d4614eb72e6e3" +gatsby-plugin-sharp@^1.6.24: + version "1.6.24" + resolved "https://registry.yarnpkg.com/gatsby-plugin-sharp/-/gatsby-plugin-sharp-1.6.24.tgz#f885a384b222f655534e45788a99863a038bf107" dependencies: async "^2.1.2" babel-runtime "^6.26.0" @@ -4253,18 +4297,18 @@ gatsby-react-router-scroll@^1.0.6: scroll-behavior "^0.9.1" warning "^3.0.0" -gatsby-remark-autolink-headers@^1.4.9: - version "1.4.9" - resolved "https://registry.yarnpkg.com/gatsby-remark-autolink-headers/-/gatsby-remark-autolink-headers-1.4.9.tgz#2eb6c0497d43a1b2600683913fa3288e7be8ac25" +gatsby-remark-autolink-headers@^1.4.10: + version "1.4.10" + resolved "https://registry.yarnpkg.com/gatsby-remark-autolink-headers/-/gatsby-remark-autolink-headers-1.4.10.tgz#68e84e6c4b618a668a4d21cbdc155fc95a57b2f8" dependencies: babel-runtime "^6.26.0" github-slugger "^1.1.1" mdast-util-to-string "^1.0.2" unist-util-visit "^1.1.1" -gatsby-remark-copy-linked-files@^1.5.22: - version "1.5.22" - resolved "https://registry.yarnpkg.com/gatsby-remark-copy-linked-files/-/gatsby-remark-copy-linked-files-1.5.22.tgz#00fcc9f9809441dc350201b66905f33a28fc3e8f" +gatsby-remark-copy-linked-files@^1.5.24: + version "1.5.24" + resolved "https://registry.yarnpkg.com/gatsby-remark-copy-linked-files/-/gatsby-remark-copy-linked-files-1.5.24.tgz#5bc02ef35978cc273620042a8351aa13cb97bc47" dependencies: babel-runtime "^6.26.0" cheerio "^1.0.0-rc.2" @@ -4275,30 +4319,30 @@ gatsby-remark-copy-linked-files@^1.5.22: path-is-inside "^1.0.2" unist-util-visit "^1.1.1" -gatsby-remark-images@^1.5.33: - version "1.5.33" - resolved "https://registry.yarnpkg.com/gatsby-remark-images/-/gatsby-remark-images-1.5.33.tgz#41f3a7eb68d4f59f5868401242ef217c3a7f2189" +gatsby-remark-images@^1.5.36: + version "1.5.36" + resolved "https://registry.yarnpkg.com/gatsby-remark-images/-/gatsby-remark-images-1.5.36.tgz#12920b1c1969d519befd4c661201c28e30a896a8" dependencies: babel-runtime "^6.26.0" cheerio "^1.0.0-rc.2" - gatsby-plugin-sharp "^1.6.22" + gatsby-plugin-sharp "^1.6.24" is-relative-url "^2.0.0" lodash "^4.17.4" slash "^1.0.0" unist-util-select "^1.5.0" -gatsby-remark-smartypants@^1.4.9: - version "1.4.9" - resolved "https://registry.yarnpkg.com/gatsby-remark-smartypants/-/gatsby-remark-smartypants-1.4.9.tgz#ed48782849bc4fbac44e1365822b436f9766c2ae" +gatsby-remark-smartypants@^1.4.10: + version "1.4.10" + resolved "https://registry.yarnpkg.com/gatsby-remark-smartypants/-/gatsby-remark-smartypants-1.4.10.tgz#b04c06741529e693dc54fe23e191edb3cf0aea9e" dependencies: babel-runtime "^6.26.0" retext "^4.0.0" retext-smartypants "^2.0.0" unist-util-visit "^1.1.1" -gatsby-source-filesystem@^1.5.9: - version "1.5.9" - resolved "https://registry.yarnpkg.com/gatsby-source-filesystem/-/gatsby-source-filesystem-1.5.9.tgz#f732d9e51be1b622e8416695c8cf1acd9483e822" +gatsby-source-filesystem@^1.5.11: + version "1.5.11" + resolved "https://registry.yarnpkg.com/gatsby-source-filesystem/-/gatsby-source-filesystem-1.5.11.tgz#bc2f9bdcc71212df42d45ae0b8adc7e37540b599" dependencies: babel-cli "^6.26.0" babel-runtime "^6.26.0" @@ -4312,9 +4356,9 @@ gatsby-source-filesystem@^1.5.9: slash "^1.0.0" valid-url "^1.0.9" -gatsby-transformer-remark@^1.7.23: - version "1.7.23" - resolved "https://registry.yarnpkg.com/gatsby-transformer-remark/-/gatsby-transformer-remark-1.7.23.tgz#a0510889334223340f39244348b391be36806f6b" +gatsby-transformer-remark@^1.7.25: + version "1.7.25" + resolved "https://registry.yarnpkg.com/gatsby-transformer-remark/-/gatsby-transformer-remark-1.7.25.tgz#7fb1a0447270f780d933b838c16b0a82aa195d72" dependencies: babel-runtime "^6.26.0" bluebird "^3.5.0" @@ -4334,9 +4378,9 @@ gatsby-transformer-remark@^1.7.23: unist-util-select "^1.5.0" unist-util-visit "^1.1.1" -gatsby@^1.9.128: - version "1.9.128" - resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-1.9.128.tgz#9b78bee5cf160886610f53ef203c645b698454d4" +gatsby@^1.9.142: + version "1.9.142" + resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-1.9.142.tgz#020393389a759675012b120253e16663abe8dc14" dependencies: async "^2.1.2" babel-code-frame "^6.22.0" @@ -4352,6 +4396,7 @@ gatsby@^1.9.128: babel-runtime "^6.26.0" babel-traverse "^6.24.1" babylon "^6.17.3" + better-queue "^3.8.6" bluebird "^3.5.0" chalk "^1.1.3" chokidar "^1.7.0" @@ -4374,8 +4419,9 @@ gatsby@^1.9.128: friendly-errors-webpack-plugin "^1.6.1" front-matter "^2.1.0" fs-extra "^4.0.1" - gatsby-1-config-css-modules "^1.0.7" - gatsby-cli "^1.1.25" + gatsby-1-config-css-modules "^1.0.8" + gatsby-cli "^1.1.27" + gatsby-link "^1.6.30" gatsby-module-loader "^1.0.9" gatsby-react-router-scroll "^1.0.6" glob "^7.1.1" @@ -4393,6 +4439,7 @@ gatsby@^1.9.128: lodash "^4.17.4" lodash-id "^0.14.0" lowdb "^0.16.2" + md5 "^2.2.1" md5-file "^3.1.1" mime "^1.3.6" mitt "^1.1.2" @@ -6447,7 +6494,7 @@ md5.js@^1.3.4: hash-base "^3.0.0" inherits "^2.0.1" -md5@^2.0.0: +md5@^2.0.0, md5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9" dependencies: @@ -6791,6 +6838,10 @@ node-emoji@^1.0.4: dependencies: lodash.toarray "^4.4.0" +node-eta@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-eta/-/node-eta-0.9.0.tgz#9fb0b099bcd2a021940e603c64254dc003d9a7a8" + node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -8061,7 +8112,7 @@ postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0. source-map "^0.5.6" supports-color "^3.2.3" -postcss@^6.0.0, postcss@^6.0.13: +postcss@^6.0.0: version "6.0.13" resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.13.tgz#b9ecab4ee00c89db3ec931145bd9590bbf3f125f" dependencies: @@ -8077,6 +8128,14 @@ postcss@^6.0.1: source-map "^0.5.7" supports-color "^4.4.0" +postcss@^6.0.14: + version "6.0.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.14.tgz#5534c72114739e75d0afcf017db853099f562885" + dependencies: + chalk "^2.3.0" + source-map "^0.6.1" + supports-color "^4.4.0" + potrace@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/potrace/-/potrace-2.1.1.tgz#79111a858197f366418845f667fe8f7fac0a79db" @@ -8128,12 +8187,12 @@ promise-each@^2.2.0: dependencies: any-promise "^0.1.0" -promise.prototype.finally@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.0.1.tgz#51ba2fa0a4cba5cbca54da818a8da8f24fc68f39" +promise.prototype.finally@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.0.tgz#66f161b1643636e50e7cf201dc1b84a857f3864e" dependencies: define-properties "^1.1.2" - es-abstract "^1.8.2" + es-abstract "^1.9.0" function-bind "^1.1.1" promise@^7.1.1: @@ -8397,16 +8456,16 @@ react-icons@^2.2.7: dependencies: react-icon-base "2.1.0" -react-inspector@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-2.2.1.tgz#c24f9a0131960b8e63c8392254d34df0717aabdf" +react-inspector@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-2.2.2.tgz#c04f5248fa92ab6c23e37960e725fb7f48c34d05" dependencies: babel-runtime "^6.26.0" is-dom "^1.0.9" -react-modal@^3.1.4: - version "3.1.7" - resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.1.7.tgz#21feb937c95cd722bf2d375cada751fdc8189c0e" +react-modal@^3.1.8: + version "3.1.8" + resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.1.8.tgz#7d6b1958f44828babd2a1ce826c28fa40d026b0f" dependencies: exenv "^1.2.0" prop-types "^15.5.10" @@ -9971,9 +10030,9 @@ style-loader@^0.13.0: dependencies: loader-utils "^1.0.2" -style-loader@^0.18.2: - version "0.18.2" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.18.2.tgz#cc31459afbcd6d80b7220ee54b291a9fd66ff5eb" +style-loader@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.1.tgz#591ffc80bcefe268b77c5d9ebc0505d772619f85" dependencies: loader-utils "^1.0.2" schema-utils "^0.3.0" @@ -10525,7 +10584,7 @@ unzip-response@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" -update-notifier@2.3.0: +update-notifier@2.3.0, update-notifier@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.3.0.tgz#4e8827a6bb915140ab093559d7014e3ebb837451" dependencies: @@ -10953,9 +11012,9 @@ webpack@^1.13.3: watchpack "^0.2.1" webpack-core "~0.6.9" -webpack@^3.8.1: - version "3.8.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.8.1.tgz#b16968a81100abe61608b0153c9159ef8bb2bd83" +webpack@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.10.0.tgz#5291b875078cf2abf42bdd23afe3f8f96c17d725" dependencies: acorn "^5.0.0" acorn-dynamic-import "^2.0.0" diff --git a/examples/angular-cli/package.json b/examples/angular-cli/package.json index aafa17989124..55f4fe8addfc 100644 --- a/examples/angular-cli/package.json +++ b/examples/angular-cli/package.json @@ -14,23 +14,23 @@ }, "private": true, "dependencies": { - "@angular/animations": "4.3.5", - "@angular/common": "4.3.5", - "@angular/compiler": "4.3.5", - "@angular/core": "4.3.5", - "@angular/forms": "4.3.5", - "@angular/http": "4.3.5", - "@angular/platform-browser": "4.3.5", - "@angular/platform-browser-dynamic": "4.3.5", - "@angular/router": "4.3.5", + "@angular/animations": "^5.0.0-beta.7", + "@angular/common": "^5.0.0-beta.7", + "@angular/compiler": "^5.0.0-beta.7", + "@angular/core": "^5.0.0-beta.7", + "@angular/forms": "^5.0.0-beta.7", + "@angular/http": "^5.0.0-beta.7", + "@angular/platform-browser": "^5.0.0-beta.7", + "@angular/platform-browser-dynamic": "^5.0.0-beta.7", + "@angular/router": "^5.0.0-beta.7", "core-js": "^2.4.1", "rxjs": "^5.4.2", "zone.js": "^0.8.14" }, "devDependencies": { "@angular/cli": "1.3.0", - "@angular/compiler-cli": "4.3.5", - "@angular/language-service": "4.3.5", + "@angular/compiler-cli": "^5.0.0-beta.7", + "@angular/language-service": "^5.0.0-beta.7", "@storybook/addon-actions": "^3.3.0-alpha.4", "@storybook/addon-links": "^3.3.0-alpha.4", "@storybook/addon-notes": "^3.3.0-alpha.4", diff --git a/examples/angular-cli/src/stories/custom.pipe.ts b/examples/angular-cli/src/stories/custom.pipe.ts new file mode 100644 index 000000000000..7c72cbc89bd7 --- /dev/null +++ b/examples/angular-cli/src/stories/custom.pipe.ts @@ -0,0 +1,10 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'customPipe' +}) +export class CustomPipePipe implements PipeTransform { + transform(value: any, args?: any): any { + return `CustomPipe: ${value}`; + } +} diff --git a/examples/angular-cli/src/stories/index.ts b/examples/angular-cli/src/stories/index.ts index 09adb88f6242..5f800a4d60a9 100644 --- a/examples/angular-cli/src/stories/index.ts +++ b/examples/angular-cli/src/stories/index.ts @@ -20,6 +20,27 @@ import { Welcome, Button } from '@storybook/angular/demo'; import { SimpleKnobsComponent } from './knobs.component'; import { AllKnobsComponent } from './all-knobs.component'; import { AppComponent } from '../app/app.component'; +import { NameComponent } from './name.component'; +import { CustomPipePipe } from './custom.pipe'; + +storiesOf('Custom Pipe', module) + .add('Default', () => ({ + component: NameComponent, + props: { + field: 'foobar', + }, + pipes: [ CustomPipePipe ], + })); + +storiesOf('Custom Pipe/With Knobs', module) + .addDecorator(withKnobs) + .add('NameComponent', () => ({ + component: NameComponent, + props: { + field: text('field', 'foobar'), + }, + pipes: [ CustomPipePipe ], + })); storiesOf('Welcome', module) .add('to Storybook', () => ({ @@ -84,7 +105,8 @@ storiesOf('Addon Notes', module) withNotes({ text: 'My notes on some button' })(() => ({ component: Button, props: { - text: 'Notes on some Button' + text: 'Notes on some Button', + onClick: () => {}, } })) ) @@ -101,7 +123,8 @@ storiesOf('Addon Notes', module) })(() => ({ component: Button, props: { - text: 'Notes with HTML' + text: 'Notes with HTML', + onClick: () => {}, } })) ); diff --git a/examples/angular-cli/src/stories/name.component.ts b/examples/angular-cli/src/stories/name.component.ts new file mode 100644 index 000000000000..79a6e95e21ee --- /dev/null +++ b/examples/angular-cli/src/stories/name.component.ts @@ -0,0 +1,9 @@ +import { Component, Input } from '@angular/core'; + +@Component({ + selector: 'name', + template: `

{{ field | customPipe }}

` +}) +export class NameComponent { + @Input() field; +} diff --git a/examples/cra-kitchen-sink/src/stories/__snapshots__/addon-actions.stories.storyshot b/examples/cra-kitchen-sink/src/stories/__snapshots__/addon-actions.stories.storyshot index c9e4412cb647..d245eb9a062c 100644 --- a/examples/cra-kitchen-sink/src/stories/__snapshots__/addon-actions.stories.storyshot +++ b/examples/cra-kitchen-sink/src/stories/__snapshots__/addon-actions.stories.storyshot @@ -1,5 +1,105 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`Storyshots Addon Actions All types 1`] = ` +
+ + + + + + + + + + + + + + + + + + + +
+`; + exports[`Storyshots Addon Actions Circular Payload 1`] = ` + + +
+ +
+
+
+

+ Addon Info.Options.styles +

+

+ Extend info styles with an object +

+
+
+

+ Story Source +

+
+            
+ + <BaseButton + + + + + + label + + + = + + + "Button" + + + + + + + + /> + +
+
+
+
+

+ Prop Types +

+
+

+ "BaseButton" Component +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ property + + propType + + required + + default + + description +
+ disabled + + + + + + - + + + { + + false + + } + + + +
+ label + + + + + + yes + + - + + +
+ onClick + + + + + + - + + + { + + onClick() + + } + + + +
+ style + + + + + + - + + + { + + {} + + } + + + +
+
+
+
+
+
+ +`; + +exports[`Storyshots Addon Info.Options.styles Full control over styles using a function 1`] = `

Addon Info.Options.styles

- Change info styles // I think this is broken or I am using it wrong? + Full control over styles using a function

diff --git a/examples/cra-kitchen-sink/src/stories/__snapshots__/index.stories.storyshot b/examples/cra-kitchen-sink/src/stories/__snapshots__/index.stories.storyshot index febf46a09637..eea5f06be615 100644 --- a/examples/cra-kitchen-sink/src/stories/__snapshots__/index.stories.storyshot +++ b/examples/cra-kitchen-sink/src/stories/__snapshots__/index.stories.storyshot @@ -1045,17 +1045,3 @@ exports[`Storyshots Some really long story kind description with text 1`] = `
`; - -exports[`Storyshots WithEvents Logger 1`] = ` -
-

- Logger -

-
- -
-
-`; diff --git a/examples/cra-kitchen-sink/src/stories/addon-actions.stories.js b/examples/cra-kitchen-sink/src/stories/addon-actions.stories.js index 04feb6fafade..ba9355f9f928 100644 --- a/examples/cra-kitchen-sink/src/stories/addon-actions.stories.js +++ b/examples/cra-kitchen-sink/src/stories/addon-actions.stories.js @@ -1,7 +1,10 @@ +/* global window */ import React from 'react'; import { storiesOf } from '@storybook/react'; import { action, decorateAction } from '@storybook/addon-actions'; +import { setOptions } from '@storybook/addon-options'; import { Button } from '@storybook/react/demo'; +import { File } from 'global'; const pickFirst = decorateAction([args => args.slice(0, 1)]); @@ -17,4 +20,59 @@ storiesOf('Addon Actions', module) const fn = action('fnName'); return ; }) - .add('Reserved keyword as name', () => ); + .add('Reserved keyword as name', () => ) + .add('All types', () => { + function A() {} + function B() {} + + const bound = B.bind({}); + + let file; + try { + file = new File([''], 'filename.txt', { type: 'text/plain', lastModified: new Date() }); + } catch (error) { + file = error; + } + const reg = /fooBar/g; + + return ( +
+ {setOptions({ selectedAddonPanel: 'storybook/actions/actions-panel' })} + + + + + + + + + + + + + + + + + + + +
+ ); + }); diff --git a/examples/cra-kitchen-sink/src/stories/addon-events.stories.js b/examples/cra-kitchen-sink/src/stories/addon-events.stories.js new file mode 100644 index 000000000000..9621e03fbeef --- /dev/null +++ b/examples/cra-kitchen-sink/src/stories/addon-events.stories.js @@ -0,0 +1,73 @@ +import React from 'react'; +import EventEmitter from 'eventemitter3'; +import { storiesOf } from '@storybook/react'; + +import WithEvents from '@storybook/addon-events'; +import Logger from './Logger'; + +const EVENTS = { + TEST_EVENT_1: 'test-event-1', + TEST_EVENT_2: 'test-event-2', + TEST_EVENT_3: 'test-event-3', + TEST_EVENT_4: 'test-event-4', +}; + +const emitter = new EventEmitter(); +const emit = emitter.emit.bind(emitter); + +storiesOf('Addon Events', module) + .addDecorator(getStory => ( + + {getStory()} + + )) + .add('Logger', () => ); diff --git a/examples/cra-kitchen-sink/src/stories/addon-info.stories.js b/examples/cra-kitchen-sink/src/stories/addon-info.stories.js index 959e6ea1e979..d6fad18d2c58 100644 --- a/examples/cra-kitchen-sink/src/stories/addon-info.stories.js +++ b/examples/cra-kitchen-sink/src/stories/addon-info.stories.js @@ -33,7 +33,7 @@ const markdownDescription = ` Sometimes you might want to manually include some code examples: ~~~js -const codeblock = []; +const Button = () => ); - -storiesOf('WithEvents', module) - .addDecorator(getStory => ( - - {getStory()} - - )) - .add('Logger', () => ); diff --git a/examples/vue-kitchen-sink/package.json b/examples/vue-kitchen-sink/package.json index 8eb9b5396cca..99639dff1235 100644 --- a/examples/vue-kitchen-sink/package.json +++ b/examples/vue-kitchen-sink/package.json @@ -17,16 +17,16 @@ "babel-preset-vue": "^1.2.1", "cross-env": "^5.1.1", "css-loader": "^0.28.7", - "file-loader": "^1.1.5", + "file-loader": "^1.1.6", "vue-hot-reload-api": "^2.2.4", - "vue-loader": "^13.5.0", + "vue-loader": "^13.6.0", "vue-style-loader": "^3.0.1", - "vue-template-compiler": "^2.5.9", + "vue-template-compiler": "^2.5.11", "webpack": "^3.10.0", "webpack-dev-server": "^2.9.7" }, "dependencies": { - "vue": "^2.5.9", + "vue": "^2.5.11", "vuex": "^3.0.0" }, "scripts": { diff --git a/lib/components/src/highlight_button.js b/lib/components/src/highlight_button.js index 609bdc5aa419..fb26f0bc0f90 100644 --- a/lib/components/src/highlight_button.js +++ b/lib/components/src/highlight_button.js @@ -5,7 +5,7 @@ export default glamorous.button( border: '1px solid rgba(0, 0, 0, 0)', font: 'inherit', background: 'none', - 'box-shadow': 'none', + boxShadow: 'none', padding: 0, ':hover': { backgroundColor: 'rgba(0, 0, 0, 0.05)', diff --git a/lib/ui/package.json b/lib/ui/package.json index 96d65f359a43..be4633c0f43c 100644 --- a/lib/ui/package.json +++ b/lib/ui/package.json @@ -14,13 +14,13 @@ "storybook": "start-storybook -p 9010" }, "dependencies": { - "@hypnosphi/fuse.js": "^3.0.9", "@storybook/components": "^3.3.0-alpha.4", "@storybook/mantra-core": "^1.7.0", "@storybook/react-komposer": "^2.0.0", "babel-runtime": "^6.26.0", "deep-equal": "^1.0.1", "events": "^1.1.1", + "fuse.js": "^3.2.0", "global": "^4.3.2", "json-stringify-safe": "^5.0.1", "keycode": "^2.1.8", @@ -32,8 +32,8 @@ "qs": "^6.5.1", "react-fuzzy": "^0.5.1", "react-icons": "^2.2.7", - "react-inspector": "^2.2.1", - "react-modal": "^3.1.7", + "react-inspector": "^2.2.2", + "react-modal": "^3.1.8", "react-split-pane": "^0.1.71", "react-treebeard": "^2.0.3", "redux": "^3.7.2" diff --git a/lib/ui/src/modules/shortcuts/actions/shortcuts.js b/lib/ui/src/modules/shortcuts/actions/shortcuts.js index d1b70f448b21..1920b154e013 100755 --- a/lib/ui/src/modules/shortcuts/actions/shortcuts.js +++ b/lib/ui/src/modules/shortcuts/actions/shortcuts.js @@ -3,9 +3,7 @@ import { features } from '../../../libs/key_events'; import apiActions from '../../api/actions'; const deprecationMessage = (oldName, newName) => - `The ${oldName} option has been renamed to ${ - newName - } and will not be available in the next major Storybook release. Please update your config.`; + `The ${oldName} option has been renamed to ${newName} and will not be available in the next major Storybook release. Please update your config.`; export function keyEventToOptions(currentOptions, event) { switch (event) { diff --git a/lib/ui/src/modules/ui/components/search_box.js b/lib/ui/src/modules/ui/components/search_box.js index 7fa0a29e9f2d..4f5b6c159db9 100644 --- a/lib/ui/src/modules/ui/components/search_box.js +++ b/lib/ui/src/modules/ui/components/search_box.js @@ -58,7 +58,7 @@ const suggestionTemplate = (props, state, styles, clickHandler) => tabIndex={0} role="option" aria-selected={state.selectedIndex === i} - key={val.value} + key={`${val.value}_${val.id}`} style={{ ...style, display: 'flex', justifyContent: 'space-between' }} onClick={() => clickHandler(i)} > diff --git a/lib/ui/src/modules/ui/components/search_box.test.js b/lib/ui/src/modules/ui/components/search_box.test.js index a146f868b319..d0097d9fda0e 100644 --- a/lib/ui/src/modules/ui/components/search_box.test.js +++ b/lib/ui/src/modules/ui/components/search_box.test.js @@ -127,7 +127,7 @@ describe('manager.ui.components.search_box', () => { target: { value: 'b' }, }); - const option = modal.findWhere(el => el.key() === 'b'); + const option = modal.findWhere(el => el.key() && el.key().startsWith('b_')); option.simulate('click'); expect(onSelectStory).toHaveBeenCalledWith('a', 'b'); diff --git a/lib/ui/src/modules/ui/libs/filters.js b/lib/ui/src/modules/ui/libs/filters.js index 6fb1860282fe..358b2a3f6455 100755 --- a/lib/ui/src/modules/ui/libs/filters.js +++ b/lib/ui/src/modules/ui/libs/filters.js @@ -1,4 +1,4 @@ -import Fuse from '@hypnosphi/fuse.js'; +import Fuse from 'fuse.js'; import sortBy from 'lodash.sortby'; const searchOptions = { diff --git a/lib/ui/src/modules/ui/routes.js b/lib/ui/src/modules/ui/routes.js index 98c536c633fc..79929c704083 100755 --- a/lib/ui/src/modules/ui/routes.js +++ b/lib/ui/src/modules/ui/routes.js @@ -1,5 +1,6 @@ import React from 'react'; import ReactDOM from 'react-dom'; +import ReactModal from 'react-modal'; import Layout from './containers/layout'; import StoriesPanel from './containers/stories_panel'; import AddonPanel from './containers/addon_panel'; @@ -14,6 +15,9 @@ export default function(injectDeps, { clientStore, provider, domNode }) { return preview; }; + // Tell react-modal which element to mark as aria-hidden + ReactModal.setAppElement(domNode); + const root = (
=8.0.0", diff --git a/scripts/prepare.js b/scripts/prepare.js index 875695e2af50..28c315965903 100644 --- a/scripts/prepare.js +++ b/scripts/prepare.js @@ -11,7 +11,7 @@ shell.rm('-rf', 'dist'); const babel = path.join(__dirname, '..', 'node_modules', '.bin', 'babel'); const args = [ - '--ignore tests/*,__tests__/,**.test.js,stories/,**.story.js,**.stories.js', + '--ignore __mocks__/,tests/*,__tests__/,**.test.js,stories/,**.story.js,**.stories.js', '--plugins "transform-runtime"', './src --out-dir ./dist', '--copy-files', diff --git a/yarn.lock b/yarn.lock index ad2f894aea78..8f0c07201b3f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,9 +10,9 @@ source-map "^0.5.6" typescript "^2.3.3" -"@angular/animations@4.3.5": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-4.3.5.tgz#85aa454c887cc7cce11637ea5f6e9afad88490e1" +"@angular/animations@^5.0.0-beta.7": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-5.0.1.tgz#a92b2b186a6e5a31a9f1584911dd6aa7e16c5de1" dependencies: tslib "^1.7.1" @@ -85,72 +85,67 @@ optionalDependencies: node-sass "^4.3.0" -"@angular/common@4.3.5": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-4.3.5.tgz#5f6b11347eae1dfc34623ccfd4c06c8f4c488e2d" +"@angular/common@^5.0.0-beta.7": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-5.0.1.tgz#43005ab3c8b8ffaf176aafb3b86ba931c3e4bdf9" dependencies: tslib "^1.7.1" -"@angular/compiler-cli@4.3.5": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-4.3.5.tgz#24e99b36c0909363ff8247bf331a8b89eaedfe63" +"@angular/compiler-cli@^5.0.0-beta.7": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-5.0.1.tgz#526dc1bb394fb16ad916601eea9aa00eb44b4fff" dependencies: - "@angular/tsc-wrapped" "4.3.5" + chokidar "^1.4.2" minimist "^1.2.0" reflect-metadata "^0.1.2" + tsickle "^0.24.0" -"@angular/compiler@4.3.5": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-4.3.5.tgz#50d3c986657beff1fef4f6dd9a3fa58e24abd548" +"@angular/compiler@^5.0.0-beta.7": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-5.0.1.tgz#7fd4c7fa4bbbef4c146962fa946b827330a6c8ed" dependencies: tslib "^1.7.1" -"@angular/core@4.3.5": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-4.3.5.tgz#bd1efdbf1ebcfb9c27a238e2aa4c48159b0895bb" +"@angular/core@^5.0.0-beta.7": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-5.0.1.tgz#a4a74afc7e2058d30b8263eb6d66daace9f427ba" dependencies: tslib "^1.7.1" -"@angular/forms@4.3.5": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-4.3.5.tgz#519aad0ad82a1b87019937fa93fc147734737787" +"@angular/forms@^5.0.0-beta.7": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-5.0.1.tgz#69f303c4c13da3caa0de63437588388b6ad62b21" dependencies: tslib "^1.7.1" -"@angular/http@4.3.5": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@angular/http/-/http-4.3.5.tgz#81d4b0761c8ef035cb0b736300c237f36286f1f0" +"@angular/http@^5.0.0-beta.7": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@angular/http/-/http-5.0.1.tgz#350cbdf63cfac8939613d753ff071ed58a60561b" dependencies: tslib "^1.7.1" -"@angular/language-service@4.3.5": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-4.3.5.tgz#b6d882ea40d18d513fc3a035a79875029fe38f01" +"@angular/language-service@^5.0.0-beta.7": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-5.0.1.tgz#869e09dbd6e3d95c117c062d21dd1fd920ad44d6" -"@angular/platform-browser-dynamic@4.3.5": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.3.5.tgz#4a697b3b0aec805b33884fd4a9b3473065bab1e0" +"@angular/platform-browser-dynamic@^5.0.0-beta.7": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.0.1.tgz#16db67d52d4531563ab15429c6bdfe18bc1bedc8" dependencies: tslib "^1.7.1" -"@angular/platform-browser@4.3.5": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-4.3.5.tgz#c0d03409499cc29f81677aab623c9086760d84ef" +"@angular/platform-browser@^5.0.0-beta.7": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-5.0.1.tgz#14895dd30ed2a30ee7b99c76b764748f46c1a862" dependencies: tslib "^1.7.1" -"@angular/router@4.3.5": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-4.3.5.tgz#188082747bc9b6974f9d4b3f5557b434645d23cd" +"@angular/router@^5.0.0-beta.7": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-5.0.1.tgz#9ac08f29302ef60cdfd3c7810d96c265dec463d6" dependencies: tslib "^1.7.1" -"@angular/tsc-wrapped@4.3.5": - version "4.3.5" - resolved "https://registry.yarnpkg.com/@angular/tsc-wrapped/-/tsc-wrapped-4.3.5.tgz#95fdaa813cfc57262fc7ef5fea726d628aefabac" - dependencies: - tsickle "^0.21.0" - "@babel/code-frame@7.0.0-beta.31": version "7.0.0-beta.31" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.31.tgz#473d021ecc573a2cce1c07d5b509d5215f46ba35" @@ -204,10 +199,6 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" -"@hypnosphi/fuse.js@^3.0.9": - version "3.0.9" - resolved "https://registry.yarnpkg.com/@hypnosphi/fuse.js/-/fuse.js-3.0.9.tgz#ea99f6121b4a8f065b4c71f85595db2714498807" - "@ngtools/json-schema@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.1.0.tgz#c3a0c544d62392acc2813a42c8a0dc6f58f86922" @@ -220,9 +211,11 @@ magic-string "^0.22.3" source-map "^0.5.6" -"@storybook/channels@^3.2.17": - version "3.2.17" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-3.2.17.tgz#09219a512564d1aa2292419d8d6064dbf7f5a5b3" +"@remy/pstree@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@remy/pstree/-/pstree-1.1.0.tgz#414045d4fec60946604f3718023052aaf49bd8d3" + dependencies: + ps-tree "^1.1.0" "@storybook/mantra-core@^1.7.0": version "1.7.2" @@ -243,13 +236,11 @@ shallowequal "^0.2.2" "@storybook/react-simple-di@^1.2.1": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@storybook/react-simple-di/-/react-simple-di-1.3.0.tgz#13116d89a2f42898716a7f8c4095b47415526371" + version "1.2.1" + resolved "https://registry.yarnpkg.com/@storybook/react-simple-di/-/react-simple-di-1.2.1.tgz#fe4b29a32459e168da3aae8e6fcd8631861210c9" dependencies: babel-runtime "6.x.x" - create-react-class "^15.6.2" hoist-non-react-statics "1.x.x" - prop-types "^15.6.0" "@storybook/react-stubber@^1.0.0": version "1.0.1" @@ -265,27 +256,31 @@ version "2.5.54" resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.5.54.tgz#a6b5f2ae2afb6e0307774e8c7c608e037d491c63" -"@types/mz@0.0.31": - version "0.0.31" - resolved "https://registry.yarnpkg.com/@types/mz/-/mz-0.0.31.tgz#a4d80c082fefe71e40a7c0f07d1e6555bbbc7b52" +"@types/mz@0.0.32": + version "0.0.32" + resolved "https://registry.yarnpkg.com/@types/mz/-/mz-0.0.32.tgz#e8248b4e41424c052edc1725dd33650c313a3659" dependencies: "@types/node" "*" -"@types/node@*", "@types/node@^8.0.0": - version "8.0.58" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.58.tgz#5b3881c0be3a646874803fee3197ea7f1ed6df90" +"@types/node@*": + version "8.0.52" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.52.tgz#8e7f47747868e7687f2cd4922966e2d6af78d22d" "@types/node@^6.0.46", "@types/node@~6.0.60": - version "6.0.93" - resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.93.tgz#498b9461f4ec84a057c0aca80a54cce992805ff8" + version "6.0.92" + resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.92.tgz#e7f721ae282772e12ba2579968c00d9cce422c5d" + +"@types/node@^8.0.28": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.5.1.tgz#4ec3020bcdfe2abffeef9ba3fbf26fca097514b5" "@types/q@^0.0.32": version "0.0.32" resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" "@types/react@^16.0.18", "@types/react@^16.0.20": - version "16.0.28" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.0.28.tgz#eb0b31272528da8f20477ec27569c4f767315b33" + version "16.0.23" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.0.23.tgz#f0f713b07912c6fd8e10c9ccc539443ceb06dbca" "@types/selenium-webdriver@^2.53.35", "@types/selenium-webdriver@~2.53.39": version "2.53.43" @@ -389,8 +384,8 @@ agent-base@2: semver "~5.0.1" agent-base@4, agent-base@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.1.2.tgz#80fa6cde440f4dcf9af2617cf246099b5d99f0c8" + version "4.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.1.1.tgz#92d8a4fc2524a3b09b3666a33b6c97960f23d6a4" dependencies: es6-promisify "^5.0.0" @@ -400,7 +395,22 @@ agentkeepalive@^3.3.0: dependencies: humanize-ms "^1.2.1" -airbnb-js-shims@^1.1.1, airbnb-js-shims@^1.4.0: +airbnb-js-shims@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/airbnb-js-shims/-/airbnb-js-shims-1.3.0.tgz#aac46d80057fb0b414f70e06d07e362fd99ee2fa" + dependencies: + array-includes "^3.0.3" + es5-shim "^4.5.9" + es6-shim "^0.35.3" + function.prototype.name "^1.0.3" + object.entries "^1.0.4" + object.getownpropertydescriptors "^2.0.3" + object.values "^1.0.4" + promise.prototype.finally "^3.0.0" + string.prototype.padend "^3.0.0" + string.prototype.padstart "^3.0.0" + +airbnb-js-shims@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/airbnb-js-shims/-/airbnb-js-shims-1.4.0.tgz#b920b0bc9fafe8b8ae2a073f29fb10303b1b2b18" dependencies: @@ -433,8 +443,8 @@ ajv@^4.7.0, ajv@^4.9.1: json-stable-stringify "^1.0.1" ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5, ajv@^5.2.0, ajv@^5.2.3, ajv@^5.3.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.1.tgz#b38bb8876d9e86bee994956a04e721e88b248eb2" + version "5.3.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda" dependencies: co "^4.6.0" fast-deep-equal "^1.0.0" @@ -764,7 +774,7 @@ asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" -autoprefixer@7.1.6: +autoprefixer@7.1.6, autoprefixer@^7.1.1: version "7.1.6" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.1.6.tgz#fb933039f74af74a83e71225ce78d9fd58ba84d7" dependencies: @@ -786,12 +796,12 @@ autoprefixer@^6.3.1, autoprefixer@^6.5.3: postcss "^5.2.16" postcss-value-parser "^3.2.3" -autoprefixer@^7.1.1, autoprefixer@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.2.tgz#082293b964be00602efacc59aa4aa7df5158bb6e" +autoprefixer@^7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-7.2.3.tgz#c2841e38b7940c2d0a9bbffd72c75f33637854f8" dependencies: browserslist "^2.10.0" - caniuse-lite "^1.0.30000780" + caniuse-lite "^1.0.30000783" normalize-range "^0.1.2" num2fraction "^1.2.2" postcss "^6.0.14" @@ -1051,8 +1061,8 @@ babel-helper-to-multiple-sequence-expressions@^0.2.0: resolved "https://registry.yarnpkg.com/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.2.0.tgz#d1a419634c6cb301f27858c659167cfee0a9d318" babel-helper-vue-jsx-merge-props@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6" + version "2.0.2" + resolved "https://registry.yarnpkg.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.2.tgz#aceb1c373588279e2755ea1cfd35c22394fd33f8" babel-helpers@^6.24.1: version "6.24.1" @@ -2104,16 +2114,16 @@ better-assert@~1.0.0: callsite "1.0.0" big-integer@^1.6.7: - version "1.6.26" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.26.tgz#3af1672fa62daf2d5ecafacf6e5aa0d25e02c1c8" + version "1.6.25" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.25.tgz#1de45a9f57542ac20121c682f8d642220a34e823" big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" binary-extensions@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" + version "1.10.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" bl@^1.0.0: version "1.2.1" @@ -2227,8 +2237,8 @@ boxen@^0.6.0: widest-line "^1.0.0" boxen@^1.0.0, boxen@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + version "1.2.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.2.2.tgz#3f1d4032c30ffea9d4b02c322eaf2ea741dcbce5" dependencies: ansi-align "^2.0.0" camelcase "^4.0.0" @@ -2236,7 +2246,7 @@ boxen@^1.0.0, boxen@^1.2.1: cli-boxes "^1.0.0" string-width "^2.0.0" term-size "^1.2.0" - widest-line "^2.0.0" + widest-line "^1.0.0" bplist-creator@0.0.7: version "0.0.7" @@ -2331,11 +2341,11 @@ browserify-sign@^4.0.0: inherits "^2.0.1" parse-asn1 "^5.0.0" -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" +browserify-zlib@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" dependencies: - pako "~1.0.5" + pako "~0.2.0" browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: version "1.7.7" @@ -2344,7 +2354,14 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" -browserslist@^2.1.2, browserslist@^2.10.0, browserslist@^2.5.1: +browserslist@^2.1.2, browserslist@^2.5.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.9.0.tgz#706aca15c53be15610f466e348cbfa0c00a6a379" + dependencies: + caniuse-lite "^1.0.30000760" + electron-to-chromium "^1.3.27" + +browserslist@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.10.0.tgz#bac5ee1cc69ca9d96403ffb8a3abdc5b6aed6346" dependencies: @@ -2408,8 +2425,8 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" cacache@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.1.tgz#3e05f6e616117d9b54665b1b20c8aeb93ea5d36f" + version "10.0.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.0.tgz#3bba88bf62b0773fd9a691605f60c9d3c595e853" dependencies: bluebird "^3.5.0" chownr "^1.0.1" @@ -2523,12 +2540,20 @@ caniuse-api@^1.5.2: lodash.uniq "^4.5.0" caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000782" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000782.tgz#d8815bce1578c350aced1132507301205e0fab53" + version "1.0.30000764" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000764.tgz#d73ab11ae62f6a9e2f69867d6d9c23ae3f2e5d8d" + +caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000760: + version "1.0.30000764" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000764.tgz#97ea7472f9d3e691eede34f21983cfc219ac7842" + +caniuse-lite@^1.0.30000780: + version "1.0.30000780" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000780.tgz#1f9095f2efd4940e0ba6c5992ab7a9b64cc35ba4" -caniuse-lite@^1.0.30000748, caniuse-lite@^1.0.30000780: - version "1.0.30000782" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000782.tgz#5b82b8c385f25348745c471ca51320afb1b7f254" +caniuse-lite@^1.0.30000783: + version "1.0.30000783" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000783.tgz#9b5499fb1b503d2345d12aa6b8612852f4276ffd" capture-stack-trace@^1.0.0: version "1.0.0" @@ -2538,10 +2563,6 @@ case-sensitive-paths-webpack-plugin@2.1.1, case-sensitive-paths-webpack-plugin@^ version "2.1.1" resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz#3d29ced8c1f124bf6f53846fb3f5894731fdc909" -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -2641,7 +2662,7 @@ child-process-promise@^2.2.1: node-version "^1.0.0" promise-polyfill "^6.0.1" -chokidar@^1.4.1, chokidar@^1.5.1, chokidar@^1.6.0, chokidar@^1.6.1, chokidar@^1.7.0: +chokidar@^1.4.1, chokidar@^1.4.2, chokidar@^1.5.1, chokidar@^1.6.0, chokidar@^1.6.1, chokidar@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" dependencies: @@ -2661,8 +2682,8 @@ chownr@^1.0.1, chownr@~1.0.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" ci-info@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.2.tgz#03561259db48d0474c8bdc90f5b47b068b6bbfb4" + version "1.1.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.1.tgz#47b44df118c48d2597b56d342e7e25791060171a" cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -2819,15 +2840,15 @@ codelyzer@^3.1.2: sprintf-js "^1.0.3" codemirror-graphql@^0.6.11: - version "0.6.12" - resolved "https://registry.yarnpkg.com/codemirror-graphql/-/codemirror-graphql-0.6.12.tgz#91a273fe5188857524a30221d06e645b4ca41f00" + version "0.6.11" + resolved "https://registry.yarnpkg.com/codemirror-graphql/-/codemirror-graphql-0.6.11.tgz#795efa3933523815a5245eefe8d6831d3c4ad026" dependencies: - graphql-language-service-interface "^1.0.16" - graphql-language-service-parser "^0.1.14" + graphql-language-service-interface "0.0.19" + graphql-language-service-parser "0.0.15" codemirror@^5.26.0: - version "5.32.0" - resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.32.0.tgz#cb6ff5d8ef36d0b10f031130e2d9ebeee92c902e" + version "5.31.0" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.31.0.tgz#ecf3d057eb74174147066bfc7c5f37b4c4e07df2" collapse-white-space@^1.0.2: version "1.0.3" @@ -2896,15 +2917,21 @@ command-join@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/command-join/-/command-join-2.0.0.tgz#52e8b984f4872d952ff1bdc8b98397d27c7144cf" -commander@2.11.0: +commander@2.11.0, commander@2.11.x, commander@^2.11.0, commander@^2.9.0, commander@~2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" -commander@2.12.x, commander@^2.11.0, commander@^2.12.2, commander@^2.9.0, commander@~2.12.1: +commander@^2.12.2: version "2.12.2" resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" -common-tags@^1.3.1, common-tags@^1.4.0, common-tags@^1.5.1: +common-tags@^1.3.1, common-tags@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0" + dependencies: + babel-runtime "^6.18.0" + +common-tags@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.5.1.tgz#e2e39931a013cd02253defeed89a1ad615a27f07" dependencies: @@ -3105,8 +3132,8 @@ content-type@~1.0.1, content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" conventional-changelog-angular@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.5.3.tgz#ff0dd01d740e35bfdbc3f02dfea13cf0d96f0b82" + version "1.5.2" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.5.2.tgz#2b38f665fe9c5920af1a2f82f547f4babe6de57c" dependencies: compare-func "^1.3.1" q "^1.4.1" @@ -3134,11 +3161,11 @@ conventional-changelog-codemirror@^0.2.1: q "^1.4.1" conventional-changelog-core@^1.9.3: - version "1.9.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-1.9.4.tgz#a541e5354f91072f8583b19e34abb9f6e461c367" + version "1.9.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-1.9.3.tgz#2899fe779389a329f0ec4b2746c36ddefb98da2d" dependencies: - conventional-changelog-writer "^2.0.3" - conventional-commits-parser "^2.1.0" + conventional-changelog-writer "^2.0.2" + conventional-commits-parser "^2.0.1" dateformat "^1.0.12" get-pkg-repo "^1.0.0" git-raw-commits "^1.3.0" @@ -3152,8 +3179,8 @@ conventional-changelog-core@^1.9.3: through2 "^2.0.0" conventional-changelog-ember@^0.2.9: - version "0.2.10" - resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.2.10.tgz#dcd6e4cdc2e6c2b58653cf4d2cb1656a60421929" + version "0.2.9" + resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.2.9.tgz#8ec73cc054e3ab064667fb1feb52fe8ef1b16438" dependencies: q "^1.4.1" @@ -3188,12 +3215,12 @@ conventional-changelog-jshint@^0.2.1: compare-func "^1.3.1" q "^1.4.1" -conventional-changelog-writer@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-2.0.3.tgz#073b0c39f1cc8fc0fd9b1566e93833f51489c81c" +conventional-changelog-writer@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-2.0.2.tgz#b5857ded1b001daf9a78b9cd40926f45c134949b" dependencies: compare-func "^1.3.1" - conventional-commits-filter "^1.1.1" + conventional-commits-filter "^1.1.0" dateformat "^1.0.11" handlebars "^4.0.2" json-stringify-safe "^5.0.1" @@ -3218,16 +3245,16 @@ conventional-changelog@^1.1.7: conventional-changelog-jscs "^0.1.0" conventional-changelog-jshint "^0.2.1" -conventional-commits-filter@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.1.1.tgz#72172319c0c88328a015b30686b55527b3a5e54a" +conventional-commits-filter@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.1.0.tgz#1fc29af30b5edab76f54e229c411b0c663d0f9eb" dependencies: is-subset "^0.1.1" modify-values "^1.0.0" -conventional-commits-parser@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.1.0.tgz#9b4b7c91124bf2a1a9a2cc1c72760d382cbbb229" +conventional-commits-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.0.1.tgz#1f15ce6b844f7ca41495c8190c0833c30b8b1693" dependencies: JSONStream "^1.0.4" is-text-path "^1.0.0" @@ -3238,20 +3265,20 @@ conventional-commits-parser@^2.1.0: trim-off-newlines "^1.0.0" conventional-recommended-bump@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-1.1.0.tgz#964d4fcc70fb5259d41fa9b39d3df6afdb87d253" + version "1.0.3" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-1.0.3.tgz#472b69b1b8f09c5c4ed40fe28a41e63cc04bd736" dependencies: concat-stream "^1.4.10" - conventional-commits-filter "^1.1.1" - conventional-commits-parser "^2.1.0" + conventional-commits-filter "^1.1.0" + conventional-commits-parser "^2.0.1" git-raw-commits "^1.3.0" git-semver-tags "^1.2.3" meow "^3.3.0" object-assign "^4.0.1" convert-source-map@^1.3.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" cookie-parser@~1.3.5: version "1.3.5" @@ -3295,7 +3322,11 @@ core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" -core-js@^2.2.0, core-js@^2.2.2, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0, core-js@^2.5.2: +core-js@^2.2.0, core-js@^2.2.2, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" + +core-js@^2.5.3: version "2.5.3" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" @@ -3367,7 +3398,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-class@^15.5.2, create-react-class@^15.6.2: +create-react-class@^15.5.2: version "15.6.2" resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.2.tgz#cf1ed15f12aad7f14ef5f2dfe05e6c42f91ef02a" dependencies: @@ -3382,13 +3413,6 @@ cross-env@^5.1.1: cross-spawn "^5.1.0" is-windows "^1.0.0" -cross-fetch@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-0.0.8.tgz#01ed94dc407df2c00f1807fde700a7cfa48a205c" - dependencies: - node-fetch "1.7.3" - whatwg-fetch "2.0.3" - cross-spawn@5.1.0, cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -3602,36 +3626,36 @@ damerau-levenshtein@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" -danger@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/danger/-/danger-2.1.3.tgz#eaf6893f6aa568c30153ba780113288a8b933d81" +danger@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/danger/-/danger-2.1.6.tgz#ea4b3024cbef422286dc6bdb4d23da132d8ebbe5" dependencies: babel-polyfill "7.0.0-alpha.19" - chalk "^2.0.0" - commander "^2.9.0" - debug "^3.0.0" + chalk "^2.3.0" + commander "^2.12.2" + debug "^3.1.0" get-stdin "^5.0.1" - github "^11" + github "^13.0.1" hyperlinker "^1.0.0" jsome "^2.3.25" jsonpointer "^4.0.1" lodash.find "^4.6.0" lodash.includes "^4.3.0" - lodash.isobject "^2.4.1" + lodash.isobject "^3.0.2" lodash.keys "^4.0.8" node-cleanup "^2.1.2" - node-fetch "^1.6.3" + node-fetch "^1.7.3" parse-diff "^0.4.0" parse-git-config "^1.1.1" - parse-github-url "^1.0.1" + parse-github-url "^1.0.2" parse-link-header "^1.0.1" pinpoint "^1.1.0" readline-sync "^1.4.7" require-from-string "^2.0.1" - rfc6902 "^2.0.0" + rfc6902 "^2.2.2" supports-hyperlinks "^1.0.1" vm2 patriksimek/vm2#custom_files - voca "^1.2.0" + voca "^1.3.1" dargs@^4.0.1: version "4.1.0" @@ -3674,7 +3698,7 @@ debug@*, debug@^3.0.0, debug@^3.0.1, debug@^3.1.0: dependencies: ms "2.0.0" -debug@2, debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8: +debug@2, debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.4.1, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -3810,8 +3834,8 @@ detect-indent@^5.0.0, detect-indent@~5.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + version "1.0.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.2.tgz#71ad5d204bf17a6a6ca8f450c61454066ef461e1" detect-node@^2.0.3: version "2.0.3" @@ -3883,7 +3907,14 @@ doctrine@1.5.0: esutils "^2.0.2" isarray "^1.0.0" -doctrine@^2.0.0, doctrine@^2.0.2: +doctrine@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.2.tgz#68f96ce8efc56cc42651f1faadb4f175273b0075" dependencies: @@ -4040,7 +4071,11 @@ ee-first@1.1.1: version "1.1.1" 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.28: +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.27: + version "1.3.27" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d" + +electron-to-chromium@^1.3.28: version "1.3.28" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.28.tgz#8dd4e6458086644e9f9f0a1cf32e2a1f9dffd9ee" @@ -4070,10 +4105,6 @@ ember-cli-string-utils@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ember-cli-string-utils/-/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1" -"emoji-regex@>=6.0.0 <=6.1.1": - version "6.1.1" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e" - emoji-regex@^6.1.0: version "6.5.1" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" @@ -4163,8 +4194,8 @@ entities@^1.1.1, entities@~1.1.1: resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" envinfo@^3.0.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-3.10.0.tgz#24b52a5c19af379dc32465d1909e37344dc41c20" + version "3.9.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-3.9.1.tgz#78d5ccbea17ca2daefd8541561d1273813b96c4c" dependencies: copy-paste "^1.3.0" glob "^7.1.2" @@ -4184,8 +4215,8 @@ enzyme-adapter-react-16@^1.1.0: react-test-renderer "^16.0.0-0" enzyme-adapter-utils@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.2.0.tgz#7f4471ee0a70b91169ec8860d2bf0a6b551664b2" + version "1.1.1" + resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.1.1.tgz#689de8853f0751710590d6dfa730ff4056ea36b2" dependencies: lodash "^4.17.4" object.assign "^4.0.4" @@ -4224,10 +4255,10 @@ err-code@^1.0.0: resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" "errno@>=0.1.1 <0.2.0-0", errno@^0.1.1, errno@^0.1.3, errno@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.5.tgz#a563781a6052bc2c9ccd89e8cef0eb9506e0c321" + version "0.1.4" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" dependencies: - prr "~1.0.1" + prr "~0.0.0" error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.1" @@ -4242,7 +4273,7 @@ errorhandler@~1.4.2: accepts "~1.3.0" escape-html "~1.0.3" -es-abstract@^1.10.0, es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0, es-abstract@^1.9.0: +es-abstract@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864" dependencies: @@ -4252,6 +4283,16 @@ es-abstract@^1.10.0, es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.6.1, is-callable "^1.1.3" is-regex "^1.0.4" +es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0, es-abstract@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.9.0.tgz#690829a07cae36b222e7fd9b75c0d0573eb25227" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + es-to-primitive@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" @@ -4261,8 +4302,8 @@ es-to-primitive@^1.1.1: is-symbol "^1.0.1" es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.37" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.37.tgz#0ee741d148b80069ba27d020393756af257defc3" + version "0.10.35" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.35.tgz#18ee858ce6a3c45c7d79e91c15fcca9ec568494f" dependencies: es6-iterator "~2.0.1" es6-symbol "~3.1.1" @@ -4440,9 +4481,9 @@ eslint-plugin-import@2.8.0, eslint-plugin-import@^2.8.0: minimatch "^3.0.3" read-pkg-up "^2.0.0" -eslint-plugin-jest@^21.4.2: - version "21.4.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-21.4.2.tgz#0e8ec03687259169cef46656827a0a0715e8a8d4" +eslint-plugin-jest@^21.5.0: + version "21.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-21.5.0.tgz#c7a3bd2ee9d1c832b4e31dec89f6ad93e08d4853" eslint-plugin-json@^1.2.0: version "1.2.0" @@ -4462,9 +4503,9 @@ eslint-plugin-jsx-a11y@5.1.1: emoji-regex "^6.1.0" jsx-ast-utils "^1.4.0" -eslint-plugin-jsx-a11y@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.0.2.tgz#659277a758b036c305a7e4a13057c301cd3be73f" +eslint-plugin-jsx-a11y@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.0.3.tgz#54583d1ae442483162e040e13cc31865465100e5" dependencies: aria-query "^0.7.0" array-includes "^3.0.3" @@ -4472,11 +4513,11 @@ eslint-plugin-jsx-a11y@^6.0.2: axobject-query "^0.1.0" damerau-levenshtein "^1.0.0" emoji-regex "^6.1.0" - jsx-ast-utils "^1.4.0" + jsx-ast-utils "^2.0.0" -eslint-plugin-prettier@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.3.1.tgz#e7a746c67e716f335274b88295a9ead9f544e44d" +eslint-plugin-prettier@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.4.0.tgz#85cab0775c6d5e3344ef01e78d960f166fb93aae" dependencies: fast-diff "^1.1.1" jest-docblock "^21.0.0" @@ -4592,9 +4633,9 @@ eslint@^3.16.1: text-table "~0.2.0" user-home "^2.0.0" -eslint@^4.13.0: - version "4.13.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.13.0.tgz#1991aa359586af83877bde59de9d41f53e20826d" +eslint@^4.13.1: + version "4.13.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.13.1.tgz#0055e0014464c7eb7878caf549ef2941992b444f" dependencies: ajv "^5.3.0" babel-code-frame "^6.22.0" @@ -4886,7 +4927,15 @@ extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" -external-editor@^2.0.4, external-editor@^2.1.0: +external-editor@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc" + dependencies: + iconv-lite "^0.4.17" + jschardet "^1.4.2" + tmp "^0.0.33" + +external-editor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.1.0.tgz#3d026a21b7f95b5726387d4200ac160d372c3b48" dependencies: @@ -4927,14 +4976,10 @@ extract-zip@^1.6.5: mkdirp "0.5.0" yauzl "2.4.1" -extsprintf@1.3.0: +extsprintf@1.3.0, extsprintf@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - fancy-log@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948" @@ -5047,7 +5092,7 @@ file-entry-cache@^2.0.0: flat-cache "^1.2.1" object-assign "^4.0.1" -file-loader@1.1.5, file-loader@^1.1.5: +file-loader@1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.5.tgz#91c25b6b6fbe56dae99f10a425fd64933b5c9daa" dependencies: @@ -5066,6 +5111,13 @@ file-loader@^0.11.1: dependencies: loader-utils "^1.0.2" +file-loader@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.6.tgz#7b9a8f2c58f00a77fddf49e940f7ac978a3ea0e8" + dependencies: + loader-utils "^1.0.2" + schema-utils "^0.3.0" + filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" @@ -5175,8 +5227,8 @@ flatten@^1.0.2: resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" flow-parser@^0.*: - version "0.61.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.61.0.tgz#57d1d33bbc8fb1b9341984464ac032e054ee1084" + version "0.59.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.59.0.tgz#f6ebcae61ffa187e420999d40ce0a801f39b2635" flush-write-stream@^1.0.0: version "1.0.2" @@ -5323,9 +5375,9 @@ fs-extra@^1.0.0: jsonfile "^2.1.0" klaw "^1.0.0" -fs-extra@^4.0.0, fs-extra@^4.0.1, fs-extra@^4.0.2, fs-extra@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" +fs-extra@^4.0.0, fs-extra@^4.0.1, fs-extra@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.2.tgz#f91704c53d1b461f893452b0c307d9997647ab6b" dependencies: graceful-fs "^4.1.2" jsonfile "^4.0.0" @@ -5410,7 +5462,7 @@ functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" -fuse.js@^3.0.1: +fuse.js@^3.0.1, fuse.js@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.2.0.tgz#f0448e8069855bf2a3e683cdc1d320e7e2a07ef4" @@ -5554,13 +5606,7 @@ github-release-from-changelog@^1.3.0: grizzly "^2.0.0" minimist "^1.2.0" -github-slugger@^1.0.0, github-slugger@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.2.0.tgz#8ada3286fd046d8951c3c952a8d7854cfd90fd9a" - dependencies: - emoji-regex ">=6.0.0 <=6.1.1" - -github@^11, github@^11.0.0: +github@^11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/github/-/github-11.0.0.tgz#edb32df5efb33cad004ebf0bdd2a4b30bb63a854" dependencies: @@ -5569,6 +5615,17 @@ github@^11, github@^11.0.0: mime "^1.2.11" netrc "^0.1.4" +github@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/github/-/github-13.0.1.tgz#4ccf4a41df662f92367e77a474674eabb1b6c78d" + dependencies: + debug "^3.1.0" + dotenv "^4.0.0" + https-proxy-agent "^2.1.0" + lodash "^4.17.4" + proxy-from-env "^1.0.0" + url-template "^2.0.8" + glamor@^2.20.40: version "2.20.40" resolved "https://registry.yarnpkg.com/glamor/-/glamor-2.20.40.tgz#f606660357b7cf18dface731ad1a2cfa93817f05" @@ -5622,16 +5679,6 @@ glob@7.0.x: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1, glob@~7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -5644,8 +5691,8 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, gl path-is-absolute "^1.0.0" global-dirs@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + version "0.1.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.0.tgz#10d34039e0df04272e262cf24224f7209434df4f" dependencies: ini "^1.3.4" @@ -5675,12 +5722,12 @@ global@^4.3.0, global@^4.3.2: process "~0.5.1" globals@^10.0.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-10.4.0.tgz#5c477388b128a9e4c5c5d01c7a2aca68c68b2da7" + version "10.3.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-10.3.0.tgz#716aba93657b56630b5a0e77de5ea8ac6215afaa" globals@^11.0.1: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.1.0.tgz#632644457f5f0e3ae711807183700ebf2e4633e4" + version "11.0.1" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.0.1.tgz#12a87bb010e5154396acc535e1e43fc753b0e5e8" globals@^9.14.0, globals@^9.17.0, globals@^9.18.0: version "9.18.0" @@ -5769,51 +5816,50 @@ graphiql@^0.11.10: codemirror-graphql "^0.6.11" marked "0.3.6" -graphql-config@1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-1.0.8.tgz#6dd1cd76ff6fbb01662704f8bddc403f6b0c24d9" +graphql-language-service-config@0.0.17: + version "0.0.17" + resolved "https://registry.yarnpkg.com/graphql-language-service-config/-/graphql-language-service-config-0.0.17.tgz#36b5a9906c0bf0d356d31b7583058f9b85d1793e" dependencies: - graphql "^0.11.7" - graphql-request "^1.4.0" - js-yaml "^3.10.0" - minimatch "^3.0.4" - rimraf "^2.6.2" + graphql-language-service-types "0.0.21" -graphql-language-service-interface@^1.0.16: - version "1.0.16" - resolved "https://registry.yarnpkg.com/graphql-language-service-interface/-/graphql-language-service-interface-1.0.16.tgz#0e6dd855bf0bdee84e7456b2128a2e5f56e4f47b" +graphql-language-service-interface@0.0.19: + version "0.0.19" + resolved "https://registry.yarnpkg.com/graphql-language-service-interface/-/graphql-language-service-interface-0.0.19.tgz#c58fa7bd95d2f30e33e04937a1a2c00a9740926e" dependencies: - graphql-config "1.0.8" - graphql-language-service-parser "^0.1.14" - graphql-language-service-types "^0.1.14" - graphql-language-service-utils "^1.0.16" + graphql "^0.10.1" + graphql-language-service-config "0.0.17" + graphql-language-service-parser "0.0.15" + graphql-language-service-types "0.0.21" + graphql-language-service-utils "0.0.17" -graphql-language-service-parser@^0.1.14: - version "0.1.14" - resolved "https://registry.yarnpkg.com/graphql-language-service-parser/-/graphql-language-service-parser-0.1.14.tgz#dd25abda5dcff4f2268c9a19e026004271491661" +graphql-language-service-parser@0.0.15: + version "0.0.15" + resolved "https://registry.yarnpkg.com/graphql-language-service-parser/-/graphql-language-service-parser-0.0.15.tgz#fd64afd8873624fa3c4a5831a08de9ccd6cc5182" dependencies: - graphql-language-service-types "^0.1.14" + graphql-language-service-types "0.0.21" -graphql-language-service-types@^0.1.14: - version "0.1.14" - resolved "https://registry.yarnpkg.com/graphql-language-service-types/-/graphql-language-service-types-0.1.14.tgz#e6112785fc23ea8222f59a7f00e61b359f263c88" +graphql-language-service-types@0.0.21: + version "0.0.21" + resolved "https://registry.yarnpkg.com/graphql-language-service-types/-/graphql-language-service-types-0.0.21.tgz#b9453366fc8985765034bf34056fe93603a24b82" + dependencies: + graphql "^0.10.1" -graphql-language-service-utils@^1.0.16: - version "1.0.16" - resolved "https://registry.yarnpkg.com/graphql-language-service-utils/-/graphql-language-service-utils-1.0.16.tgz#eb4e4495aeef0c4b6ffd8c681858558862c65e9e" +graphql-language-service-utils@0.0.17: + version "0.0.17" + resolved "https://registry.yarnpkg.com/graphql-language-service-utils/-/graphql-language-service-utils-0.0.17.tgz#a8b91eca80c6aa5a0d461a0bbb63317986f9b989" dependencies: - graphql-config "1.0.8" - graphql-language-service-types "^0.1.14" + graphql "^0.10.1" + graphql-language-service-types "0.0.21" -graphql-request@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-1.4.0.tgz#f5b067c83070296d93fb45760e83dfad0d9f537a" +graphql@^0.10.1: + version "0.10.5" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.10.5.tgz#c9be17ca2bdfdbd134077ffd9bbaa48b8becd298" dependencies: - cross-fetch "0.0.8" + iterall "^1.1.0" -graphql@^0.11.7: - version "0.11.7" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.11.7.tgz#e5abaa9cb7b7cccb84e9f0836bf4370d268750c6" +graphql@^0.12.3: + version "0.12.3" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.12.3.tgz#11668458bbe28261c0dcb6e265f515ba79f6ce07" dependencies: iterall "1.1.3" @@ -5898,15 +5944,6 @@ har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" -har-validator@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" - dependencies: - chalk "^1.1.1" - commander "^2.9.0" - is-my-json-valid "^2.12.4" - pinkie-promise "^2.0.0" - har-validator@~4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" @@ -6099,17 +6136,17 @@ html-loader@^0.5.1: object-assign "^4.1.0" html-minifier@^3.0.1, html-minifier@^3.2.3: - version "3.5.7" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.7.tgz#511e69bb5a8e7677d1012ebe03819aa02ca06208" + version "3.5.6" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.6.tgz#7e4e661a09999599c7d8e8a2b8d7fb7430bb5c3e" dependencies: camel-case "3.0.x" clean-css "4.1.x" - commander "2.12.x" + commander "2.11.x" he "1.1.x" ncname "1.0.x" param-case "2.1.x" relateurl "0.2.x" - uglify-js "3.2.x" + uglify-js "3.1.x" html-tag-names@^1.1.1: version "1.1.2" @@ -6172,8 +6209,8 @@ htmlparser2@~3.3.0: readable-stream "1.0" http-cache-semantics@^3.8.0: - version "3.8.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + version "3.8.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.0.tgz#1e3ce248730e189ac692a6697b9e3fdea2ff8da3" http-deceiver@^1.2.7: version "1.2.7" @@ -6238,9 +6275,9 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" +https-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" https-proxy-agent@^1.0.0: version "1.0.0" @@ -6251,11 +6288,11 @@ https-proxy-agent@^1.0.0: extend "3" https-proxy-agent@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.1.1.tgz#a7ce4382a1ba8266ee848578778122d491260fd9" + version "2.1.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.1.0.tgz#1391bee7fd66aeabc0df2a1fa90f58954f43e443" dependencies: agent-base "^4.1.0" - debug "^3.1.0" + debug "^2.4.1" humanize-ms@^1.2.1: version "1.2.1" @@ -6392,8 +6429,8 @@ inherits@2.0.1: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" ini@^1.3.2, ini@^1.3.4, ini@~1.3.0, ini@~1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" init-package-json@~1.10.1: version "1.10.1" @@ -6507,8 +6544,8 @@ internal-ip@1.2.0, internal-ip@^1.2.0: meow "^3.3.0" interpret@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + version "1.0.4" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" invariant@^2.2.0, invariant@^2.2.2: version "2.2.2" @@ -6676,7 +6713,7 @@ is-installed-globally@^0.1.0: global-dirs "^0.1.0" is-path-inside "^1.0.0" -is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: +is-my-json-valid@^2.10.0: version "2.16.1" resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11" dependencies: @@ -6730,8 +6767,8 @@ is-path-in-cwd@^1.0.0: is-path-inside "^1.0.0" is-path-inside@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" dependencies: path-is-inside "^1.0.1" @@ -6946,7 +6983,7 @@ istanbul-reports@^1.1.3: dependencies: handlebars "^4.0.3" -iterall@1.1.3: +iterall@1.1.3, iterall@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.1.3.tgz#1cbbff96204056dde6656e2ed2e2226d0e6d72c9" @@ -7436,14 +7473,14 @@ jest@^21.2.0, jest@^21.2.1: jest-cli "^21.2.1" js-base64@^2.1.5, js-base64@^2.1.8, js-base64@^2.1.9: - version "2.4.0" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.0.tgz#9e566fee624751a1d720c966cd6226d29d4025aa" + version "2.3.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.3.2.tgz#a79a923666372b580f8e27f51845c6f7e8fbfbaf" js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.10.0, js-yaml@^3.4.3, js-yaml@^3.5.1, js-yaml@^3.6.1, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: +js-yaml@^3.4.3, js-yaml@^3.5.1, js-yaml@^3.6.1, js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.10.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" dependencies: @@ -7461,6 +7498,10 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" +jschardet@^1.4.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.6.0.tgz#c7d1a71edcff2839db2f9ec30fc5d5ebd3c1a678" + jscodeshift@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.4.0.tgz#a76afdbfc6f4e78c3fd0d1a60470dfa43c03190e" @@ -7652,8 +7693,8 @@ karma-jasmine-html-reporter@^0.2.2: karma-jasmine "^1.0.2" karma-jasmine@^1.0.2, karma-jasmine@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.1.tgz#6fe840e75a11600c9d91e84b33c458e1c46a3529" + version "1.1.0" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf" karma-source-map-support@^1.2.0: version "1.2.0" @@ -7760,8 +7801,8 @@ lcid@^1.0.0: invert-kv "^1.0.0" left-pad@^1.1.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.2.0.tgz#d30a73c6b8201d8f7d8e7956ba9616087a68e0ee" + version "1.1.3" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.1.3.tgz#612f61c033f3a9e08e939f1caebeea41b6f3199a" lerna@^2.5.1: version "2.5.1" @@ -8075,10 +8116,6 @@ lodash._isiterateecall@^3.0.0: version "3.0.9" resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" -lodash._objecttypes@~2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz#7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11" - lodash._reescape@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" @@ -8167,11 +8204,9 @@ lodash.isequal@^3.0: lodash._baseisequal "^3.0.0" lodash._bindcallback "^3.0.0" -lodash.isobject@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-2.4.1.tgz#5a2e47fe69953f1ee631a7eba1fe64d2d06558f5" - dependencies: - lodash._objecttypes "~2.4.1" +lodash.isobject@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" lodash.isplainobject@^4.0.6: version "4.0.6" @@ -8381,7 +8416,7 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" -make-error@^1.1.1: +make-error@^1.1.1, make-error@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.0.tgz#52ad3a339ccf10ce62b4040b708fe707244b8b96" @@ -8438,17 +8473,13 @@ markdown-table@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.1.tgz#4b3dd3a133d1518b8ef0dbc709bf2a1b4824bc8c" -marked@0.3.6: +marked@0.3.6, marked@^0.3.6: version "0.3.6" resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7" -marked@^0.3.6: - version "0.3.7" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.7.tgz#80ef3bbf1bd00d1c9cfebe42ba1b8c85da258d0d" - -marksy@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/marksy/-/marksy-2.0.1.tgz#019eb9c13ff37120ce4dddeb7774aba152b5d7e0" +marksy@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/marksy/-/marksy-6.0.1.tgz#ea05f170a5f8a3f935b2ef51a9b7847c947b7402" dependencies: babel-standalone "^6.24.0" he "^1.1.1" @@ -8490,18 +8521,10 @@ mdast-util-heading-style@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/mdast-util-heading-style/-/mdast-util-heading-style-1.0.3.tgz#efb390dbc8aa016c3cf577a034900db27ee7247c" -mdast-util-to-string@^1.0.0, mdast-util-to-string@^1.0.2: +mdast-util-to-string@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.0.4.tgz#5c455c878c9355f0c1e7f3e8b719cf583691acfb" -mdast-util-toc@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-toc/-/mdast-util-toc-2.0.1.tgz#b1d2cb23bfb01f812fa7b55bffe8b0a8bedf6f21" - dependencies: - github-slugger "^1.1.1" - mdast-util-to-string "^1.0.2" - unist-util-visit "^1.1.0" - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -8637,8 +8660,8 @@ miller-rabin@^4.0.0: brorand "^1.0.1" "mime-db@>= 1.30.0 < 2": - version "1.32.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.32.0.tgz#485b3848b01a3cda5f968b4882c0771e58e09414" + version "1.31.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.31.0.tgz#a49cd8f3ebf3ed1a482b60561d9105ad40ca74cb" mime-db@~1.23.0: version "1.23.0" @@ -8668,11 +8691,11 @@ mime@1.3.x: version "1.3.6" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" -mime@1.4.1: +mime@1.4.1, mime@^1.2.11, mime@^1.3.4, mime@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" -mime@^1.2.11, mime@^1.3.4, mime@^1.4.1, mime@^1.5.0: +mime@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -8694,18 +8717,18 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - minimatch@3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" dependencies: brace-expansion "^1.0.0" +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -8770,9 +8793,13 @@ modify-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.0.tgz#e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2" -moment@^2.19.3, moment@^2.6.0: - version "2.19.4" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.4.tgz#17e5e2c6ead8819c8ecfad83a0acccb312e94682" +moment@^2.20.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.20.0.tgz#53396358994dd3a551e966a66af715ecb6c30ad0" + +moment@^2.6.0: + version "2.19.2" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.2.tgz#8a7f774c95a64550b4c7ebd496683908f9419dbe" morgan@~1.6.1: version "1.6.1" @@ -8803,21 +8830,17 @@ ms@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" -ms@2.0.0: +ms@2.0.0, ms@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" -ms@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - multicast-dns-service-types@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" multicast-dns@^6.0.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.1.tgz#c5035defa9219d30640558a49298067352098060" + version "6.1.1" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.1.1.tgz#6e7de86a570872ab17058adea7160bbeca814dde" dependencies: dns-packet "^1.0.1" thunky "^0.1.0" @@ -8881,6 +8904,10 @@ negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" +nested-object-assign@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nested-object-assign/-/nested-object-assign-1.0.1.tgz#72d4996d77acbbfda92421f48e1d14eba0962159" + netrc@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/netrc/-/netrc-0.1.4.tgz#6be94fcaca8d77ade0a9670dc460914c94472444" @@ -8913,7 +8940,7 @@ node-fetch-npm@^2.0.2: json-parse-better-errors "^1.0.0" safe-buffer "^5.1.1" -node-fetch@1.7.3, node-fetch@^1.0.1, node-fetch@^1.3.3, node-fetch@^1.6.3: +node-fetch@^1.0.1, node-fetch@^1.3.3, node-fetch@^1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" dependencies: @@ -8951,28 +8978,28 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" node-libs-browser@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" + version "2.0.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" dependencies: assert "^1.1.1" - browserify-zlib "^0.2.0" + browserify-zlib "^0.1.4" buffer "^4.3.0" console-browserify "^1.1.0" constants-browserify "^1.0.0" crypto-browserify "^3.11.0" domain-browser "^1.1.1" events "^1.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" + https-browserify "0.0.1" + os-browserify "^0.2.0" path-browserify "0.0.0" - process "^0.11.10" + process "^0.11.0" punycode "^1.2.4" querystring-es3 "^0.2.0" - readable-stream "^2.3.3" + readable-stream "^2.0.5" stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" + stream-http "^2.3.1" + string_decoder "^0.10.25" + timers-browserify "^2.0.2" tty-browserify "0.0.0" url "^0.11.0" util "^0.10.3" @@ -9008,8 +9035,8 @@ node-pre-gyp@^0.6.36, node-pre-gyp@^0.6.39: tar-pack "^3.4.0" node-sass@^4.3.0: - version "4.7.2" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.7.2.tgz#9366778ba1469eb01438a9e8592f4262bcb6794e" + version "4.6.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.6.1.tgz#9b331cf943ee5440f199e858941a90d13bc9bfc5" dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -9026,10 +9053,9 @@ node-sass@^4.3.0: nan "^2.3.2" node-gyp "^3.3.1" npmlog "^4.0.0" - request "~2.79.0" + request "^2.79.0" sass-graph "^2.2.4" stdout-stream "^1.4.0" - "true-case-path" "^1.0.2" node-status-codes@^1.0.0: version "1.0.0" @@ -9039,9 +9065,9 @@ node-version@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.1.0.tgz#f437d7ba407e65e2c4eaef8887b1718ba523d4f0" -nodemon@^1.12.0, nodemon@^1.12.5: - version "1.12.5" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.12.5.tgz#bd34afa1aa855f1996b561147848519f136de620" +nodemon@^1.12.0: + version "1.12.1" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.12.1.tgz#996a56dc49d9f16bbf1b78a4de08f13634b3878d" dependencies: chokidar "^1.7.0" debug "^2.6.8" @@ -9052,6 +9078,21 @@ nodemon@^1.12.0, nodemon@^1.12.5: ps-tree "^1.1.0" touch "^3.1.0" undefsafe "0.0.3" + update-notifier "^2.2.0" + +nodemon@^1.13.3: + version "1.13.3" + resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.13.3.tgz#92d23e6b91dca351215a4b8a50d2bd838cd0f9e3" + dependencies: + "@remy/pstree" "^1.1.0" + chokidar "^1.7.0" + debug "^2.6.8" + es6-promise "^3.3.1" + ignore-by-default "^1.0.1" + lodash.defaults "^3.1.2" + minimatch "^3.0.4" + touch "^3.1.0" + undefsafe "0.0.3" update-notifier "^2.3.0" nomnom@^1.8.1: @@ -9503,9 +9544,9 @@ original@>=0.0.5: dependencies: url-parse "1.0.x" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" +os-browserify@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" @@ -9617,9 +9658,9 @@ pacote@~2.7.38: unique-filename "^1.1.0" which "^1.2.12" -pako@~1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" parallel-transform@^1.1.0: version "1.1.0" @@ -9673,7 +9714,7 @@ parse-github-repo-url@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" -parse-github-url@^1.0.1: +parse-github-url@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" @@ -10034,7 +10075,7 @@ postcss-load-plugins@^2.3.0: cosmiconfig "^2.1.1" object-assign "^4.1.0" -postcss-loader@2.0.8: +postcss-loader@2.0.8, postcss-loader@^2.0.5: version "2.0.8" resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.8.tgz#8c67ddb029407dfafe684a406cfc16bad2ce0814" dependencies: @@ -10052,7 +10093,7 @@ postcss-loader@^1.3.3: postcss "^5.2.15" postcss-load-config "^1.2.0" -postcss-loader@^2.0.5, postcss-loader@^2.0.9: +postcss-loader@^2.0.9: version "2.0.9" resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-2.0.9.tgz#001fdf7bfeeb159405ee61d1bb8e59b528dbd309" dependencies: @@ -10270,9 +10311,13 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -prettier@^1.7.0, prettier@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.9.1.tgz#41638a0d47c1efbd1b7d5a742aaa5548eab86d70" +prettier@^1.7.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.8.2.tgz#bff83e7fd573933c607875e5ba3abbdffb96aeb8" + +prettier@^1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.9.2.tgz#96bc2132f7a32338e6078aeb29727178c6335827" pretty-bytes@^4.0.2: version "4.0.2" @@ -10307,11 +10352,11 @@ private@^0.1.6, private@^0.1.7, private@~0.1.5: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" -process-nextick-args@^1.0.7, process-nextick-args@~1.0.6: +process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" -process@^0.11.1, process@^0.11.10: +process@^0.11.0, process@^0.11.1: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" @@ -10332,8 +10377,8 @@ promise-inflight@^1.0.1, promise-inflight@~1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" promise-polyfill@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.1.0.tgz#dfa96943ea9c121fca4de9b5868cb39d3472e057" + version "6.0.2" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-6.0.2.tgz#d9c86d3dc4dc2df9016e88946defd69b49b41162" promise-retry@^1.1.1: version "1.1.1" @@ -10342,7 +10387,7 @@ promise-retry@^1.1.1: err-code "^1.0.0" retry "^0.10.0" -promise.prototype.finally@^3.1.0: +promise.prototype.finally@^3.0.0, promise.prototype.finally@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.0.tgz#66f161b1643636e50e7cf201dc1b84a857f3864e" dependencies: @@ -10417,9 +10462,9 @@ proxy-from-env@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" +prr@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" ps-tree@^1.1.0: version "1.1.0" @@ -10442,8 +10487,8 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" pump@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" + version "1.0.2" + resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.2.tgz#3b3ee6512f94f0e575538c17995f9f16990a5d51" dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -10497,10 +10542,6 @@ qs@6.5.1, qs@^6.4.0, qs@^6.5.1, qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" -qs@~6.3.0: - version "6.3.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" - qs@~6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" @@ -10693,7 +10734,16 @@ react-docgen@^2.15.0: node-dir "^0.1.10" recast "^0.12.6" -react-dom@^16.0.0, react-dom@^16.1.0, react-dom@^16.2.0: +react-dom@^16.0.0, react-dom@^16.1.0: + version "16.1.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.1.1.tgz#b2e331b6d752faf1a2d31399969399a41d8d45f8" + dependencies: + fbjs "^0.8.16" + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.0" + +react-dom@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.2.0.tgz#69003178601c0ca19b709b33a83369fe6124c044" dependencies: @@ -10731,7 +10781,7 @@ react-icons@^2.2.7: dependencies: react-icon-base "2.1.0" -react-inspector@^2.2.1: +react-inspector@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-2.2.2.tgz#c04f5248fa92ab6c23e37960e725fb7f48c34d05" dependencies: @@ -10745,9 +10795,9 @@ react-modal@^2.2.4: exenv "^1.2.0" prop-types "^15.5.10" -react-modal@^3.1.7: - version "3.1.7" - resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.1.7.tgz#21feb937c95cd722bf2d375cada751fdc8189c0e" +react-modal@^3.1.8: + version "3.1.8" + resolved "https://registry.yarnpkg.com/react-modal/-/react-modal-3.1.8.tgz#7d6b1958f44828babd2a1ce826c28fa40d026b0f" dependencies: exenv "^1.2.0" prop-types "^15.5.10" @@ -10891,7 +10941,15 @@ react-style-proptype@^3.0.0: dependencies: prop-types "^15.5.4" -react-test-renderer@^16.0.0-0, react-test-renderer@^16.1.0, react-test-renderer@^16.2.0: +react-test-renderer@^16.0.0-0: + version "16.1.1" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.1.1.tgz#a05184688d564be799f212449262525d1e350537" + dependencies: + fbjs "^0.8.16" + object-assign "^4.1.1" + prop-types "^15.6.0" + +react-test-renderer@^16.1.0, react-test-renderer@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.2.0.tgz#bddf259a6b8fcd8555f012afc8eacc238872a211" dependencies: @@ -10937,7 +10995,16 @@ react-treebeard@^2.0.3: shallowequal "^0.2.2" velocity-react "^1.3.1" -react@^16.0.0, react@^16.1.0, react@^16.2.0: +react@^16.0.0, react@^16.1.0: + version "16.1.1" + resolved "https://registry.yarnpkg.com/react/-/react-16.1.1.tgz#d5c4ef795507e3012282dd51261ff9c0e824fe1f" + dependencies: + fbjs "^0.8.16" + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.0" + +react@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/react/-/react-16.2.0.tgz#a31bd2dab89bff65d42134fa187f24d054c273ba" dependencies: @@ -11050,7 +11117,7 @@ read@1, read@~1.0.1, read@~1.0.7: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@~2.3.2: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.2.9, readable-stream@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" dependencies: @@ -11199,8 +11266,8 @@ regenerator-runtime@^0.10.0, regenerator-runtime@^0.10.5: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" regenerator-transform@^0.10.0: version "0.10.1" @@ -11422,8 +11489,8 @@ remark-lint@^6.0.0, remark-lint@^6.0.1: remark-message-control "^4.0.0" remark-message-control@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/remark-message-control/-/remark-message-control-4.0.2.tgz#103d277418ce747fc0143542596c82c853990d51" + version "4.0.1" + resolved "https://registry.yarnpkg.com/remark-message-control/-/remark-message-control-4.0.1.tgz#2913cd60b316d9f9f390aa7f34639d20cf55996d" dependencies: mdast-comment-marker "^1.0.0" trim "0.0.1" @@ -11471,14 +11538,6 @@ remark-preset-lint-recommended@^3.0.1: remark-lint-no-unused-definitions "^1.0.0" remark-lint-ordered-list-marker-style "^1.0.0" -remark-slug@^4.0.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-4.2.3.tgz#8d987d0e5e63d4a49ea37b90fe999a3dcfc81b72" - dependencies: - github-slugger "^1.0.0" - mdast-util-to-string "^1.0.0" - unist-util-visit "^1.0.0" - remark-stringify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-4.0.0.tgz#4431884c0418f112da44991b4e356cfe37facd87" @@ -11498,13 +11557,6 @@ remark-stringify@^4.0.0: unherit "^1.0.4" xtend "^4.0.1" -remark-toc@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/remark-toc/-/remark-toc-4.0.1.tgz#ff36ff6de54ea07dd59e3f5334a4a3aac1e93185" - dependencies: - mdast-util-toc "^2.0.0" - remark-slug "^4.0.0" - remark@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/remark/-/remark-8.0.0.tgz#287b6df2fe1190e263c1d15e486d3fa835594d6d" @@ -11607,31 +11659,6 @@ request@2.81.0, request@~2.81.0: tunnel-agent "^0.6.0" uuid "^3.0.0" -request@~2.79.0: - version "2.79.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - qs "~6.3.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - uuid "^3.0.0" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -11723,7 +11750,7 @@ retry@^0.10.0, retry@~0.10.1: version "0.10.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" -rfc6902@^2.0.0: +rfc6902@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/rfc6902/-/rfc6902-2.2.2.tgz#518a4e9caac1688f3d94c9df2fdcdb6ce21f29be" @@ -11806,10 +11833,10 @@ rx-lite@^3.1.2: resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" rxjs@^5.4.2: - version "5.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.5.tgz#e164f11d38eaf29f56f08c3447f74ff02dd84e97" + version "5.5.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.2.tgz#28d403f0071121967f18ad665563255d54236ac3" dependencies: - symbol-observable "1.0.1" + symbol-observable "^1.0.1" safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" @@ -12510,7 +12537,7 @@ stream-each@^1.1.0: end-of-stream "^1.1.0" stream-shift "^1.0.0" -stream-http@^2.7.2: +stream-http@^2.3.1: version "2.7.2" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" dependencies: @@ -12585,16 +12612,16 @@ string.prototype.padstart@^3.0.0: es-abstract "^1.4.3" function-bind "^1.0.2" -string_decoder@^1.0.0, string_decoder@~1.0.3: +string_decoder@^0.10.25, string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" dependencies: safe-buffer "~5.1.0" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - stringify-entities@^1.0.1: version "1.3.1" resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.1.tgz#b150ec2d72ac4c1b5f324b51fb6b28c9cdff058c" @@ -12674,7 +12701,7 @@ strong-log-transformer@^1.0.6: moment "^2.6.0" through "^2.3.4" -style-loader@0.19.0, style-loader@^0.19.0: +style-loader@0.19.0: version "0.19.0" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.0.tgz#7258e788f0fee6a42d710eaf7d6c2412a4c50759" dependencies: @@ -12693,9 +12720,9 @@ style-loader@^0.17.0: dependencies: loader-utils "^1.0.2" -style-loader@^0.18.2: - version "0.18.2" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.18.2.tgz#cc31459afbcd6d80b7220ee54b291a9fd66ff5eb" +style-loader@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.1.tgz#591ffc80bcefe268b77c5d9ebc0505d772619f85" dependencies: loader-utils "^1.0.2" schema-utils "^0.3.0" @@ -12736,8 +12763,8 @@ supports-color@^4.0.0, supports-color@^4.1.0, supports-color@^4.2.1, supports-co has-flag "^2.0.0" supports-color@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.1.0.tgz#058a021d1b619f7ddf3980d712ea3590ce7de3d5" + version "5.0.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.0.1.tgz#1c5331f22250c84202805b2f17adf16699f3a39a" dependencies: has-flag "^2.0.0" @@ -12798,28 +12825,24 @@ sw-toolbox@^3.4.0: path-to-regexp "^1.0.1" serviceworker-cache-polyfill "^4.0.0" -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - symbol-observable@^0.2.2: version "0.2.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" -symbol-observable@^1.0.3: - version "1.1.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.1.0.tgz#5c68fd8d54115d9dfb72a84720549222e8db9b32" +symbol-observable@^1.0.1, symbol-observable@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" symbol-tree@^3.2.1: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" -symlink-dir@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/symlink-dir/-/symlink-dir-1.1.0.tgz#13a747574f1b83a3eeb02f401358365178637482" +symlink-dir@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/symlink-dir/-/symlink-dir-1.1.1.tgz#ea6367d96b0257f730dd03f95212eed24623b93e" dependencies: - "@types/mz" "0.0.31" - "@types/node" "^8.0.0" + "@types/mz" "0.0.32" + "@types/node" "^8.0.28" graceful-fs "^4.1.11" is-windows "^1.0.0" mkdirp-promise "^5.0.0" @@ -12998,7 +13021,7 @@ timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" -timers-browserify@^2.0.4: +timers-browserify@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6" dependencies: @@ -13101,12 +13124,6 @@ trough@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.1.tgz#a9fd8b0394b0ae8fff82e0633a0a36ccad5b5f86" -"true-case-path@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.2.tgz#7ec91130924766c7f573be3020c34f8fdfd00d62" - dependencies: - glob "^6.0.4" - try-catch@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/try-catch/-/try-catch-1.0.0.tgz#3797dab39a266775f4d0da5cbf42aca3f03608e6" @@ -13146,9 +13163,9 @@ tsconfig@^6.0.0: strip-bom "^3.0.0" strip-json-comments "^2.0.0" -tsickle@^0.21.0: - version "0.21.6" - resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.21.6.tgz#53b01b979c5c13fdb13afb3fb958177e5991588d" +tsickle@^0.24.0: + version "0.24.1" + resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.24.1.tgz#039343b205bf517a333b0703978892f80a7d848e" dependencies: minimist "^1.2.0" mkdirp "^0.5.1" @@ -13156,8 +13173,8 @@ tsickle@^0.21.0: source-map-support "^0.4.2" tslib@^1.6.0, tslib@^1.7.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.8.1.tgz#6946af2d1d651a7b1863b531d6e5afa41aa44eac" + version "1.8.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.8.0.tgz#dc604ebad64bcbf696d613da6c954aa0e7ea1eb6" tslint@~5.3.2: version "5.3.2" @@ -13178,8 +13195,8 @@ tsscmp@1.0.5: resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.5.tgz#7dc4a33af71581ab4337da91d85ca5427ebd9a97" tsutils@^2.0.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.13.0.tgz#0f52b6aabbc4216e72796b66db028c6cf173e144" + version "2.12.2" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.12.2.tgz#ad58a4865d17ec3ddb6631b6ca53be14a5656ff3" dependencies: tslib "^1.7.1" @@ -13193,10 +13210,6 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tunnel-agent@~0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -13223,25 +13236,25 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.4.2.tgz#f8395f85d459276067c988aa41837a8f82870844" typescript@^2.3.3, typescript@^2.4.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.2.tgz#3c5b6fd7f6de0914269027f03c0946758f7673a4" + version "2.6.1" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.6.1.tgz#ef39cdea27abac0b500242d6726ab90e0c846631" ua-parser-js@^0.7.9: version "0.7.17" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" uglify-es@^3.1.8: - version "3.2.2" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.2.2.tgz#15c62b7775002c81b7987a1c49ecd3f126cace73" + version "3.1.9" + resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.1.9.tgz#6c82df628ac9eb7af9c61fd70c744a084abe6161" dependencies: - commander "~2.12.1" + commander "~2.11.0" source-map "~0.6.1" -uglify-js@3.2.x, uglify-js@^3.0.13: - version "3.2.2" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.2.2.tgz#870e4b34ed733d179284f9998efd3293f7fd73f6" +uglify-js@3.1.x, uglify-js@^3.0.13: + version "3.1.9" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.1.9.tgz#dffca799308cf327ec3ac77eeacb8e196ce3b452" dependencies: - commander "~2.12.1" + commander "~2.11.0" source-map "~0.6.1" uglify-js@^2.6, uglify-js@^2.8.29: @@ -13294,8 +13307,8 @@ ultron@1.0.x: resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + version "1.1.0" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.0.tgz#b07a2e6a541a815fc6a34ccd4533baec307ca864" umask@~1.1.0: version "1.1.0" @@ -13362,8 +13375,8 @@ unified-lint-rule@^1.0.0: wrapped "^1.0.1" unified@^6.0.0: - version "6.1.6" - resolved "https://registry.yarnpkg.com/unified/-/unified-6.1.6.tgz#5ea7f807a0898f1f8acdeefe5f25faa010cc42b1" + version "6.1.5" + resolved "https://registry.yarnpkg.com/unified/-/unified-6.1.5.tgz#716937872621a63135e62ced2f3ac6a063c6fb87" dependencies: bail "^1.0.0" extend "^3.0.0" @@ -13409,10 +13422,6 @@ unist-util-generated@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.1.tgz#99f16c78959ac854dee7c615c291924c8bf4de7f" -unist-util-is@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.1.tgz#0c312629e3f960c66e931e812d3d80e77010947b" - unist-util-modify-children@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/unist-util-modify-children/-/unist-util-modify-children-1.1.1.tgz#66d7e6a449e6f67220b976ab3cb8b5ebac39e51d" @@ -13429,15 +13438,13 @@ unist-util-remove-position@^1.0.0: dependencies: unist-util-visit "^1.1.0" -unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: +unist-util-stringify-position@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.1.tgz#3ccbdc53679eed6ecf3777dd7f5e3229c1b6aa3c" unist-util-visit@^1.0.0, unist-util-visit@^1.1.0, unist-util-visit@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.3.0.tgz#41ca7c82981fd1ce6c762aac397fc24e35711444" - dependencies: - unist-util-is "^2.1.1" + version "1.1.3" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.1.3.tgz#ec268e731b9d277a79a5b5aa0643990e405d600b" universalify@^0.1.0: version "0.1.1" @@ -13544,6 +13551,10 @@ url-parse@^1.1.1, url-parse@^1.1.8, url-parse@^1.1.9: querystringify "~1.0.0" requires-port "~1.0.0" +url-template@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" + url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -13676,12 +13687,6 @@ vfile-location@^2.0.0, vfile-location@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.2.tgz#d3675c59c877498e492b4756ff65e4af1a752255" -vfile-message@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.0.0.tgz#a6adb0474ea400fa25d929f1d673abea6a17e359" - dependencies: - unist-util-stringify-position "^1.1.1" - vfile-reporter@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/vfile-reporter/-/vfile-reporter-4.0.0.tgz#ea6f0ae1342f4841573985e05f941736f27de9da" @@ -13697,13 +13702,12 @@ vfile-statistics@^1.1.0: resolved "https://registry.yarnpkg.com/vfile-statistics/-/vfile-statistics-1.1.0.tgz#02104c60fdeed1d11b1f73ad65330b7634b3d895" vfile@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" + version "2.2.0" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.2.0.tgz#ce47a4fb335922b233e535db0f7d8121d8fced4e" dependencies: is-buffer "^1.1.4" replace-ext "1.0.0" unist-util-stringify-position "^1.0.0" - vfile-message "^1.0.0" vhost@~3.0.1: version "3.0.2" @@ -13731,7 +13735,7 @@ vm2@patriksimek/vm2#custom_files: version "3.5.0" resolved "https://codeload.github.com/patriksimek/vm2/tar.gz/7e82f90ac705fc44fad044147cb0df09b4c79a57" -voca@^1.2.0: +voca@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/voca/-/voca-1.3.1.tgz#60c911dd41841785192b4d35971ec2b36f8ef779" @@ -13739,13 +13743,17 @@ void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" -vue-hot-reload-api@^2.2.0, vue-hot-reload-api@^2.2.4: +vue-hot-reload-api@^2.2.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.2.3.tgz#43c8e5506d65a271d2571936d77253019fd3eb17" + +vue-hot-reload-api@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.2.4.tgz#683bd1d026c0d3b3c937d5875679e9a87ec6cd8f" -vue-loader@^13.5.0: - version "13.5.0" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-13.5.0.tgz#52f7b3790a267eff80012b77ea187a54586dd5d4" +vue-loader@^13.6.0: + version "13.6.0" + resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-13.6.0.tgz#c1c9570e1e57475f8acb02cda35551b812f88086" dependencies: consolidate "^0.14.0" hash-sum "^1.0.2" @@ -13768,9 +13776,9 @@ vue-style-loader@^3.0.0, vue-style-loader@^3.0.1: hash-sum "^1.0.2" loader-utils "^1.0.2" -vue-template-compiler@^2.5.9: - version "2.5.9" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.5.9.tgz#7fabc73c8d3d12d32340cd86c5fc33e00e86d686" +vue-template-compiler@^2.5.11: + version "2.5.11" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.5.11.tgz#7dda6905e464ff173c8e70e1dfd1769a7888b7e8" dependencies: de-indent "^1.0.2" he "^1.1.0" @@ -13779,9 +13787,9 @@ vue-template-es2015-compiler@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz#dc42697133302ce3017524356a6c61b7b69b4a18" -vue@^2.5.9: - version "2.5.9" - resolved "https://registry.yarnpkg.com/vue/-/vue-2.5.9.tgz#b2380cd040915dca69881dafd121d760952e65f7" +vue@^2.5.11: + version "2.5.11" + resolved "https://registry.yarnpkg.com/vue/-/vue-2.5.11.tgz#80ca2657aa81f03545cd8dd5a2f55454641e6405" vuex@^3.0.0: version "3.0.1" @@ -13868,7 +13876,17 @@ webidl-conversions@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" -webpack-dev-middleware@^1.10.2, webpack-dev-middleware@^1.11.0, webpack-dev-middleware@^1.12.2: +webpack-dev-middleware@^1.10.2, webpack-dev-middleware@^1.11.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz#d34efefb2edda7e1d3b5dbe07289513219651709" + dependencies: + memory-fs "~0.4.1" + mime "^1.3.4" + path-is-absolute "^1.0.0" + range-parser "^1.0.3" + time-stamp "^2.0.0" + +webpack-dev-middleware@^1.12.2: version "1.12.2" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e" dependencies: @@ -13968,7 +13986,16 @@ webpack-dev-server@~2.5.1: webpack-dev-middleware "^1.11.0" yargs "^6.0.0" -webpack-hot-middleware@^2.18.0, webpack-hot-middleware@^2.21.0: +webpack-hot-middleware@^2.18.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.20.0.tgz#cb896d837758b6408fe0afeeafdc0e5316b15319" + dependencies: + ansi-html "0.0.7" + html-entities "^1.2.0" + querystring "^0.2.0" + strip-ansi "^3.0.0" + +webpack-hot-middleware@^2.21.0: version "2.21.0" resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.21.0.tgz#7b3c113a7a4b301c91e0749573c7aab28b414b52" dependencies: @@ -13991,13 +14018,13 @@ webpack-merge@^4.1.0: lodash "^4.17.4" webpack-sources@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" + version "1.0.2" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.2.tgz#d0148ec083b3b5ccef1035a6b3ec16442983b27a" dependencies: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@3.8.1: +webpack@3.8.1, "webpack@^2.5.1 || ^3.0.0": version "3.8.1" resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.8.1.tgz#b16968a81100abe61608b0153c9159ef8bb2bd83" dependencies: @@ -14024,7 +14051,7 @@ webpack@3.8.1: webpack-sources "^1.0.1" yargs "^8.0.2" -"webpack@^2.5.1 || ^3.0.0", webpack@^3.10.0: +webpack@^3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.10.0.tgz#5291b875078cf2abf42bdd23afe3f8f96c17d725" dependencies: @@ -14150,12 +14177,6 @@ widest-line@^1.0.0: dependencies: string-width "^1.0.1" -widest-line@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" - dependencies: - string-width "^2.1.1" - win-release@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/win-release/-/win-release-1.1.1.tgz#5fa55e02be7ca934edfc12665632e849b72e5209" @@ -14183,8 +14204,8 @@ wordwrap@~0.0.2: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" worker-farm@^1.3.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae" + version "1.5.1" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.1.tgz#8e9f4a7da4f3c595aa600903051b969390423fa1" dependencies: errno "^0.1.4" xtend "^4.0.1" @@ -14283,9 +14304,17 @@ ws@^2.0.3: safe-buffer "~5.0.1" ultron "~1.1.0" -ws@^3.0.0, ws@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.2.tgz#96c1d08b3fefda1d5c1e33700d3bfaa9be2d5608" +ws@^3.0.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.1.tgz#d97e34dee06a1190c61ac1e95f43cb60b78cf939" + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" dependencies: async-limiter "~1.0.0" safe-buffer "~5.1.0"