Merge branch 'next' into tech/v5-theming

# Conflicts:
#	addons/notes/package.json
This commit is contained in:
Norbert de Langen 2019-01-28 11:47:01 +01:00
commit b8b21bca42
67 changed files with 579 additions and 460 deletions

View File

@ -1,3 +1,41 @@
## 5.0.0-alpha.10 (January 28, 2019)
### Features
* Core: Version update use persistence ([#5370](https://github.com/storybooks/storybook/pull/5370))
* Addon-Notes: Add giphy support ([#5381](https://github.com/storybooks/storybook/pull/5381))
### Bug Fixes
* UI: Fix issue where "Tab" keyboard input => []. ([#5374](https://github.com/storybooks/storybook/pull/5374))
* UI: FIX keybindings were pointing to null events ([#5375](https://github.com/storybooks/storybook/pull/5375))
* Addon-GA: Add missing `register.js` file in base directory ([#5379](https://github.com/storybooks/storybook/pull/5379))
### Maintenance
* Typescript: Migrate addon-cssresources ([#5380](https://github.com/storybooks/storybook/pull/5380))
* UI: Keyboard shortcuts refactor ([#5359](https://github.com/storybooks/storybook/pull/5359))
### Dependency Upgrades
* Bump enzyme-adapter-react-16 from 1.7.1 to 1.8.0 ([#5366](https://github.com/storybooks/storybook/pull/5366))
* Bump typescript from 3.2.2 to 3.2.4 ([#5368](https://github.com/storybooks/storybook/pull/5368))
* Bump @babel/plugin-transform-react-jsx from 7.2.0 to 7.3.0 ([#5367](https://github.com/storybooks/storybook/pull/5367))
* Bump @babel/preset-env from 7.2.3 to 7.3.1 ([#5369](https://github.com/storybooks/storybook/pull/5369))
* Bump vue-loader from 15.5.1 to 15.6.0 ([#5365](https://github.com/storybooks/storybook/pull/5365))
* Bump prettier from 1.15.3 to 1.16.1 ([#5354](https://github.com/storybooks/storybook/pull/5354))
* Bump ember-source from 3.7.0 to 3.7.2 ([#5358](https://github.com/storybooks/storybook/pull/5358))
* Bump @angular/platform-browser-dynamic from 7.2.1 to 7.2.2 ([#5353](https://github.com/storybooks/storybook/pull/5353))
* Bump ember-cli-babel from 7.2.0 to 7.4.0 ([#5357](https://github.com/storybooks/storybook/pull/5357))
* Bump zone.js from 0.8.28 to 0.8.29 ([#5355](https://github.com/storybooks/storybook/pull/5355))
* Bump lerna from 3.10.6 to 3.10.7 ([#5356](https://github.com/storybooks/storybook/pull/5356))
* Bump eslint-plugin-import from 2.14.0 to 2.15.0 ([#5352](https://github.com/storybooks/storybook/pull/5352))
* Bump immer from 1.10.5 to 1.12.0 ([#5345](https://github.com/storybooks/storybook/pull/5345))
* Bump @babel/plugin-proposal-object-rest-spread from 7.2.0 to 7.3.1 ([#5342](https://github.com/storybooks/storybook/pull/5342))
* Bump autoprefixer from 9.4.5 to 9.4.6 ([#5347](https://github.com/storybooks/storybook/pull/5347))
* Bump react-focus-lock from 1.17.6 to 1.17.7 ([#5344](https://github.com/storybooks/storybook/pull/5344))
* Bump @ngrx/store from 7.0.0 to 7.1.0 ([#5341](https://github.com/storybooks/storybook/pull/5341))
## 4.1.11 (January 24, 2019)
### Bug Fixes

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-a11y",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "a11y addon for storybook",
"keywords": [
"a11y",
@ -25,11 +25,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/client-logger": "5.0.0-alpha.9",
"@storybook/components": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/theming": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/client-logger": "5.0.0-alpha.10",
"@storybook/components": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"@storybook/theming": "5.0.0-alpha.10",
"axe-core": "^3.1.2",
"common-tags": "^1.8.0",
"core-js": "^2.6.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-actions",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Action Logger addon for storybook",
"keywords": [
"storybook"
@ -20,10 +20,10 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/components": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/theming": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/components": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"@storybook/theming": "5.0.0-alpha.10",
"core-js": "^2.6.2",
"fast-deep-equal": "^2.0.1",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-backgrounds",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "A storybook addon to show different backgrounds for your preview",
"keywords": [
"addon",
@ -24,11 +24,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/client-logger": "5.0.0-alpha.9",
"@storybook/components": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/theming": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/client-logger": "5.0.0-alpha.10",
"@storybook/components": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"@storybook/theming": "5.0.0-alpha.10",
"core-js": "^2.6.2",
"eventemitter3": "^3.1.0",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-centered",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook decorator to center components",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-cssresources",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "A storybook addon to switch between css resources at runtime for your story",
"keywords": [
"addon",
@ -25,10 +25,10 @@
},
"dependencies": {
"@emotion/styled": "10.0.6",
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/channels": "5.0.0-alpha.9",
"@storybook/components": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/channels": "5.0.0-alpha.10",
"@storybook/components": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"core-js": "^2.6.2",
"global": "^4.3.2",
"prop-types": "^15.6.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-events",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Add events to your Storybook stories.",
"keywords": [
"addon",
@ -23,9 +23,9 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/theming": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"@storybook/theming": "5.0.0-alpha.10",
"core-js": "^2.6.2",
"format-json": "^1.0.3",
"prop-types": "^15.6.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-google-analytics",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook addon for google analytics",
"keywords": [
"addon",
@ -19,8 +19,8 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"core-js": "^2.6.2",
"global": "^4.3.2",
"react-ga": "^2.5.3"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-graphql",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook addon to display the GraphiQL IDE",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-info",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "A Storybook addon to show additional information for your stories.",
"keywords": [
"addon",
@ -21,10 +21,10 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/client-logger": "5.0.0-alpha.9",
"@storybook/components": "5.0.0-alpha.9",
"@storybook/theming": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/client-logger": "5.0.0-alpha.10",
"@storybook/components": "5.0.0-alpha.10",
"@storybook/theming": "5.0.0-alpha.10",
"core-js": "^2.6.2",
"global": "^4.3.2",
"marksy": "^6.1.0",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-jest",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "React storybook addon that show component jest report",
"keywords": [
"addon",
@ -27,10 +27,10 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/components": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/theming": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/components": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"@storybook/theming": "5.0.0-alpha.10",
"core-js": "^2.6.2",
"global": "^4.3.2",
"prop-types": "^15.6.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-knobs",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook Addon Prop Editor Component",
"keywords": [
"addon",
@ -21,10 +21,10 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/components": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/theming": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/components": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"@storybook/theming": "5.0.0-alpha.10",
"copy-to-clipboard": "^3.0.8",
"core-js": "^2.6.2",
"escape-html": "^1.0.3",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-links",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Story Links addon for storybook",
"keywords": [
"addon",
@ -21,8 +21,8 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"common-tags": "^1.8.0",
"core-js": "^2.6.2",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-notes",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Write notes for your Storybook stories.",
"keywords": [
"addon",
@ -22,11 +22,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/components": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/client-logger": "5.0.0-alpha.9",
"@storybook/theming": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/components": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"@storybook/client-logger": "5.0.0-alpha.10",
"@storybook/theming": "5.0.0-alpha.10",
"markdown-to-jsx": "^6.9.0",
"prop-types": "^15.6.2",
"util-deprecate": "^1.0.2"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-ondevice-backgrounds",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "A storybook addon to show different backgrounds for your preview",
"keywords": [
"addon",
@ -23,7 +23,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"core-js": "^2.6.2",
"prop-types": "^15.6.2"
},

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-ondevice-knobs",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Display storybook story knobs on your deviced.",
"keywords": [
"addon",
@ -20,7 +20,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"core-js": "^2.6.2",
"deep-equal": "^1.0.1",
"prop-types": "^15.6.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-ondevice-notes",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Write notes for your Storybook stories.",
"keywords": [
"addon",
@ -18,7 +18,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"core-js": "^2.6.2",
"prop-types": "^15.6.2",
"react-native-simple-markdown": "^1.1.0"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-options",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Options addon for storybook",
"keywords": [
"addon",
@ -20,7 +20,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"core-js": "^2.6.2",
"util-deprecate": "^1.0.2"
},

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-storyshots",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "StoryShots is a Jest Snapshot Testing Addon for Storybook.",
"keywords": [
"addon",
@ -24,7 +24,7 @@
"storybook": "start-storybook -p 6006"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"core-js": "^2.6.2",
"glob": "^7.1.3",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-storyshots-puppeteer",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Image snappshots addition to StoryShots base on puppeteer",
"keywords": [
"addon",
@ -21,8 +21,8 @@
"prepare": "node ../../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.0.0-alpha.9",
"@storybook/node-logger": "5.0.0-alpha.9",
"@storybook/core": "5.0.0-alpha.10",
"@storybook/node-logger": "5.0.0-alpha.10",
"core-js": "^2.6.2",
"jest-image-snapshot": "^2.6.0",
"puppeteer": "^1.11.0",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-storysource",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Stories addon for storybook",
"keywords": [
"addon",
@ -21,8 +21,8 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/components": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/components": "5.0.0-alpha.10",
"core-js": "^2.6.2",
"estraverse": "^4.2.0",
"loader-utils": "^1.2.1",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-viewport",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook addon to change the viewport size to mobile",
"keywords": [
"addon",
@ -20,11 +20,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/client-logger": "5.0.0-alpha.9",
"@storybook/components": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/theming": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/client-logger": "5.0.0-alpha.10",
"@storybook/components": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"@storybook/theming": "5.0.0-alpha.10",
"core-js": "^2.6.2",
"global": "^4.3.2",
"memoizerific": "^1.11.3",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/angular",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook for Angular: Develop Angular Components in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -25,8 +25,8 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.0.0-alpha.9",
"@storybook/node-logger": "5.0.0-alpha.9",
"@storybook/core": "5.0.0-alpha.10",
"@storybook/node-logger": "5.0.0-alpha.10",
"angular2-template-loader": "^0.6.2",
"core-js": "^2.6.2",
"fork-ts-checker-webpack-plugin": "^0.5.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/ember",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.",
"homepage": "https://github.com/storybooks/storybook/tree/master/app/ember",
"bugs": {
@ -23,7 +23,7 @@
},
"dependencies": {
"@ember/test-helpers": "^1.0.0",
"@storybook/core": "5.0.0-alpha.9",
"@storybook/core": "5.0.0-alpha.10",
"common-tags": "^1.8.0",
"core-js": "^2.6.2",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/html",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -24,7 +24,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.0.0-alpha.9",
"@storybook/core": "5.0.0-alpha.10",
"common-tags": "^1.8.0",
"core-js": "^2.6.2",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/marko",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook for Marko: Develop Marko Component in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -25,7 +25,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.0.0-alpha.9",
"@storybook/core": "5.0.0-alpha.10",
"common-tags": "^1.8.0",
"core-js": "^2.6.2",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/mithril",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook for Mithril: Develop Mithril Component in isolation.",
"keywords": [
"storybook"
@ -26,7 +26,7 @@
},
"dependencies": {
"@babel/plugin-transform-react-jsx": "^7.3.0",
"@storybook/core": "5.0.0-alpha.9",
"@storybook/core": "5.0.0-alpha.10",
"common-tags": "^1.8.0",
"core-js": "^2.6.2",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/polymer",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook for Polymer: Develop Polymer components in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -24,7 +24,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.0.0-alpha.9",
"@storybook/core": "5.0.0-alpha.10",
"@webcomponents/webcomponentsjs": "^1.2.0",
"common-tags": "^1.8.0",
"core-js": "^2.6.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preact",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook for Preact: Develop Preact Component in isolation.",
"keywords": [
"storybook"
@ -26,7 +26,7 @@
},
"dependencies": {
"@babel/plugin-transform-react-jsx": "^7.3.0",
"@storybook/core": "5.0.0-alpha.9",
"@storybook/core": "5.0.0-alpha.10",
"common-tags": "^1.8.0",
"core-js": "^2.6.2",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/react-native",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "A better way to develop React Native Components for your app",
"keywords": [
"react",
@ -25,12 +25,12 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/channel-websocket": "5.0.0-alpha.9",
"@storybook/channels": "5.0.0-alpha.9",
"@storybook/core": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/ui": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/channel-websocket": "5.0.0-alpha.10",
"@storybook/channels": "5.0.0-alpha.10",
"@storybook/core": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"@storybook/ui": "5.0.0-alpha.10",
"babel-loader": "^8.0.4",
"babel-plugin-macros": "^2.4.5",
"babel-plugin-syntax-async-functions": "^6.13.0",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/react",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook for React: Develop React Component in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -28,9 +28,9 @@
"@babel/plugin-transform-react-constant-elements": "^7.2.0",
"@babel/preset-flow": "^7.0.0",
"@babel/preset-react": "^7.0.0",
"@storybook/core": "5.0.0-alpha.9",
"@storybook/node-logger": "5.0.0-alpha.9",
"@storybook/theming": "5.0.0-alpha.9",
"@storybook/core": "5.0.0-alpha.10",
"@storybook/node-logger": "5.0.0-alpha.10",
"@storybook/theming": "5.0.0-alpha.10",
"@svgr/webpack": "^4.0.3",
"babel-plugin-named-asset-import": "^0.3.0",
"babel-plugin-react-docgen": "^2.0.0",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/riot",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook for riot.js: View riot snippets in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -24,7 +24,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.0.0-alpha.9",
"@storybook/core": "5.0.0-alpha.10",
"common-tags": "^1.8.0",
"core-js": "^2.6.2",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/svelte",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -25,7 +25,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.0.0-alpha.9",
"@storybook/core": "5.0.0-alpha.10",
"common-tags": "^1.8.0",
"core-js": "^2.6.2",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/vue",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook for Vue: Develop Vue Component in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -25,7 +25,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core": "5.0.0-alpha.9",
"@storybook/core": "5.0.0-alpha.10",
"common-tags": "^1.8.0",
"core-js": "^2.6.2",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "angular-cli",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"private": true,
"license": "MIT",
"scripts": {
@ -33,18 +33,18 @@
"@angular-devkit/build-angular": "^0.11.4",
"@angular/cli": "^7.2.2",
"@angular/compiler-cli": "^7.2.1",
"@storybook/addon-actions": "5.0.0-alpha.9",
"@storybook/addon-backgrounds": "5.0.0-alpha.9",
"@storybook/addon-centered": "5.0.0-alpha.9",
"@storybook/addon-jest": "5.0.0-alpha.9",
"@storybook/addon-knobs": "5.0.0-alpha.9",
"@storybook/addon-links": "5.0.0-alpha.9",
"@storybook/addon-notes": "5.0.0-alpha.9",
"@storybook/addon-options": "5.0.0-alpha.9",
"@storybook/addon-storyshots": "5.0.0-alpha.9",
"@storybook/addon-storysource": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/angular": "5.0.0-alpha.9",
"@storybook/addon-actions": "5.0.0-alpha.10",
"@storybook/addon-backgrounds": "5.0.0-alpha.10",
"@storybook/addon-centered": "5.0.0-alpha.10",
"@storybook/addon-jest": "5.0.0-alpha.10",
"@storybook/addon-knobs": "5.0.0-alpha.10",
"@storybook/addon-links": "5.0.0-alpha.10",
"@storybook/addon-notes": "5.0.0-alpha.10",
"@storybook/addon-options": "5.0.0-alpha.10",
"@storybook/addon-storyshots": "5.0.0-alpha.10",
"@storybook/addon-storysource": "5.0.0-alpha.10",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/angular": "5.0.0-alpha.10",
"@types/core-js": "^2.5.0",
"@types/jest": "^23.3.13",
"@types/node": "~10.12.18",

View File

@ -1,6 +1,6 @@
{
"name": "cra-kitchen-sink",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"private": true,
"scripts": {
"build": "react-scripts build",
@ -18,21 +18,21 @@
"react-lifecycles-compat": "^3.0.4"
},
"devDependencies": {
"@storybook/addon-a11y": "5.0.0-alpha.9",
"@storybook/addon-actions": "5.0.0-alpha.9",
"@storybook/addon-backgrounds": "5.0.0-alpha.9",
"@storybook/addon-centered": "5.0.0-alpha.9",
"@storybook/addon-events": "5.0.0-alpha.9",
"@storybook/addon-info": "5.0.0-alpha.9",
"@storybook/addon-jest": "5.0.0-alpha.9",
"@storybook/addon-knobs": "5.0.0-alpha.9",
"@storybook/addon-links": "5.0.0-alpha.9",
"@storybook/addon-notes": "5.0.0-alpha.9",
"@storybook/addon-options": "5.0.0-alpha.9",
"@storybook/addon-storyshots": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/client-logger": "5.0.0-alpha.9",
"@storybook/react": "5.0.0-alpha.9",
"@storybook/addon-a11y": "5.0.0-alpha.10",
"@storybook/addon-actions": "5.0.0-alpha.10",
"@storybook/addon-backgrounds": "5.0.0-alpha.10",
"@storybook/addon-centered": "5.0.0-alpha.10",
"@storybook/addon-events": "5.0.0-alpha.10",
"@storybook/addon-info": "5.0.0-alpha.10",
"@storybook/addon-jest": "5.0.0-alpha.10",
"@storybook/addon-knobs": "5.0.0-alpha.10",
"@storybook/addon-links": "5.0.0-alpha.10",
"@storybook/addon-notes": "5.0.0-alpha.10",
"@storybook/addon-options": "5.0.0-alpha.10",
"@storybook/addon-storyshots": "5.0.0-alpha.10",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/client-logger": "5.0.0-alpha.10",
"@storybook/react": "5.0.0-alpha.10",
"enzyme": "^3.7.0",
"enzyme-adapter-react-16": "^1.8.0",
"enzyme-to-json": "^3.3.4",

View File

@ -1,6 +1,6 @@
{
"name": "cra-ts-kitchen-sink",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"private": true,
"scripts": {
"build-storybook": "build-storybook -s public",
@ -13,11 +13,11 @@
"react-dom": "^16.7.0"
},
"devDependencies": {
"@storybook/addon-actions": "5.0.0-alpha.9",
"@storybook/addon-info": "5.0.0-alpha.9",
"@storybook/addon-options": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/react": "5.0.0-alpha.9",
"@storybook/addon-actions": "5.0.0-alpha.10",
"@storybook/addon-info": "5.0.0-alpha.10",
"@storybook/addon-options": "5.0.0-alpha.10",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/react": "5.0.0-alpha.10",
"@types/enzyme": "^3.1.15",
"@types/react": "^16.7.20",
"@types/react-dom": "^16.0.11",

View File

@ -1,6 +1,6 @@
{
"name": "ember-example",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"private": true,
"scripts": {
"build": "ember build",
@ -14,18 +14,18 @@
},
"devDependencies": {
"@babel/core": "^7.2.2",
"@storybook/addon-a11y": "5.0.0-alpha.9",
"@storybook/addon-actions": "5.0.0-alpha.9",
"@storybook/addon-backgrounds": "5.0.0-alpha.9",
"@storybook/addon-centered": "5.0.0-alpha.9",
"@storybook/addon-knobs": "5.0.0-alpha.9",
"@storybook/addon-links": "5.0.0-alpha.9",
"@storybook/addon-notes": "5.0.0-alpha.9",
"@storybook/addon-options": "5.0.0-alpha.9",
"@storybook/addon-storysource": "5.0.0-alpha.9",
"@storybook/addon-viewport": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/ember": "5.0.0-alpha.9",
"@storybook/addon-a11y": "5.0.0-alpha.10",
"@storybook/addon-actions": "5.0.0-alpha.10",
"@storybook/addon-backgrounds": "5.0.0-alpha.10",
"@storybook/addon-centered": "5.0.0-alpha.10",
"@storybook/addon-knobs": "5.0.0-alpha.10",
"@storybook/addon-links": "5.0.0-alpha.10",
"@storybook/addon-notes": "5.0.0-alpha.10",
"@storybook/addon-options": "5.0.0-alpha.10",
"@storybook/addon-storysource": "5.0.0-alpha.10",
"@storybook/addon-viewport": "5.0.0-alpha.10",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/ember": "5.0.0-alpha.10",
"babel-loader": "^8",
"broccoli-asset-rev": "^3.0.0",
"cross-env": "^5.2.0",

View File

@ -1,6 +1,6 @@
{
"name": "html-kitchen-sink",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"private": true,
"description": "",
"keywords": [],
@ -13,23 +13,23 @@
"storybook": "start-storybook -p 9006"
},
"devDependencies": {
"@storybook/addon-a11y": "5.0.0-alpha.9",
"@storybook/addon-actions": "5.0.0-alpha.9",
"@storybook/addon-backgrounds": "5.0.0-alpha.9",
"@storybook/addon-centered": "5.0.0-alpha.9",
"@storybook/addon-events": "5.0.0-alpha.9",
"@storybook/addon-jest": "5.0.0-alpha.9",
"@storybook/addon-knobs": "5.0.0-alpha.9",
"@storybook/addon-links": "5.0.0-alpha.9",
"@storybook/addon-notes": "5.0.0-alpha.9",
"@storybook/addon-options": "5.0.0-alpha.9",
"@storybook/addon-storyshots": "5.0.0-alpha.9",
"@storybook/addon-storysource": "5.0.0-alpha.9",
"@storybook/addon-viewport": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/core": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/html": "5.0.0-alpha.9",
"@storybook/addon-a11y": "5.0.0-alpha.10",
"@storybook/addon-actions": "5.0.0-alpha.10",
"@storybook/addon-backgrounds": "5.0.0-alpha.10",
"@storybook/addon-centered": "5.0.0-alpha.10",
"@storybook/addon-events": "5.0.0-alpha.10",
"@storybook/addon-jest": "5.0.0-alpha.10",
"@storybook/addon-knobs": "5.0.0-alpha.10",
"@storybook/addon-links": "5.0.0-alpha.10",
"@storybook/addon-notes": "5.0.0-alpha.10",
"@storybook/addon-options": "5.0.0-alpha.10",
"@storybook/addon-storyshots": "5.0.0-alpha.10",
"@storybook/addon-storysource": "5.0.0-alpha.10",
"@storybook/addon-viewport": "5.0.0-alpha.10",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/core": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"@storybook/html": "5.0.0-alpha.10",
"eventemitter3": "^3.1.0",
"format-json": "^1.0.3",
"global": "^4.3.2",

View File

@ -1,6 +1,6 @@
{
"name": "marko-cli",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"private": true,
"description": "Demo of how to build an app using marko-starter",
"repository": {
@ -22,12 +22,12 @@
"marko-starter": "^2.0.4"
},
"devDependencies": {
"@storybook/addon-actions": "5.0.0-alpha.9",
"@storybook/addon-knobs": "5.0.0-alpha.9",
"@storybook/addon-options": "5.0.0-alpha.9",
"@storybook/addon-storysource": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/marko": "5.0.0-alpha.9",
"@storybook/addon-actions": "5.0.0-alpha.10",
"@storybook/addon-knobs": "5.0.0-alpha.10",
"@storybook/addon-options": "5.0.0-alpha.10",
"@storybook/addon-storysource": "5.0.0-alpha.10",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/marko": "5.0.0-alpha.10",
"prettier": "^1.16.1",
"webpack": "^4.29.0"
}

View File

@ -1,6 +1,6 @@
{
"name": "mithril-example",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"private": true,
"scripts": {
"build-storybook": "build-storybook",
@ -10,18 +10,18 @@
"mithril": "^1.1.6"
},
"devDependencies": {
"@storybook/addon-actions": "5.0.0-alpha.9",
"@storybook/addon-backgrounds": "5.0.0-alpha.9",
"@storybook/addon-centered": "5.0.0-alpha.9",
"@storybook/addon-knobs": "5.0.0-alpha.9",
"@storybook/addon-links": "5.0.0-alpha.9",
"@storybook/addon-notes": "5.0.0-alpha.9",
"@storybook/addon-options": "5.0.0-alpha.9",
"@storybook/addon-storyshots": "5.0.0-alpha.9",
"@storybook/addon-storysource": "5.0.0-alpha.9",
"@storybook/addon-viewport": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/mithril": "5.0.0-alpha.9",
"@storybook/addon-actions": "5.0.0-alpha.10",
"@storybook/addon-backgrounds": "5.0.0-alpha.10",
"@storybook/addon-centered": "5.0.0-alpha.10",
"@storybook/addon-knobs": "5.0.0-alpha.10",
"@storybook/addon-links": "5.0.0-alpha.10",
"@storybook/addon-notes": "5.0.0-alpha.10",
"@storybook/addon-options": "5.0.0-alpha.10",
"@storybook/addon-storyshots": "5.0.0-alpha.10",
"@storybook/addon-storysource": "5.0.0-alpha.10",
"@storybook/addon-viewport": "5.0.0-alpha.10",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/mithril": "5.0.0-alpha.10",
"webpack": "^4.29.0"
}
}

View File

@ -1,6 +1,6 @@
{
"name": "official-storybook",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"private": true,
"scripts": {
"build-storybook": "build-storybook -c ./ -s built-storybooks",
@ -12,29 +12,29 @@
"storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true start-storybook -p 9011 -c ./ -s built-storybooks --no-dll"
},
"devDependencies": {
"@storybook/addon-a11y": "5.0.0-alpha.9",
"@storybook/addon-actions": "5.0.0-alpha.9",
"@storybook/addon-backgrounds": "5.0.0-alpha.9",
"@storybook/addon-centered": "5.0.0-alpha.9",
"@storybook/addon-cssresources": "5.0.0-alpha.9",
"@storybook/addon-events": "5.0.0-alpha.9",
"@storybook/addon-graphql": "5.0.0-alpha.9",
"@storybook/addon-info": "5.0.0-alpha.9",
"@storybook/addon-jest": "5.0.0-alpha.9",
"@storybook/addon-knobs": "5.0.0-alpha.9",
"@storybook/addon-links": "5.0.0-alpha.9",
"@storybook/addon-notes": "5.0.0-alpha.9",
"@storybook/addon-options": "5.0.0-alpha.9",
"@storybook/addon-storyshots": "5.0.0-alpha.9",
"@storybook/addon-storyshots-puppeteer": "5.0.0-alpha.9",
"@storybook/addon-storysource": "5.0.0-alpha.9",
"@storybook/addon-viewport": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/components": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/node-logger": "5.0.0-alpha.9",
"@storybook/react": "5.0.0-alpha.9",
"@storybook/theming": "5.0.0-alpha.9",
"@storybook/addon-a11y": "5.0.0-alpha.10",
"@storybook/addon-actions": "5.0.0-alpha.10",
"@storybook/addon-backgrounds": "5.0.0-alpha.10",
"@storybook/addon-centered": "5.0.0-alpha.10",
"@storybook/addon-cssresources": "5.0.0-alpha.10",
"@storybook/addon-events": "5.0.0-alpha.10",
"@storybook/addon-graphql": "5.0.0-alpha.10",
"@storybook/addon-info": "5.0.0-alpha.10",
"@storybook/addon-jest": "5.0.0-alpha.10",
"@storybook/addon-knobs": "5.0.0-alpha.10",
"@storybook/addon-links": "5.0.0-alpha.10",
"@storybook/addon-notes": "5.0.0-alpha.10",
"@storybook/addon-options": "5.0.0-alpha.10",
"@storybook/addon-storyshots": "5.0.0-alpha.10",
"@storybook/addon-storyshots-puppeteer": "5.0.0-alpha.10",
"@storybook/addon-storysource": "5.0.0-alpha.10",
"@storybook/addon-viewport": "5.0.0-alpha.10",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/components": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"@storybook/node-logger": "5.0.0-alpha.10",
"@storybook/react": "5.0.0-alpha.10",
"@storybook/theming": "5.0.0-alpha.10",
"cors": "^2.8.4",
"cross-env": "^5.2.0",
"enzyme-to-json": "^3.3.4",

View File

@ -1,6 +1,6 @@
{
"name": "polymer-cli",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"private": true,
"scripts": {
"build-storybook": "build-storybook",
@ -9,15 +9,15 @@
},
"dependencies": {
"@polymer/polymer": "^2.6.0",
"@storybook/addon-actions": "5.0.0-alpha.9",
"@storybook/addon-backgrounds": "5.0.0-alpha.9",
"@storybook/addon-knobs": "5.0.0-alpha.9",
"@storybook/addon-links": "5.0.0-alpha.9",
"@storybook/addon-notes": "5.0.0-alpha.9",
"@storybook/addon-options": "5.0.0-alpha.9",
"@storybook/addon-storysource": "5.0.0-alpha.9",
"@storybook/addon-viewport": "5.0.0-alpha.9",
"@storybook/polymer": "5.0.0-alpha.9",
"@storybook/addon-actions": "5.0.0-alpha.10",
"@storybook/addon-backgrounds": "5.0.0-alpha.10",
"@storybook/addon-knobs": "5.0.0-alpha.10",
"@storybook/addon-links": "5.0.0-alpha.10",
"@storybook/addon-notes": "5.0.0-alpha.10",
"@storybook/addon-options": "5.0.0-alpha.10",
"@storybook/addon-storysource": "5.0.0-alpha.10",
"@storybook/addon-viewport": "5.0.0-alpha.10",
"@storybook/polymer": "5.0.0-alpha.10",
"@webcomponents/webcomponentsjs": "^1.2.0",
"global": "^4.3.2",
"lit-html": "^0.14.0",

View File

@ -1,6 +1,6 @@
{
"name": "preact-example",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"private": true,
"scripts": {
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules",
@ -15,18 +15,18 @@
"devDependencies": {
"@babel/core": "^7.2.2",
"@babel/plugin-transform-runtime": "^7.2.0",
"@storybook/addon-actions": "5.0.0-alpha.9",
"@storybook/addon-backgrounds": "5.0.0-alpha.9",
"@storybook/addon-centered": "5.0.0-alpha.9",
"@storybook/addon-knobs": "5.0.0-alpha.9",
"@storybook/addon-links": "5.0.0-alpha.9",
"@storybook/addon-notes": "5.0.0-alpha.9",
"@storybook/addon-options": "5.0.0-alpha.9",
"@storybook/addon-storyshots": "5.0.0-alpha.9",
"@storybook/addon-storysource": "5.0.0-alpha.9",
"@storybook/addon-viewport": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/preact": "5.0.0-alpha.9",
"@storybook/addon-actions": "5.0.0-alpha.10",
"@storybook/addon-backgrounds": "5.0.0-alpha.10",
"@storybook/addon-centered": "5.0.0-alpha.10",
"@storybook/addon-knobs": "5.0.0-alpha.10",
"@storybook/addon-links": "5.0.0-alpha.10",
"@storybook/addon-notes": "5.0.0-alpha.10",
"@storybook/addon-options": "5.0.0-alpha.10",
"@storybook/addon-storyshots": "5.0.0-alpha.10",
"@storybook/addon-storysource": "5.0.0-alpha.10",
"@storybook/addon-viewport": "5.0.0-alpha.10",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/preact": "5.0.0-alpha.10",
"babel-loader": "^8.0.4",
"cross-env": "^5.2.0",
"file-loader": "^3.0.1",

View File

@ -1,6 +1,6 @@
{
"name": "riot-example",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"private": true,
"scripts": {
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules",
@ -15,18 +15,18 @@
},
"devDependencies": {
"@babel/core": "^7.2.2",
"@storybook/addon-actions": "5.0.0-alpha.9",
"@storybook/addon-backgrounds": "5.0.0-alpha.9",
"@storybook/addon-centered": "5.0.0-alpha.9",
"@storybook/addon-knobs": "5.0.0-alpha.9",
"@storybook/addon-links": "5.0.0-alpha.9",
"@storybook/addon-notes": "5.0.0-alpha.9",
"@storybook/addon-options": "5.0.0-alpha.9",
"@storybook/addon-storyshots": "5.0.0-alpha.9",
"@storybook/addon-storysource": "5.0.0-alpha.9",
"@storybook/addon-viewport": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/riot": "5.0.0-alpha.9",
"@storybook/addon-actions": "5.0.0-alpha.10",
"@storybook/addon-backgrounds": "5.0.0-alpha.10",
"@storybook/addon-centered": "5.0.0-alpha.10",
"@storybook/addon-knobs": "5.0.0-alpha.10",
"@storybook/addon-links": "5.0.0-alpha.10",
"@storybook/addon-notes": "5.0.0-alpha.10",
"@storybook/addon-options": "5.0.0-alpha.10",
"@storybook/addon-storyshots": "5.0.0-alpha.10",
"@storybook/addon-storysource": "5.0.0-alpha.10",
"@storybook/addon-viewport": "5.0.0-alpha.10",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/riot": "5.0.0-alpha.10",
"babel-loader": "^8.0.4",
"cross-env": "^5.2.0",
"file-loader": "^3.0.1",

View File

@ -1,6 +1,6 @@
{
"name": "svelte-example",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"private": true,
"scripts": {
"build-storybook": "build-storybook -s public",
@ -10,17 +10,17 @@
"global": "^4.3.2"
},
"devDependencies": {
"@storybook/addon-actions": "5.0.0-alpha.9",
"@storybook/addon-backgrounds": "5.0.0-alpha.9",
"@storybook/addon-centered": "5.0.0-alpha.9",
"@storybook/addon-knobs": "5.0.0-alpha.9",
"@storybook/addon-links": "5.0.0-alpha.9",
"@storybook/addon-notes": "5.0.0-alpha.9",
"@storybook/addon-options": "5.0.0-alpha.9",
"@storybook/addon-storyshots": "5.0.0-alpha.9",
"@storybook/addon-storysource": "5.0.0-alpha.9",
"@storybook/addon-viewport": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/svelte": "5.0.0-alpha.9"
"@storybook/addon-actions": "5.0.0-alpha.10",
"@storybook/addon-backgrounds": "5.0.0-alpha.10",
"@storybook/addon-centered": "5.0.0-alpha.10",
"@storybook/addon-knobs": "5.0.0-alpha.10",
"@storybook/addon-links": "5.0.0-alpha.10",
"@storybook/addon-notes": "5.0.0-alpha.10",
"@storybook/addon-options": "5.0.0-alpha.10",
"@storybook/addon-storyshots": "5.0.0-alpha.10",
"@storybook/addon-storysource": "5.0.0-alpha.10",
"@storybook/addon-viewport": "5.0.0-alpha.10",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/svelte": "5.0.0-alpha.10"
}
}

View File

@ -1,6 +1,6 @@
{
"name": "vue-example",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"private": true,
"scripts": {
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules",
@ -14,18 +14,18 @@
},
"devDependencies": {
"@babel/core": "^7.2.2",
"@storybook/addon-actions": "5.0.0-alpha.9",
"@storybook/addon-backgrounds": "5.0.0-alpha.9",
"@storybook/addon-centered": "5.0.0-alpha.9",
"@storybook/addon-knobs": "5.0.0-alpha.9",
"@storybook/addon-links": "5.0.0-alpha.9",
"@storybook/addon-notes": "5.0.0-alpha.9",
"@storybook/addon-options": "5.0.0-alpha.9",
"@storybook/addon-storyshots": "5.0.0-alpha.9",
"@storybook/addon-storysource": "5.0.0-alpha.9",
"@storybook/addon-viewport": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/vue": "5.0.0-alpha.9",
"@storybook/addon-actions": "5.0.0-alpha.10",
"@storybook/addon-backgrounds": "5.0.0-alpha.10",
"@storybook/addon-centered": "5.0.0-alpha.10",
"@storybook/addon-knobs": "5.0.0-alpha.10",
"@storybook/addon-links": "5.0.0-alpha.10",
"@storybook/addon-notes": "5.0.0-alpha.10",
"@storybook/addon-options": "5.0.0-alpha.10",
"@storybook/addon-storyshots": "5.0.0-alpha.10",
"@storybook/addon-storysource": "5.0.0-alpha.10",
"@storybook/addon-viewport": "5.0.0-alpha.10",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/vue": "5.0.0-alpha.10",
"babel-core": "^7.0.0-bridge.0",
"babel-loader": "^8.0.4",
"cross-env": "^5.2.0",

View File

@ -11,5 +11,5 @@
"npmClient": "yarn",
"useWorkspaces": true,
"registry": "https://registry.npmjs.org",
"version": "5.0.0-alpha.9"
"version": "5.0.0-alpha.10"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addons",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook addons store",
"keywords": [
"storybook"
@ -20,8 +20,8 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/channels": "5.0.0-alpha.9",
"@storybook/client-logger": "5.0.0-alpha.9",
"@storybook/channels": "5.0.0-alpha.10",
"@storybook/client-logger": "5.0.0-alpha.10",
"global": "^4.3.2",
"util-deprecate": "^1.0.2"
},

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/channel-postmessage",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "",
"keywords": [
"storybook"
@ -20,7 +20,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/channels": "5.0.0-alpha.9",
"@storybook/channels": "5.0.0-alpha.10",
"global": "^4.3.2",
"telejson": "^1.0.0"
},

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/channel-websocket",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "",
"keywords": [
"storybook"
@ -20,7 +20,7 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/channels": "5.0.0-alpha.9",
"@storybook/channels": "5.0.0-alpha.10",
"global": "^4.3.2",
"json-fn": "^1.1.1"
},

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/channels",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/cli",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook's CLI - easiest method of adding storybook to your projects",
"keywords": [
"cli",
@ -29,7 +29,7 @@
"@babel/core": "^7.2.2",
"@babel/preset-env": "^7.3.1",
"@babel/register": "^7.0.0",
"@storybook/codemod": "5.0.0-alpha.9",
"@storybook/codemod": "5.0.0-alpha.10",
"chalk": "^2.4.1",
"commander": "^2.19.0",
"core-js": "^2.6.2",
@ -43,31 +43,31 @@
"update-notifier": "^2.5.0"
},
"devDependencies": {
"@storybook/addon-actions": "5.0.0-alpha.9",
"@storybook/addon-centered": "5.0.0-alpha.9",
"@storybook/addon-graphql": "5.0.0-alpha.9",
"@storybook/addon-info": "5.0.0-alpha.9",
"@storybook/addon-knobs": "5.0.0-alpha.9",
"@storybook/addon-links": "5.0.0-alpha.9",
"@storybook/addon-notes": "5.0.0-alpha.9",
"@storybook/addon-options": "5.0.0-alpha.9",
"@storybook/addon-storyshots": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/angular": "5.0.0-alpha.9",
"@storybook/channel-postmessage": "5.0.0-alpha.9",
"@storybook/channel-websocket": "5.0.0-alpha.9",
"@storybook/channels": "5.0.0-alpha.9",
"@storybook/ember": "5.0.0-alpha.9",
"@storybook/html": "5.0.0-alpha.9",
"@storybook/marko": "5.0.0-alpha.9",
"@storybook/mithril": "5.0.0-alpha.9",
"@storybook/polymer": "5.0.0-alpha.9",
"@storybook/preact": "5.0.0-alpha.9",
"@storybook/react": "5.0.0-alpha.9",
"@storybook/react-native": "5.0.0-alpha.9",
"@storybook/riot": "5.0.0-alpha.9",
"@storybook/ui": "5.0.0-alpha.9",
"@storybook/vue": "5.0.0-alpha.9"
"@storybook/addon-actions": "5.0.0-alpha.10",
"@storybook/addon-centered": "5.0.0-alpha.10",
"@storybook/addon-graphql": "5.0.0-alpha.10",
"@storybook/addon-info": "5.0.0-alpha.10",
"@storybook/addon-knobs": "5.0.0-alpha.10",
"@storybook/addon-links": "5.0.0-alpha.10",
"@storybook/addon-notes": "5.0.0-alpha.10",
"@storybook/addon-options": "5.0.0-alpha.10",
"@storybook/addon-storyshots": "5.0.0-alpha.10",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/angular": "5.0.0-alpha.10",
"@storybook/channel-postmessage": "5.0.0-alpha.10",
"@storybook/channel-websocket": "5.0.0-alpha.10",
"@storybook/channels": "5.0.0-alpha.10",
"@storybook/ember": "5.0.0-alpha.10",
"@storybook/html": "5.0.0-alpha.10",
"@storybook/marko": "5.0.0-alpha.10",
"@storybook/mithril": "5.0.0-alpha.10",
"@storybook/polymer": "5.0.0-alpha.10",
"@storybook/preact": "5.0.0-alpha.10",
"@storybook/react": "5.0.0-alpha.10",
"@storybook/react-native": "5.0.0-alpha.10",
"@storybook/riot": "5.0.0-alpha.10",
"@storybook/ui": "5.0.0-alpha.10",
"@storybook/vue": "5.0.0-alpha.10"
},
"publishConfig": {
"access": "public"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/client-logger",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/codemod",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "A collection of codemod scripts written with JSCodeshift",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/components",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Core Storybook Components",
"keywords": [
"storybook"
@ -20,11 +20,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/client-logger": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/router": "5.0.0-alpha.9",
"@storybook/theming": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/client-logger": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"@storybook/router": "5.0.0-alpha.10",
"@storybook/theming": "5.0.0-alpha.10",
"fuzzy-search": "^3.0.1",
"global": "^4.3.2",
"immer": "^1.12.0",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/core-events",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Event names used in storybook core",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/core",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"
@ -23,13 +23,13 @@
"@babel/plugin-proposal-object-rest-spread": "^7.3.1",
"@babel/plugin-syntax-dynamic-import": "^7.2.0",
"@babel/preset-env": "^7.3.1",
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/channel-postmessage": "5.0.0-alpha.9",
"@storybook/client-logger": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/node-logger": "5.0.0-alpha.9",
"@storybook/theming": "5.0.0-alpha.9",
"@storybook/ui": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/channel-postmessage": "5.0.0-alpha.10",
"@storybook/client-logger": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"@storybook/node-logger": "5.0.0-alpha.10",
"@storybook/theming": "5.0.0-alpha.10",
"@storybook/ui": "5.0.0-alpha.10",
"airbnb-js-shims": "^1 || ^2",
"autoprefixer": "^9.4.6",
"babel-plugin-emotion": "^10.0.5",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/node-logger",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/router",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Core Storybook Router",
"keywords": [
"storybook"
@ -20,7 +20,7 @@
},
"dependencies": {
"@reach/router": "^1.2.1",
"@storybook/theming": "5.0.0-alpha.9",
"@storybook/theming": "5.0.0-alpha.10",
"global": "^4.3.2",
"memoizerific": "^1.11.3",
"qs": "^6.5.2"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/theming",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Core Storybook Components",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/ui",
"version": "5.0.0-alpha.9",
"version": "5.0.0-alpha.10",
"description": "Core Storybook UI",
"keywords": [
"storybook"
@ -21,12 +21,12 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "5.0.0-alpha.9",
"@storybook/client-logger": "5.0.0-alpha.9",
"@storybook/components": "5.0.0-alpha.9",
"@storybook/core-events": "5.0.0-alpha.9",
"@storybook/router": "5.0.0-alpha.9",
"@storybook/theming": "5.0.0-alpha.9",
"@storybook/addons": "5.0.0-alpha.10",
"@storybook/client-logger": "5.0.0-alpha.10",
"@storybook/components": "5.0.0-alpha.10",
"@storybook/core-events": "5.0.0-alpha.10",
"@storybook/router": "5.0.0-alpha.10",
"@storybook/theming": "5.0.0-alpha.10",
"eventemitter3": "^3.1.0",
"fast-deep-equal": "^2.0.1",
"fuse.js": "^3.3.0",

View File

@ -62,7 +62,7 @@ export class Provider extends Component {
storyId,
};
const modules = [
this.modules = [
initChannel,
initAddons,
initLayout,
@ -74,10 +74,10 @@ export class Provider extends Component {
].map(initModule => initModule(apiData));
// Create our initial state by combining the initial state of all modules, then overlaying any saved state
const state = getInitialState(...modules.map(m => m.state));
const state = getInitialState(...this.modules.map(m => m.state));
// Get our API by combining the APIs exported by each module
const combo = Object.assign({ navigate }, ...modules.map(m => m.api));
const combo = Object.assign({ navigate }, ...this.modules.map(m => m.api));
const api = initProviderApi({ provider, store, api: combo });
@ -94,21 +94,20 @@ export class Provider extends Component {
api.selectStory(kind, story, rest);
});
// Now every module has had a chance to set its API, call init on each module which gives it
// a chance to do things that call other modules' APIs.
modules.forEach(({ init }) => {
if (init) {
init({
...apiData,
api,
});
}
});
this.state = state;
this.api = api;
}
componentDidMount() {
// Now every module has had a chance to set its API, call init on each module which gives it
// a chance to do things that call other modules' APIs.
this.modules.forEach(({ init }) => {
if (init) {
init({ api: this.api });
}
});
}
shouldComponentUpdate(nextProps, nextState) {
const { state: prevState, props: prevProps } = this;

View File

@ -13,6 +13,11 @@ export default function({ store }) {
const { notifications } = store.getState();
store.setState({ notifications: notifications.filter(n => n.id !== id) });
const notification = notifications.find(n => n.id === id);
if (notification && notification.onClear) {
notification.onClear();
}
},
};

View File

@ -1,34 +1,51 @@
import { logger } from '@storybook/client-logger';
import fetchLatestVersion from '../libs/fetch_latest_version';
import { fetch } from 'global';
import { version as currentVersion } from '../../package.json';
export default function({ store }) {
// Should we make this an api? Does it make sense to call it anywhere except the init function below?
function addVersion({ version, tag, info }) {
const { versions = {} } = store.getState();
versions[version] = { version, tag, info, current: currentVersion === version };
store.setState({ versions });
}
const checkInterval = 24 * 60 * 60 * 1000;
const versionsUrl = 'https://storybook.js.org/versions.json';
async function fetchLatestVersion() {
const fromFetch = await fetch(`${versionsUrl}?current=${currentVersion}`);
return fromFetch.json();
}
export default function({ store }) {
const {
versions: persistedVersions = {},
lastVersionCheck,
dismissedVersionNotification,
} = store.getState();
// Check to see if we have info about the current version persisted
const persistedCurrentVersion = Object.values(persistedVersions).find(
v => v.version === currentVersion
);
const state = {
currentVersion,
versions: {
[currentVersion]: {
...persistedVersions,
current: {
version: currentVersion,
current: true,
...(persistedCurrentVersion && { info: persistedCurrentVersion.info }),
},
},
lastVersionCheck,
dismissedVersionNotification,
};
const api = {
getCurrentVersion: () => {
const { versions } = store.getState();
return versions[currentVersion];
const {
versions: { current },
} = store.getState();
return current;
},
getLatestVersion: () => {
const { versions } = store.getState();
return Object.values(versions).find(v => v.tag === 'latest');
const {
versions: { latest },
} = store.getState();
return latest;
},
versionUpdateAvailable: () => {
const latestVersion = api.getLatestVersion();
@ -38,26 +55,40 @@ export default function({ store }) {
// Grab versions from the server/local storage right away
async function init({ api: { versionUpdateAvailable, getLatestVersion, addNotification } }) {
const { error, data } = await fetchLatestVersion(currentVersion);
const { versions = {} } = store.getState();
if (error) {
logger.warn(`Failed to fetch latest version from server: ${error}`);
return;
const now = Date.now();
if (!lastVersionCheck || now - lastVersionCheck > checkInterval) {
try {
const { latest } = await fetchLatestVersion(currentVersion);
await store.setState(
{ versions: { ...versions, latest }, lastVersionCheck: now },
{ persistence: 'permanent' }
);
} catch (error) {
logger.warn(`Failed to fetch latest version from server: ${error}`);
}
}
addVersion({
tag: 'latest',
...data.latest,
});
if (versionUpdateAvailable()) {
addNotification({
id: 'update',
level: 2,
link: '/settings/about',
icon: '🎉',
content: `There's a new version available: ${getLatestVersion().version}`,
});
const latestVersion = getLatestVersion().version;
if (latestVersion !== dismissedVersionNotification) {
addNotification({
id: 'update',
level: 2,
link: '/settings/about',
icon: '🎉',
content: `There's a new version available: ${latestVersion}`,
onClear() {
store.setState(
{ dismissedVersionNotification: latestVersion },
{ persistence: 'permanent' }
);
},
});
}
}
}

View File

@ -1,10 +1,14 @@
import { fetch } from 'global';
import initVersions from './versions';
import fetchLatestVersion from '../libs/fetch_latest_version';
jest.mock('../../package.json', () => ({
version: '3.0.0',
}));
jest.mock('global', () => ({
fetch: jest.fn(),
}));
function createMockStore() {
let state = {};
return {
@ -15,40 +19,40 @@ function createMockStore() {
};
}
jest.mock('../libs/fetch_latest_version');
const standardResponse = {
success: true,
data: {
json: jest.fn().mockResolvedValue({
latest: {
version: '4.0.0',
},
},
}),
};
jest.mock('@storybook/client-logger');
describe('versions API', () => {
it('sets initial state with current version', async () => {
const { state } = initVersions({});
const store = createMockStore();
const { state } = initVersions({ store });
expect(state.currentVersion).toBe('3.0.0');
expect(state.versions).toEqual({
'3.0.0': expect.objectContaining({
version: '3.0.0',
current: true,
}),
current: { version: '3.0.0' },
});
});
it('sets a update notification right away in the init function', async () => {
it('sets initial state based on persisted versions', async () => {
const store = createMockStore();
const { init, api, state: initialState } = initVersions({ store });
store.setState(initialState);
store.setState({
versions: {
current: { info: '3-info', version: '3.0.0' },
latest: { version: '4.0.0', info: '4-info' },
},
});
const { state } = initVersions({ store });
fetchLatestVersion.mockResolvedValue(standardResponse);
const addNotification = jest.fn();
await init({ api: { addNotification, ...api } });
expect(addNotification).toHaveBeenCalled();
expect(state.versions).toEqual({
current: { version: '3.0.0', info: '3-info' },
latest: { version: '4.0.0', info: '4-info' },
});
});
it('sets versions in the init function', async () => {
@ -56,35 +60,111 @@ describe('versions API', () => {
const { state: initialState, init, api } = initVersions({ store });
store.setState(initialState);
fetchLatestVersion.mockResolvedValue(standardResponse);
fetch.mockResolvedValueOnce(standardResponse);
store.setState.mockReset();
await init({ api: { addNotification: jest.fn(), ...api } });
expect(store.setState).toHaveBeenCalledWith({
versions: {
'4.0.0': expect.objectContaining({ version: '4.0.0', tag: 'latest' }),
'3.0.0': expect.objectContaining({ version: '3.0.0', current: true }),
expect(store.setState).toHaveBeenCalledWith(
{
versions: {
latest: { version: '4.0.0' },
current: { version: '3.0.0' },
},
lastVersionCheck: expect.any(Number),
},
});
{ persistence: 'permanent' }
);
});
it('handles failures in ther versions function', async () => {
it('sets a new latest version if old version was cached', async () => {
const store = createMockStore();
store.setState({
versions: {
current: { version: '3.0.0' },
latest: { version: '3.1.0' },
},
});
const { state: initialState, init, api } = initVersions({ store });
store.setState(initialState);
fetch.mockResolvedValueOnce(standardResponse);
store.setState.mockReset();
await init({ api: { addNotification: jest.fn(), ...api } });
expect(store.setState).toHaveBeenCalledWith(
{
versions: {
latest: { version: '4.0.0' },
current: { version: '3.0.0' },
},
lastVersionCheck: expect.any(Number),
},
{ persistence: 'permanent' }
);
});
it('does not set versions if check was recent', async () => {
const store = createMockStore();
store.setState({ lastVersionCheck: Date.now() });
const { state: initialState, init, api } = initVersions({ store });
store.setState(initialState);
store.setState.mockReset();
await init({ api: { addNotification: jest.fn(), ...api } });
expect(store.setState).not.toHaveBeenCalled();
});
it('handles failures in the versions function', async () => {
const store = createMockStore();
const { init, api, state: initialState } = initVersions({ store });
store.setState(initialState);
fetchLatestVersion.mockResolvedValue({
success: false,
error: 'error',
fetch.mockRejectedValueOnce(new Error('fetch failed'));
await init({ api: { addNotification: jest.fn(), ...api } });
expect(store.getState().versions).toEqual({
current: { version: '3.0.0' },
});
});
it('sets an update notification right away in the init function', async () => {
const store = createMockStore();
const { init, api, state: initialState } = initVersions({ store });
store.setState(initialState);
fetch.mockResolvedValueOnce(standardResponse);
const addNotification = jest.fn();
await init({ api: { addNotification, ...api } });
expect(addNotification).toHaveBeenCalled();
});
it('does not set an update notification if it has been dismissed', async () => {
const store = createMockStore();
store.setState({ dismissedVersionNotification: '4.0.0' });
const { init, api, state: initialState } = initVersions({ store });
store.setState(initialState);
fetch.mockResolvedValueOnce(standardResponse);
const addNotification = jest.fn();
await init({ api: { addNotification, ...api } });
expect(addNotification).not.toHaveBeenCalled();
});
expect(store.getState().versions).toEqual({
'3.0.0': expect.objectContaining({
version: '3.0.0',
current: true,
}),
it('persists a dismissed notification', async () => {
const store = createMockStore();
const { init, api, state: initialState } = initVersions({ store });
store.setState(initialState);
fetch.mockResolvedValueOnce(standardResponse);
let notification;
const addNotification = jest.fn().mockImplementation(n => {
notification = n;
});
await init({ api: { addNotification, ...api } });
notification.onClear();
expect(store.setState).toHaveBeenCalledWith(
{ dismissedVersionNotification: '4.0.0' },
{ persistence: 'permanent' }
);
});
it('getCurrentVersion works', async () => {
@ -92,12 +172,11 @@ describe('versions API', () => {
const { api, init, state: initialState } = initVersions({ store });
store.setState(initialState);
fetchLatestVersion.mockResolvedValue(standardResponse);
fetch.mockResolvedValueOnce(standardResponse);
await init({ api: { ...api, addNotification: jest.fn() } });
expect(api.getCurrentVersion()).toEqual({
version: '3.0.0',
current: true,
});
});
@ -106,12 +185,11 @@ describe('versions API', () => {
const { api, init, state: initialState } = initVersions({ store });
store.setState(initialState);
fetchLatestVersion.mockResolvedValue(standardResponse);
fetch.mockResolvedValueOnce(standardResponse);
await init({ api: { ...api, addNotification: jest.fn() } });
expect(api.getLatestVersion()).toMatchObject({
version: '4.0.0',
tag: 'latest',
});
});
@ -120,7 +198,7 @@ describe('versions API', () => {
const { api, init, state: initialState } = initVersions({ store });
store.setState(initialState);
fetchLatestVersion.mockResolvedValue(standardResponse);
fetch.mockResolvedValueOnce(standardResponse);
await init({ api: { ...api, addNotification: jest.fn() } });
expect(api.versionUpdateAvailable()).toEqual(true);

View File

@ -1,32 +0,0 @@
// TODO: figure out a way to share this code with the CLI (lib/core/src/server/build-dev.js)
import { localStorage, fetch } from 'global';
const versionsUrl = 'https://storybook.js.org/versions.json';
const checkInterval = 24 * 60 * 60 * 1000;
export default async function fetchLatestVersion(currentVersion) {
let result;
const time = Date.now();
try {
const cacheItem = localStorage.getItem('lastUpdateCheck');
const fromCache = cacheItem && JSON.parse(cacheItem);
// if last check was more then 24h ago
if (!fromCache || time - fromCache.time > checkInterval) {
const fromFetch = await Promise.race([
fetch(`${versionsUrl}?current=${currentVersion}`),
// if fetch is too slow, we won't wait for it
new Promise((res, rej) => setTimeout(rej, 1500)),
]);
const data = await fromFetch.json();
result = { success: true, data, time };
await localStorage.setItem('lastUpdateCheck', JSON.stringify(result));
} else {
result = fromCache;
}
} catch (error) {
result = { success: false, error, time };
}
return result;
}