diff --git a/.babelrc.js b/.babelrc.js index c479bb74c977..b404943ae4f9 100644 --- a/.babelrc.js +++ b/.babelrc.js @@ -1,5 +1,9 @@ module.exports = { - presets: ['@babel/preset-env', '@babel/preset-react', '@babel/preset-flow'], + presets: [ + ['@babel/preset-env', { shippedProposals: true }], + '@babel/preset-react', + '@babel/preset-flow', + ], plugins: [ ['emotion', { sourceMap: true, autoLabel: true }], 'babel-plugin-add-react-displayname', @@ -7,6 +11,7 @@ module.exports = { '@babel/plugin-syntax-dynamic-import', '@babel/plugin-proposal-object-rest-spread', '@babel/plugin-proposal-class-properties', + '@babel/plugin-proposal-object-rest-spread', '@babel/plugin-proposal-export-default-from', [ '@babel/plugin-transform-runtime', @@ -23,7 +28,7 @@ module.exports = { overrides: [ { test: './examples/vue-kitchen-sink', - presets: ['@babel/preset-env', 'babel-preset-vue'], + presets: [['@babel/preset-env', { shippedProposals: true }], 'babel-preset-vue'], }, { test: [ diff --git a/.eslintignore b/.eslintignore index 73f2bb84a21b..e8aacb9b8fa0 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1,5 @@ dist +lib/**/dll build coverage node_modules diff --git a/.eslintrc.js b/.eslintrc.js index 35e07c5ff1e0..7b90952baf36 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -82,6 +82,12 @@ module.exports = { ], }, overrides: [ + { + files: ['**/__tests__/**', '**/*.test.js/**', '**/*.spec.js/**'], + rules: { + 'import/no-extraneous-dependencies': ignore, + }, + }, { files: ['**/react-native*/**', '**/REACT_NATIVE*/**', '**/crna*/**'], rules: { 'jsx-a11y/accessible-emoji': ignore }, diff --git a/.gitignore b/.gitignore index a1bdccd96d11..0ed76d9dcdc0 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ integration/__image_snapshots__/__diff_output__ .jest-test-results.json /examples/cra-kitchen-sink/src/__image_snapshots__/__diff_output__/ lib/*.jar +lib/**/dll diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Bootstrap.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Bootstrap.kt index f18d4aaf8682..f609d196a3ea 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Bootstrap.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Bootstrap.kt @@ -17,6 +17,7 @@ object OpenSourceProjects_Storybook_Bootstrap : BuildType({ addons/storyshots/*/dist/** => dist.zip/addons/storyshots app/*/dist/** => dist.zip/app lib/*/dist/** => dist.zip/lib + lib/core/dll/** => dist.zip/lib/core/dll """.trimIndent() vcs { diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Examples.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Examples.kt index 53ee4bd40753..2fe164bb30e9 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Examples.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/OpenSourceProjects_Storybook_Examples.kt @@ -12,10 +12,10 @@ object OpenSourceProjects_Storybook_Examples : BuildType({ name = "Examples" artifactRules = """ -${StorybookApp.values().map { it.artifactPath }.joinToString("\n")} -examples/official-storybook/storybook-static => official.zip -examples/official-storybook/image-snapshots/__image_snapshots__ => image-snapshots -""".trimIndent() + ${StorybookApp.values().map { it.artifactPath }.joinToString("\n")} + examples/official-storybook/storybook-static => official.zip + examples/official-storybook/image-snapshots/__image_snapshots__ => image-snapshots + """.trimIndent() vcs { root(OpenSourceProjects_Storybook.vcsRoots.OpenSourceProjects_Storybook_HttpsGithubComStorybooksStorybookRefsHeadsMaster) diff --git a/.teamcity/OpenSourceProjects_Storybook/buildTypes/StorybookApp.kt b/.teamcity/OpenSourceProjects_Storybook/buildTypes/StorybookApp.kt index 93a9b13b25d7..3f043631ceea 100644 --- a/.teamcity/OpenSourceProjects_Storybook/buildTypes/StorybookApp.kt +++ b/.teamcity/OpenSourceProjects_Storybook/buildTypes/StorybookApp.kt @@ -82,7 +82,9 @@ enum class StorybookApp(val appName: String, val exampleDir: String, val merged: } artifacts { - artifactRules = "dist.zip!**" + artifactRules = """ + dist.zip!** + """.trimIndent() } } } diff --git a/CHANGELOG.md b/CHANGELOG.md index 558573fbe631..31ad0b367065 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,23 @@ +## 4.1.0-alpha.9 (November 29, 2018) + +### Features + +* UI: Accessible success/fail colors ([#4843](https://github.com/storybooks/storybook/pull/4843)) +* React-native: add option to set keyboarVerticalOffset ([#4862](https://github.com/storybooks/storybook/pull/4862)) +* Addon-CSSResources: new adddon to dynamically add/remove css ([#4622](https://github.com/storybooks/storybook/pull/4622)) + +### Bug Fixes + +* Core: Add try, catch for history API for IE11 ([#4870](https://github.com/storybooks/storybook/pull/4870)) +* Core: Don't copy index.html on build-storybook ([#4856](https://github.com/storybooks/storybook/pull/4856)) +* React-native: properly set initial story out of Async Storage. ([#4872](https://github.com/storybooks/storybook/pull/4872)) +* React-native: show webpack-related build issues ([#4883](https://github.com/storybooks/storybook/pull/4883)) +* Addon-info: fix docgen description display ([#4685](https://github.com/storybooks/storybook/pull/4685)) + +### Dependency Upgrades + +* Bump svelte to 2.15.3, addresses !4478 ([#4842](https://github.com/storybooks/storybook/pull/4842)) + ## 4.1.0-alpha.8 (November 25, 2018) ### Features diff --git a/addons/a11y/package.json b/addons/a11y/package.json index b7f851190b75..2782a8972944 100644 --- a/addons/a11y/package.json +++ b/addons/a11y/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-a11y", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "a11y addon for storybook", "keywords": [ "a11y", @@ -29,10 +29,10 @@ }, "dependencies": { "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/client-logger": "4.1.0-alpha.8", - "@storybook/components": "4.1.0-alpha.8", - "@storybook/core-events": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/client-logger": "4.1.0-alpha.9", + "@storybook/components": "4.1.0-alpha.9", + "@storybook/core-events": "4.1.0-alpha.9", "axe-core": "^3.1.2", "global": "^4.3.2", "prop-types": "^15.6.2" diff --git a/addons/actions/package.json b/addons/actions/package.json index e310a3b7a6ee..f0184b80591f 100644 --- a/addons/actions/package.json +++ b/addons/actions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-actions", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Action Logger addon for storybook", "keywords": [ "storybook" @@ -26,9 +26,9 @@ "@emotion/core": "^0.13.1", "@emotion/provider": "^0.11.2", "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/components": "4.1.0-alpha.8", - "@storybook/core-events": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/components": "4.1.0-alpha.9", + "@storybook/core-events": "4.1.0-alpha.9", "fast-deep-equal": "^2.0.1", "global": "^4.3.2", "lodash": "^4.17.11", diff --git a/addons/backgrounds/package.json b/addons/backgrounds/package.json index 1ee8e398334a..8b1190a3f51c 100644 --- a/addons/backgrounds/package.json +++ b/addons/backgrounds/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-backgrounds", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "A storybook addon to show different backgrounds for your preview", "keywords": [ "addon", @@ -28,9 +28,10 @@ }, "dependencies": { "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/components": "4.1.0-alpha.8", - "@storybook/core-events": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/components": "4.1.0-alpha.9", + "@storybook/core-events": "4.1.0-alpha.9", + "eventemitter3": "^3.1.0", "global": "^4.3.2", "prop-types": "^15.6.2", "util-deprecate": "^1.0.2" diff --git a/addons/backgrounds/src/__tests__/BackgroundPanel.js b/addons/backgrounds/src/__tests__/BackgroundPanel.js index e43c82d46bd4..f41ae7d4eecd 100644 --- a/addons/backgrounds/src/__tests__/BackgroundPanel.js +++ b/addons/backgrounds/src/__tests__/BackgroundPanel.js @@ -1,6 +1,6 @@ import React from 'react'; import { shallow, mount } from 'enzyme'; -import EventEmitter from 'events'; +import EventEmitter from 'eventemitter3'; import Panel from '../Panel'; import Events from '../constants'; diff --git a/addons/centered/package.json b/addons/centered/package.json index 32e0b9da2258..ea7c23d1d4eb 100644 --- a/addons/centered/package.json +++ b/addons/centered/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-centered", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook decorator to center components", "keywords": [ "addon", diff --git a/addons/cssresources/package.json b/addons/cssresources/package.json index 2bf8bd19dc01..90149c3de515 100644 --- a/addons/cssresources/package.json +++ b/addons/cssresources/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-cssresources", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "A storybook addon to switch between css resources at runtime for your story", "keywords": [ "addon", @@ -9,6 +9,9 @@ "storybook" ], "homepage": "https://storybook.js.org", + "publishConfig": { + "access": "public" + }, "bugs": { "url": "https://github.com/storybooks/storybook/issues" }, @@ -25,9 +28,9 @@ }, "dependencies": { "@emotion/styled": "0.10.6", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/components": "4.1.0-alpha.8", - "@storybook/core-events": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/components": "4.1.0-alpha.9", + "@storybook/core-events": "4.1.0-alpha.9", "global": "^4.3.2", "prop-types": "^15.6.2", "react-syntax-highlighter": "^10.0.0", diff --git a/addons/events/package.json b/addons/events/package.json index e2eed24aeb8a..8bcdaa5b9eca 100644 --- a/addons/events/package.json +++ b/addons/events/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-events", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Add events to your Storybook stories.", "keywords": [ "addon", @@ -27,8 +27,8 @@ }, "dependencies": { "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/core-events": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/core-events": "4.1.0-alpha.9", "format-json": "^1.0.3", "prop-types": "^15.6.2", "react-lifecycles-compat": "^3.0.4", diff --git a/addons/google-analytics/package.json b/addons/google-analytics/package.json index 459b49eeda7e..d0c08ab0234c 100644 --- a/addons/google-analytics/package.json +++ b/addons/google-analytics/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-google-analytics", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook addon for google analytics", "keywords": [ "addon", @@ -24,7 +24,7 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", "global": "^4.3.2", "react-ga": "^2.5.3" } diff --git a/addons/graphql/package.json b/addons/graphql/package.json index 9fc2e3b67d18..c8ab934a9f49 100644 --- a/addons/graphql/package.json +++ b/addons/graphql/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-graphql", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook addon to display the GraphiQL IDE", "keywords": [ "addon", diff --git a/addons/info/package.json b/addons/info/package.json index dac813e401d1..2a4b652bc34f 100644 --- a/addons/info/package.json +++ b/addons/info/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-info", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "A Storybook addon to show additional information for your stories.", "keywords": [ "addon", @@ -25,9 +25,9 @@ }, "dependencies": { "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/client-logger": "4.1.0-alpha.8", - "@storybook/components": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/client-logger": "4.1.0-alpha.9", + "@storybook/components": "4.1.0-alpha.9", "core-js": "2.5.7", "global": "^4.3.2", "marksy": "^6.1.0", diff --git a/addons/jest/package.json b/addons/jest/package.json index 09d790290ca7..31cfb453aaa5 100644 --- a/addons/jest/package.json +++ b/addons/jest/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-jest", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "React storybook addon that show component jest report", "keywords": [ "addon", @@ -31,8 +31,8 @@ }, "dependencies": { "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/components": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/components": "4.1.0-alpha.9", "global": "^4.3.2", "prop-types": "^15.6.2", "upath": "^1.1.0", diff --git a/addons/knobs/package.json b/addons/knobs/package.json index 6dacc2a26f93..3210d28763c9 100644 --- a/addons/knobs/package.json +++ b/addons/knobs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-knobs", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook Addon Prop Editor Component", "keywords": [ "addon", @@ -25,9 +25,9 @@ }, "dependencies": { "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/components": "4.1.0-alpha.8", - "@storybook/core-events": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/components": "4.1.0-alpha.9", + "@storybook/core-events": "4.1.0-alpha.9", "copy-to-clipboard": "^3.0.8", "escape-html": "^1.0.3", "fast-deep-equal": "^2.0.1", diff --git a/addons/links/package.json b/addons/links/package.json index 5ccd5644540d..476bdf6442a6 100644 --- a/addons/links/package.json +++ b/addons/links/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-links", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Story Links addon for storybook", "keywords": [ "addon", @@ -24,9 +24,9 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/components": "4.1.0-alpha.8", - "@storybook/core-events": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/components": "4.1.0-alpha.9", + "@storybook/core-events": "4.1.0-alpha.9", "global": "^4.3.2", "prop-types": "^15.6.2" }, diff --git a/addons/notes/package.json b/addons/notes/package.json index 462c23e5d232..3dbb8fcb6eef 100644 --- a/addons/notes/package.json +++ b/addons/notes/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-notes", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Write notes for your Storybook stories.", "keywords": [ "addon", @@ -26,9 +26,9 @@ }, "dependencies": { "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/components": "4.1.0-alpha.8", - "@storybook/core-events": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/components": "4.1.0-alpha.9", + "@storybook/core-events": "4.1.0-alpha.9", "markdown-to-jsx": "^6.7.4", "prop-types": "^15.6.2" }, diff --git a/addons/ondevice-backgrounds/package.json b/addons/ondevice-backgrounds/package.json index d59f8ed2238f..f48de7a2daf0 100644 --- a/addons/ondevice-backgrounds/package.json +++ b/addons/ondevice-backgrounds/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-ondevice-backgrounds", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "A storybook addon to show different backgrounds for your preview", "keywords": [ "addon", @@ -26,7 +26,7 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", "prop-types": "^15.6.2" }, "peerDependencies": { diff --git a/addons/ondevice-knobs/package.json b/addons/ondevice-knobs/package.json index f255b159045d..176a895f3fd2 100644 --- a/addons/ondevice-knobs/package.json +++ b/addons/ondevice-knobs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-ondevice-knobs", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Display storybook story knobs on your deviced.", "keywords": [ "addon", @@ -23,7 +23,7 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", "deep-equal": "^1.0.1", "prop-types": "^15.6.2", "react-native-color-picker": "^0.4.0", @@ -32,7 +32,7 @@ "react-native-switch": "^1.5.0" }, "peerDependencies": { - "@storybook/addon-knobs": "4.1.0-alpha.8", + "@storybook/addon-knobs": "4.1.0-alpha.9", "react": "*", "react-native": "*" } diff --git a/addons/ondevice-notes/package.json b/addons/ondevice-notes/package.json index 01611f967167..7b1c7bb51fde 100644 --- a/addons/ondevice-notes/package.json +++ b/addons/ondevice-notes/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-ondevice-notes", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Write notes for your Storybook stories.", "keywords": [ "addon", @@ -21,7 +21,7 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", "prop-types": "^15.6.2", "react-native-simple-markdown": "^1.1.0" }, diff --git a/addons/options/README.md b/addons/options/README.md index e678f0eb9dfd..4de59b4ac8db 100644 --- a/addons/options/README.md +++ b/addons/options/README.md @@ -137,7 +137,7 @@ To install type definitions: `npm install -D @types/storybook__addon-options` Make sure you also have the type definitions installed for the following libs: - - node - - react +- node +- react You can install them using `npm install -D @types/node @types/react`, assuming you are using Typescript >2.0. diff --git a/addons/options/package.json b/addons/options/package.json index 2446436aee16..7698db65c715 100644 --- a/addons/options/package.json +++ b/addons/options/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-options", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Options addon for storybook", "keywords": [ "addon", @@ -23,7 +23,7 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", "util-deprecate": "^1.0.2" }, "peerDependencies": { diff --git a/addons/storyshots/storyshots-core/package.json b/addons/storyshots/storyshots-core/package.json index e05e79c91271..a90b42b7ef2b 100644 --- a/addons/storyshots/storyshots-core/package.json +++ b/addons/storyshots/storyshots-core/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storyshots", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "StoryShots is a Jest Snapshot Testing Addon for Storybook.", "keywords": [ "addon", @@ -28,17 +28,17 @@ }, "dependencies": { "@babel/runtime": "^7.1.2", - "@storybook/addons": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", "glob": "^7.1.3", "global": "^4.3.2", "jest-specific-snapshot": "^1.0.0", "read-pkg-up": "^4.0.0" }, "devDependencies": { - "@storybook/addon-actions": "4.1.0-alpha.8", - "@storybook/addon-links": "4.1.0-alpha.8", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/react": "4.1.0-alpha.8", + "@storybook/addon-actions": "4.1.0-alpha.9", + "@storybook/addon-links": "4.1.0-alpha.9", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/react": "4.1.0-alpha.9", "enzyme-to-json": "^3.3.4", "react": "^16.6.0" } diff --git a/addons/storyshots/storyshots-puppeteer/package.json b/addons/storyshots/storyshots-puppeteer/package.json index 3a43d102c91a..1afc7d1f0f84 100644 --- a/addons/storyshots/storyshots-puppeteer/package.json +++ b/addons/storyshots/storyshots-puppeteer/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storyshots-puppeteer", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Image snappshots addition to StoryShots base on puppeteer", "keywords": [ "addon", @@ -25,11 +25,11 @@ }, "dependencies": { "@babel/runtime": "^7.1.2", - "@storybook/node-logger": "4.1.0-alpha.8", + "@storybook/node-logger": "4.1.0-alpha.9", "jest-image-snapshot": "^2.6.0", "puppeteer": "^1.9.0" }, "peerDependencies": { - "@storybook/addon-storyshots": "4.1.0-alpha.8" + "@storybook/addon-storyshots": "4.1.0-alpha.9" } } diff --git a/addons/storysource/package.json b/addons/storysource/package.json index 49fd232c2be1..937a861df27b 100644 --- a/addons/storysource/package.json +++ b/addons/storysource/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storysource", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Stories addon for storybook", "keywords": [ "addon", @@ -25,8 +25,8 @@ }, "dependencies": { "@babel/runtime": "^7.1.2", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/components": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/components": "4.1.0-alpha.9", "estraverse": "^4.2.0", "loader-utils": "^1.1.0", "prettier": "^1.14.3", diff --git a/addons/viewport/package.json b/addons/viewport/package.json index 48911270a143..43bd38a6f94d 100644 --- a/addons/viewport/package.json +++ b/addons/viewport/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-viewport", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook addon to change the viewport size to mobile", "keywords": [ "addon", @@ -24,9 +24,9 @@ }, "dependencies": { "@emotion/styled": "^0.10.6", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/components": "4.1.0-alpha.8", - "@storybook/core-events": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/components": "4.1.0-alpha.9", + "@storybook/core-events": "4.1.0-alpha.9", "global": "^4.3.2", "prop-types": "^15.6.2", "util-deprecate": "^1.0.2" diff --git a/app/angular/package.json b/app/angular/package.json index b48a79edf600..d6735803d31e 100644 --- a/app/angular/package.json +++ b/app/angular/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/angular", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook for Angular: Develop Angular Components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -29,8 +29,8 @@ }, "dependencies": { "@babel/runtime": "^7.1.2", - "@storybook/core": "4.1.0-alpha.8", - "@storybook/node-logger": "4.1.0-alpha.8", + "@storybook/core": "4.1.0-alpha.9", + "@storybook/node-logger": "4.1.0-alpha.9", "angular2-template-loader": "^0.6.2", "core-js": "^2.5.7", "fork-ts-checker-webpack-plugin": "^0.4.14", diff --git a/app/ember/package.json b/app/ember/package.json index 71af9744c257..c6ade3f2c895 100644 --- a/app/ember/package.json +++ b/app/ember/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/ember", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.", "homepage": "https://github.com/storybooks/storybook/tree/master/app/ember", "publishConfig": { @@ -27,7 +27,7 @@ "dependencies": { "@babel/runtime": "^7.1.2", "@ember/test-helpers": "^1.0.0", - "@storybook/core": "4.1.0-alpha.8", + "@storybook/core": "4.1.0-alpha.9", "common-tags": "^1.8.0", "global": "^4.3.2", "react": "^16.6.0", diff --git a/app/html/package.json b/app/html/package.json index ca6b4de8c18e..eb3d4a164532 100644 --- a/app/html/package.json +++ b/app/html/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -28,7 +28,7 @@ }, "dependencies": { "@babel/runtime": "^7.1.2", - "@storybook/core": "4.1.0-alpha.8", + "@storybook/core": "4.1.0-alpha.9", "common-tags": "^1.8.0", "global": "^4.3.2", "html-loader": "^0.5.5", diff --git a/app/marko/package.json b/app/marko/package.json index 95758035eb8f..0de392162515 100644 --- a/app/marko/package.json +++ b/app/marko/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/marko", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook for Marko: Develop Marko Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -29,7 +29,7 @@ }, "dependencies": { "@babel/runtime": "^7.1.2", - "@storybook/core": "4.1.0-alpha.8", + "@storybook/core": "4.1.0-alpha.9", "common-tags": "^1.8.0", "global": "^4.3.2", "marko-loader": "^1.3.3", diff --git a/app/mithril/package.json b/app/mithril/package.json index e41849df12e1..2f6ce9a131da 100644 --- a/app/mithril/package.json +++ b/app/mithril/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/mithril", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook for Mithril: Develop Mithril Component in isolation.", "keywords": [ "storybook" @@ -30,7 +30,7 @@ "dependencies": { "@babel/plugin-transform-react-jsx": "^7.0.0", "@babel/runtime": "^7.1.2", - "@storybook/core": "4.1.0-alpha.8", + "@storybook/core": "4.1.0-alpha.9", "common-tags": "^1.8.0", "global": "^4.3.2", "react": "^16.6.0", diff --git a/app/polymer/package.json b/app/polymer/package.json index 8d4601bc0342..6cf6a52200a4 100644 --- a/app/polymer/package.json +++ b/app/polymer/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/polymer", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook for Polymer: Develop Polymer components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -29,7 +29,7 @@ "dependencies": { "@babel/polyfill": "^7.0.0", "@babel/runtime": "^7.1.2", - "@storybook/core": "4.1.0-alpha.8", + "@storybook/core": "4.1.0-alpha.9", "@webcomponents/webcomponentsjs": "^1.2.0", "common-tags": "^1.8.0", "global": "^4.3.2", diff --git a/app/react-native/package.json b/app/react-native/package.json index cc25c4f8ce25..46cc5fd81b99 100644 --- a/app/react-native/package.json +++ b/app/react-native/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react-native", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "A better way to develop React Native Components for your app", "keywords": [ "react", @@ -28,12 +28,12 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/channel-websocket": "4.1.0-alpha.8", - "@storybook/channels": "4.1.0-alpha.8", - "@storybook/core": "4.1.0-alpha.8", - "@storybook/core-events": "4.1.0-alpha.8", - "@storybook/ui": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/channel-websocket": "4.1.0-alpha.9", + "@storybook/channels": "4.1.0-alpha.9", + "@storybook/core": "4.1.0-alpha.9", + "@storybook/core-events": "4.1.0-alpha.9", + "@storybook/ui": "4.1.0-alpha.9", "babel-loader": "^8.0.4", "babel-plugin-macros": "^2.4.2", "babel-plugin-syntax-async-functions": "^6.13.0", diff --git a/app/react/package.json b/app/react/package.json index bac12d10e43b..c1fa81378938 100644 --- a/app/react/package.json +++ b/app/react/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -33,8 +33,8 @@ "@babel/preset-react": "^7.0.0", "@babel/runtime": "^7.1.2", "@emotion/styled": "^0.10.6", - "@storybook/core": "4.1.0-alpha.8", - "@storybook/node-logger": "4.1.0-alpha.8", + "@storybook/core": "4.1.0-alpha.9", + "@storybook/node-logger": "4.1.0-alpha.9", "@svgr/webpack": "^4.0.3", "babel-plugin-named-asset-import": "^0.2.3", "babel-plugin-react-docgen": "^2.0.0", diff --git a/app/riot/package.json b/app/riot/package.json index afcddfc52344..acccd27113e6 100644 --- a/app/riot/package.json +++ b/app/riot/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/riot", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook for riot.js: View riot snippets in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -28,7 +28,7 @@ }, "dependencies": { "@babel/runtime": "^7.1.2", - "@storybook/core": "4.1.0-alpha.8", + "@storybook/core": "4.1.0-alpha.9", "common-tags": "^1.8.0", "global": "^4.3.2", "raw-loader": "^0.5.1", diff --git a/app/svelte/package.json b/app/svelte/package.json index bc35ec6322ca..4ca2b0e8e7e2 100644 --- a/app/svelte/package.json +++ b/app/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -28,7 +28,7 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/core": "4.1.0-alpha.8", + "@storybook/core": "4.1.0-alpha.9", "common-tags": "^1.8.0", "global": "^4.3.2", "react": "^16.6.0", diff --git a/app/vue/package.json b/app/vue/package.json index 1feec061edeb..09908c51d7eb 100644 --- a/app/vue/package.json +++ b/app/vue/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook for Vue: Develop Vue Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -29,7 +29,7 @@ }, "dependencies": { "@babel/runtime": "^7.1.2", - "@storybook/core": "4.1.0-alpha.8", + "@storybook/core": "4.1.0-alpha.9", "common-tags": "^1.8.0", "global": "^4.3.2", "react": "^16.6.0", diff --git a/docs/src/pages/configurations/typescript-config/index.md b/docs/src/pages/configurations/typescript-config/index.md index d30d947d4188..744baf84241d 100644 --- a/docs/src/pages/configurations/typescript-config/index.md +++ b/docs/src/pages/configurations/typescript-config/index.md @@ -82,6 +82,7 @@ When using latest create-react-app (CRA 2.0), Babel 7 has native TypeScript supp ```bash yarn add -D @types/storybook__react # typings ``` + ### Setting up TypeScript to work with Storybook We first have to use the [custom Webpack config in full control mode, extending default configs](/configurations/custom-webpack-config/#full-control-mode--default) by creating a `webpack.config.js` file in our Storybook configuration directory (by default, it’s `.storybook`): @@ -92,14 +93,16 @@ module.exports = (baseConfig, env, config) => { test: /\.(ts|tsx)$/, loader: require.resolve('babel-loader'), options: { - presets: [['react-app', { flow: false, typescript: true }]] - } + presets: [['react-app', { flow: false, typescript: true }]], + }, }); config.resolve.extensions.push('.ts', '.tsx'); return config; }; ``` + ### `tsconfig.json` + The default `tsconfig.json` that comes with CRA works great. If your stories are outside the `src` folder, for example the `stories` folder in root, then `rootDirs": ["src", "stories"]` needs to be added to be added to `compilerOptions` so it knows what folders to compile. Make sure `jsx` is set to preserve. Should be unchanged. ## Import tsx stories @@ -109,9 +112,12 @@ Change `config.ts` inside the Storybook config directory (by default, it’s `.s ```js // automatically import all files ending in *.stories.js const req = require.context('../stories', true, /.stories.tsx$/); -configure(() => { - req.keys().forEach(filename => req(filename)); -}, module); + +function loadStories() { + req.keys().forEach(req); +} + +configure(loadStories, module); ``` ## Using TypeScript with the TSDocgen addon @@ -224,12 +230,12 @@ This is an example `jest.config.js` file for jest: ```js module.exports = { - transform: { - ".(ts|tsx)": "ts-jest", - }, - testPathIgnorePatterns: ["/node_modules/", "/lib/"], - testRegex: "(/test/.*|\\.(test|spec))\\.(ts|tsx|js)$", - moduleFileExtensions: ["ts", "tsx", "js", "json"], + transform: { + '.(ts|tsx)': 'ts-jest', + }, + testPathIgnorePatterns: ['/node_modules/', '/lib/'], + testRegex: '(/test/.*|\\.(test|spec))\\.(ts|tsx|js)$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'json'], }; ``` diff --git a/examples/angular-cli/package.json b/examples/angular-cli/package.json index bd9196246faf..5a95725f3558 100644 --- a/examples/angular-cli/package.json +++ b/examples/angular-cli/package.json @@ -1,6 +1,6 @@ { "name": "angular-cli", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "private": true, "license": "MIT", "scripts": { @@ -33,18 +33,18 @@ "@angular-devkit/build-angular": "^0.10.3", "@angular/cli": "^7.0.3", "@angular/compiler-cli": "^7.0.1", - "@storybook/addon-actions": "4.1.0-alpha.8", - "@storybook/addon-backgrounds": "4.1.0-alpha.8", - "@storybook/addon-centered": "4.1.0-alpha.8", - "@storybook/addon-jest": "4.1.0-alpha.8", - "@storybook/addon-knobs": "4.1.0-alpha.8", - "@storybook/addon-links": "4.1.0-alpha.8", - "@storybook/addon-notes": "4.1.0-alpha.8", - "@storybook/addon-options": "4.1.0-alpha.8", - "@storybook/addon-storyshots": "4.1.0-alpha.8", - "@storybook/addon-storysource": "4.1.0-alpha.8", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/angular": "4.1.0-alpha.8", + "@storybook/addon-actions": "4.1.0-alpha.9", + "@storybook/addon-backgrounds": "4.1.0-alpha.9", + "@storybook/addon-centered": "4.1.0-alpha.9", + "@storybook/addon-jest": "4.1.0-alpha.9", + "@storybook/addon-knobs": "4.1.0-alpha.9", + "@storybook/addon-links": "4.1.0-alpha.9", + "@storybook/addon-notes": "4.1.0-alpha.9", + "@storybook/addon-options": "4.1.0-alpha.9", + "@storybook/addon-storyshots": "4.1.0-alpha.9", + "@storybook/addon-storysource": "4.1.0-alpha.9", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/angular": "4.1.0-alpha.9", "@types/core-js": "^2.5.0", "@types/jest": "^23.3.9", "@types/node": "~10.12.1", diff --git a/examples/cra-kitchen-sink/package.json b/examples/cra-kitchen-sink/package.json index f3dd96dda4f7..1781cfa85df1 100644 --- a/examples/cra-kitchen-sink/package.json +++ b/examples/cra-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "cra-kitchen-sink", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "private": true, "scripts": { "build": "react-scripts build", @@ -19,21 +19,21 @@ }, "devDependencies": { "@emotion/snapshot-serializer": "^0.8.2", - "@storybook/addon-a11y": "4.1.0-alpha.8", - "@storybook/addon-actions": "4.1.0-alpha.8", - "@storybook/addon-backgrounds": "4.1.0-alpha.8", - "@storybook/addon-centered": "4.1.0-alpha.8", - "@storybook/addon-events": "4.1.0-alpha.8", - "@storybook/addon-info": "4.1.0-alpha.8", - "@storybook/addon-jest": "4.1.0-alpha.8", - "@storybook/addon-knobs": "4.1.0-alpha.8", - "@storybook/addon-links": "4.1.0-alpha.8", - "@storybook/addon-notes": "4.1.0-alpha.8", - "@storybook/addon-options": "4.1.0-alpha.8", - "@storybook/addon-storyshots": "4.1.0-alpha.8", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/client-logger": "4.1.0-alpha.8", - "@storybook/react": "4.1.0-alpha.8", + "@storybook/addon-a11y": "4.1.0-alpha.9", + "@storybook/addon-actions": "4.1.0-alpha.9", + "@storybook/addon-backgrounds": "4.1.0-alpha.9", + "@storybook/addon-centered": "4.1.0-alpha.9", + "@storybook/addon-events": "4.1.0-alpha.9", + "@storybook/addon-info": "4.1.0-alpha.9", + "@storybook/addon-jest": "4.1.0-alpha.9", + "@storybook/addon-knobs": "4.1.0-alpha.9", + "@storybook/addon-links": "4.1.0-alpha.9", + "@storybook/addon-notes": "4.1.0-alpha.9", + "@storybook/addon-options": "4.1.0-alpha.9", + "@storybook/addon-storyshots": "4.1.0-alpha.9", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/client-logger": "4.1.0-alpha.9", + "@storybook/react": "4.1.0-alpha.9", "enzyme": "^3.7.0", "enzyme-adapter-react-16": "^1.6.0", "enzyme-to-json": "^3.3.4", diff --git a/examples/ember-cli/package.json b/examples/ember-cli/package.json index c7e5e37d985d..cd2a4ef99cee 100644 --- a/examples/ember-cli/package.json +++ b/examples/ember-cli/package.json @@ -1,6 +1,6 @@ { "name": "ember-example", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "private": true, "scripts": { "build": "ember build", @@ -11,18 +11,18 @@ }, "devDependencies": { "@babel/core": "^7.1.2", - "@storybook/addon-a11y": "4.1.0-alpha.8", - "@storybook/addon-actions": "4.1.0-alpha.8", - "@storybook/addon-backgrounds": "4.1.0-alpha.8", - "@storybook/addon-centered": "4.1.0-alpha.8", - "@storybook/addon-knobs": "4.1.0-alpha.8", - "@storybook/addon-links": "4.1.0-alpha.8", - "@storybook/addon-notes": "4.1.0-alpha.8", - "@storybook/addon-options": "4.1.0-alpha.8", - "@storybook/addon-storysource": "4.1.0-alpha.8", - "@storybook/addon-viewport": "4.1.0-alpha.8", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/ember": "4.1.0-alpha.8", + "@storybook/addon-a11y": "4.1.0-alpha.9", + "@storybook/addon-actions": "4.1.0-alpha.9", + "@storybook/addon-backgrounds": "4.1.0-alpha.9", + "@storybook/addon-centered": "4.1.0-alpha.9", + "@storybook/addon-knobs": "4.1.0-alpha.9", + "@storybook/addon-links": "4.1.0-alpha.9", + "@storybook/addon-notes": "4.1.0-alpha.9", + "@storybook/addon-options": "4.1.0-alpha.9", + "@storybook/addon-storysource": "4.1.0-alpha.9", + "@storybook/addon-viewport": "4.1.0-alpha.9", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/ember": "4.1.0-alpha.9", "babel-loader": "^8", "broccoli-asset-rev": "^3.0.0", "cross-env": "^5.2.0", diff --git a/examples/html-kitchen-sink/package.json b/examples/html-kitchen-sink/package.json index d9d62612a06c..f13cdc4e66f9 100644 --- a/examples/html-kitchen-sink/package.json +++ b/examples/html-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "html-kitchen-sink", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "private": true, "description": "", "keywords": [], @@ -13,23 +13,23 @@ "storybook": "start-storybook -p 9006" }, "devDependencies": { - "@storybook/addon-a11y": "4.1.0-alpha.8", - "@storybook/addon-actions": "4.1.0-alpha.8", - "@storybook/addon-backgrounds": "4.1.0-alpha.8", - "@storybook/addon-centered": "4.1.0-alpha.8", - "@storybook/addon-events": "4.1.0-alpha.8", - "@storybook/addon-jest": "4.1.0-alpha.8", - "@storybook/addon-knobs": "4.1.0-alpha.8", - "@storybook/addon-links": "4.1.0-alpha.8", - "@storybook/addon-notes": "4.1.0-alpha.8", - "@storybook/addon-options": "4.1.0-alpha.8", - "@storybook/addon-storyshots": "4.1.0-alpha.8", - "@storybook/addon-storysource": "4.1.0-alpha.8", - "@storybook/addon-viewport": "4.1.0-alpha.8", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/core": "4.1.0-alpha.8", - "@storybook/core-events": "4.1.0-alpha.8", - "@storybook/html": "4.1.0-alpha.8", + "@storybook/addon-a11y": "4.1.0-alpha.9", + "@storybook/addon-actions": "4.1.0-alpha.9", + "@storybook/addon-backgrounds": "4.1.0-alpha.9", + "@storybook/addon-centered": "4.1.0-alpha.9", + "@storybook/addon-events": "4.1.0-alpha.9", + "@storybook/addon-jest": "4.1.0-alpha.9", + "@storybook/addon-knobs": "4.1.0-alpha.9", + "@storybook/addon-links": "4.1.0-alpha.9", + "@storybook/addon-notes": "4.1.0-alpha.9", + "@storybook/addon-options": "4.1.0-alpha.9", + "@storybook/addon-storyshots": "4.1.0-alpha.9", + "@storybook/addon-storysource": "4.1.0-alpha.9", + "@storybook/addon-viewport": "4.1.0-alpha.9", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/core": "4.1.0-alpha.9", + "@storybook/core-events": "4.1.0-alpha.9", + "@storybook/html": "4.1.0-alpha.9", "eventemitter3": "^3.1.0", "format-json": "^1.0.3", "global": "^4.3.2", diff --git a/examples/marko-cli/package.json b/examples/marko-cli/package.json index d20d9715f33e..5a5635461d3a 100644 --- a/examples/marko-cli/package.json +++ b/examples/marko-cli/package.json @@ -1,6 +1,6 @@ { "name": "marko-cli", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "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": "4.1.0-alpha.8", - "@storybook/addon-knobs": "4.1.0-alpha.8", - "@storybook/addon-options": "4.1.0-alpha.8", - "@storybook/addon-storysource": "4.1.0-alpha.8", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/marko": "4.1.0-alpha.8", + "@storybook/addon-actions": "4.1.0-alpha.9", + "@storybook/addon-knobs": "4.1.0-alpha.9", + "@storybook/addon-options": "4.1.0-alpha.9", + "@storybook/addon-storysource": "4.1.0-alpha.9", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/marko": "4.1.0-alpha.9", "prettier": "^1.14.3", "webpack": "^4.23.1" } diff --git a/examples/mithril-kitchen-sink/package.json b/examples/mithril-kitchen-sink/package.json index 802ed57b3eeb..6681f3f48628 100644 --- a/examples/mithril-kitchen-sink/package.json +++ b/examples/mithril-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "mithril-example", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "private": true, "scripts": { "build-storybook": "build-storybook", @@ -10,18 +10,18 @@ "mithril": "^1.1.6" }, "devDependencies": { - "@storybook/addon-actions": "4.1.0-alpha.8", - "@storybook/addon-backgrounds": "4.1.0-alpha.8", - "@storybook/addon-centered": "4.1.0-alpha.8", - "@storybook/addon-knobs": "4.1.0-alpha.8", - "@storybook/addon-links": "4.1.0-alpha.8", - "@storybook/addon-notes": "4.1.0-alpha.8", - "@storybook/addon-options": "4.1.0-alpha.8", - "@storybook/addon-storyshots": "4.1.0-alpha.8", - "@storybook/addon-storysource": "4.1.0-alpha.8", - "@storybook/addon-viewport": "4.1.0-alpha.8", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/mithril": "4.1.0-alpha.8", + "@storybook/addon-actions": "4.1.0-alpha.9", + "@storybook/addon-backgrounds": "4.1.0-alpha.9", + "@storybook/addon-centered": "4.1.0-alpha.9", + "@storybook/addon-knobs": "4.1.0-alpha.9", + "@storybook/addon-links": "4.1.0-alpha.9", + "@storybook/addon-notes": "4.1.0-alpha.9", + "@storybook/addon-options": "4.1.0-alpha.9", + "@storybook/addon-storyshots": "4.1.0-alpha.9", + "@storybook/addon-storysource": "4.1.0-alpha.9", + "@storybook/addon-viewport": "4.1.0-alpha.9", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/mithril": "4.1.0-alpha.9", "webpack": "^4.23.1" } } diff --git a/examples/official-storybook/package.json b/examples/official-storybook/package.json index 1e2fce24ac57..da53952ed16d 100644 --- a/examples/official-storybook/package.json +++ b/examples/official-storybook/package.json @@ -1,6 +1,6 @@ { "name": "official-storybook", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "private": true, "scripts": { "build-storybook": "build-storybook -c ./ -s built-storybooks", @@ -16,28 +16,28 @@ "@emotion/provider": "^0.11.2", "@emotion/snapshot-serializer": "^0.8.2", "@emotion/styled": "^0.10.6", - "@storybook/addon-a11y": "4.1.0-alpha.8", - "@storybook/addon-actions": "4.1.0-alpha.8", - "@storybook/addon-backgrounds": "4.1.0-alpha.8", - "@storybook/addon-centered": "4.1.0-alpha.8", - "@storybook/addon-cssresources": "4.1.0-alpha.8", - "@storybook/addon-events": "4.1.0-alpha.8", - "@storybook/addon-graphql": "4.1.0-alpha.8", - "@storybook/addon-info": "4.1.0-alpha.8", - "@storybook/addon-jest": "4.1.0-alpha.8", - "@storybook/addon-knobs": "4.1.0-alpha.8", - "@storybook/addon-links": "4.1.0-alpha.8", - "@storybook/addon-notes": "4.1.0-alpha.8", - "@storybook/addon-options": "4.1.0-alpha.8", - "@storybook/addon-storyshots": "4.1.0-alpha.8", - "@storybook/addon-storyshots-puppeteer": "4.1.0-alpha.8", - "@storybook/addon-storysource": "4.1.0-alpha.8", - "@storybook/addon-viewport": "4.1.0-alpha.8", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/components": "4.1.0-alpha.8", - "@storybook/core-events": "4.1.0-alpha.8", - "@storybook/node-logger": "4.1.0-alpha.8", - "@storybook/react": "4.1.0-alpha.8", + "@storybook/addon-a11y": "4.1.0-alpha.9", + "@storybook/addon-actions": "4.1.0-alpha.9", + "@storybook/addon-backgrounds": "4.1.0-alpha.9", + "@storybook/addon-centered": "4.1.0-alpha.9", + "@storybook/addon-cssresources": "4.1.0-alpha.9", + "@storybook/addon-events": "4.1.0-alpha.9", + "@storybook/addon-graphql": "4.1.0-alpha.9", + "@storybook/addon-info": "4.1.0-alpha.9", + "@storybook/addon-jest": "4.1.0-alpha.9", + "@storybook/addon-knobs": "4.1.0-alpha.9", + "@storybook/addon-links": "4.1.0-alpha.9", + "@storybook/addon-notes": "4.1.0-alpha.9", + "@storybook/addon-options": "4.1.0-alpha.9", + "@storybook/addon-storyshots": "4.1.0-alpha.9", + "@storybook/addon-storyshots-puppeteer": "4.1.0-alpha.9", + "@storybook/addon-storysource": "4.1.0-alpha.9", + "@storybook/addon-viewport": "4.1.0-alpha.9", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/components": "4.1.0-alpha.9", + "@storybook/core-events": "4.1.0-alpha.9", + "@storybook/node-logger": "4.1.0-alpha.9", + "@storybook/react": "4.1.0-alpha.9", "cors": "^2.8.4", "cross-env": "^5.2.0", "enzyme-to-json": "^3.3.4", diff --git a/examples/polymer-cli/package.json b/examples/polymer-cli/package.json index 4a0366f7bb2f..600dc5fcff25 100644 --- a/examples/polymer-cli/package.json +++ b/examples/polymer-cli/package.json @@ -1,6 +1,6 @@ { "name": "polymer-cli", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "private": true, "scripts": { "build-storybook": "build-storybook", @@ -9,15 +9,15 @@ }, "dependencies": { "@polymer/polymer": "^2.6.0", - "@storybook/addon-actions": "4.1.0-alpha.8", - "@storybook/addon-backgrounds": "4.1.0-alpha.8", - "@storybook/addon-knobs": "4.1.0-alpha.8", - "@storybook/addon-links": "4.1.0-alpha.8", - "@storybook/addon-notes": "4.1.0-alpha.8", - "@storybook/addon-options": "4.1.0-alpha.8", - "@storybook/addon-storysource": "4.1.0-alpha.8", - "@storybook/addon-viewport": "4.1.0-alpha.8", - "@storybook/polymer": "4.1.0-alpha.8", + "@storybook/addon-actions": "4.1.0-alpha.9", + "@storybook/addon-backgrounds": "4.1.0-alpha.9", + "@storybook/addon-knobs": "4.1.0-alpha.9", + "@storybook/addon-links": "4.1.0-alpha.9", + "@storybook/addon-notes": "4.1.0-alpha.9", + "@storybook/addon-options": "4.1.0-alpha.9", + "@storybook/addon-storysource": "4.1.0-alpha.9", + "@storybook/addon-viewport": "4.1.0-alpha.9", + "@storybook/polymer": "4.1.0-alpha.9", "@webcomponents/webcomponentsjs": "^1.2.0", "global": "^4.3.2", "lit-html": "^0.12.0", diff --git a/examples/riot-kitchen-sink/package.json b/examples/riot-kitchen-sink/package.json index 5577b7fdaf2a..1c5cde341ce1 100644 --- a/examples/riot-kitchen-sink/package.json +++ b/examples/riot-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "riot-example", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "private": true, "scripts": { "build": "cross-env NODE_ENV=production webpack --progress --hide-modules", @@ -15,18 +15,18 @@ }, "devDependencies": { "@babel/core": "^7.1.2", - "@storybook/addon-actions": "4.1.0-alpha.8", - "@storybook/addon-backgrounds": "4.1.0-alpha.8", - "@storybook/addon-centered": "4.1.0-alpha.8", - "@storybook/addon-knobs": "4.1.0-alpha.8", - "@storybook/addon-links": "4.1.0-alpha.8", - "@storybook/addon-notes": "4.1.0-alpha.8", - "@storybook/addon-options": "4.1.0-alpha.8", - "@storybook/addon-storyshots": "4.1.0-alpha.8", - "@storybook/addon-storysource": "4.1.0-alpha.8", - "@storybook/addon-viewport": "4.1.0-alpha.8", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/riot": "4.1.0-alpha.8", + "@storybook/addon-actions": "4.1.0-alpha.9", + "@storybook/addon-backgrounds": "4.1.0-alpha.9", + "@storybook/addon-centered": "4.1.0-alpha.9", + "@storybook/addon-knobs": "4.1.0-alpha.9", + "@storybook/addon-links": "4.1.0-alpha.9", + "@storybook/addon-notes": "4.1.0-alpha.9", + "@storybook/addon-options": "4.1.0-alpha.9", + "@storybook/addon-storyshots": "4.1.0-alpha.9", + "@storybook/addon-storysource": "4.1.0-alpha.9", + "@storybook/addon-viewport": "4.1.0-alpha.9", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/riot": "4.1.0-alpha.9", "babel-loader": "^8.0.4", "cross-env": "^5.2.0", "file-loader": "^2.0.0", diff --git a/examples/svelte-kitchen-sink/package.json b/examples/svelte-kitchen-sink/package.json index e63dae7f1e3a..8372c1c4978e 100644 --- a/examples/svelte-kitchen-sink/package.json +++ b/examples/svelte-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "svelte-example", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "private": true, "scripts": { "build-storybook": "build-storybook -s public", @@ -10,17 +10,17 @@ "global": "^4.3.2" }, "devDependencies": { - "@storybook/addon-actions": "4.1.0-alpha.8", - "@storybook/addon-backgrounds": "4.1.0-alpha.8", - "@storybook/addon-centered": "4.1.0-alpha.8", - "@storybook/addon-knobs": "4.1.0-alpha.8", - "@storybook/addon-links": "4.1.0-alpha.8", - "@storybook/addon-notes": "4.1.0-alpha.8", - "@storybook/addon-options": "4.1.0-alpha.8", - "@storybook/addon-storyshots": "4.1.0-alpha.8", - "@storybook/addon-storysource": "4.1.0-alpha.8", - "@storybook/addon-viewport": "4.1.0-alpha.8", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/svelte": "4.1.0-alpha.8" + "@storybook/addon-actions": "4.1.0-alpha.9", + "@storybook/addon-backgrounds": "4.1.0-alpha.9", + "@storybook/addon-centered": "4.1.0-alpha.9", + "@storybook/addon-knobs": "4.1.0-alpha.9", + "@storybook/addon-links": "4.1.0-alpha.9", + "@storybook/addon-notes": "4.1.0-alpha.9", + "@storybook/addon-options": "4.1.0-alpha.9", + "@storybook/addon-storyshots": "4.1.0-alpha.9", + "@storybook/addon-storysource": "4.1.0-alpha.9", + "@storybook/addon-viewport": "4.1.0-alpha.9", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/svelte": "4.1.0-alpha.9" } } diff --git a/examples/vue-kitchen-sink/package.json b/examples/vue-kitchen-sink/package.json index 19d2804e82b8..e79c2d5e94cc 100644 --- a/examples/vue-kitchen-sink/package.json +++ b/examples/vue-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "vue-example", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "private": true, "scripts": { "build": "cross-env NODE_ENV=production webpack --progress --hide-modules", @@ -14,18 +14,18 @@ }, "devDependencies": { "@babel/core": "^7.1.2", - "@storybook/addon-actions": "4.1.0-alpha.8", - "@storybook/addon-backgrounds": "4.1.0-alpha.8", - "@storybook/addon-centered": "4.1.0-alpha.8", - "@storybook/addon-knobs": "4.1.0-alpha.8", - "@storybook/addon-links": "4.1.0-alpha.8", - "@storybook/addon-notes": "4.1.0-alpha.8", - "@storybook/addon-options": "4.1.0-alpha.8", - "@storybook/addon-storyshots": "4.1.0-alpha.8", - "@storybook/addon-storysource": "4.1.0-alpha.8", - "@storybook/addon-viewport": "4.1.0-alpha.8", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/vue": "4.1.0-alpha.8", + "@storybook/addon-actions": "4.1.0-alpha.9", + "@storybook/addon-backgrounds": "4.1.0-alpha.9", + "@storybook/addon-centered": "4.1.0-alpha.9", + "@storybook/addon-knobs": "4.1.0-alpha.9", + "@storybook/addon-links": "4.1.0-alpha.9", + "@storybook/addon-notes": "4.1.0-alpha.9", + "@storybook/addon-options": "4.1.0-alpha.9", + "@storybook/addon-storyshots": "4.1.0-alpha.9", + "@storybook/addon-storysource": "4.1.0-alpha.9", + "@storybook/addon-viewport": "4.1.0-alpha.9", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/vue": "4.1.0-alpha.9", "babel-core": "^7.0.0-bridge.0", "babel-loader": "^8.0.4", "cross-env": "^5.2.0", diff --git a/lerna.json b/lerna.json index d8022ada9a7c..cb1e98e0857e 100644 --- a/lerna.json +++ b/lerna.json @@ -10,5 +10,5 @@ "npmClient": "yarn", "useWorkspaces": true, "registry": "https://registry.npmjs.org", - "version": "4.1.0-alpha.8" + "version": "4.1.0-alpha.9" } diff --git a/lib/addons/package.json b/lib/addons/package.json index 9385c90175db..696c30134296 100644 --- a/lib/addons/package.json +++ b/lib/addons/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addons", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook addons store", "keywords": [ "storybook" @@ -23,7 +23,7 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/channels": "4.1.0-alpha.8", + "@storybook/channels": "4.1.0-alpha.9", "global": "^4.3.2", "util-deprecate": "^1.0.2" } diff --git a/lib/channel-postmessage/package.json b/lib/channel-postmessage/package.json index f7ce41da1915..107acf7d9856 100644 --- a/lib/channel-postmessage/package.json +++ b/lib/channel-postmessage/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channel-postmessage", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "", "keywords": [ "storybook" @@ -23,7 +23,7 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/channels": "4.1.0-alpha.8", + "@storybook/channels": "4.1.0-alpha.9", "global": "^4.3.2", "telejson": "^1.0.0" } diff --git a/lib/channel-websocket/package.json b/lib/channel-websocket/package.json index 024ddf4b73dc..a81a09da0506 100644 --- a/lib/channel-websocket/package.json +++ b/lib/channel-websocket/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channel-websocket", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "", "keywords": [ "storybook" @@ -23,7 +23,7 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/channels": "4.1.0-alpha.8", + "@storybook/channels": "4.1.0-alpha.9", "global": "^4.3.2", "json-fn": "^1.1.1" } diff --git a/lib/channels/package.json b/lib/channels/package.json index 614cf7fbab1a..98cd9e03583e 100644 --- a/lib/channels/package.json +++ b/lib/channels/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channels", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "", "keywords": [ "storybook" diff --git a/lib/cli/package.json b/lib/cli/package.json index f2db16bcd03e..cbd3ab4b0292 100644 --- a/lib/cli/package.json +++ b/lib/cli/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/cli", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook's CLI - easiest method of adding storybook to your projects", "keywords": [ "cli", @@ -34,7 +34,7 @@ "@babel/preset-env": "^7.1.0", "@babel/register": "^7.0.0", "@babel/runtime": "^7.1.2", - "@storybook/codemod": "4.1.0-alpha.8", + "@storybook/codemod": "4.1.0-alpha.9", "chalk": "^2.4.1", "child-process-promise": "^2.2.1", "commander": "^2.19.0", @@ -48,29 +48,29 @@ "update-notifier": "^2.5.0" }, "devDependencies": { - "@storybook/addon-actions": "4.1.0-alpha.8", - "@storybook/addon-centered": "4.1.0-alpha.8", - "@storybook/addon-graphql": "4.1.0-alpha.8", - "@storybook/addon-info": "4.1.0-alpha.8", - "@storybook/addon-knobs": "4.1.0-alpha.8", - "@storybook/addon-links": "4.1.0-alpha.8", - "@storybook/addon-notes": "4.1.0-alpha.8", - "@storybook/addon-options": "4.1.0-alpha.8", - "@storybook/addon-storyshots": "4.1.0-alpha.8", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/angular": "4.1.0-alpha.8", - "@storybook/channel-postmessage": "4.1.0-alpha.8", - "@storybook/channel-websocket": "4.1.0-alpha.8", - "@storybook/channels": "4.1.0-alpha.8", - "@storybook/ember": "4.1.0-alpha.8", - "@storybook/html": "4.1.0-alpha.8", - "@storybook/marko": "4.1.0-alpha.8", - "@storybook/mithril": "4.1.0-alpha.8", - "@storybook/polymer": "4.1.0-alpha.8", - "@storybook/react": "4.1.0-alpha.8", - "@storybook/react-native": "4.1.0-alpha.8", - "@storybook/riot": "4.1.0-alpha.8", - "@storybook/ui": "4.1.0-alpha.8", - "@storybook/vue": "4.1.0-alpha.8" + "@storybook/addon-actions": "4.1.0-alpha.9", + "@storybook/addon-centered": "4.1.0-alpha.9", + "@storybook/addon-graphql": "4.1.0-alpha.9", + "@storybook/addon-info": "4.1.0-alpha.9", + "@storybook/addon-knobs": "4.1.0-alpha.9", + "@storybook/addon-links": "4.1.0-alpha.9", + "@storybook/addon-notes": "4.1.0-alpha.9", + "@storybook/addon-options": "4.1.0-alpha.9", + "@storybook/addon-storyshots": "4.1.0-alpha.9", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/angular": "4.1.0-alpha.9", + "@storybook/channel-postmessage": "4.1.0-alpha.9", + "@storybook/channel-websocket": "4.1.0-alpha.9", + "@storybook/channels": "4.1.0-alpha.9", + "@storybook/ember": "4.1.0-alpha.9", + "@storybook/html": "4.1.0-alpha.9", + "@storybook/marko": "4.1.0-alpha.9", + "@storybook/mithril": "4.1.0-alpha.9", + "@storybook/polymer": "4.1.0-alpha.9", + "@storybook/react": "4.1.0-alpha.9", + "@storybook/react-native": "4.1.0-alpha.9", + "@storybook/riot": "4.1.0-alpha.9", + "@storybook/ui": "4.1.0-alpha.9", + "@storybook/vue": "4.1.0-alpha.9" } } diff --git a/lib/client-logger/package.json b/lib/client-logger/package.json index b6665735b99f..723bf159700f 100644 --- a/lib/client-logger/package.json +++ b/lib/client-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/client-logger", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "", "keywords": [ "storybook" diff --git a/lib/codemod/package.json b/lib/codemod/package.json index c7d311dcaa63..4367c58b4976 100644 --- a/lib/codemod/package.json +++ b/lib/codemod/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/codemod", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "A collection of codemod scripts written with JSCodeshift", "keywords": [ "storybook" diff --git a/lib/components/package.json b/lib/components/package.json index 1b166505d037..c3f1223d160a 100644 --- a/lib/components/package.json +++ b/lib/components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/components", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Core Storybook Components", "keywords": [ "storybook" @@ -29,8 +29,8 @@ "@emotion/provider": "^0.11.2", "@emotion/styled": "^0.10.6", "@reach/router": "^1.1.1", - "@storybook/core-events": "4.1.0-alpha.8", - "@storybook/addons": "4.1.0-alpha.8", + "@storybook/core-events": "4.1.0-alpha.9", + "@storybook/addons": "4.1.0-alpha.9", "global": "^4.3.2", "immer": "^1.5.0", "js-beautify": "^1.8.6", diff --git a/lib/core-events/package.json b/lib/core-events/package.json index d20b5d2ea8b0..04fe43bfb319 100644 --- a/lib/core-events/package.json +++ b/lib/core-events/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-events", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Event names used in storybook core", "keywords": [ "storybook" diff --git a/lib/core/package.json b/lib/core/package.json index e45c65c372b1..2b70c87b10d1 100644 --- a/lib/core/package.json +++ b/lib/core/package.json @@ -1,14 +1,11 @@ { "name": "@storybook/core", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" ], "homepage": "https://github.com/storybooks/storybook/tree/master/lib/core", - "publishConfig": { - "access": "public" - }, "bugs": { "url": "https://github.com/storybooks/storybook/issues" }, @@ -30,13 +27,12 @@ "@emotion/core": "^0.13.1", "@emotion/provider": "^0.11.2", "@emotion/styled": "^0.10.6", - "@ndelangen/html-webpack-harddisk-plugin": "^0.2.0", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/channel-postmessage": "4.1.0-alpha.8", - "@storybook/client-logger": "4.1.0-alpha.8", - "@storybook/core-events": "4.1.0-alpha.8", - "@storybook/node-logger": "4.1.0-alpha.8", - "@storybook/ui": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/channel-postmessage": "4.1.0-alpha.9", + "@storybook/client-logger": "4.1.0-alpha.9", + "@storybook/core-events": "4.1.0-alpha.9", + "@storybook/node-logger": "4.1.0-alpha.9", + "@storybook/ui": "4.1.0-alpha.9", "airbnb-js-shims": "^1 || ^2", "autoprefixer": "^9.3.1", "babel-plugin-macros": "^2.4.2", @@ -53,10 +49,12 @@ "detect-port": "^1.2.3", "dotenv-webpack": "^1.5.7", "ejs": "^2.6.1", + "eventemitter3": "^3.1.0", "express": "^4.16.3", "file-loader": "^2.0.0", "file-system-cache": "^1.0.5", "find-cache-dir": "^2.0.0", + "fs-extra": "^7.0.1", "global": "^4.3.2", "html-webpack-plugin": "^4.0.0-beta.2", "inquirer": "^6.2.0", @@ -97,5 +95,8 @@ "babel-loader": "^7.0.0 || ^8.0.0", "react": ">=16.3.0", "react-dom": ">=16.3.0" + }, + "publishConfig": { + "access": "public" } } diff --git a/lib/core/src/client/preview/story_store.js b/lib/core/src/client/preview/story_store.js index bc616b669a46..d367114d770f 100644 --- a/lib/core/src/client/preview/story_store.js +++ b/lib/core/src/client/preview/story_store.js @@ -1,6 +1,6 @@ /* eslint no-underscore-dangle: 0 */ import { window, history } from 'global'; -import { EventEmitter } from 'events'; +import EventEmitter from 'eventemitter3'; import qs from 'qs'; import mergeWith from 'lodash.mergewith'; import Events from '@storybook/core-events'; diff --git a/lib/core/src/server/build-dev.js b/lib/core/src/server/build-dev.js index 3956fc8e0725..ea9d878f5222 100644 --- a/lib/core/src/server/build-dev.js +++ b/lib/core/src/server/build-dev.js @@ -3,7 +3,7 @@ import https from 'https'; import ip from 'ip'; import favicon from 'serve-favicon'; import path from 'path'; -import fs from 'fs'; +import fs from 'fs-extra'; import chalk from 'chalk'; import { logger, colors } from '@storybook/node-logger'; import fetch from 'node-fetch'; @@ -21,12 +21,21 @@ import { getDevCli } from './cli'; const defaultFavIcon = require.resolve('./public/favicon.ico'); +const cacheDir = findCacheDir({ name: 'storybook' }); const cache = Cache({ - basePath: findCacheDir({ name: 'storybook' }), + basePath: cacheDir, ns: 'storybook', // Optional. A grouping namespace for items. }); -function getServer(app, options) { +const writeStats = async (name, stats) => { + await fs.writeFile( + path.join(cacheDir, `${name}-stats.json`), + JSON.stringify(stats.toJson(), null, 2), + 'utf8' + ); +}; + +async function getServer(app, options) { if (!options.https) { return app; } @@ -42,37 +51,40 @@ function getServer(app, options) { } const sslOptions = { - ca: (options.sslCa || []).map(ca => fs.readFileSync(ca, 'utf-8')), - cert: fs.readFileSync(options.sslCert, 'utf-8'), - key: fs.readFileSync(options.sslKey, 'utf-8'), + ca: await Promise.all((options.sslCa || []).map(ca => fs.readFile(ca, 'utf-8'))), + cert: await fs.readFile(options.sslCert, 'utf-8'), + key: await fs.readFile(options.sslKey, 'utf-8'), }; return https.createServer(sslOptions, app); } -function applyStatic(app, options) { +async function applyStatic(app, options) { const { staticDir } = options; + let hasCustomFavicon = false; - if (staticDir) { - staticDir.forEach(dir => { - const staticPath = path.resolve(dir); + if (staticDir && staticDir.length) { + await Promise.all( + staticDir.map(async dir => { + const staticPath = path.resolve(dir); - if (!fs.existsSync(staticPath)) { - logger.error(`Error: no such directory to load static files: ${staticPath}`); - process.exit(-1); - } + if (await !fs.exists(staticPath)) { + logger.error(`Error: no such directory to load static files: ${staticPath}`); + process.exit(-1); + } - logger.info(`=> Loading static files from: ${staticPath} .`); - app.use(express.static(staticPath, { index: false })); + logger.info(`=> Loading static files from: ${staticPath} .`); + app.use(express.static(staticPath, { index: false })); - const faviconPath = path.resolve(staticPath, 'favicon.ico'); + const faviconPath = path.resolve(staticPath, 'favicon.ico'); - if (fs.existsSync(faviconPath)) { - hasCustomFavicon = true; - app.use(favicon(faviconPath)); - } - }); + if (await fs.exists(faviconPath)) { + hasCustomFavicon = true; + app.use(favicon(faviconPath)); + } + }) + ); } if (!hasCustomFavicon) { @@ -137,9 +149,9 @@ export async function buildDevStandalone(options) { } const app = express(); - const server = getServer(app, options); + const server = await getServer(app, options); - applyStatic(app, options); + await applyStatic(app, options); const storybookMiddleware = await storybook(options); @@ -148,7 +160,7 @@ export async function buildDevStandalone(options) { const serverListening = listenToServer(server, listenAddr); const [ - { iframeStats, managerStats, managerTotalTime, iframeTotalTime }, + { previewStats, managerStats, managerTotalTime, previewTotalTime }, updateInfo, ] = await Promise.all([ webpackValid, @@ -214,7 +226,7 @@ export async function buildDevStandalone(options) { ${colors.green(`Storybook ${chalk.bold(options.packageJson.version)} started`)} ${chalk.gray(stripIndents` ${chalk.underline(prettyTime(managerTotalTime))} for manager and ${chalk.underline( - prettyTime(iframeTotalTime) + prettyTime(previewTotalTime) )} for preview`)} ${serveMessage.toString()}${updateMessage ? `\n\n${updateMessage}` : ''} @@ -224,7 +236,11 @@ export async function buildDevStandalone(options) { ); if (options.smokeTest) { - process.exit(iframeStats.toJson().warnings.length ? 1 : 0); + await writeStats('preview', previewStats); + await writeStats('manager', managerStats); + logger.info(`stats written to => ${chalk.cyan(path.join(cacheDir, '[name].json'))}`); + + process.exit(previewStats.toJson().warnings.length ? 1 : 0); process.exit(managerStats.toJson().warnings.length ? 1 : 0); } else if (!options.ci) { opn(address).catch(() => { diff --git a/lib/core/src/server/build-static.js b/lib/core/src/server/build-static.js index c656cee0e91d..d89080b58972 100644 --- a/lib/core/src/server/build-static.js +++ b/lib/core/src/server/build-static.js @@ -1,4 +1,4 @@ -import fs from 'fs'; +import fs from 'fs-extra'; import path from 'path'; import webpack from 'webpack'; import shelljs from 'shelljs'; @@ -9,23 +9,50 @@ import { getProdCli } from './cli'; import loadConfig from './config'; import loadManagerConfig from './manager/manager-config'; -const defaultFavIcon = require.resolve('./public/favicon.ico'); - export async function buildStaticStandalone(options) { - const { staticDir, watch, configDir, packageJson } = options; + const { staticDir, configDir, packageJson, watch } = options; const configType = 'PRODUCTION'; const outputDir = path.join(process.cwd(), options.outputDir); + const dllPath = path.join(__dirname, '../../dll/*'); + const defaultFavIcon = require.resolve('./public/favicon.ico'); // create output directory if not exists shelljs.mkdir('-p', outputDir); + shelljs.mkdir('-p', path.join(outputDir, 'sb_dll')); + // clear the static dir shelljs.rm('-rf', path.join(outputDir, 'static')); shelljs.cp(defaultFavIcon, outputDir); - logger.info('building manager..'); + logger.info('clean outputDir..'); + shelljs.rm('-rf', path.join(outputDir, 'static')); + + shelljs.cp(defaultFavIcon, outputDir); + + // copy all static files + if (staticDir && staticDir.length) { + await Promise.all( + staticDir.map(async dir => { + const staticPath = path.resolve(dir); + + if (await !fs.exists(staticPath)) { + logger.error(`Error: no such directory to load static files: ${staticPath}`); + process.exit(-1); + } + shelljs.cp('-r', `${dir}/!(index.html)`, outputDir); + }) + ); + logger.info(`=> Copying static files from: ${staticDir.join(', ')}`); + } + + logger.info(`=> Copying prebuild dll's..`); + shelljs.cp('-r', dllPath, path.join(outputDir, 'sb_dll')); + + logger.info('=> Building manager..'); const managerStartTime = process.hrtime(); + logger.info('=> Loading manager config..'); const managerConfig = await loadManagerConfig({ configType, outputDir, @@ -33,23 +60,40 @@ export async function buildStaticStandalone(options) { corePresets: [require.resolve('./manager/manager-preset.js')], }); - await new Promise((res, rej) => { - webpack(managerConfig).run((err, stats) => { - const managerTotalTime = process.hrtime(managerStartTime); - logger.trace({ message: 'manager built', time: managerTotalTime }); + logger.info('=> Compiling manager..'); + await new Promise((resolve, reject) => { + webpack(managerConfig).run((error, stats) => { + if (error || !stats || stats.hasErrors()) { + logger.error('=> Failed to build the manager'); + + if (error) { + logger.error(error.message); + } - if (stats.hasErrors()) { - rej(stats); - } else { - res(stats); + if (stats && (stats.hasErrors() || stats.hasWarnings())) { + const { warnings, errors } = stats.toJson(); + + errors.forEach(e => logger.error(e)); + warnings.forEach(e => logger.error(e)); + } + + process.exitCode = 1; + reject(error || stats); + return; } + + logger.trace({ message: '=> manager built', time: process.hrtime(managerStartTime) }); + stats.toJson().warnings.forEach(e => logger.warn(e)); + + resolve(stats); }); }); - // Build the webpack configuration using the `baseConfig` - // custom `.babelrc` file and `webpack.config.js` files - // NOTE changes to env should be done before calling `getBaseConfig` - const config = await loadConfig({ + logger.info('=> Building preview..'); + const previewStartTime = process.hrtime(); + + logger.info('=> Loading preview config..'); + const previewConfig = await loadConfig({ configType, outputDir, packageJson, @@ -58,56 +102,60 @@ export async function buildStaticStandalone(options) { ...options, }); - // config.output.path = path.resolve(outputDir); - - // copy all static files - if (staticDir) { - staticDir.forEach(dir => { - if (!fs.existsSync(dir)) { - logger.error(`Error: no such directory to load static files: ${dir}`); - process.exit(-1); - } - logger.info(`=> Copying static files from: ${dir}`); - shelljs.cp('-r', `${dir}/!(index.html)`, outputDir); + if (watch) { + logger.info('=> Compiling preview in watch mode..'); + await new Promise(() => { + webpack(previewConfig).watch( + { + aggregateTimeout: 1, + }, + (error, stats) => { + if (!error) { + // eslint-disable-next-line no-console + console.log(stats.toString({ colors: true })); + } else { + logger.error(error.message); + } + } + ); + }); + } else { + logger.info('=> Compiling preview..'); + await new Promise((resolve, reject) => { + webpack(previewConfig).run((error, stats) => { + if (error || !stats || stats.hasErrors()) { + logger.error('=> Failed to build the preview'); + process.exitCode = 1; + + if (error) { + logger.error(error.message); + return reject(error); + } + + if (stats && (stats.hasErrors() || stats.hasWarnings())) { + const { warnings, errors } = stats.toJson(); + + errors.forEach(e => logger.error(e)); + warnings.forEach(e => logger.error(e)); + return reject(stats); + } + } + + logger.trace({ message: '=> Preview built', time: process.hrtime(previewStartTime) }); + stats.toJson().warnings.forEach(e => logger.warn(e)); + + return resolve(stats); + }); }); } - // compile all resources with webpack and write them to the disk. - return new Promise((resolve, reject) => { - const previewStartTime = process.hrtime(); - - const webpackCb = (err, stats) => { - if (err || stats.hasErrors()) { - logger.error('Failed to build the storybook'); - // eslint-disable-next-line no-unused-expressions - err && logger.error(err.message); - // eslint-disable-next-line no-unused-expressions - stats && stats.hasErrors() && stats.toJson().errors.forEach(e => logger.error(e)); - process.exitCode = 1; - return reject(err); - } - - const previewTotalTime = process.hrtime(previewStartTime); - logger.trace({ message: 'preview built', time: previewTotalTime }); - - return resolve(stats); - }; - - logger.info('building preview..'); - const compiler = webpack(config); - - if (watch) { - compiler.watch({}, webpackCb); - } else { - compiler.run(webpackCb); - } - }); + logger.info(`=> Output directory: ${outputDir}`); } -export async function buildStatic({ packageJson, ...loadOptions }) { +export function buildStatic({ packageJson, ...loadOptions }) { const cliOptions = getProdCli(packageJson); - await buildStaticStandalone({ + return buildStaticStandalone({ ...cliOptions, ...loadOptions, packageJson, diff --git a/lib/core/src/server/dev-server.js b/lib/core/src/server/dev-server.js index 10766dfb4ebc..7fd664eded1c 100644 --- a/lib/core/src/server/dev-server.js +++ b/lib/core/src/server/dev-server.js @@ -13,52 +13,59 @@ import loadManagerConfig from './manager/manager-config'; let webpackResolve = () => {}; let webpackReject = () => {}; +const dllPath = path.join(__dirname, '../../dll'); + export const webpackValid = new Promise((resolve, reject) => { webpackResolve = resolve; webpackReject = reject; }); +const cache = {}; + export default async function(options) { const configDir = path.resolve(options.configDir); const outputDir = path.resolve(options.outputDir || path.join(__dirname, '..', 'public')); const configType = 'DEVELOPMENT'; - const managerStartTime = process.hrtime(); + const startTime = process.hrtime(); let managerTotalTime; + let previewTotalTime; - const managerConfig = await loadManagerConfig({ + const managerPromise = loadManagerConfig({ configType, outputDir, configDir, + cache, corePresets: [require.resolve('./manager/manager-preset.js')], - }); + }).then( + config => + new Promise((resolve, reject) => { + webpack(config).watch( + { + aggregateTimeout: 1, + ignored: /node_modules/, + }, + (err, stats) => { + managerTotalTime = process.hrtime(startTime); + if (err || stats.hasErrors()) { + reject(stats); + } else { + resolve(stats); + } + } + ); + }) + ); const iframeConfig = await loadConfig({ configType, outputDir, + cache, corePresets: [require.resolve('./preview/preview-preset.js')], overridePresets: [require.resolve('./preview/custom-webpack-preset.js')], ...options, }); - const managerPromise = new Promise((res, rej) => { - webpack(managerConfig).watch( - { - aggregateTimeout: 1, - ignored: /node_modules/, - }, - (err, stats) => { - managerTotalTime = process.hrtime(managerStartTime); - - if (err || stats.hasErrors()) { - rej(stats); - } else { - res(stats); - } - } - ); - }); - const middlewareFn = getMiddleware(configDir); // remove the leading '/' @@ -67,8 +74,6 @@ export default async function(options) { publicPath = publicPath.slice(1); } - const iframeStartTime = process.hrtime(); - let iframeTotalTime; const iframeCompiler = webpack(iframeConfig); const devMiddlewareOptions = { publicPath: iframeConfig.output.publicPath, @@ -92,30 +97,40 @@ export default async function(options) { // custom middleware middlewareFn(router); - const iframePromise = new Promise((res, rej) => { + const previewPromise = new Promise((resolve, reject) => { webpackDevMiddlewareInstance.waitUntilValid(stats => { - iframeTotalTime = process.hrtime(iframeStartTime); + previewTotalTime = process.hrtime(startTime); - if (stats.hasErrors()) { - rej(stats); + if (!stats) { + reject(new Error('no stats after building iframe')); + } else if (stats.hasErrors()) { + reject(stats); } else { - res(stats); + resolve(stats); } }); }); - Promise.all([managerPromise, iframePromise]) - .then(([managerStats, iframeStats]) => { + Promise.all([managerPromise, previewPromise]) + .then(([managerStats, previewStats]) => { router.get('/', (request, response) => { response.set('Content-Type', 'text/html'); response.sendFile(path.join(`${outputDir}/index.html`)); }); + router.get(/\/sb_dll\/(.+\.js)$/, (request, response) => { + response.set('Content-Type', 'text/javascript'); + response.sendFile(path.join(`${dllPath}/${request.params[0]}`)); + }); + router.get(/\/sb_dll\/(.+\.LICENCE)$/, (request, response) => { + response.set('Content-Type', 'text/html'); + response.sendFile(path.join(`${dllPath}/${request.params[0]}`)); + }); router.get(/(.+\.js)$/, (request, response) => { - response.set('Content-Type', 'text/javascript '); + response.set('Content-Type', 'text/javascript'); response.sendFile(path.join(`${outputDir}/${request.params[0]}`)); }); - webpackResolve({ iframeStats, managerStats, managerTotalTime, iframeTotalTime }); + webpackResolve({ previewStats, managerStats, managerTotalTime, previewTotalTime }); }) .catch(e => webpackReject(e)); diff --git a/lib/core/src/server/manager/manager-preset.js b/lib/core/src/server/manager/manager-preset.js index 91956f8b1531..51123ec73b9d 100644 --- a/lib/core/src/server/manager/manager-preset.js +++ b/lib/core/src/server/manager/manager-preset.js @@ -7,7 +7,7 @@ export async function managerWebpack(_, options) { export async function managerEntries(_, options) { const { presets } = options; - const entries = [require.resolve('../common/polyfills')]; + const entries = []; const installedAddons = await presets.apply('addons', [], options); diff --git a/lib/core/src/server/manager/manager-webpack.config.js b/lib/core/src/server/manager/manager-webpack.config.js index 297b459990e1..d70913b2b01b 100644 --- a/lib/core/src/server/manager/manager-webpack.config.js +++ b/lib/core/src/server/manager/manager-webpack.config.js @@ -1,14 +1,20 @@ +import path from 'path'; import webpack from 'webpack'; import Dotenv from 'dotenv-webpack'; import HtmlWebpackPlugin from 'html-webpack-plugin'; -import HtmlWebpackHarddiskPlugin from '@ndelangen/html-webpack-harddisk-plugin'; import CaseSensitivePathsPlugin from 'case-sensitive-paths-webpack-plugin'; +import findCacheDir from 'find-cache-dir'; + import { version } from '../../../package.json'; import { getManagerHeadHtml } from '../utils/template'; import { loadEnv, getBabelRuntimePath } from '../config/utils'; -export default ({ configDir, entries, outputDir, configType }) => { +const coreDirName = path.dirname(require.resolve('@storybook/core/package.json')); +const context = path.join(coreDirName, '../../node_modules'); +const cacheDir = findCacheDir({ name: 'storybook' }); + +export default ({ configDir, configType, entries, outputDir, cache }) => { const { raw, stringified } = loadEnv(); const isProd = configType === 'PRODUCTION'; @@ -23,7 +29,12 @@ export default ({ configDir, entries, outputDir, configType }) => { filename: '[name].[chunkhash].bundle.js', publicPath: '', }, + cache, plugins: [ + new webpack.DllReferencePlugin({ + context, + manifest: path.join(__dirname, '../../../dll/storybook_ui-manifest.json'), + }), new HtmlWebpackPlugin({ filename: `index.html`, chunksSortMode: 'none', @@ -34,11 +45,11 @@ export default ({ configDir, entries, outputDir, configType }) => { files, options, version, + dlls: ['/sb_dll/storybook_ui_dll.js'], headHtmlSnippet: getManagerHeadHtml(configDir, process.env), }), template: require.resolve(`../templates/index.ejs`), }), - new HtmlWebpackHarddiskPlugin(), new webpack.DefinePlugin({ 'process.env': stringified }), new CaseSensitivePathsPlugin(), new Dotenv({ silent: true }), @@ -52,6 +63,7 @@ export default ({ configDir, entries, outputDir, configType }) => { 'react-dom': require.resolve('react-dom'), }, }, + recordsPath: path.join(cacheDir, 'records.json'), optimization: { splitChunks: { chunks: 'all', diff --git a/lib/core/src/server/preview/iframe-webpack.config.js b/lib/core/src/server/preview/iframe-webpack.config.js index 56d154b4341b..30ae9cc9cec8 100644 --- a/lib/core/src/server/preview/iframe-webpack.config.js +++ b/lib/core/src/server/preview/iframe-webpack.config.js @@ -49,6 +49,7 @@ export default ({ options, version: packageJson.version, headHtmlSnippet: getPreviewHeadHtml(configDir, process.env), + dlls: [], bodyHtmlSnippet: getPreviewBodyHtml(), }), template: require.resolve(`../templates/index.ejs`), diff --git a/lib/core/src/server/templates/index.ejs b/lib/core/src/server/templates/index.ejs index 16dd0158f3dc..514b7be4e6e6 100644 --- a/lib/core/src/server/templates/index.ejs +++ b/lib/core/src/server/templates/index.ejs @@ -36,6 +36,10 @@ <% } %> +<% dlls.forEach(file => { %> + +<% }); %> + <% files.js.forEach(file => { %> <% }); %> diff --git a/lib/node-logger/package.json b/lib/node-logger/package.json index effc9d6e9250..32c7a7281f27 100644 --- a/lib/node-logger/package.json +++ b/lib/node-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/node-logger", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "", "keywords": [ "storybook" diff --git a/lib/ui/package.json b/lib/ui/package.json index 12f01aec7baf..a813da4d47dd 100644 --- a/lib/ui/package.json +++ b/lib/ui/package.json @@ -1,14 +1,11 @@ { "name": "@storybook/ui", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "description": "Core Storybook UI", "keywords": [ "storybook" ], "homepage": "https://github.com/storybooks/storybook/tree/master/lib/ui", - "publishConfig": { - "access": "public" - }, "bugs": { "url": "https://github.com/storybooks/storybook/issues" }, @@ -20,23 +17,22 @@ "main": "dist/index.js", "jsnext:main": "src/index.js", "scripts": { - "prepare": "node ../../scripts/prepare.js", - "publish-storybook": "bash ./.scripts/publish_storybook.sh", - "storybook": "start-storybook -p 9010" + "createDlls": "node -r esm ./scripts/createDlls.js", + "prepare": "node ../../scripts/prepare.js" }, "dependencies": { "@emotion/core": "^0.13.1", "@emotion/provider": "^0.11.2", "@emotion/styled": "^0.10.6", "@reach/router": "^1.1.1", - "@storybook/addons": "4.1.0-alpha.8", - "@storybook/client-logger": "4.1.0-alpha.8", - "@storybook/components": "4.1.0-alpha.8", - "@storybook/core-events": "4.1.0-alpha.8", + "@storybook/addons": "4.1.0-alpha.9", + "@storybook/client-logger": "4.1.0-alpha.9", + "@storybook/components": "4.1.0-alpha.9", + "@storybook/core-events": "4.1.0-alpha.9", "emotion": "^9.2.8", - "events": "^3.0.0", + "eventemitter3": "^3.1.0", "fast-deep-equal": "^2.0.1", - "fuse.js": "^3.2.1", + "fuse.js": "^3.3.0", "global": "^4.3.2", "history": "^4.7.2", "keycode": "^2.2.0", @@ -54,8 +50,15 @@ "react-resize-detector": "^3.1.1", "to-camel-case": "^1.0.0" }, + "devDependencies": { + "webpack": "^4.23.1", + "terser-webpack-plugin": "^1.1.0" + }, "peerDependencies": { "react": "*", "react-dom": "*" + }, + "publishConfig": { + "access": "public" } } diff --git a/lib/ui/scripts/createDlls.js b/lib/ui/scripts/createDlls.js new file mode 100644 index 000000000000..427b4c0870ba --- /dev/null +++ b/lib/ui/scripts/createDlls.js @@ -0,0 +1,52 @@ +import path from 'path'; +import webpack from 'webpack'; + +import config from './webpackDllsConfig'; + +const resolveLocal = dir => path.join(__dirname, dir); +const webpackAsPromised = c => + new Promise((res, rej) => { + webpack(c).run((err, stats) => { + if (err || stats.hasErrors() || stats.hasWarnings()) { + rej(stats); + return; + } + res(stats); + }); + }); + +const run = () => + webpackAsPromised( + config({ + entry: { + storybook_ui: [ + 'core-js/fn/array/iterator', + 'airbnb-js-shims', + 'core-js/es6/symbol', + 'react', + 'prop-types', + 'react-dom', + '@storybook/components', + '@storybook/addons', + '@storybook/core-events', + '@emotion/styled', + '@emotion/provider', + '@emotion/core', + resolveLocal('../dist/index.js'), + ], + }, + }) + ); + +run().then( + s => { + // eslint-disable-next-line no-console + console.log('success: ', s.toString()); + process.exitCode = 0; + }, + s => { + // eslint-disable-next-line no-console + console.error('failed: ', s.toString()); + process.exitCode = 1; + } +); diff --git a/lib/ui/scripts/webpackDllsConfig.js b/lib/ui/scripts/webpackDllsConfig.js new file mode 100644 index 000000000000..1e472c18b0d6 --- /dev/null +++ b/lib/ui/scripts/webpackDllsConfig.js @@ -0,0 +1,52 @@ +import path from 'path'; +import webpack from 'webpack'; +import TerserPlugin from 'terser-webpack-plugin'; + +const resolveLocal = dir => path.join(__dirname, dir); + +const r = resolveLocal('../../../node_modules'); +const out = resolveLocal('../../core/dll'); + +export default ({ entry, provided = [] }) => ({ + name: 'storybook-ui', + mode: 'production', + + entry, + output: { + path: out, + filename: '[name]_dll.js', + library: '[name]_dll', + }, + externals: provided, + + resolve: { + extensions: ['.mjs', '.js', '.jsx', '.json'], + modules: [path.join(__dirname, '../../../node_modules')], + }, + + plugins: [ + new webpack.ProgressPlugin(), + new webpack.DllPlugin({ + context: r, + path: `${out}/[name]-manifest.json`, + name: '[name]_dll', + }), + ], + optimization: { + concatenateModules: true, + portableRecords: true, + moduleIds: 'hashed', + minimizer: [ + new TerserPlugin({ + extractComments: { + condition: /^\**!|@preserve|@license|@cc_on/i, + filename: file => file.replace('.js', '.LICENCE'), + banner: licenseFile => `License information can be found in ${licenseFile}`, + }, + }), + ], + }, + performance: { + hints: false, + }, +}); diff --git a/package.json b/package.json index ca56d16ca4cf..c815427b6af2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/root", - "version": "4.1.0-alpha.8", + "version": "4.1.0-alpha.9", "private": true, "repository": { "type": "git", @@ -70,10 +70,10 @@ "babel-eslint": "^10.0.1", "babel-jest": "^23.6.0", "babel-loader": "^8.0.4", + "babel-plugin-dynamic-import-node": "^2.2.0", "babel-plugin-emotion": "^9.2.11", "babel-plugin-macros": "^2.4.2", "babel-plugin-require-context-hook": "^1.0.0", - "babel-plugin-dynamic-import-node": "^2.2.0", "babel-preset-vue": "^2.0.2", "chalk": "^2.4.1", "codecov": "^3.1.0", @@ -94,6 +94,7 @@ "eslint-plugin-prettier": "^3.0.0", "eslint-plugin-react": "^7.10.0", "eslint-teamcity": "^2.1.0", + "esm": "^3.0.84", "github-release-from-changelog": "^1.3.2", "glob": "^7.1.3", "husky": "^1.1.1", @@ -126,7 +127,8 @@ "tslint": "~5.11.0", "tslint-config-prettier": "^1.15.0", "tslint-plugin-prettier": "^2.0.1", - "typescript": "^3.1.6" + "typescript": "^3.1.6", + "uglifyjs-webpack-plugin": "^2.0.1" }, "husky": { "hooks": { diff --git a/scripts/bootstrap.js b/scripts/bootstrap.js index 0f40276abbc8..b968eff9def3 100755 --- a/scripts/bootstrap.js +++ b/scripts/bootstrap.js @@ -73,7 +73,7 @@ const tasks = { }, }), core: createTask({ - name: `Core & Examples ${chalk.gray('(core)')}`, + name: `Core, Dll & Examples ${chalk.gray('(core)')}`, defaultValue: true, option: '--core', command: () => { @@ -81,6 +81,17 @@ const tasks = { spawn('yarn install'); log.info(prefix, 'prepare'); spawn('lerna run prepare -- --silent'); + log.info(prefix, 'dll'); + spawn('lerna run createDlls --scope "@storybook/ui"'); + }, + }), + dll: createTask({ + name: `Generate DLL ${chalk.gray('(dll)')}`, + defaultValue: false, + option: '--dll', + command: () => { + log.info(prefix, 'dll'); + spawn('lerna run createDlls --scope "@storybook/ui"'); }, }), docs: createTask({ diff --git a/scripts/compile-js.js b/scripts/compile-js.js index 78230420170b..1ebba2962c76 100644 --- a/scripts/compile-js.js +++ b/scripts/compile-js.js @@ -10,7 +10,7 @@ function getCommand(watch) { '--ignore **/__mocks__/,**/tests/*,**/__tests__/,**/**.test.js,**/stories/,**/**.story.js,**/**.stories.js,**/__snapshots__', './src --out-dir ./dist', '--copy-files', - `--config-file ${path.resolve(__dirname, '../.babelrc')}`, + `--config-file ${path.resolve(__dirname, '../.babelrc.js')}`, ]; if (watch) { diff --git a/yarn.lock b/yarn.lock index 83a908189585..5abecf327d4d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1964,13 +1964,6 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@ndelangen/html-webpack-harddisk-plugin@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@ndelangen/html-webpack-harddisk-plugin/-/html-webpack-harddisk-plugin-0.2.0.tgz#d2eb570597c83c1aa93d1f2fcb3d874a5855de07" - integrity sha512-55Mo2b5WtIT0l653y6ocu7C6QzznbasEnlixGzA26WK8Fj81wuEY3xf5N5bNAvDVfrwTLIPTXdEUGgPdrPLszw== - dependencies: - mkdirp "^0.5.1" - "@ngrx/store@^6.1.2": version "6.1.2" resolved "https://registry.yarnpkg.com/@ngrx/store/-/store-6.1.2.tgz#20fb5ab4d79571b804a348093aa11a167fe2946f" @@ -5984,6 +5977,26 @@ cacache@^11.0.1, cacache@^11.0.2: unique-filename "^1.1.0" y18n "^4.0.0" +cacache@^11.2.0: + version "11.3.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.1.tgz#d09d25f6c4aca7a6d305d141ae332613aa1d515f" + integrity sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA== + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + figgy-pudding "^3.1.0" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.3" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^6.0.0" + unique-filename "^1.1.0" + y18n "^4.0.0" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -9392,6 +9405,11 @@ eslint@^5.8.0: table "^5.0.2" text-table "^0.2.0" +esm@^3.0.84: + version "3.0.84" + resolved "https://registry.yarnpkg.com/esm/-/esm-3.0.84.tgz#bb108989f4673b32d4f62406869c28eed3815a63" + integrity sha512-SzSGoZc17S7P+12R9cg21Bdb7eybX25RnIeRZ80xZs+VZ3kdQKzqTp2k4hZJjR7p9l0186TTXSgrxzlMDBktlw== + espree@^3.4.3: version "3.5.4" resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" @@ -10481,6 +10499,15 @@ fs-extra@^5.0.0: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -22762,7 +22789,7 @@ uglify-es@^3.1.9, uglify-es@^3.3.4: commander "~2.13.0" source-map "~0.6.1" -uglify-js@3.4.x, uglify-js@^3.1.4, uglify-js@^3.4.0: +uglify-js@3.4.x, uglify-js@^3.0.0, uglify-js@^3.1.4, uglify-js@^3.4.0: version "3.4.9" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== @@ -22784,6 +22811,20 @@ uglifyjs-webpack-plugin@^1.2.4: webpack-sources "^1.1.0" worker-farm "^1.5.2" +uglifyjs-webpack-plugin@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.0.1.tgz#f346af53ed496ce72fef462517d417f62bec3010" + integrity sha512-1HhCHkOB6wRCcv7htcz1QRPVbWPEY074RP9vzt/X0LF4xXm9l4YGd0qja7z88abDixQlnVwBjXsTBs+Xsn/eeQ== + dependencies: + cacache "^11.2.0" + find-cache-dir "^2.0.0" + schema-utils "^1.0.0" + serialize-javascript "^1.4.0" + source-map "^0.6.1" + uglify-js "^3.0.0" + webpack-sources "^1.1.0" + worker-farm "^1.5.2" + uid-number@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"