diff --git a/CHANGELOG.md b/CHANGELOG.md index 17b844fc510..c184c6ed4b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,45 @@ +## 6.5.0-beta.4 (May 4, 2022) + +### Features + +- UI: Add a parent level toolbar exclusion key for tabs ([#18106](https://github.com/storybookjs/storybook/pull/18106)) +- Addon-a11y: Display a11y issues number in addon tab title ([#17983](https://github.com/storybookjs/storybook/pull/17983)) + +### Bug Fixes + +- Addon-docs: Fix Canvas block CURRENT_SELECTION handling ([#18130](https://github.com/storybookjs/storybook/pull/18130)) +- Telemetry: Add safecheck for crash reports ([#18129](https://github.com/storybookjs/storybook/pull/18129)) +- Addon-a11y: Fix a11y params > element use ([#17989](https://github.com/storybookjs/storybook/pull/17989)) + +## 6.5.0-beta.3 (May 4, 2022) + +### Bug Fixes + +- UI: Externalize `react-syntax-highlighter` from components ([#18127](https://github.com/storybookjs/storybook/pull/18127)) + +## 6.5.0-beta.2 (May 2, 2022) + +### Features + +- Core: Add optional telemetry and crash reporting ([#18046](https://github.com/storybookjs/storybook/pull/18046)) + +### Bug Fixes + +- Controls: Fix URL deserialization for argTypes with mapping ([#18124](https://github.com/storybookjs/storybook/pull/18124)) +- Core: Fix telemetry project root detection ([#18125](https://github.com/storybookjs/storybook/pull/18125)) +- React: Fix version detection for older versions of `react-dom` ([#18105](https://github.com/storybookjs/storybook/pull/18105)) +- CLI: Add non-monorepo testing tools to exclude lists ([#18092](https://github.com/storybookjs/storybook/pull/18092)) + +### Maintenance + +- Examples: Update example to restore 6.4 auto-title behavior in UI ([#18109](https://github.com/storybookjs/storybook/pull/18109)) +- CLI: Remove git.io URL ([#18070](https://github.com/storybookjs/storybook/pull/18070)) +- UI: Make panel position a persistent preference ([#18036](https://github.com/storybookjs/storybook/pull/18036)) + +### Dependency Upgrades + +- React: Fix jest-specific-snapshot dev dependency ([#18095](https://github.com/storybookjs/storybook/pull/18095)) + ## 6.5.0-beta.1 (April 28, 2022) ### Features diff --git a/MIGRATION.md b/MIGRATION.md index 8de7439091b..418a698b4ec 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -313,6 +313,19 @@ This might be considered a breaking change. However, we feel justified to releas 1. We consider it a bug in the initial auto-title implementation 2. CSF3 and the auto-title feature are experimental, and we reserve the right to make breaking changes outside of semver (tho we try to avoid it) +If you want to restore the old titles in the UI, you can customize your sidebar with the following code snippet in `.storybook/manager.js`: + +```js +import { addons } from '@storybook/addons'; +import startCase from 'lodash/startCase'; + +addons.setConfig({ + sidebar: { + renderLabel: ({ name, type }) => (type === 'story' ? name : startCase(name)), + }, +}); +``` + #### Auto-title redundant filename The heuristic failed in the common scenario in which each component gets its own directory, e.g. `atoms/Button/Button.stories.js`, which would result in the redundant title `Atoms/Button/Button`. Alternatively, `atoms/Button/index.stories.js` would result in `Atoms/Button/Index`. diff --git a/__mocks__/fs-extra.js b/__mocks__/fs-extra.js index 349ffb2b4c7..ebe0d6c11d3 100644 --- a/__mocks__/fs-extra.js +++ b/__mocks__/fs-extra.js @@ -15,6 +15,7 @@ function __setMockFiles(newMockFiles) { const readFile = async (filePath) => mockFiles[filePath]; const readFileSync = (filePath = '') => mockFiles[filePath]; const existsSync = (filePath) => !!mockFiles[filePath]; +const readJsonSync = (filePath = '') => JSON.parse(mockFiles[filePath]); const lstatSync = (filePath) => ({ isFile: () => !!mockFiles[filePath], }); @@ -23,6 +24,7 @@ const lstatSync = (filePath) => ({ fs.__setMockFiles = __setMockFiles; fs.readFile = readFile; fs.readFileSync = readFileSync; +fs.readJsonSync = readJsonSync; fs.existsSync = existsSync; fs.lstatSync = lstatSync; diff --git a/addons/a11y/package.json b/addons/a11y/package.json index a0e27f90aa2..2f7ea67e4c8 100644 --- a/addons/a11y/package.json +++ b/addons/a11y/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-a11y", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Test component compliance with web accessibility standards", "keywords": [ "a11y", @@ -45,14 +45,14 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/channels": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/channels": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/theming": "6.5.0-beta.4", "axe-core": "^4.2.0", "core-js": "^3.8.2", "global": "^4.4.0", @@ -81,7 +81,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js", "storybook": { "displayName": "Accessibility", diff --git a/addons/a11y/src/a11yRunner.ts b/addons/a11y/src/a11yRunner.ts index 73e97a6340c..1f4fd7ddeab 100644 --- a/addons/a11y/src/a11yRunner.ts +++ b/addons/a11y/src/a11yRunner.ts @@ -15,11 +15,6 @@ let active = false; // Holds latest story we requested a run let activeStoryId: string | undefined; -const getElement = () => { - const storyRoot = document.getElementById('story-root'); - return storyRoot ? storyRoot.childNodes : document.getElementById('root'); -}; - /** * Handle A11yContext events. * Because the event are sent without manual check, we split calls @@ -41,13 +36,14 @@ const run = async (storyId: string) => { channel.emit(EVENTS.RUNNING); const axe = (await import('axe-core')).default; - const { element = getElement(), config, options = {} } = input; + const { element = '#root', config, options = {} } = input; + const htmlElement = document.querySelector(element); axe.reset(); if (config) { axe.configure(config); } - const result = await axe.run(element, options); + const result = await axe.run(htmlElement, options); // It's possible that we requested a new run on a different story. // Unfortunately, axe doesn't support a cancel method to abort current run. // We check if the story we run against is still the current one, diff --git a/addons/a11y/src/components/A11YPanel.test.tsx b/addons/a11y/src/components/A11YPanel.test.tsx index 744e7e418b8..7c366377b12 100644 --- a/addons/a11y/src/components/A11YPanel.test.tsx +++ b/addons/a11y/src/components/A11YPanel.test.tsx @@ -63,6 +63,7 @@ describe('A11YPanel', () => { mockedApi.useStorybookState.mockReset(); mockedApi.useAddonState.mockReset(); + mockedApi.useAddonState.mockImplementation((_, defaultState) => React.useState(defaultState)); mockedApi.useChannel.mockReturnValue(jest.fn()); mockedApi.useParameter.mockReturnValue({ manual: false }); const state: Partial = { storyId: 'jest' }; diff --git a/addons/a11y/src/components/A11yContext.test.tsx b/addons/a11y/src/components/A11yContext.test.tsx index 5d4e7003f14..a70ced0368a 100644 --- a/addons/a11y/src/components/A11yContext.test.tsx +++ b/addons/a11y/src/components/A11yContext.test.tsx @@ -53,11 +53,13 @@ describe('A11YPanel', () => { beforeEach(() => { mockedApi.useChannel.mockReset(); mockedApi.useStorybookState.mockReset(); + mockedApi.useAddonState.mockReset(); + mockedApi.useAddonState.mockImplementation((_, defaultState) => React.useState(defaultState)); mockedApi.useChannel.mockReturnValue(jest.fn()); - const state: Partial = { storyId }; + const storyState: Partial = { storyId }; // Lazy to mock entire state - mockedApi.useStorybookState.mockReturnValue(state as any); + mockedApi.useStorybookState.mockReturnValue(storyState as any); }); it('should render children', () => { diff --git a/addons/a11y/src/components/A11yContext.tsx b/addons/a11y/src/components/A11yContext.tsx index 5061f5623d4..bd3c378f265 100644 --- a/addons/a11y/src/components/A11yContext.tsx +++ b/addons/a11y/src/components/A11yContext.tsx @@ -1,11 +1,11 @@ import * as React from 'react'; import { themes, convert } from '@storybook/theming'; import { Result } from 'axe-core'; -import { useChannel, useStorybookState } from '@storybook/api'; +import { useChannel, useStorybookState, useAddonState } from '@storybook/api'; import { STORY_CHANGED, STORY_RENDERED } from '@storybook/core-events'; -import { EVENTS } from '../constants'; +import { ADDON_ID, EVENTS } from '../constants'; -interface Results { +export interface Results { passes: Result[]; violations: Result[]; incomplete: Result[]; @@ -52,7 +52,7 @@ const defaultResult = { }; export const A11yContextProvider: React.FC = ({ active, ...props }) => { - const [results, setResults] = React.useState(defaultResult); + const [results, setResults] = useAddonState(ADDON_ID, defaultResult); const [tab, setTab] = React.useState(0); const [highlighted, setHighlighted] = React.useState([]); const { storyId } = useStorybookState(); diff --git a/addons/a11y/src/manager.test.tsx b/addons/a11y/src/manager.test.tsx new file mode 100644 index 00000000000..92ef7866313 --- /dev/null +++ b/addons/a11y/src/manager.test.tsx @@ -0,0 +1,55 @@ +import { addons } from '@storybook/addons'; +import * as api from '@storybook/api'; +import { PANEL_ID } from './constants'; +import './manager'; + +jest.mock('@storybook/api'); +jest.mock('@storybook/addons'); +const mockedApi = api as unknown as jest.Mocked; +mockedApi.getAddonState = jest.fn(); +const mockedAddons = addons as jest.Mocked; +const registrationImpl = mockedAddons.register.mock.calls[0][1]; + +describe('A11yManager', () => { + it('should register the panels', () => { + // when + registrationImpl(mockedApi); + + // then + expect(mockedAddons.add.mock.calls).toHaveLength(2); + expect(mockedAddons.add).toHaveBeenCalledWith(PANEL_ID, expect.anything()); + + const panel = mockedAddons.add.mock.calls + .map(([_, def]) => def) + .find(({ type }) => type === 'panel'); + const tool = mockedAddons.add.mock.calls + .map(([_, def]) => def) + .find(({ type }) => type === 'tool'); + expect(panel).toBeDefined(); + expect(tool).toBeDefined(); + }); + + it('should compute title with no issues', () => { + // given + mockedApi.getAddonState.mockImplementation(() => undefined); + registrationImpl(api as unknown as api.API); + const title = mockedAddons.add.mock.calls + .map(([_, def]) => def) + .find(({ type }) => type === 'panel').title as Function; + + // when / then + expect(title()).toBe('Accessibility'); + }); + + it('should compute title with issues', () => { + // given + mockedApi.getAddonState.mockImplementation(() => ({ violations: [{}], incomplete: [{}, {}] })); + registrationImpl(mockedApi); + const title = mockedAddons.add.mock.calls + .map(([_, def]) => def) + .find(({ type }) => type === 'panel').title as Function; + + // when / then + expect(title()).toBe('Accessibility (3)'); + }); +}); diff --git a/addons/a11y/src/manager.tsx b/addons/a11y/src/manager.tsx index 69cb77a7fbf..ce24d1c9caf 100644 --- a/addons/a11y/src/manager.tsx +++ b/addons/a11y/src/manager.tsx @@ -3,9 +3,9 @@ import { addons, types } from '@storybook/addons'; import { ADDON_ID, PANEL_ID, PARAM_KEY } from './constants'; import { VisionSimulator } from './components/VisionSimulator'; import { A11YPanel } from './components/A11YPanel'; -import { A11yContextProvider } from './components/A11yContext'; +import { A11yContextProvider, Results } from './components/A11yContext'; -addons.register(ADDON_ID, () => { +addons.register(ADDON_ID, (api) => { addons.add(PANEL_ID, { title: '', type: types.TOOL, @@ -14,7 +14,13 @@ addons.register(ADDON_ID, () => { }); addons.add(PANEL_ID, { - title: 'Accessibility', + title() { + const addonState: Results = api?.getAddonState(ADDON_ID); + const violationsNb = addonState?.violations?.length || 0; + const incompleteNb = addonState?.incomplete?.length || 0; + const totalNb = violationsNb + incompleteNb; + return totalNb !== 0 ? `Accessibility (${totalNb})` : 'Accessibility'; + }, type: types.PANEL, render: ({ active = true, key }) => ( diff --git a/addons/actions/package.json b/addons/actions/package.json index df2f6805258..7805c310487 100644 --- a/addons/actions/package.json +++ b/addons/actions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-actions", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Get UI feedback when an action is performed on an interactive element", "keywords": [ "storybook", @@ -41,13 +41,13 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/theming": "6.5.0-beta.4", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -80,7 +80,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js", "storybook": { "displayName": "Actions", diff --git a/addons/backgrounds/package.json b/addons/backgrounds/package.json index bd1be9237af..257e8d005b5 100644 --- a/addons/backgrounds/package.json +++ b/addons/backgrounds/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-backgrounds", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Switch backgrounds to view components in different settings", "keywords": [ "addon", @@ -45,13 +45,13 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/theming": "6.5.0-beta.4", "core-js": "^3.8.2", "global": "^4.4.0", "memoizerific": "^1.11.3", @@ -77,7 +77,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js", "storybook": { "displayName": "Backgrounds", diff --git a/addons/controls/package.json b/addons/controls/package.json index 30952506c61..9de789d6b5d 100644 --- a/addons/controls/package.json +++ b/addons/controls/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-controls", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Interact with component inputs dynamically in the Storybook UI", "keywords": [ "addon", @@ -45,15 +45,15 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/node-logger": "6.5.0-beta.1", - "@storybook/store": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/node-logger": "6.5.0-beta.4", + "@storybook/store": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", "core-js": "^3.8.2", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" @@ -73,7 +73,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/manager.js", "storybook": { "displayName": "Controls", diff --git a/addons/docs/package.json b/addons/docs/package.json index c0d6aba3a73..b4d648e55ab 100644 --- a/addons/docs/package.json +++ b/addons/docs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-docs", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Document component usage and properties in Markdown", "keywords": [ "addon", @@ -59,20 +59,20 @@ "@babel/preset-env": "^7.12.11", "@jest/transform": "^26.6.2", "@mdx-js/react": "^1.6.22", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/docs-tools": "6.5.0-beta.1", + "@storybook/docs-tools": "6.5.0-beta.4", "@storybook/mdx1-csf": "canary", - "@storybook/node-logger": "6.5.0-beta.1", - "@storybook/postinstall": "6.5.0-beta.1", - "@storybook/preview-web": "6.5.0-beta.1", - "@storybook/source-loader": "6.5.0-beta.1", - "@storybook/store": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/node-logger": "6.5.0-beta.4", + "@storybook/postinstall": "6.5.0-beta.4", + "@storybook/preview-web": "6.5.0-beta.4", + "@storybook/source-loader": "6.5.0-beta.4", + "@storybook/store": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", "babel-loader": "^8.0.0", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", @@ -108,7 +108,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js", "storybook": { "displayName": "Docs", diff --git a/addons/docs/src/blocks/Canvas.tsx b/addons/docs/src/blocks/Canvas.tsx index bf5362857f0..a1217e48939 100644 --- a/addons/docs/src/blocks/Canvas.tsx +++ b/addons/docs/src/blocks/Canvas.tsx @@ -11,6 +11,7 @@ import { DocsContext, DocsContextProps } from './DocsContext'; import { SourceContext, SourceContextProps } from './SourceContainer'; import { getSourceProps, SourceState } from './Source'; import { useStories } from './useStory'; +import { CURRENT_SELECTION } from './types'; export { SourceState }; @@ -53,7 +54,10 @@ const getPreviewProps = ( ); const sourceProps = getSourceProps({ ids: targetIds }, docsContext, sourceContext); if (!sourceState) sourceState = sourceProps.state; - const stories = useStories(targetIds, docsContext); + const storyIds = targetIds.map((targetId) => + targetId === CURRENT_SELECTION ? docsContext.id : targetId + ); + const stories = useStories(storyIds, docsContext); isLoading = stories.some((s) => !s); return { diff --git a/addons/essentials/package.json b/addons/essentials/package.json index 2c214e0d2e5..f6af1ec2a39 100644 --- a/addons/essentials/package.json +++ b/addons/essentials/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-essentials", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Curated addons to bring out the best of Storybook", "keywords": [ "addon", @@ -39,25 +39,25 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addon-actions": "6.5.0-beta.1", - "@storybook/addon-backgrounds": "6.5.0-beta.1", - "@storybook/addon-controls": "6.5.0-beta.1", - "@storybook/addon-docs": "6.5.0-beta.1", - "@storybook/addon-measure": "6.5.0-beta.1", - "@storybook/addon-outline": "6.5.0-beta.1", - "@storybook/addon-toolbars": "6.5.0-beta.1", - "@storybook/addon-viewport": "6.5.0-beta.1", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/node-logger": "6.5.0-beta.1", + "@storybook/addon-actions": "6.5.0-beta.4", + "@storybook/addon-backgrounds": "6.5.0-beta.4", + "@storybook/addon-controls": "6.5.0-beta.4", + "@storybook/addon-docs": "6.5.0-beta.4", + "@storybook/addon-measure": "6.5.0-beta.4", + "@storybook/addon-outline": "6.5.0-beta.4", + "@storybook/addon-toolbars": "6.5.0-beta.4", + "@storybook/addon-viewport": "6.5.0-beta.4", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/node-logger": "6.5.0-beta.4", "core-js": "^3.8.2", "regenerator-runtime": "^0.13.7", "ts-dedent": "^2.0.0" }, "devDependencies": { "@babel/core": "^7.12.10", - "@storybook/vue": "6.5.0-beta.1", + "@storybook/vue": "6.5.0-beta.4", "@types/jest": "^26.0.16", "@types/webpack-env": "^1.16.0" }, @@ -120,6 +120,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/addons/interactions/package.json b/addons/interactions/package.json index c1b98753098..a466e8aba30 100644 --- a/addons/interactions/package.json +++ b/addons/interactions/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-interactions", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Automate, test and debug user interactions", "keywords": [ "storybook-addons", @@ -42,15 +42,15 @@ }, "dependencies": { "@devtools-ds/object-inspector": "^1.1.2", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/instrumenter": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/instrumenter": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", "core-js": "^3.8.2", "global": "^4.4.0", "jest-mock": "^27.0.6", @@ -77,7 +77,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js", "storybook": { "displayName": "Interactions", diff --git a/addons/jest/package.json b/addons/jest/package.json index 595bf342237..95e6591c34e 100644 --- a/addons/jest/package.json +++ b/addons/jest/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-jest", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "React storybook addon that show component jest report", "keywords": [ "addon", @@ -47,12 +47,12 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", "core-js": "^3.8.2", "global": "^4.4.0", "react-sizeme": "^3.0.1", @@ -77,7 +77,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js", "storybook": { "displayName": "Jest", diff --git a/addons/links/package.json b/addons/links/package.json index 94e07f90b8b..ebfce723ce9 100644 --- a/addons/links/package.json +++ b/addons/links/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-links", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Link stories together to build demos and prototypes with your UI components", "keywords": [ "addon", @@ -41,11 +41,11 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/router": "6.5.0-beta.1", + "@storybook/router": "6.5.0-beta.4", "@types/qs": "^6.9.5", "core-js": "^3.8.2", "global": "^4.4.0", @@ -72,7 +72,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js", "storybook": { "displayName": "Links", diff --git a/addons/measure/package.json b/addons/measure/package.json index 0f15dec8a75..e9a5c9fc6ef 100644 --- a/addons/measure/package.json +++ b/addons/measure/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-measure", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Inspect layouts by visualizing the box model", "keywords": [ "storybook-addons", @@ -44,11 +44,11 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", "core-js": "^3.8.2", "global": "^4.4.0" @@ -71,7 +71,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js", "storybook": { "displayName": "Measure", diff --git a/addons/outline/package.json b/addons/outline/package.json index bcbe183f50f..8d0311919c0 100644 --- a/addons/outline/package.json +++ b/addons/outline/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-outline", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Outline all elements with CSS to help with layout placement and alignment", "keywords": [ "storybook-addons", @@ -47,11 +47,11 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", "core-js": "^3.8.2", "global": "^4.4.0", @@ -76,7 +76,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js", "storybook": { "displayName": "Outline", diff --git a/addons/storyshots/storyshots-core/package.json b/addons/storyshots/storyshots-core/package.json index b4260dc5f2f..036d22872f2 100644 --- a/addons/storyshots/storyshots-core/package.json +++ b/addons/storyshots/storyshots-core/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storyshots", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Take a code snapshot of every story automatically with Jest", "keywords": [ "addon", @@ -45,11 +45,11 @@ }, "dependencies": { "@jest/transform": "^26.6.2", - "@storybook/addons": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", "@storybook/babel-plugin-require-context-hook": "1.0.1", - "@storybook/client-api": "6.5.0-beta.1", - "@storybook/core-client": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", + "@storybook/client-api": "6.5.0-beta.4", + "@storybook/core-client": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", "@types/glob": "^7.1.3", "@types/jest": "^26.0.16", @@ -69,11 +69,11 @@ "@angular/core": "^11.2.0", "@angular/platform-browser-dynamic": "^11.2.0", "@emotion/jest": "^11.8.0", - "@storybook/addon-docs": "6.5.0-beta.1", - "@storybook/angular": "6.5.0-beta.1", - "@storybook/react": "6.5.0-beta.1", - "@storybook/vue": "6.5.0-beta.1", - "@storybook/vue3": "6.5.0-beta.1", + "@storybook/addon-docs": "6.5.0-beta.4", + "@storybook/angular": "6.5.0-beta.4", + "@storybook/react": "6.5.0-beta.4", + "@storybook/vue": "6.5.0-beta.4", + "@storybook/vue3": "6.5.0-beta.4", "babel-loader": "^8.0.0", "enzyme": "^3.11.0", "enzyme-to-json": "^3.6.1", @@ -150,7 +150,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "storybook": { "displayName": "Storyshots", "icon": "https://user-images.githubusercontent.com/263385/101991676-48cdf300-3c7c-11eb-8aa1-944dab6ab29b.png", diff --git a/addons/storyshots/storyshots-puppeteer/package.json b/addons/storyshots/storyshots-puppeteer/package.json index d7aa0421132..ccad56dc2a8 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": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Image snapshots addition to StoryShots based on puppeteer", "keywords": [ "addon", @@ -42,7 +42,7 @@ "dependencies": { "@axe-core/puppeteer": "^4.2.0", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/node-logger": "6.5.0-beta.1", + "@storybook/node-logger": "6.5.0-beta.4", "@types/jest-image-snapshot": "^4.1.3", "core-js": "^3.8.2", "jest-image-snapshot": "^4.3.0", @@ -53,7 +53,7 @@ "@types/puppeteer": "^5.4.0" }, "peerDependencies": { - "@storybook/addon-storyshots": "6.5.0-beta.1", + "@storybook/addon-storyshots": "6.5.0-beta.4", "puppeteer": "^2.0.0 || ^3.0.0" }, "peerDependenciesMeta": { @@ -64,5 +64,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a" + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04" } diff --git a/addons/storysource/package.json b/addons/storysource/package.json index 377f4020b34..6d794d4c21c 100644 --- a/addons/storysource/package.json +++ b/addons/storysource/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-storysource", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "View a story’s source code to see how it works and paste into your app", "keywords": [ "addon", @@ -41,13 +41,13 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/router": "6.5.0-beta.1", - "@storybook/source-loader": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/router": "6.5.0-beta.4", + "@storybook/source-loader": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", "core-js": "^3.8.2", "estraverse": "^5.2.0", "loader-utils": "^2.0.0", @@ -74,7 +74,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js", "storybook": { "displayName": "Storysource", diff --git a/addons/toolbars/package.json b/addons/toolbars/package.json index 286f89ff887..accd192cf49 100644 --- a/addons/toolbars/package.json +++ b/addons/toolbars/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-toolbars", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Create your own toolbar items that control story rendering", "keywords": [ "addon", @@ -45,11 +45,11 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", "core-js": "^3.8.2", "regenerator-runtime": "^0.13.7" }, @@ -68,7 +68,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/manager.js", "storybook": { "displayName": "Toolbars", diff --git a/addons/viewport/package.json b/addons/viewport/package.json index 82b4498fcc2..f92052436b2 100644 --- a/addons/viewport/package.json +++ b/addons/viewport/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addon-viewport", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Build responsive components by adjusting Storybook’s viewport size and orientation", "keywords": [ "addon", @@ -42,12 +42,12 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", "core-js": "^3.8.2", "global": "^4.4.0", "memoizerific": "^1.11.3", @@ -69,7 +69,7 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/preview.js", "storybook": { "displayName": "Viewport", diff --git a/app/angular/package.json b/app/angular/package.json index c9c4a9210fa..6a189816c1d 100644 --- a/app/angular/package.json +++ b/app/angular/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/angular", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook for Angular: Develop Angular Components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -39,18 +39,18 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/core-client": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", - "@storybook/core-server": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/core-client": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", + "@storybook/core-server": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/docs-tools": "6.5.0-beta.1", - "@storybook/node-logger": "6.5.0-beta.1", + "@storybook/docs-tools": "6.5.0-beta.4", + "@storybook/node-logger": "6.5.0-beta.4", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.0-beta.1", + "@storybook/store": "6.5.0-beta.4", "@types/node": "^14.14.20 || ^16.0.0", "@types/react": "^16.14.23", "@types/react-dom": "^16.9.14", @@ -132,5 +132,5 @@ "access": "public" }, "builders": "dist/ts3.9/builders/builders.json", - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a" + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04" } diff --git a/app/angular/src/builders/utils/build-standalone-errors-handler.ts b/app/angular/src/builders/utils/build-standalone-errors-handler.ts index d912c016312..126ad4836c2 100644 --- a/app/angular/src/builders/utils/build-standalone-errors-handler.ts +++ b/app/angular/src/builders/utils/build-standalone-errors-handler.ts @@ -21,11 +21,11 @@ export const buildStandaloneErrorHandler = (error: any): any => { logger.line(); return error.close ? dedent` - FATAL broken build!, will close the process, - Fix the error below and restart storybook. - ` + FATAL broken build!, will close the process, + Fix the error below and restart storybook. + ` : dedent` - Broken build, fix the error above. - You may need to refresh the browser. - `; + Broken build, fix the error above. + You may need to refresh the browser. + `; }; diff --git a/app/ember/package.json b/app/ember/package.json index 7ba131cf625..3a09ed6d8ae 100644 --- a/app/ember/package.json +++ b/app/ember/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/ember", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.", "homepage": "https://github.com/storybookjs/storybook/tree/main/app/ember", "bugs": { @@ -36,11 +36,11 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/core-client": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-server": "6.5.0-beta.1", - "@storybook/docs-tools": "6.5.0-beta.1", - "@storybook/store": "6.5.0-beta.1", + "@storybook/core-client": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-server": "6.5.0-beta.4", + "@storybook/docs-tools": "6.5.0-beta.4", + "@storybook/store": "6.5.0-beta.4", "core-js": "^3.8.2", "global": "^4.4.0", "react": "16.14.0", @@ -61,6 +61,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/client/index.js" } diff --git a/app/html/package.json b/app/html/package.json index b5c38805acb..39a2f0128de 100644 --- a/app/html/package.json +++ b/app/html/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/html", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -39,14 +39,14 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/core-client": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-server": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/core-client": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-server": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/docs-tools": "6.5.0-beta.1", - "@storybook/preview-web": "6.5.0-beta.1", - "@storybook/store": "6.5.0-beta.1", + "@storybook/docs-tools": "6.5.0-beta.4", + "@storybook/preview-web": "6.5.0-beta.4", + "@storybook/store": "6.5.0-beta.4", "@types/node": "^14.14.20 || ^16.0.0", "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", @@ -71,6 +71,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/client/index.js" } diff --git a/app/preact/package.json b/app/preact/package.json index aa505a2d492..069c24ea6e9 100644 --- a/app/preact/package.json +++ b/app/preact/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preact", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook for Preact: Develop Preact Component in isolation.", "keywords": [ "storybook" @@ -40,12 +40,12 @@ }, "dependencies": { "@babel/plugin-transform-react-jsx": "^7.12.12", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/core-client": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-server": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/core-client": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-server": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/store": "6.5.0-beta.1", + "@storybook/store": "6.5.0-beta.4", "@types/node": "^14.14.20 || ^16.0.0", "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", @@ -71,6 +71,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/client/index.js" } diff --git a/app/react/package.json b/app/react/package.json index c8787268f2c..c8c32c21475 100644 --- a/app/react/package.json +++ b/app/react/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/react", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook for React: Develop React Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -43,17 +43,17 @@ "@babel/preset-flow": "^7.12.1", "@babel/preset-react": "^7.12.10", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/core-client": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-server": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/core-client": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-server": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/docs-tools": "6.5.0-beta.1", - "@storybook/node-logger": "6.5.0-beta.1", + "@storybook/docs-tools": "6.5.0-beta.4", + "@storybook/node-logger": "6.5.0-beta.4", "@storybook/react-docgen-typescript-plugin": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.0-beta.1", + "@storybook/store": "6.5.0-beta.4", "@types/estree": "^0.0.51", "@types/node": "^14.14.20 || ^16.0.0", "@types/webpack-env": "^1.16.0", @@ -79,11 +79,11 @@ }, "devDependencies": { "@types/util-deprecate": "^1.0.0", + "jest-specific-snapshot": "^4.0.0", "webpack": "4" }, "peerDependencies": { "@babel/core": "^7.11.5", - "jest-specific-snapshot": "^4.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", "require-from-string": "^2.0.2" @@ -114,6 +114,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/client/index.js" } diff --git a/app/react/src/client/preview/render.tsx b/app/react/src/client/preview/render.tsx index 08238aed678..94db184a3b6 100644 --- a/app/react/src/client/preview/render.tsx +++ b/app/react/src/client/preview/render.tsx @@ -48,7 +48,7 @@ const renderElement = async (node: ReactElement, el: Element) => { }; const canUseNewReactRootApi = - reactDomVersion.startsWith('18') || reactDomVersion.startsWith('0.0.0'); + reactDomVersion && (reactDomVersion.startsWith('18') || reactDomVersion.startsWith('0.0.0')); const shouldUseNewRootApi = FRAMEWORK_OPTIONS?.legacyRootApi !== true; diff --git a/app/server/package.json b/app/server/package.json index a7438f653f0..e38723a4b15 100644 --- a/app/server/package.json +++ b/app/server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/server", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -39,16 +39,16 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/client-api": "6.5.0-beta.1", - "@storybook/core-client": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-server": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/client-api": "6.5.0-beta.4", + "@storybook/core-client": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-server": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/node-logger": "6.5.0-beta.1", - "@storybook/preview-web": "6.5.0-beta.1", - "@storybook/store": "6.5.0-beta.1", + "@storybook/node-logger": "6.5.0-beta.4", + "@storybook/preview-web": "6.5.0-beta.4", + "@storybook/store": "6.5.0-beta.4", "@types/node": "^14.14.20 || ^16.0.0", "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", @@ -71,6 +71,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/client/index.js" } diff --git a/app/svelte/package.json b/app/svelte/package.json index 3152512b113..a0322edc0e3 100644 --- a/app/svelte/package.json +++ b/app/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/svelte", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -40,15 +40,15 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/core-client": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-server": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/core-client": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-server": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/docs-tools": "6.5.0-beta.1", - "@storybook/node-logger": "6.5.0-beta.1", - "@storybook/store": "6.5.0-beta.1", + "@storybook/docs-tools": "6.5.0-beta.4", + "@storybook/node-logger": "6.5.0-beta.4", + "@storybook/store": "6.5.0-beta.4", "core-js": "^3.8.2", "global": "^4.4.0", "loader-utils": "^2.0.0", @@ -78,6 +78,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/client/index.js" } diff --git a/app/vue/package.json b/app/vue/package.json index 5d047a8afdf..ecbb3ca05fd 100644 --- a/app/vue/package.json +++ b/app/vue/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook for Vue: Develop Vue Component in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -39,14 +39,14 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/core-client": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-server": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/core-client": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-server": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/docs-tools": "6.5.0-beta.1", - "@storybook/store": "6.5.0-beta.1", + "@storybook/docs-tools": "6.5.0-beta.4", + "@storybook/store": "6.5.0-beta.4", "@types/node": "^14.14.20 || ^16.0.0", "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", @@ -81,6 +81,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/client/index.js" } diff --git a/app/vue3/package.json b/app/vue3/package.json index 2552f3d143f..d4c6837e13f 100644 --- a/app/vue3/package.json +++ b/app/vue3/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/vue3", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.", "keywords": [ "storybook" @@ -39,13 +39,13 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/core-client": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-server": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/core-client": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-server": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/docs-tools": "6.5.0-beta.1", - "@storybook/store": "6.5.0-beta.1", + "@storybook/docs-tools": "6.5.0-beta.4", + "@storybook/store": "6.5.0-beta.4", "@types/node": "^14.14.20 || ^16.0.0", "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", @@ -78,6 +78,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/client/index.js" } diff --git a/app/web-components/package.json b/app/web-components/package.json index a5509673124..f1cbbc8b944 100644 --- a/app/web-components/package.json +++ b/app/web-components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/web-components", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.", "keywords": [ "lit-html", @@ -44,16 +44,16 @@ "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/preset-env": "^7.12.11", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/client-api": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/core-client": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-server": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/client-api": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/core-client": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-server": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/docs-tools": "6.5.0-beta.1", - "@storybook/preview-web": "6.5.0-beta.1", - "@storybook/store": "6.5.0-beta.1", + "@storybook/docs-tools": "6.5.0-beta.4", + "@storybook/preview-web": "6.5.0-beta.4", + "@storybook/store": "6.5.0-beta.4", "@types/node": "^14.14.20 || ^16.0.0", "@types/webpack-env": "^1.16.0", "babel-plugin-bundled-import-meta": "^0.3.1", @@ -77,6 +77,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/client/index.js" } diff --git a/docs/api/cli-options.md b/docs/api/cli-options.md index 9380c20d4e1..f8606d47cb6 100644 --- a/docs/api/cli-options.md +++ b/docs/api/cli-options.md @@ -18,10 +18,10 @@ Usage: start-storybook [options] | `-V`, `--version` | Output the version number
`start-storybook -V` | | `-p`, `--port [number]` | Port to run Storybook
`start-storybook -p 9009` | | `-h`, `--host [string]` | Host to run Storybook
`start-storybook -h my-host.com` | -| `-s`, `--static-dir` | **Deprecated** [see note](#static-dir-deprecation). Directory where to load static files from, comma-separated list
`start-storybook -s public` | +| `-s`, `--static-dir` | **Deprecated** [see note](#static-dir-deprecation). Directory where to load static files from, comma-separated list
`start-storybook -s public` | | `-c`, `--config-dir [dir-name]` | Directory where to load Storybook configurations from
`start-storybook -c .storybook` | -| `--https` | Serve Storybook over HTTPS. Note: You must provide your own certificate information.
`start-storybook --https` | -| `--ssl-ca` | Provide an SSL certificate authority. (Optional with --https, required if using a self-signed certificate)
`start-storybook --ssl-ca my-certificate` | +| `--https` | Serve Storybook over HTTPS. Note: You must provide your own certificate information
`start-storybook --https` | +| `--ssl-ca` | Provide an SSL certificate authority. (Optional with --https, required if using a self-signed certificate)
`start-storybook --ssl-ca my-certificate` | | `--ssl-cert` | Provide an SSL certificate. (Required with --https)
`start-storybook --ssl-cert my-ssl-certificate` | | `--ssl-key` | Provide an SSL key. (Required with --https)
`start-storybook --ssl-key my-ssl-key` | | `--smoke-test` | Exit after successful start
`start-storybook --smoke-test` | @@ -32,7 +32,8 @@ Usage: start-storybook [options] | `--debug-webpack` | Display final webpack configurations for debugging purposes
`start-storybook --debug-webpack` | | `--webpack-stats-json` | Write Webpack Stats JSON to disk
`start-storybook --webpack-stats-json /tmp/webpack-stats` | | `--docs` | Starts Storybook in documentation mode. Learn more about it in [here](../writing-docs/build-documentation.md#preview-storybooks-documentation)
`start-storybook --docs` | -| `--no-manager-cache` | Disables Storybook's manager caching mechanism. See note below.
`start-storybook --no-manager-cache` | +| `--no-manager-cache` | Disables Storybook's manager caching mechanism. See note below
`start-storybook --no-manager-cache` | +| `--disable-telemetry` | Disables Storybook's telemetry. Learn more about it [here](../configure/telemetry.md)
`start-storybook --disable-telemetry` |
💡 The flag --no-manager-cache disables the internal caching of Storybook and can severely impact your Storybook loading time, so only use it when you need to refresh Storybook's UI, such as when editing themes. @@ -54,15 +55,16 @@ Usage: build-storybook [options] | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `-h`, `--help` | Output usage information
`build-storybook --help` | | `-V`, `--version` | Output the version number
`build-storybook -V` | -| `-s`, `--static-dir` | **Deprecated** [see note](#static-dir-deprecation). Directory where to load static files from, comma-separated list
`build-storybook -s public` | +| `-s`, `--static-dir` | **Deprecated** [see note](#static-dir-deprecation).
Directory where to load static files from, comma-separated list
`build-storybook -s public` | | `-o`, `--output-dir [dir-name]` | Directory where to store built files
`build-storybook -o /my-deployed-storybook` | | `-c`, `--config-dir [dir-name]` | Directory where to load Storybook configurations from
`build-storybook -c .storybook` | -| `--loglevel [level]` | Controls level of logging during build. Can be one of: [silly, verbose, info (default), warn, error, silent]
`build-storybook --loglevel warn` | +| `--loglevel [level]` | Controls level of logging during build.
Available options: `silly`, `verbose`, `info` (default), `warn`, `error`, `silent`
`build-storybook --loglevel warn` | | `--quiet` | Suppress verbose build output
`build-storybook --quiet` | | `--no-dll` | Do not use dll reference (no-op)
`build-storybook --no-dll` | | `--debug-webpack` | Display final webpack configurations for debugging purposes
`build-storybook --debug-webpack` | | `--webpack-stats-json` | Write Webpack Stats JSON to disk
`build-storybook --webpack-stats-json /my-storybook/webpack-stats` | | `--docs` | Builds Storybook in documentation mode. Learn more about it in [here](../writing-docs/build-documentation.md#publish-storybooks-documentation)
`build-storybook --docs` | +| `--disable-telemetry` | Disables Storybook's telemetry. Learn more about it [here](../configure/telemetry.md).
`build-storybook --disable-telemetry` |
💡 If you're using npm instead of yarn to publish Storybook, the commands work slightly different. For example, npm run build-storybook -- -o ./path/to/build. diff --git a/docs/configure/features-and-behavior.md b/docs/configure/features-and-behavior.md index 42d791c0222..7bd4b8d7ba3 100644 --- a/docs/configure/features-and-behavior.md +++ b/docs/configure/features-and-behavior.md @@ -54,4 +54,5 @@ You can use URL parameters to configure some of the available features: | **isFullscreen** | `full` | `true` | | **showNav** | `nav` | `false` | | **showPanel** | `panel` | `false`, `right`, `bottom` | -| **selectedPanel** | `addonPanel` | Any panel ID | \ No newline at end of file +| **selectedPanel** | `addonPanel` | Any panel ID | +| **showTabs** | `tabs` | `true` | \ No newline at end of file diff --git a/docs/configure/telemetry.md b/docs/configure/telemetry.md new file mode 100644 index 00000000000..72c66d0b8ae --- /dev/null +++ b/docs/configure/telemetry.md @@ -0,0 +1,174 @@ +--- +title: 'Telemetry' +--- + +Storybook collects completely anonymous data to help us improve user experience. Participation in this anonymous program is optional, and you may opt-out if you'd not like to share any information. + +## Why is telemetry collected? + +Hundreds of thousands of developers use Storybook daily to build, test, and document components. Storybook is framework agnostic and integrates with the front-end ecosystem: + +- **JavaScript frameworks** such as [React](https://reactjs.org/), [Vue](https://vuejs.org/), and [Svelte](https://svelte.dev/) +- **Libraries** such as [Styled-Components](https://styled-components.com/), [Tailwind](https://tailwindcss.com/), [Redux](https://redux.js.org/) +- **Design tools** such as [Figma](https://figma.com/), [Sketch](https://www.sketch.com/), [Zeplin](https://zeplin.io/) and [InVision](https://www.invisionapp.com/) +- **Workflow tools** such as [Notion](https://www.notion.so/product), [Confluence](https://www.atlassian.com/software/confluence), and [Jira](https://www.atlassian.com/software/jira) + +In the past, our improvement process relied on manually gathering feedback. But with a growing userbase and the need to support a wide variety of integrations, we need a more accurate method for gauging Storybook usage and pain points. + +These telemetry data help us (the maintainers) to prioritize the highest impact projects. That allows us to keep up with trends in the front-end ecosystem and verify that our community's hard work achieves the intended result. + +## What is being collected? + +We collect general usage details, including command invocation, Storybook version, addons, and the view layer. + +Specifically, we track the following information in our telemetry events: + +- Timestamp of the occurrence. +- Command invoked (e.g., `init`, `upgrade`, `start-storybook`). +- Storybook unique identifier: One-way hash generated during Storybook installation process. +- One way hash of the IP address where the event occurred for spam detection. +- Story count. +- Storybook version. +- Storybook metadata: + - Language (e.g., TypeScript, JavaScript). + - Supported view layers (e.g., React, Vue, Angular, Svelte). + - Builder (e.g., Webpack4, Webpack5, Vite). + - Meta framework (e.g., [Next](https://nextjs.org/), [Gatsby](https://www.gatsbyjs.com/), [CRA](https://create-react-app.dev/)). + - [Addons](/addons) (e.g., [Essentials](../essentials/introduction), [Accessibility](https://storybook.js.org/addons/@storybook/addon-a11y/)). + - [Feature flags](./overview.md#feature-flags) (e.g., `buildStoriesJson`). +- Whether the command was invoked on CI or not. + +Access to the raw data is highly controlled, limited to select members of Storybook's core team who maintain the telemetry. We cannot identify individual users from the dataset: it is anonymized and untraceable back to the user. + +## What about sensitive information? + +We take your privacy and our security very seriously. We perform additional steps to ensure that secure data (e.g., environment variables or other forms of sensitive data) **do not** make their way into our analytics. You can view all the information we collect by setting the `STORYBOOK_TELEMETRY_DEBUG` to `1` to print out the information gathered. For example: + + + + + + + +Will generate the following output: + +```json +{ + "anonymousId": "8bcfdfd5f9616a1923dd92adf89714331b2d18693c722e05152a47f8093392bb", + "eventType": "start", + "payload": { + "storyIndex": { + "storyCount": 4, + "version": 3 + } + }, + "inCI": false, + "metadata": { + "generatedAt": 1648233198722, + "builder": { + "name": "webpack4" + }, + "hasCustomBabel": false, + "hasCustomWebpack": true, + "hasStaticDirs": true, + "hasStorybookEslint": false, + "refCount": 0, + "metaFramework": { + "name": "CRA", + "packageName": "react-scripts", + "version": "4.0.3" + }, + "features": { + "buildStoriesJson": true + }, + "storybookVersion": "6.5.0", + "language": "typescript", + "storybookPackages": { + "@storybook/addons": { + "version": "6.5.0" + }, + "@storybook/builder-webpack4": { + "version": "6.5.0" + }, + "@storybook/react": { + "version": "6.5.0" + } + }, + "framework": { + "name": "react" + }, + "addons": { + "@storybook/preset-create-react-app": { + "version": "3.2.0" + }, + "@storybook/addon-ie11": { + "version": "0.0.7--canary.5e87b64.0" + }, + "@storybook/addon-essentials": { + "options": { + "viewport": false + }, + "version": "6.5.0" + } + } + } +} +``` + +## Will this data be shared? + +The data we collect is anonymous, not traceable to the source, and only meaningful in aggregate form. No data we collect is personally identifiable. +In the future, we plan to share relevant data with the community through public dashboards (or similar data representation formats). + +## How to opt-out + +You may opt-out of the telemetry by setting Storybook's configuration element `disableTelemetry` to `true`, using the `--disable-telemetry` flag, or setting the environment variable`STORYBOOK_DISABLE_TELEMETRY` to `1`. For example: + + + + + + + +## Crash reports (disabled by default) + +In addition to general usage telemetry, you may also choose to share crash reports. Storybook will then sanitize the error object (removing all user paths) and append it to the telemetry event. To enable crash reporting, you can set the `enableCrashReports` configuration element to `true`, using the `--enable-crash-reports` flag, or set the `STORYBOOK_ENABLE_CRASH_REPORTS` environment variable to `1`. For example: + + + + + + + +Generates the following item in the telemetry event: + + + + + + diff --git a/docs/contribute/code.md b/docs/contribute/code.md index b6c92a5560e..9a1f4fada5b 100644 --- a/docs/contribute/code.md +++ b/docs/contribute/code.md @@ -59,7 +59,9 @@ yarn build When asked if you want to start the build in `watch` mode, answer **yes** to develop in interactive mode. Afterward, choose which packages you want to build. For example, if you're going to work on a feature for `@storybook/addon-docs`, you might want to select `@storybook/addon-docs` and `@storybook/components`.
-💡 Build's `watch' mode is great for interactive development. However, for performance reasons it only transpiles your code and doesn't execute the TypeScript compiler. If something isn't working as expected, try running `build` WITHOUT watch mode: it will re-generate TypeScript types and also perform type checking for you. + +💡 Build's `watch` mode is great for interactive development. However, for performance reasons it only transpiles your code and doesn't execute the TypeScript compiler. If something isn't working as expected, try running `build` WITHOUT watch mode: it will re-generate TypeScript types and also perform type checking for you. +
![Storybook package selector](./storybook-build-packages-selection-optimized.png) @@ -144,14 +146,14 @@ npx sb@next link --local /path/to/local-repro-directory ```
-💡 The `sb link` command relies on `yarn 2` linking under the hood. It requires that the local repro is using `yarn 2`, which will be the case if you're using the [`sb repro` command](./how-to-reproduce) per our contributing guidelines. If you are trying to link to a non-`yarn 2` project, linking will fail. +💡 The sb link command relies on yarn 2 linking under the hood. It requires that the local repro is using yarn 2, which will be the case if you're using the [sb repro command](./how-to-reproduce) per our contributing guidelines. If you are trying to link to a non-yarn 2 project, linking will fail.
## Troubleshooting
-`yarn build --all --watch` watches everything but is resource-intensive +yarn build --all --watch watches everything but is resource-intensive It's troublesome to know which packages you're going to change ahead of time, and watching all of them can be highly demanding, even on modern machines. If you're working on a powerful enough machine, you can use `yarn build --all --watch` instead of `yarn build`. diff --git a/docs/get-started/install.md b/docs/get-started/install.md index 7c24707d542..cada685c43d 100644 --- a/docs/get-started/install.md +++ b/docs/get-started/install.md @@ -41,6 +41,7 @@ The command above will make the following changes to your local environment: - 🛠 Setup the necessary scripts to run and build Storybook. - 🛠 Add the default Storybook configuration. - 📝 Add some boilerplate stories to get you started. +- 📡 Set up telemetry to help us improve Storybook. Read more about it [here](../configure/telemetry.md). Depending on your framework, first, build your app and then check that everything worked by running: @@ -92,4 +93,4 @@ If all else fails, try asking for [help](https://storybook.js.org/support)
-Now that you installed Storybook successfully, let’s take a look at a story that was written for us. +Now that you installed Storybook successfully, let’s take a look at a story that was written for us. \ No newline at end of file diff --git a/docs/snippets/common/component-story-custom-source.js.mdx b/docs/snippets/common/component-story-custom-source.js.mdx index ae09a7eb629..a1bc4291717 100644 --- a/docs/snippets/common/component-story-custom-source.js.mdx +++ b/docs/snippets/common/component-story-custom-source.js.mdx @@ -12,7 +12,7 @@ export default { component: Button, }; -export const Template = (args) => ({ +const Template = (args) => ({ //👇 Your template goes here }); diff --git a/docs/snippets/common/storybook-disable-telemetry-env.env-var.js.mdx b/docs/snippets/common/storybook-disable-telemetry-env.env-var.js.mdx new file mode 100644 index 00000000000..9ed1c3e5430 --- /dev/null +++ b/docs/snippets/common/storybook-disable-telemetry-env.env-var.js.mdx @@ -0,0 +1,3 @@ +```shell +STORYBOOK_DISABLE_TELEMETRY=1 yarn storybook +``` \ No newline at end of file diff --git a/docs/snippets/common/storybook-disable-telemetry-flag.npm.js.mdx b/docs/snippets/common/storybook-disable-telemetry-flag.npm.js.mdx new file mode 100644 index 00000000000..81212a40c93 --- /dev/null +++ b/docs/snippets/common/storybook-disable-telemetry-flag.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +npm run storybook -- --disable-telemetry +``` diff --git a/docs/snippets/common/storybook-disable-telemetry-flag.yarn.js.mdx b/docs/snippets/common/storybook-disable-telemetry-flag.yarn.js.mdx new file mode 100644 index 00000000000..c9e70448cef --- /dev/null +++ b/docs/snippets/common/storybook-disable-telemetry-flag.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn storybook --disable-telemetry +``` diff --git a/docs/snippets/common/storybook-main-disable-telemetry.main-js.js.mdx b/docs/snippets/common/storybook-main-disable-telemetry.main-js.js.mdx new file mode 100644 index 00000000000..c7786a17424 --- /dev/null +++ b/docs/snippets/common/storybook-main-disable-telemetry.main-js.js.mdx @@ -0,0 +1,18 @@ +```js +// .storybook/main.js + +module.exports = { + stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + addons: [ + '@storybook/addon-links', + '@storybook/addon-essentials', + '@storybook/addon-interactions', + '@storybook/preset-create-react-app', + ], + framework: '@storybook/react', + core: { + builder: 'webpack5', + disableTelemetry: true, // 👈 Disables telemetry + }, +}; +``` \ No newline at end of file diff --git a/docs/snippets/common/storybook-main-disable-telemetry.main-ts.ts.mdx b/docs/snippets/common/storybook-main-disable-telemetry.main-ts.ts.mdx new file mode 100644 index 00000000000..1f707e2d95e --- /dev/null +++ b/docs/snippets/common/storybook-main-disable-telemetry.main-ts.ts.mdx @@ -0,0 +1,23 @@ +```ts +// .storybook/main.ts + +// Imports Storybook's configuration API +import type { StorybookConfig } from '@storybook/core-common'; + +const config: StorybookConfig = { + stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + addons: [ + '@storybook/addon-links', + '@storybook/addon-essentials', + '@storybook/addon-interactions', + '@storybook/preset-create-react-app', + ], + framework: '@storybook/react', + core: { + builder: 'webpack5', + disableTelemetry: true, // 👈 Disables telemetry + }, +}; + +module.exports = config; +``` \ No newline at end of file diff --git a/docs/snippets/common/storybook-telemetry-crash-report-event.js.mdx b/docs/snippets/common/storybook-telemetry-crash-report-event.js.mdx new file mode 100644 index 00000000000..88d98f5c6bb --- /dev/null +++ b/docs/snippets/common/storybook-telemetry-crash-report-event.js.mdx @@ -0,0 +1,13 @@ +```js +{ + stack: 'Error: Your button is not working\n' + + ' at Object. ($SNIP/test.js:39:27)\n' + + ' at Module._compile (node:internal/modules/cjs/loader:1103:14)\n' + + ' at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10)\n' + + ' at Module.load (node:internal/modules/cjs/loader:981:32)\n' + + ' at Function.Module._load (node:internal/modules/cjs/loader:822:12)\n' + + ' at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)\n' + + ' at node:internal/main/run_main_module:17:47', + message: 'Your button is not working' +} +``` \ No newline at end of file diff --git a/docs/snippets/common/storybook-telemetry-main-enable-crash-reports.main-js.js.mdx b/docs/snippets/common/storybook-telemetry-main-enable-crash-reports.main-js.js.mdx new file mode 100644 index 00000000000..c1e3d032880 --- /dev/null +++ b/docs/snippets/common/storybook-telemetry-main-enable-crash-reports.main-js.js.mdx @@ -0,0 +1,18 @@ +```js +// .storybook/main.js + +module.exports = { + stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + addons: [ + '@storybook/addon-links', + '@storybook/addon-essentials', + '@storybook/addon-interactions', + '@storybook/preset-create-react-app', + ], + framework: '@storybook/react', + core: { + builder: 'webpack5', + enableCrashReports: true, // 👈 Appends the crash reports to the telemetry events + }, +}; +``` \ No newline at end of file diff --git a/docs/snippets/common/storybook-telemetry-main-enable-crash-reports.main-ts.ts.mdx b/docs/snippets/common/storybook-telemetry-main-enable-crash-reports.main-ts.ts.mdx new file mode 100644 index 00000000000..7ce3bba1a82 --- /dev/null +++ b/docs/snippets/common/storybook-telemetry-main-enable-crash-reports.main-ts.ts.mdx @@ -0,0 +1,23 @@ +```ts +// .storybook/main.ts + +// Imports Storybook's configuration API +import type { StorybookConfig } from '@storybook/core-common'; + +const config: StorybookConfig = { + stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'], + addons: [ + '@storybook/addon-links', + '@storybook/addon-essentials', + '@storybook/addon-interactions', + '@storybook/preset-create-react-app', + ], + framework: '@storybook/react', + core: { + builder: 'webpack5', + enableCrashReports: true, // 👈 Appends the crash reports to the telemetry events + }, +}; + +module.exports = config; +``` \ No newline at end of file diff --git a/docs/snippets/common/storybook-telemetry-preview-event.npm.js.mdx b/docs/snippets/common/storybook-telemetry-preview-event.npm.js.mdx new file mode 100644 index 00000000000..eab8893ec86 --- /dev/null +++ b/docs/snippets/common/storybook-telemetry-preview-event.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +STORYBOOK_TELEMETRY_DEBUG=1 npm run storybook +``` \ No newline at end of file diff --git a/docs/snippets/common/storybook-telemetry-preview-event.yarn.js.mdx b/docs/snippets/common/storybook-telemetry-preview-event.yarn.js.mdx new file mode 100644 index 00000000000..fdb9d20be61 --- /dev/null +++ b/docs/snippets/common/storybook-telemetry-preview-event.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +STORYBOOK_TELEMETRY_DEBUG=1 yarn storybook +``` \ No newline at end of file diff --git a/docs/snippets/common/storybook-telemetry-storybook-enable-crash-reports.env-var.js.mdx b/docs/snippets/common/storybook-telemetry-storybook-enable-crash-reports.env-var.js.mdx new file mode 100644 index 00000000000..41b65f19406 --- /dev/null +++ b/docs/snippets/common/storybook-telemetry-storybook-enable-crash-reports.env-var.js.mdx @@ -0,0 +1,3 @@ +```shell +STORYBOOK_ENABLE_CRASH_REPORTS=1 yarn storybook +``` \ No newline at end of file diff --git a/docs/snippets/common/storybook-telemetry-storybook-enable-crash-reports.npm.js.mdx b/docs/snippets/common/storybook-telemetry-storybook-enable-crash-reports.npm.js.mdx new file mode 100644 index 00000000000..b0fc399a540 --- /dev/null +++ b/docs/snippets/common/storybook-telemetry-storybook-enable-crash-reports.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +npm run storybook -- --enable-crash-reports +``` \ No newline at end of file diff --git a/docs/snippets/common/storybook-telemetry-storybook-enable-crash-reports.yarn.js.mdx b/docs/snippets/common/storybook-telemetry-storybook-enable-crash-reports.yarn.js.mdx new file mode 100644 index 00000000000..71876f93936 --- /dev/null +++ b/docs/snippets/common/storybook-telemetry-storybook-enable-crash-reports.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn storybook --enable-crash-reports +``` \ No newline at end of file diff --git a/docs/snippets/vue/badge-story-starter-example.mdx.mdx b/docs/snippets/vue/badge-story-starter-example.mdx.mdx index 1905cd91cac..3b228d2840a 100644 --- a/docs/snippets/vue/badge-story-starter-example.mdx.mdx +++ b/docs/snippets/vue/badge-story-starter-example.mdx.mdx @@ -76,4 +76,4 @@ with unique URLs and isolated snapshot tests. }} -``` +``` \ No newline at end of file diff --git a/docs/snippets/vue/badge-story.mdx-2.mdx.mdx b/docs/snippets/vue/badge-story.mdx-2.mdx.mdx index fb34bac4968..32ed8f0726b 100644 --- a/docs/snippets/vue/badge-story.mdx-2.mdx.mdx +++ b/docs/snippets/vue/badge-story.mdx-2.mdx.mdx @@ -69,4 +69,4 @@ with unique URLs, which is great for review and testing. {Template.bind({})} -``` +``` \ No newline at end of file diff --git a/docs/snippets/vue/button-group-story.2.js.mdx b/docs/snippets/vue/button-group-story.2.js.mdx index 73edf335969..a083bfbce03 100644 --- a/docs/snippets/vue/button-group-story.2.js.mdx +++ b/docs/snippets/vue/button-group-story.2.js.mdx @@ -1,5 +1,5 @@ ```js -//ButtonGroup.stories.js +// ButtonGroup.stories.js import ButtonGroup from './ButtonGroup.vue'; diff --git a/docs/snippets/vue/button-group-story.3.js.mdx b/docs/snippets/vue/button-group-story.3.js.mdx index fba028c4921..6197ffd73ae 100644 --- a/docs/snippets/vue/button-group-story.3.js.mdx +++ b/docs/snippets/vue/button-group-story.3.js.mdx @@ -1,5 +1,5 @@ ```js -//ButtonGroup.stories.js +// ButtonGroup.stories.js import ButtonGroup from './ButtonGroup.vue'; diff --git a/docs/snippets/vue/button-group-story.ts-2.ts.mdx b/docs/snippets/vue/button-group-story.ts-2.ts.mdx new file mode 100644 index 00000000000..d0e1eb3adad --- /dev/null +++ b/docs/snippets/vue/button-group-story.ts-2.ts.mdx @@ -0,0 +1,31 @@ +```ts +// ButtonGroup.stories.ts + +import ButtonGroup from './ButtonGroup.vue'; + +import { Meta, StoryFn } from '@storybook/vue'; + +//👇 Imports the Button stories +import * as ButtonStories from './Button.stories'; + +export default { + /* 👇 The title prop is optional. + * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading + * to learn how to generate automatic titles + */ + title: 'ButtonGroup', + component: ButtonGroup, +} as Meta; + +const Template: StoryFn = (args, { argTypes }) => ({ + components: { ButtonGroup }, + props: Object.keys(argTypes), + template: '', +}); + +export const Pair = Template.bind({}); +Pair.args = { + buttons: [{ ...ButtonStories.Primary.args }, { ...ButtonStories.Secondary.args }], + orientation: 'horizontal', +}; +``` \ No newline at end of file diff --git a/docs/snippets/vue/button-group-story.ts-3.ts.mdx b/docs/snippets/vue/button-group-story.ts-3.ts.mdx new file mode 100644 index 00000000000..91b68cc272f --- /dev/null +++ b/docs/snippets/vue/button-group-story.ts-3.ts.mdx @@ -0,0 +1,33 @@ +```ts +// ButtonGroup.stories.ts + +import ButtonGroup from './ButtonGroup.vue'; + +import { Meta, StoryFn } from '@storybook/vue3'; + +//👇 Imports the Button stories +import * as ButtonStories from './Button.stories'; + +export default { + /* 👇 The title prop is optional. + * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading + * to learn how to generate automatic titles + */ + title: 'ButtonGroup', + component: ButtonGroup, +} as Meta; + +const Template: StoryFn = (args) => ({ + components: { ButtonGroup }, + setup() { + return { args }; + }, + template: '', +}); + +export const Pair = Template.bind({}); +Pair.args = { + buttons: [{ ...ButtonStories.Primary.args }, { ...ButtonStories.Secondary.args }], + orientation: 'horizontal', +}; +``` \ No newline at end of file diff --git a/docs/snippets/vue/button-story-component-decorator.ts-2.ts.mdx b/docs/snippets/vue/button-story-component-decorator.ts-2.ts.mdx new file mode 100644 index 00000000000..37a6ec4b52f --- /dev/null +++ b/docs/snippets/vue/button-story-component-decorator.ts-2.ts.mdx @@ -0,0 +1,17 @@ +```ts +// Button.stories.ts + +import Button from './Button.vue'; + +import { Meta } from '@storybook/vue'; + +export default { + /* 👇 The title prop is optional. + * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading + * to learn how to generate automatic titles + */ + title: 'Button', + component: Button, + decorators: [() => ({ template: '
' })], +} as Meta; +``` \ No newline at end of file diff --git a/docs/snippets/vue/button-story-component-decorator.ts-3.ts.mdx b/docs/snippets/vue/button-story-component-decorator.ts-3.ts.mdx new file mode 100644 index 00000000000..bc4678319e9 --- /dev/null +++ b/docs/snippets/vue/button-story-component-decorator.ts-3.ts.mdx @@ -0,0 +1,17 @@ +```ts +// Button.stories.ts + +import Button from './Button.vue'; + +import { Meta } from '@storybook/vue3'; + +export default { + /* 👇 The title prop is optional. + * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading + * to learn how to generate automatic titles + */ + title: 'Button', + component: Button, + decorators: [() => ({ template: '
' })], +} as Meta; +``` \ No newline at end of file diff --git a/docs/snippets/vue/button-story-default-export-with-component.ts-2.ts.mdx b/docs/snippets/vue/button-story-default-export-with-component.ts-2.ts.mdx new file mode 100644 index 00000000000..3203b13bc70 --- /dev/null +++ b/docs/snippets/vue/button-story-default-export-with-component.ts-2.ts.mdx @@ -0,0 +1,16 @@ +```ts +// Button.stories.ts + +import Button from './Button.vue'; + +import { Meta } from '@storybook/vue'; + +export default { + /* 👇 The title prop is optional. + * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading + * to learn how to generate automatic titles + */ + title: 'Button', + component: Button, +} as Meta; +``` \ No newline at end of file diff --git a/docs/snippets/vue/button-story-default-export-with-component.ts-3.ts.mdx b/docs/snippets/vue/button-story-default-export-with-component.ts-3.ts.mdx new file mode 100644 index 00000000000..afc5e65c795 --- /dev/null +++ b/docs/snippets/vue/button-story-default-export-with-component.ts-3.ts.mdx @@ -0,0 +1,16 @@ +```ts +// Button.stories.ts + +import Button from './Button.vue'; + +import { Meta } from '@storybook/vue3'; + +export default { + /* 👇 The title prop is optional. + * See https://storybook.js.org/docs/vue/configure/overview#configure-story-loading + * to learn how to generate automatic titles + */ + title: 'Button', + component: Button, +} as Meta; +``` \ No newline at end of file diff --git a/docs/snippets/vue/button-story-rename-story.js.mdx b/docs/snippets/vue/button-story-rename-story.js.mdx index 1b87c6bc4b5..95750d3d6c8 100644 --- a/docs/snippets/vue/button-story-rename-story.js.mdx +++ b/docs/snippets/vue/button-story-rename-story.js.mdx @@ -17,4 +17,4 @@ export const Primary = () => ({ template: '
\ No newline at end of file +
diff --git a/examples/angular-cli/.storybook/main.js b/examples/angular-cli/.storybook/main.js index 32c8702dd40..2847cf86e22 100644 --- a/examples/angular-cli/.storybook/main.js +++ b/examples/angular-cli/.storybook/main.js @@ -16,6 +16,7 @@ module.exports = { ], core: { builder: 'webpack4', + disableTelemetry: true, }, // These are just here to test composition. They could be added to any storybook example project refs: { diff --git a/examples/angular-cli/package.json b/examples/angular-cli/package.json index 49c323f29d9..7a8f8b5e802 100644 --- a/examples/angular-cli/package.json +++ b/examples/angular-cli/package.json @@ -1,6 +1,6 @@ { "name": "angular-cli", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "license": "MIT", "scripts": { @@ -39,21 +39,21 @@ "@angular/compiler-cli": "^11.2.14", "@angular/elements": "^11.2.14", "@compodoc/compodoc": "^1.1.18", - "@storybook/addon-a11y": "6.5.0-beta.1", - "@storybook/addon-actions": "6.5.0-beta.1", - "@storybook/addon-backgrounds": "6.5.0-beta.1", - "@storybook/addon-controls": "6.5.0-beta.1", - "@storybook/addon-docs": "6.5.0-beta.1", - "@storybook/addon-interactions": "6.5.0-beta.1", - "@storybook/addon-jest": "6.5.0-beta.1", - "@storybook/addon-links": "6.5.0-beta.1", - "@storybook/addon-storyshots": "6.5.0-beta.1", - "@storybook/addon-storysource": "6.5.0-beta.1", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/angular": "6.5.0-beta.1", + "@storybook/addon-a11y": "6.5.0-beta.4", + "@storybook/addon-actions": "6.5.0-beta.4", + "@storybook/addon-backgrounds": "6.5.0-beta.4", + "@storybook/addon-controls": "6.5.0-beta.4", + "@storybook/addon-docs": "6.5.0-beta.4", + "@storybook/addon-interactions": "6.5.0-beta.4", + "@storybook/addon-jest": "6.5.0-beta.4", + "@storybook/addon-links": "6.5.0-beta.4", + "@storybook/addon-storyshots": "6.5.0-beta.4", + "@storybook/addon-storysource": "6.5.0-beta.4", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/angular": "6.5.0-beta.4", "@storybook/babel-plugin-require-context-hook": "1.0.1", "@storybook/jest": "^0.0.5", - "@storybook/source-loader": "6.5.0-beta.1", + "@storybook/source-loader": "6.5.0-beta.4", "@storybook/testing-library": "^0.0.7", "@types/core-js": "^2.5.4", "@types/jest": "^26.0.16", @@ -67,7 +67,7 @@ "jest": "^26.6.3", "jest-preset-angular": "^8.3.2", "protractor": "~7.0.0", - "sb": "6.5.0-beta.1", + "sb": "6.5.0-beta.4", "storybook-addon-angular-ivy": "^0.0.1", "ts-jest": "^26.4.4", "ts-node": "^9.1.0", diff --git a/examples/cra-kitchen-sink/.storybook/main.js b/examples/cra-kitchen-sink/.storybook/main.js index c162a7eeb25..f4bc80a1b0b 100644 --- a/examples/cra-kitchen-sink/.storybook/main.js +++ b/examples/cra-kitchen-sink/.storybook/main.js @@ -29,6 +29,7 @@ module.exports = { }, core: { builder: 'webpack4', + disableTelemetry: true, }, staticDirs: ['../public'], features: { diff --git a/examples/cra-kitchen-sink/package.json b/examples/cra-kitchen-sink/package.json index 58ca4c70c31..7c1b0c088bc 100644 --- a/examples/cra-kitchen-sink/package.json +++ b/examples/cra-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "cra-kitchen-sink", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "scripts": { "build": "react-scripts build", @@ -11,7 +11,7 @@ "test": "react-scripts test --env=jsdom" }, "dependencies": { - "@storybook/client-logger": "6.5.0-beta.1", + "@storybook/client-logger": "6.5.0-beta.4", "global": "^4.4.0", "prop-types": "^15.7.2", "react": "16.14.0", @@ -21,20 +21,20 @@ }, "devDependencies": { "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", - "@storybook/addon-a11y": "6.5.0-beta.1", - "@storybook/addon-actions": "6.5.0-beta.1", - "@storybook/addon-backgrounds": "6.5.0-beta.1", - "@storybook/addon-docs": "6.5.0-beta.1", + "@storybook/addon-a11y": "6.5.0-beta.4", + "@storybook/addon-actions": "6.5.0-beta.4", + "@storybook/addon-backgrounds": "6.5.0-beta.4", + "@storybook/addon-docs": "6.5.0-beta.4", "@storybook/addon-ie11": "0.0.7--canary.5e87b64.0", - "@storybook/addon-jest": "6.5.0-beta.1", - "@storybook/addon-links": "6.5.0-beta.1", - "@storybook/addon-storyshots": "6.5.0-beta.1", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/builder-webpack4": "6.5.0-beta.1", + "@storybook/addon-jest": "6.5.0-beta.4", + "@storybook/addon-links": "6.5.0-beta.4", + "@storybook/addon-storyshots": "6.5.0-beta.4", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/builder-webpack4": "6.5.0-beta.4", "@storybook/preset-create-react-app": "^3.1.6", - "@storybook/react": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", - "sb": "6.5.0-beta.1", + "@storybook/react": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", + "sb": "6.5.0-beta.4", "webpack": "4" }, "storybook": { diff --git a/examples/cra-react15/.storybook/main.js b/examples/cra-react15/.storybook/main.js index 3171f504e32..cea0ab29511 100644 --- a/examples/cra-react15/.storybook/main.js +++ b/examples/cra-react15/.storybook/main.js @@ -20,6 +20,7 @@ module.exports = { }, core: { builder: 'webpack4', + disableTelemetry: true, }, staticDirs: ['../public'], framework: '@storybook/react', diff --git a/examples/cra-react15/package.json b/examples/cra-react15/package.json index 003eba5f333..fed7357ee7d 100644 --- a/examples/cra-react15/package.json +++ b/examples/cra-react15/package.json @@ -1,6 +1,6 @@ { "name": "cra-react15", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "scripts": { "build": "react-scripts build", @@ -19,17 +19,17 @@ "react-scripts": "3.4.4" }, "devDependencies": { - "@storybook/addon-actions": "6.5.0-beta.1", + "@storybook/addon-actions": "6.5.0-beta.4", "@storybook/addon-ie11": "0.0.7--canary.5e87b64.0", - "@storybook/addon-links": "6.5.0-beta.1", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/builder-webpack4": "6.5.0-beta.1", + "@storybook/addon-links": "6.5.0-beta.4", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/builder-webpack4": "6.5.0-beta.4", "@storybook/preset-create-react-app": "^3.1.6", - "@storybook/react": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/react": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", "babel-core": "6", "babel-runtime": "6", - "sb": "6.5.0-beta.1", + "sb": "6.5.0-beta.4", "webpack": "4" }, "storybook": { diff --git a/examples/cra-ts-essentials/.storybook/main.ts b/examples/cra-ts-essentials/.storybook/main.ts index dea3a05e663..5a45b686bf0 100644 --- a/examples/cra-ts-essentials/.storybook/main.ts +++ b/examples/cra-ts-essentials/.storybook/main.ts @@ -26,6 +26,7 @@ const mainConfig: StorybookConfig = { }, core: { builder: 'webpack4', + disableTelemetry: true, }, staticDirs: ['../public'], features: { diff --git a/examples/cra-ts-essentials/package.json b/examples/cra-ts-essentials/package.json index 69aee75fff5..7a87b51d4db 100644 --- a/examples/cra-ts-essentials/package.json +++ b/examples/cra-ts-essentials/package.json @@ -1,6 +1,6 @@ { "name": "cra-ts-essentials", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "scripts": { "build": "react-scripts build", @@ -23,8 +23,8 @@ ] }, "dependencies": { - "@storybook/components": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/components": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", "@types/jest": "^26.0.16", "@types/node": "^14.14.20 || ^16.0.0", "@types/react": "^16.14.23", @@ -37,14 +37,14 @@ "typescript": "^3.9.7" }, "devDependencies": { - "@storybook/addon-essentials": "6.5.0-beta.1", + "@storybook/addon-essentials": "6.5.0-beta.4", "@storybook/addon-ie11": "0.0.7--canary.5e87b64.0", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/builder-webpack4": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/builder-webpack4": "6.5.0-beta.4", "@storybook/preset-create-react-app": "^3.1.6", - "@storybook/react": "6.5.0-beta.1", + "@storybook/react": "6.5.0-beta.4", "@storybook/testing-library": "^0.0.9", - "sb": "6.5.0-beta.1", + "sb": "6.5.0-beta.4", "webpack": "4" }, "storybook": { diff --git a/examples/cra-ts-kitchen-sink/.storybook/main.ts b/examples/cra-ts-kitchen-sink/.storybook/main.ts index d415c267d78..b06621959de 100644 --- a/examples/cra-ts-kitchen-sink/.storybook/main.ts +++ b/examples/cra-ts-kitchen-sink/.storybook/main.ts @@ -28,6 +28,7 @@ module.exports = { }, core: { builder: 'webpack4', + disableTelemetry: true, }, staticDirs: ['../public'], features: { diff --git a/examples/cra-ts-kitchen-sink/package.json b/examples/cra-ts-kitchen-sink/package.json index ece3eda45d9..c85fea94238 100644 --- a/examples/cra-ts-kitchen-sink/package.json +++ b/examples/cra-ts-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "cra-ts-kitchen-sink", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "scripts": { "build": "react-scripts build", @@ -34,22 +34,22 @@ "typescript": "^3.9.7" }, "devDependencies": { - "@storybook/addon-a11y": "6.5.0-beta.1", - "@storybook/addon-actions": "6.5.0-beta.1", - "@storybook/addon-docs": "6.5.0-beta.1", + "@storybook/addon-a11y": "6.5.0-beta.4", + "@storybook/addon-actions": "6.5.0-beta.4", + "@storybook/addon-docs": "6.5.0-beta.4", "@storybook/addon-ie11": "0.0.7--canary.5e87b64.0", - "@storybook/addon-links": "6.5.0-beta.1", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/builder-webpack4": "6.5.0-beta.1", + "@storybook/addon-links": "6.5.0-beta.4", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/builder-webpack4": "6.5.0-beta.4", "@storybook/preset-create-react-app": "^3.1.6", - "@storybook/react": "6.5.0-beta.1", + "@storybook/react": "6.5.0-beta.4", "@types/enzyme": "^3.10.8", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.9.1", "enzyme-to-json": "^3.6.1", "fork-ts-checker-webpack-plugin": "^6.0.4", "react-moment-proptypes": "^1.7.0", - "sb": "6.5.0-beta.1", + "sb": "6.5.0-beta.4", "ts-node": "^9.1.0", "webpack": "4" }, diff --git a/examples/ember-cli/.storybook/main.js b/examples/ember-cli/.storybook/main.js index ce0848d40b3..2a05b1eb5a1 100644 --- a/examples/ember-cli/.storybook/main.js +++ b/examples/ember-cli/.storybook/main.js @@ -29,6 +29,7 @@ module.exports = { }, core: { builder: 'webpack4', + disableTelemetry: true, }, staticDirs: ['../ember-output'], features: { diff --git a/examples/ember-cli/package.json b/examples/ember-cli/package.json index 9d83a25d75f..9e1339e19fc 100644 --- a/examples/ember-cli/package.json +++ b/examples/ember-cli/package.json @@ -1,6 +1,6 @@ { "name": "ember-example", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "scripts": { "build": "ember build --output-path ember-output", @@ -17,18 +17,18 @@ "devDependencies": { "@babel/core": "^7.12.10", "@ember/optional-features": "^2.0.0", - "@storybook/addon-a11y": "6.5.0-beta.1", - "@storybook/addon-actions": "6.5.0-beta.1", - "@storybook/addon-backgrounds": "6.5.0-beta.1", - "@storybook/addon-controls": "6.5.0-beta.1", - "@storybook/addon-docs": "6.5.0-beta.1", - "@storybook/addon-links": "6.5.0-beta.1", - "@storybook/addon-storysource": "6.5.0-beta.1", - "@storybook/addon-viewport": "6.5.0-beta.1", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/ember": "6.5.0-beta.1", + "@storybook/addon-a11y": "6.5.0-beta.4", + "@storybook/addon-actions": "6.5.0-beta.4", + "@storybook/addon-backgrounds": "6.5.0-beta.4", + "@storybook/addon-controls": "6.5.0-beta.4", + "@storybook/addon-docs": "6.5.0-beta.4", + "@storybook/addon-links": "6.5.0-beta.4", + "@storybook/addon-storysource": "6.5.0-beta.4", + "@storybook/addon-viewport": "6.5.0-beta.4", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/ember": "6.5.0-beta.4", "@storybook/ember-cli-storybook": "^0.2.1", - "@storybook/source-loader": "6.5.0-beta.1", + "@storybook/source-loader": "6.5.0-beta.4", "babel-loader": "^8.0.0", "broccoli-asset-rev": "^3.0.0", "cross-env": "^7.0.3", @@ -45,7 +45,7 @@ "ember-resolver": "^7.0.0", "ember-source": "~3.24.0", "loader.js": "^4.7.0", - "sb": "6.5.0-beta.1", + "sb": "6.5.0-beta.4", "shx": "^0.3.2", "webpack": "4", "webpack-cli": "^4.2.0" diff --git a/examples/external-docs/package.json b/examples/external-docs/package.json index 96370c37e93..fc0c112c83f 100644 --- a/examples/external-docs/package.json +++ b/examples/external-docs/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/external-docs", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "scripts": { "build-storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true sb build -c ./src/.storybook", @@ -9,13 +9,13 @@ "storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true sb dev -p 9011 --no-manager-cache -c ./src/.storybook" }, "dependencies": { - "@storybook/addon-essentials": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", + "@storybook/addon-essentials": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.87bc651.0", - "@storybook/preview-web": "6.5.0-beta.1", - "@storybook/react": "6.5.0-beta.1", - "@storybook/store": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/preview-web": "6.5.0-beta.4", + "@storybook/react": "6.5.0-beta.4", + "@storybook/store": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", "formik": "^2.2.9", "prop-types": "15.7.2", "react": "16.14.0", @@ -32,7 +32,7 @@ "@types/react": "^16.14.23", "@types/react-dom": "^16.9.14", "cross-env": "^7.0.3", - "sb": "6.5.0-beta.1", + "sb": "6.5.0-beta.4", "typescript": "^3.9.7", "webpack": "4" } diff --git a/examples/html-kitchen-sink/.storybook/main.js b/examples/html-kitchen-sink/.storybook/main.js index d226a731cf2..d61a39d1099 100644 --- a/examples/html-kitchen-sink/.storybook/main.js +++ b/examples/html-kitchen-sink/.storybook/main.js @@ -23,6 +23,7 @@ module.exports = { ], core: { builder: 'webpack4', + disableTelemetry: true, }, features: { buildStoriesJson: true, diff --git a/examples/html-kitchen-sink/package.json b/examples/html-kitchen-sink/package.json index 1ee0951fd7c..9f740f22199 100644 --- a/examples/html-kitchen-sink/package.json +++ b/examples/html-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "html-kitchen-sink", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "description": "", "keywords": [], @@ -13,29 +13,29 @@ "storybook": "sb dev -p 9006 --no-manager-cache" }, "devDependencies": { - "@storybook/addon-a11y": "6.5.0-beta.1", - "@storybook/addon-actions": "6.5.0-beta.1", - "@storybook/addon-backgrounds": "6.5.0-beta.1", - "@storybook/addon-controls": "6.5.0-beta.1", - "@storybook/addon-docs": "6.5.0-beta.1", - "@storybook/addon-jest": "6.5.0-beta.1", - "@storybook/addon-links": "6.5.0-beta.1", + "@storybook/addon-a11y": "6.5.0-beta.4", + "@storybook/addon-actions": "6.5.0-beta.4", + "@storybook/addon-backgrounds": "6.5.0-beta.4", + "@storybook/addon-controls": "6.5.0-beta.4", + "@storybook/addon-docs": "6.5.0-beta.4", + "@storybook/addon-jest": "6.5.0-beta.4", + "@storybook/addon-links": "6.5.0-beta.4", "@storybook/addon-postcss": "^2.0.0", - "@storybook/addon-storyshots": "6.5.0-beta.1", - "@storybook/addon-storysource": "6.5.0-beta.1", - "@storybook/addon-viewport": "6.5.0-beta.1", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/client-api": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", - "@storybook/html": "6.5.0-beta.1", - "@storybook/source-loader": "6.5.0-beta.1", + "@storybook/addon-storyshots": "6.5.0-beta.4", + "@storybook/addon-storysource": "6.5.0-beta.4", + "@storybook/addon-viewport": "6.5.0-beta.4", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/client-api": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", + "@storybook/html": "6.5.0-beta.4", + "@storybook/source-loader": "6.5.0-beta.4", "autoprefixer": "^10.0.1", "eventemitter3": "^4.0.7", "format-json": "^1.0.3", "global": "^4.4.0", "postcss": "^8.2.4", "postcss-color-rebeccapurple": "^6.0.0", - "sb": "6.5.0-beta.1" + "sb": "6.5.0-beta.4" }, "storybook": { "chromatic": { diff --git a/examples/official-storybook/main.ts b/examples/official-storybook/main.ts index 2731d4aceec..9f3cb8898af 100644 --- a/examples/official-storybook/main.ts +++ b/examples/official-storybook/main.ts @@ -29,6 +29,7 @@ const config: StorybookConfig = { ], core: { builder: 'webpack4', + disableTelemetry: true, }, logLevel: 'debug', features: { diff --git a/examples/official-storybook/package.json b/examples/official-storybook/package.json index 77369c2ba30..b344eae36af 100644 --- a/examples/official-storybook/package.json +++ b/examples/official-storybook/package.json @@ -1,6 +1,6 @@ { "name": "official-storybook", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "scripts": { "build-storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true sb build -c ./", @@ -13,31 +13,31 @@ "devDependencies": { "@emotion/jest": "^11.8.0", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", - "@storybook/addon-a11y": "6.5.0-beta.1", - "@storybook/addon-actions": "6.5.0-beta.1", - "@storybook/addon-backgrounds": "6.5.0-beta.1", - "@storybook/addon-controls": "6.5.0-beta.1", - "@storybook/addon-docs": "6.5.0-beta.1", - "@storybook/addon-interactions": "6.5.0-beta.1", - "@storybook/addon-jest": "6.5.0-beta.1", - "@storybook/addon-links": "6.5.0-beta.1", - "@storybook/addon-storyshots": "6.5.0-beta.1", - "@storybook/addon-storyshots-puppeteer": "6.5.0-beta.1", - "@storybook/addon-storysource": "6.5.0-beta.1", - "@storybook/addon-toolbars": "6.5.0-beta.1", - "@storybook/addon-viewport": "6.5.0-beta.1", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/cli": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/addon-a11y": "6.5.0-beta.4", + "@storybook/addon-actions": "6.5.0-beta.4", + "@storybook/addon-backgrounds": "6.5.0-beta.4", + "@storybook/addon-controls": "6.5.0-beta.4", + "@storybook/addon-docs": "6.5.0-beta.4", + "@storybook/addon-interactions": "6.5.0-beta.4", + "@storybook/addon-jest": "6.5.0-beta.4", + "@storybook/addon-links": "6.5.0-beta.4", + "@storybook/addon-storyshots": "6.5.0-beta.4", + "@storybook/addon-storyshots-puppeteer": "6.5.0-beta.4", + "@storybook/addon-storysource": "6.5.0-beta.4", + "@storybook/addon-toolbars": "6.5.0-beta.4", + "@storybook/addon-viewport": "6.5.0-beta.4", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/cli": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/design-system": "^5.4.7", "@storybook/jest": "^0.0.5", - "@storybook/node-logger": "6.5.0-beta.1", - "@storybook/react": "6.5.0-beta.1", - "@storybook/router": "6.5.0-beta.1", - "@storybook/source-loader": "6.5.0-beta.1", + "@storybook/node-logger": "6.5.0-beta.4", + "@storybook/react": "6.5.0-beta.4", + "@storybook/router": "6.5.0-beta.4", + "@storybook/source-loader": "6.5.0-beta.4", "@storybook/testing-library": "^0.0.7", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/theming": "6.5.0-beta.4", "@testing-library/dom": "^7.31.2", "@testing-library/user-event": "^13.1.9", "chromatic": "^6.0.2", @@ -53,7 +53,7 @@ "prop-types": "^15.7.2", "react": "16.14.0", "react-dom": "16.14.0", - "sb": "6.5.0-beta.1", + "sb": "6.5.0-beta.4", "terser-webpack-plugin": "^5.0.3", "uuid-browser": "^3.1.0", "webpack": "4" diff --git a/examples/official-storybook/stories/addon-a11y/parameters.stories.js b/examples/official-storybook/stories/addon-a11y/parameters.stories.js new file mode 100644 index 00000000000..77c2a22f57b --- /dev/null +++ b/examples/official-storybook/stories/addon-a11y/parameters.stories.js @@ -0,0 +1,38 @@ +import React from 'react'; +import BaseButton from '../../components/BaseButton'; + +export default { + title: 'Addons/A11y/Parameters', + component: BaseButton, + parameters: { + options: { selectedPanel: 'storybook/a11y/panel' }, + }, +}; + +export const ElementId = () => ( + <> +

+ The a11y.element parameter is set to the Insufficient contrast{' '} + section.{' '} +

+ +
+ No discernable button text +

This a11y violation should not be reported, as this section is not scanned.

+ +
+
+ Insufficient contrast +

This a11y issue (incomplete) should be reported.

+ +
+ +); +ElementId.parameters = { + a11y: { + element: '#insufficient-contrast', + }, +}; diff --git a/examples/official-storybook/stories/core/args.stories.js b/examples/official-storybook/stories/core/args.stories.js index 1a1bb9ee72a..4ee37b44f99 100644 --- a/examples/official-storybook/stories/core/args.stories.js +++ b/examples/official-storybook/stories/core/args.stories.js @@ -64,3 +64,23 @@ DifferentSet.args = { foo: 'bar', bar: 2, }; + +export const TestUndefinedArgs = Template.bind({}); +TestUndefinedArgs.args = { + first: 'Bob', + last: 'Miller', + foo: 'bar', +}; +TestUndefinedArgs.argTypes = { + first: { + control: { type: 'select' }, + options: ['Bob', 'Alice'], + }, + last: { + control: { type: 'select' }, + options: ['Miller', 'Meyer'], + }, + foo: { + control: { type: 'text' }, + }, +}; diff --git a/examples/preact-kitchen-sink/.storybook/main.js b/examples/preact-kitchen-sink/.storybook/main.js index 95206ade19a..64ac3c36abc 100644 --- a/examples/preact-kitchen-sink/.storybook/main.js +++ b/examples/preact-kitchen-sink/.storybook/main.js @@ -23,6 +23,7 @@ module.exports = { }, core: { builder: 'webpack4', + disableTelemetry: true, }, staticDirs: ['../public'], features: { diff --git a/examples/preact-kitchen-sink/package.json b/examples/preact-kitchen-sink/package.json index 85c99406db3..efaf5bb8102 100644 --- a/examples/preact-kitchen-sink/package.json +++ b/examples/preact-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "preact-example", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "scripts": { "build": "cross-env NODE_ENV=production webpack --progress --hide-modules", @@ -15,16 +15,16 @@ "devDependencies": { "@babel/core": "^7.12.10", "@babel/plugin-transform-runtime": "^7.12.10", - "@storybook/addon-a11y": "6.5.0-beta.1", - "@storybook/addon-actions": "6.5.0-beta.1", - "@storybook/addon-backgrounds": "6.5.0-beta.1", - "@storybook/addon-links": "6.5.0-beta.1", - "@storybook/addon-storyshots": "6.5.0-beta.1", - "@storybook/addon-storysource": "6.5.0-beta.1", - "@storybook/addon-viewport": "6.5.0-beta.1", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/preact": "6.5.0-beta.1", - "@storybook/source-loader": "6.5.0-beta.1", + "@storybook/addon-a11y": "6.5.0-beta.4", + "@storybook/addon-actions": "6.5.0-beta.4", + "@storybook/addon-backgrounds": "6.5.0-beta.4", + "@storybook/addon-links": "6.5.0-beta.4", + "@storybook/addon-storyshots": "6.5.0-beta.4", + "@storybook/addon-storysource": "6.5.0-beta.4", + "@storybook/addon-viewport": "6.5.0-beta.4", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/preact": "6.5.0-beta.4", + "@storybook/source-loader": "6.5.0-beta.4", "@types/prop-types": "^15.7.3", "@types/react": "^17", "@types/react-dom": "^17", @@ -37,7 +37,7 @@ "raw-loader": "^4.0.2", "react": "^17.0.2", "react-dom": "^17.0.2", - "sb": "6.5.0-beta.1", + "sb": "6.5.0-beta.4", "svg-url-loader": "^7.1.1", "webpack": "4", "webpack-dev-server": "^3.11.2" diff --git a/examples/react-ts/.storybook/main.ts b/examples/react-ts/.storybook/main.ts index 28c347f1687..6cb01ea2f24 100644 --- a/examples/react-ts/.storybook/main.ts +++ b/examples/react-ts/.storybook/main.ts @@ -30,6 +30,7 @@ const config: StorybookConfig = { core: { builder: { name: 'webpack4' }, channelOptions: { allowFunction: false, maxDepth: 10 }, + disableTelemetry: true, }, features: { postcss: false, diff --git a/examples/react-ts/.storybook/manager.js b/examples/react-ts/.storybook/manager.js new file mode 100644 index 00000000000..ece01ccdfae --- /dev/null +++ b/examples/react-ts/.storybook/manager.js @@ -0,0 +1,8 @@ +import { addons } from '@storybook/addons'; +import startCase from 'lodash/startCase'; + +addons.setConfig({ + sidebar: { + renderLabel: ({ name, type }) => (type === 'story' ? name : startCase(name)), + }, +}); diff --git a/examples/react-ts/package.json b/examples/react-ts/package.json index 64ebcd25866..03fca8ed17b 100644 --- a/examples/react-ts/package.json +++ b/examples/react-ts/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/example-react-ts", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "scripts": { "build-storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true sb build", @@ -17,13 +17,14 @@ "@babel/preset-env": "^7.12.11", "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", - "@storybook/addon-essentials": "6.5.0-beta.1", - "@storybook/addon-storyshots": "6.5.0-beta.1", - "@storybook/addon-storysource": "6.5.0-beta.1", - "@storybook/cli": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/react": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/addon-essentials": "6.5.0-beta.4", + "@storybook/addon-storyshots": "6.5.0-beta.4", + "@storybook/addon-storysource": "6.5.0-beta.4", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/cli": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/react": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", "@testing-library/dom": "^7.31.2", "@testing-library/react": "12.1.2", "@testing-library/user-event": "^13.1.9", @@ -31,7 +32,8 @@ "@types/react": "^16.14.23", "@types/react-dom": "^16.9.14", "cross-env": "^7.0.3", - "sb": "6.5.0-beta.1", + "lodash": "^4.17.21", + "sb": "6.5.0-beta.4", "typescript": "^3.9.7", "webpack": "4" } diff --git a/examples/react-ts/src/__snapshots__/storyshots.test.ts.snap b/examples/react-ts/src/__snapshots__/storyshots.test.ts.snap index 3d1f3ff004c..f203e275b3e 100644 --- a/examples/react-ts/src/__snapshots__/storyshots.test.ts.snap +++ b/examples/react-ts/src/__snapshots__/storyshots.test.ts.snap @@ -4,6 +4,7 @@ exports[`Storyshots Examples / Button Basic 1`] = ` `; @@ -12,6 +13,7 @@ exports[`Storyshots Examples / Button CSF 2 Story With Play 1`] = ` `; @@ -20,6 +22,7 @@ exports[`Storyshots Examples / Button Process Env 1`] = ` `; @@ -28,6 +31,7 @@ exports[`Storyshots Examples / Button Story No Render 1`] = ` `; @@ -38,6 +42,7 @@ exports[`Storyshots Examples / Button Story With Play 1`] = ` `; @@ -46,6 +51,7 @@ exports[`Storyshots Examples / Button With Args 1`] = ` `; diff --git a/examples/react-ts/src/button.stories.tsx b/examples/react-ts/src/button.stories.tsx index 2c9d8151b20..9a616228540 100644 --- a/examples/react-ts/src/button.stories.tsx +++ b/examples/react-ts/src/button.stories.tsx @@ -7,10 +7,23 @@ import { screen } from '@testing-library/dom'; import userEvent from '@testing-library/user-event'; import { Button } from './button'; +const icons = { + foo: () => <>Foo, + bar: () => <>Bar, +}; + export default { component: Button, title: 'Examples / Button', - argTypes: { onClick: { action: 'click ' } }, + argTypes: { + onClick: { action: 'click ' }, + icon: { + description: 'An icon, displayed to the left of the title.', + control: { type: 'select' }, + options: Object.keys(icons), + mapping: icons, + }, + }, // render: () => <>hohoho, } as Meta; diff --git a/examples/react-ts/src/button.tsx b/examples/react-ts/src/button.tsx index f3c9ee6b83e..99dddad4e2f 100644 --- a/examples/react-ts/src/button.tsx +++ b/examples/react-ts/src/button.tsx @@ -1,14 +1,19 @@ -import React, { ButtonHTMLAttributes } from 'react'; +import React, { ComponentType, ButtonHTMLAttributes } from 'react'; export interface ButtonProps extends ButtonHTMLAttributes { /** * A label to show on the button */ label: string; + + /** + * An icon to show on the left of the label + */ + icon?: ComponentType; } -export const Button = ({ label = 'Hello', ...props }: ButtonProps) => ( +export const Button = ({ label = 'Hello', icon: Icon, ...props }: ButtonProps) => ( ); diff --git a/examples/server-kitchen-sink/package.json b/examples/server-kitchen-sink/package.json index a6e13c2b8fa..a36a251580d 100644 --- a/examples/server-kitchen-sink/package.json +++ b/examples/server-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "server-kitchen-sink", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "description": "", "keywords": [], @@ -14,13 +14,13 @@ "storybook": "SERVER_PORT=1137 sb dev -p 9006 --quiet" }, "devDependencies": { - "@storybook/addon-a11y": "6.5.0-beta.1", - "@storybook/addon-actions": "6.5.0-beta.1", - "@storybook/addon-backgrounds": "6.5.0-beta.1", - "@storybook/addon-controls": "6.5.0-beta.1", - "@storybook/addon-links": "6.5.0-beta.1", - "@storybook/node-logger": "6.5.0-beta.1", - "@storybook/server": "6.5.0-beta.1", + "@storybook/addon-a11y": "6.5.0-beta.4", + "@storybook/addon-actions": "6.5.0-beta.4", + "@storybook/addon-backgrounds": "6.5.0-beta.4", + "@storybook/addon-controls": "6.5.0-beta.4", + "@storybook/addon-links": "6.5.0-beta.4", + "@storybook/node-logger": "6.5.0-beta.4", + "@storybook/server": "6.5.0-beta.4", "concurrently": "^5.3.0", "cors": "^2.8.5", "express": "~4.17.1", @@ -28,6 +28,6 @@ "nodemon": "^2.0.7", "pug": "^3.0.0", "safe-identifier": "^0.4.1", - "sb": "6.5.0-beta.1" + "sb": "6.5.0-beta.4" } } diff --git a/examples/standalone-preview/package.json b/examples/standalone-preview/package.json index 9cf3913a971..fea025cc4de 100644 --- a/examples/standalone-preview/package.json +++ b/examples/standalone-preview/package.json @@ -1,19 +1,19 @@ { "name": "standalone-preview", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "scripts": { "storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true sb dev -p 9011 -c ../official-storybook --no-manager-cache --preview-url=http://localhost:1337/external-iframe.html", "storybook-preview": "cross-env PREVIEW_URL=external-iframe.html parcel ./storybook.html --port 1337" }, "devDependencies": { - "@storybook/addon-docs": "6.5.0-beta.1", - "@storybook/cli": "6.5.0-beta.1", - "@storybook/react": "6.5.0-beta.1", + "@storybook/addon-docs": "6.5.0-beta.4", + "@storybook/cli": "6.5.0-beta.4", + "@storybook/react": "6.5.0-beta.4", "cross-env": "^7.0.3", "parcel": "2.0.1", "react": "16.14.0", "react-dom": "16.14.0", - "sb": "6.5.0-beta.1" + "sb": "6.5.0-beta.4" } } diff --git a/examples/svelte-kitchen-sink/.storybook/main.js b/examples/svelte-kitchen-sink/.storybook/main.js index 612a9a8734e..b1f2364ef2d 100644 --- a/examples/svelte-kitchen-sink/.storybook/main.js +++ b/examples/svelte-kitchen-sink/.storybook/main.js @@ -35,6 +35,7 @@ module.exports = { }, core: { builder: 'webpack4', + disableTelemetry: true, }, staticDirs: ['../public'], features: { diff --git a/examples/svelte-kitchen-sink/package.json b/examples/svelte-kitchen-sink/package.json index 158bbc2a98e..5be1fa51b5a 100644 --- a/examples/svelte-kitchen-sink/package.json +++ b/examples/svelte-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "svelte-example", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "scripts": { "build-storybook": "sb build", @@ -10,22 +10,22 @@ "global": "^4.4.0" }, "devDependencies": { - "@storybook/addon-a11y": "6.5.0-beta.1", - "@storybook/addon-actions": "6.5.0-beta.1", - "@storybook/addon-backgrounds": "6.5.0-beta.1", - "@storybook/addon-controls": "6.5.0-beta.1", - "@storybook/addon-docs": "6.5.0-beta.1", - "@storybook/addon-interactions": "6.5.0-beta.1", - "@storybook/addon-links": "6.5.0-beta.1", - "@storybook/addon-storyshots": "6.5.0-beta.1", - "@storybook/addon-storysource": "6.5.0-beta.1", - "@storybook/addon-viewport": "6.5.0-beta.1", - "@storybook/addons": "6.5.0-beta.1", + "@storybook/addon-a11y": "6.5.0-beta.4", + "@storybook/addon-actions": "6.5.0-beta.4", + "@storybook/addon-backgrounds": "6.5.0-beta.4", + "@storybook/addon-controls": "6.5.0-beta.4", + "@storybook/addon-docs": "6.5.0-beta.4", + "@storybook/addon-interactions": "6.5.0-beta.4", + "@storybook/addon-links": "6.5.0-beta.4", + "@storybook/addon-storyshots": "6.5.0-beta.4", + "@storybook/addon-storysource": "6.5.0-beta.4", + "@storybook/addon-viewport": "6.5.0-beta.4", + "@storybook/addons": "6.5.0-beta.4", "@storybook/jest": "^0.0.5", - "@storybook/source-loader": "6.5.0-beta.1", - "@storybook/svelte": "6.5.0-beta.1", + "@storybook/source-loader": "6.5.0-beta.4", + "@storybook/svelte": "6.5.0-beta.4", "@storybook/testing-library": "^0.0.7", - "sb": "6.5.0-beta.1", + "sb": "6.5.0-beta.4", "svelte-jester": "1.3.0", "svelte-preprocess": "4.6.8" }, diff --git a/examples/vue-3-cli/.storybook/main.js b/examples/vue-3-cli/.storybook/main.js index 244c96aada5..e391d3cf68f 100644 --- a/examples/vue-3-cli/.storybook/main.js +++ b/examples/vue-3-cli/.storybook/main.js @@ -7,6 +7,7 @@ module.exports = { ], core: { builder: 'webpack4', + disableTelemetry: true, }, features: { buildStoriesJson: true, diff --git a/examples/vue-3-cli/package.json b/examples/vue-3-cli/package.json index 185d29ba212..fe848a8154f 100644 --- a/examples/vue-3-cli/package.json +++ b/examples/vue-3-cli/package.json @@ -1,6 +1,6 @@ { "name": "vue-3-cli-example", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "scripts": { "build": "vue-cli-service build", @@ -14,20 +14,20 @@ }, "devDependencies": { "@babel/core": "^7.12.10", - "@storybook/addon-actions": "6.5.0-beta.1", - "@storybook/addon-essentials": "6.5.0-beta.1", - "@storybook/addon-interactions": "6.5.0-beta.1", - "@storybook/addon-links": "6.5.0-beta.1", - "@storybook/addon-storyshots": "6.5.0-beta.1", + "@storybook/addon-actions": "6.5.0-beta.4", + "@storybook/addon-essentials": "6.5.0-beta.4", + "@storybook/addon-interactions": "6.5.0-beta.4", + "@storybook/addon-links": "6.5.0-beta.4", + "@storybook/addon-storyshots": "6.5.0-beta.4", "@storybook/jest": "^0.0.5", "@storybook/testing-library": "^0.0.7", - "@storybook/vue3": "6.5.0-beta.1", + "@storybook/vue3": "6.5.0-beta.4", "@vue/cli-plugin-babel": "~4.5.0", "@vue/cli-plugin-typescript": "~4.5.0", "@vue/cli-service": "~4.5.0", "@vue/compiler-sfc": "^3.0.0", "babel-loader": "^8.0.0", - "sb": "6.5.0-beta.1", + "sb": "6.5.0-beta.4", "typescript": "~3.9.3", "vue-jest": "^5.0.0-alpha.8", "vue-loader": "^16.1.2" diff --git a/examples/vue-cli/.storybook/main.js b/examples/vue-cli/.storybook/main.js index 0b0fa351116..3c6880a9f0a 100644 --- a/examples/vue-cli/.storybook/main.js +++ b/examples/vue-cli/.storybook/main.js @@ -9,6 +9,7 @@ module.exports = { ], core: { builder: 'webpack4', + disableTelemetry: true, }, features: { buildStoriesJson: true, diff --git a/examples/vue-cli/package.json b/examples/vue-cli/package.json index 7d6fe50bc51..7797c16465d 100644 --- a/examples/vue-cli/package.json +++ b/examples/vue-cli/package.json @@ -1,6 +1,6 @@ { "name": "vue-cli-example", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "scripts": { "build": "vue-cli-service build", @@ -15,15 +15,15 @@ "vue-property-decorator": "^9.1.2" }, "devDependencies": { - "@storybook/addon-controls": "6.5.0-beta.1", - "@storybook/addon-essentials": "6.5.0-beta.1", + "@storybook/addon-controls": "6.5.0-beta.4", + "@storybook/addon-essentials": "6.5.0-beta.4", "@storybook/preset-scss": "^1.0.3", - "@storybook/source-loader": "6.5.0-beta.1", - "@storybook/vue": "6.5.0-beta.1", + "@storybook/source-loader": "6.5.0-beta.4", + "@storybook/vue": "6.5.0-beta.4", "@vue/cli-plugin-babel": "~4.3.1", "@vue/cli-plugin-typescript": "~4.3.1", "@vue/cli-service": "~4.3.1", - "sb": "6.5.0-beta.1", + "sb": "6.5.0-beta.4", "typescript": "^3.9.7", "vue-template-compiler": "^2.6.12" } diff --git a/examples/vue-kitchen-sink/.storybook/main.js b/examples/vue-kitchen-sink/.storybook/main.js index 9340b13631c..7ecf67f9d21 100644 --- a/examples/vue-kitchen-sink/.storybook/main.js +++ b/examples/vue-kitchen-sink/.storybook/main.js @@ -14,6 +14,7 @@ module.exports = { ], core: { builder: 'webpack4', + disableTelemetry: true, }, staticDirs: ['../public'], features: { diff --git a/examples/vue-kitchen-sink/package.json b/examples/vue-kitchen-sink/package.json index 184b09cad20..981bbba9b9e 100644 --- a/examples/vue-kitchen-sink/package.json +++ b/examples/vue-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "vue-example", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "scripts": { "build": "cross-env NODE_ENV=production webpack --progress --hide-modules", @@ -14,27 +14,27 @@ }, "devDependencies": { "@babel/core": "^7.12.10", - "@storybook/addon-a11y": "6.5.0-beta.1", - "@storybook/addon-actions": "6.5.0-beta.1", - "@storybook/addon-backgrounds": "6.5.0-beta.1", - "@storybook/addon-controls": "6.5.0-beta.1", - "@storybook/addon-docs": "6.5.0-beta.1", - "@storybook/addon-interactions": "6.5.0-beta.1", - "@storybook/addon-links": "6.5.0-beta.1", - "@storybook/addon-storyshots": "6.5.0-beta.1", - "@storybook/addon-storysource": "6.5.0-beta.1", - "@storybook/addon-viewport": "6.5.0-beta.1", - "@storybook/addons": "6.5.0-beta.1", + "@storybook/addon-a11y": "6.5.0-beta.4", + "@storybook/addon-actions": "6.5.0-beta.4", + "@storybook/addon-backgrounds": "6.5.0-beta.4", + "@storybook/addon-controls": "6.5.0-beta.4", + "@storybook/addon-docs": "6.5.0-beta.4", + "@storybook/addon-interactions": "6.5.0-beta.4", + "@storybook/addon-links": "6.5.0-beta.4", + "@storybook/addon-storyshots": "6.5.0-beta.4", + "@storybook/addon-storysource": "6.5.0-beta.4", + "@storybook/addon-viewport": "6.5.0-beta.4", + "@storybook/addons": "6.5.0-beta.4", "@storybook/jest": "^0.0.5", - "@storybook/source-loader": "6.5.0-beta.1", + "@storybook/source-loader": "6.5.0-beta.4", "@storybook/testing-library": "^0.0.7", - "@storybook/vue": "6.5.0-beta.1", + "@storybook/vue": "6.5.0-beta.4", "@vue/babel-preset-jsx": "^1.2.4", "babel-loader": "^8.0.0", "cross-env": "^7.0.3", "file-loader": "^6.2.0", "prop-types": "^15.7.2", - "sb": "6.5.0-beta.1", + "sb": "6.5.0-beta.4", "svg-url-loader": "^7.1.1", "vue-loader": "^15.9.6", "vue-style-loader": "^4.1.2", diff --git a/examples/web-components-kitchen-sink/.storybook/main.js b/examples/web-components-kitchen-sink/.storybook/main.js index f17cb6daba4..d02c6bb8173 100644 --- a/examples/web-components-kitchen-sink/.storybook/main.js +++ b/examples/web-components-kitchen-sink/.storybook/main.js @@ -15,6 +15,7 @@ module.exports = { ], core: { builder: 'webpack4', + disableTelemetry: true, }, features: { interactionsDebugger: true, diff --git a/examples/web-components-kitchen-sink/package.json b/examples/web-components-kitchen-sink/package.json index 632e38c255b..39dcdc88537 100644 --- a/examples/web-components-kitchen-sink/package.json +++ b/examples/web-components-kitchen-sink/package.json @@ -1,6 +1,6 @@ { "name": "web-components-kitchen-sink", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "description": "", "keywords": [], @@ -49,6 +49,7 @@ "@storybook/router": "portal:../../lib/router", "@storybook/source-loader": "portal:../../lib/source-loader", "@storybook/store": "portal:../../lib/store", + "@storybook/telemetry": "portal:../../lib/telemetry", "@storybook/testing-library": "^0.0.7", "@storybook/theming": "portal:../../lib/theming", "@storybook/ui": "portal:../../lib/ui", diff --git a/examples/web-components-kitchen-sink/yarn.lock b/examples/web-components-kitchen-sink/yarn.lock index 5d1d824dec8..bd1710570d5 100644 --- a/examples/web-components-kitchen-sink/yarn.lock +++ b/examples/web-components-kitchen-sink/yarn.lock @@ -3243,7 +3243,7 @@ __metadata: "@babel/preset-env": ^7.12.11 "@babel/traverse": ^7.12.11 "@babel/types": ^7.12.11 - "@storybook/csf": 0.0.2--canary.7c6c115.0 + "@storybook/csf": 0.0.2--canary.4566f4d.1 "@storybook/mdx1-csf": canary core-js: ^3.8.2 fs-extra: ^9.0.1 @@ -3258,12 +3258,12 @@ __metadata: languageName: node linkType: soft -"@storybook/csf@npm:0.0.2--canary.7c6c115.0": - version: 0.0.2--canary.7c6c115.0 - resolution: "@storybook/csf@npm:0.0.2--canary.7c6c115.0" +"@storybook/csf@npm:0.0.2--canary.4566f4d.1": + version: 0.0.2--canary.4566f4d.1 + resolution: "@storybook/csf@npm:0.0.2--canary.4566f4d.1" dependencies: lodash: ^4.17.15 - checksum: 85a179664d18eeca8462c1b6ff36f9b68b856c9f9c5143aa6f19b17e4cc97bc08ed69921a5287a61d8c90f61366ff6a5ab89930d158402e7c04d07a3ffaad8bb + checksum: dc0fe9940a47fbba9762275083816953da07a188f0315a631c307716b16a7073586a4d229df6b177dfb4b01604667e2bb24c13d6bfcb137d2f4d306874a590f4 languageName: node linkType: hard @@ -3464,6 +3464,24 @@ __metadata: languageName: node linkType: soft +"@storybook/telemetry@portal:../../lib/telemetry::locator=web-components-kitchen-sink%40workspace%3A.": + version: 0.0.0-use.local + resolution: "@storybook/telemetry@portal:../../lib/telemetry::locator=web-components-kitchen-sink%40workspace%3A." + dependencies: + "@storybook/client-logger": 6.5.0-beta.1 + "@storybook/core-common": 6.5.0-beta.1 + chalk: ^4.1.0 + core-js: ^3.8.2 + detect-package-manager: ^2.0.1 + fetch-retry: ^5.0.2 + fs-extra: ^9.0.1 + global: ^4.4.0 + isomorphic-unfetch: ^3.1.0 + nanoid: ^3.3.1 + read-pkg-up: ^7.0.1 + languageName: node + linkType: soft + "@storybook/theming@portal:../../lib/theming::locator=web-components-kitchen-sink%40workspace%3A.": version: 0.0.0-use.local resolution: "@storybook/theming@portal:../../lib/theming::locator=web-components-kitchen-sink%40workspace%3A." @@ -6478,6 +6496,15 @@ __metadata: languageName: node linkType: hard +"detect-package-manager@npm:^2.0.1": + version: 2.0.1 + resolution: "detect-package-manager@npm:2.0.1" + dependencies: + execa: ^5.1.1 + checksum: 56ffd65228d1ff3ead5ea7f8ab951a517a29270de27510b790c9a8b77d4f36efbd61493e170ca77ee3dc13cbb5218583ce65b78ad14a59dc48565c9bcbbf3c71 + languageName: node + linkType: hard + "detect-port@npm:^1.3.0": version: 1.3.0 resolution: "detect-port@npm:1.3.0" @@ -7054,7 +7081,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:^5.0.0": +"execa@npm:^5.0.0, execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" dependencies: @@ -9146,6 +9173,16 @@ fsevents@^1.2.7: languageName: node linkType: hard +"isomorphic-unfetch@npm:^3.1.0": + version: 3.1.0 + resolution: "isomorphic-unfetch@npm:3.1.0" + dependencies: + node-fetch: ^2.6.1 + unfetch: ^4.2.0 + checksum: d3b61fca06304db692b7f76bdfd3a00f410e42cfa7403c3b250546bf71589d18cf2f355922f57198e4cc4a9872d3647b20397a5c3edf1a347c90d57c83cf2a89 + languageName: node + linkType: hard + "istanbul-lib-coverage@npm:^3.0.0": version: 3.0.0 resolution: "istanbul-lib-coverage@npm:3.0.0" @@ -10982,6 +11019,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"nanoid@npm:^3.3.1": + version: 3.3.3 + resolution: "nanoid@npm:3.3.3" + bin: + nanoid: bin/nanoid.cjs + checksum: d7ab68893cdb92dd2152d505e56571d571c65b71a9815f9dfb3c9a8cbf943fe43c9777d9a95a3b81ef01e442fec8409a84375c08f90a5753610a9f22672d953a + languageName: node + linkType: hard + "nanomatch@npm:^1.2.9": version: 1.2.13 resolution: "nanomatch@npm:1.2.13" diff --git a/jest.config.js b/jest.config.js index e19970266d6..3292f58155c 100644 --- a/jest.config.js +++ b/jest.config.js @@ -81,6 +81,7 @@ module.exports = { '/__mocks-ng-workspace__/', '/__testfixtures__/', '^.*\\.stories\\.[jt]sx?$', + 'typings.d.ts$', ], globals: { DOCS_MODE: false, diff --git a/lerna.json b/lerna.json index 55bd81ac608..e130db48c0b 100644 --- a/lerna.json +++ b/lerna.json @@ -2,5 +2,5 @@ "npmClient": "yarn", "useWorkspaces": true, "registry": "https://registry.npmjs.org", - "version": "6.5.0-beta.1" + "version": "6.5.0-beta.4" } diff --git a/lib/addons/package.json b/lib/addons/package.json index 6eb3f4b1bec..9429c443a1b 100644 --- a/lib/addons/package.json +++ b/lib/addons/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/addons", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook addons store", "keywords": [ "storybook" @@ -40,13 +40,13 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/api": "6.5.0-beta.1", - "@storybook/channels": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/api": "6.5.0-beta.4", + "@storybook/channels": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/router": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/router": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", "global": "^4.4.0", @@ -59,6 +59,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/public_api.js" } diff --git a/lib/api/package.json b/lib/api/package.json index 1875c18643f..509ef56c504 100644 --- a/lib/api/package.json +++ b/lib/api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/api", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Core Storybook API & Context", "keywords": [ "storybook" @@ -38,13 +38,13 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/channels": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/channels": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/router": "6.5.0-beta.1", + "@storybook/router": "6.5.0-beta.4", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/theming": "6.5.0-beta.4", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", "global": "^4.4.0", @@ -71,6 +71,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/api/src/lib/stories.ts b/lib/api/src/lib/stories.ts index cfaf9b4af9a..4272793beb8 100644 --- a/lib/api/src/lib/stories.ts +++ b/lib/api/src/lib/stories.ts @@ -26,6 +26,7 @@ const { FEATURES } = global; export type { StoryId }; export interface Root { + type: 'root'; id: StoryId; depth: 0; name: string; @@ -39,6 +40,7 @@ export interface Root { } export interface Group { + type: 'group' | 'component'; id: StoryId; depth: number; name: string; @@ -57,6 +59,7 @@ export interface Group { } export interface Story { + type: 'story' | 'docs'; id: StoryId; depth: number; parent: StoryId; @@ -251,6 +254,7 @@ export const transformStoriesRawToStoriesHash = ( if (root.length && index === 0) { list.push({ + type: 'root', id, name, depth: index, @@ -263,6 +267,7 @@ export const transformStoriesRawToStoriesHash = ( }); } else { list.push({ + type: 'group', id, name, parent, @@ -295,6 +300,7 @@ export const transformStoriesRawToStoriesHash = ( }); acc[item.id] = { + type: item.parameters?.docsOnly ? 'docs' : 'story', ...item, depth: rootAndGroups.length, parent: rootAndGroups[rootAndGroups.length - 1].id, @@ -315,7 +321,10 @@ export const transformStoriesRawToStoriesHash = ( const { children } = item; if (children) { const childNodes = children.map((id) => storiesHashOutOfOrder[id]) as (Story | Group)[]; - acc[item.id].isComponent = childNodes.every((childNode) => childNode.isLeaf); + if (childNodes.every((childNode) => childNode.isLeaf)) { + acc[item.id].isComponent = true; + acc[item.id].type = 'component'; + } childNodes.forEach((childNode) => addItem(acc, childNode)); } } diff --git a/lib/api/src/modules/layout.ts b/lib/api/src/modules/layout.ts index 8a7fc359516..78d8d1a324c 100644 --- a/lib/api/src/modules/layout.ts +++ b/lib/api/src/modules/layout.ts @@ -24,6 +24,7 @@ export interface Layout { panelPosition: PanelPositions; showNav: boolean; isToolshown: boolean; + showTabs: boolean; } export interface UI { @@ -74,6 +75,7 @@ const defaultState: SubState = { showPanel: true, showNav: true, panelPosition: 'bottom', + showTabs: true, }, selectedPanel: undefined, theme: themes.light, @@ -136,7 +138,7 @@ export const init: ModuleFn = ({ store, provider, singleStory }) => { panelPosition: position, }, }), - { persistence: 'session' } + { persistence: 'permanent' } ); } @@ -147,7 +149,7 @@ export const init: ModuleFn = ({ store, provider, singleStory }) => { panelPosition: state.layout.panelPosition === 'right' ? 'bottom' : 'right', }, }), - { persistence: 'session' } + { persistence: 'permanent' } ); }, diff --git a/lib/api/src/modules/url.ts b/lib/api/src/modules/url.ts index 6609ff30fb2..71707951ea8 100644 --- a/lib/api/src/modules/url.ts +++ b/lib/api/src/modules/url.ts @@ -48,6 +48,7 @@ const initialUrlSupport = ({ nav, shortcuts, addonPanel, + tabs, addons, // deprecated panelRight, // deprecated stories, // deprecated @@ -62,6 +63,7 @@ const initialUrlSupport = ({ showNav: !singleStory && parseBoolean(nav), showPanel: parseBoolean(panel), panelPosition: ['right', 'bottom'].includes(panel) ? panel : undefined, + showTabs: parseBoolean(tabs), }; const ui: Partial = { enableShortcuts: parseBoolean(shortcuts), diff --git a/lib/api/src/tests/stories.test.js b/lib/api/src/tests/stories.test.js index 7b6152102b2..2dd43de340b 100644 --- a/lib/api/src/tests/stories.test.js +++ b/lib/api/src/tests/stories.test.js @@ -167,6 +167,7 @@ describe('stories API', () => { 'custom-id--1', ]); expect(storedStoriesHash.a).toMatchObject({ + type: 'component', id: 'a', children: ['a--1', 'a--2'], isRoot: false, @@ -174,6 +175,7 @@ describe('stories API', () => { }); expect(storedStoriesHash['a--1']).toMatchObject({ + type: 'story', id: 'a--1', parent: 'a', kind: 'a', @@ -184,6 +186,7 @@ describe('stories API', () => { }); expect(storedStoriesHash['a--2']).toMatchObject({ + type: 'story', id: 'a--2', parent: 'a', kind: 'a', @@ -194,6 +197,7 @@ describe('stories API', () => { }); expect(storedStoriesHash.b).toMatchObject({ + type: 'group', id: 'b', children: ['b-c', 'b-d', 'b-e'], isRoot: false, @@ -201,6 +205,7 @@ describe('stories API', () => { }); expect(storedStoriesHash['b-c']).toMatchObject({ + type: 'component', id: 'b-c', parent: 'b', children: ['b-c--1'], @@ -209,6 +214,7 @@ describe('stories API', () => { }); expect(storedStoriesHash['b-c--1']).toMatchObject({ + type: 'story', id: 'b-c--1', parent: 'b-c', kind: 'b/c', @@ -219,6 +225,7 @@ describe('stories API', () => { }); expect(storedStoriesHash['b-d']).toMatchObject({ + type: 'component', id: 'b-d', parent: 'b', children: ['b-d--1', 'b-d--2'], @@ -227,6 +234,7 @@ describe('stories API', () => { }); expect(storedStoriesHash['b-d--1']).toMatchObject({ + type: 'story', id: 'b-d--1', parent: 'b-d', kind: 'b/d', @@ -237,6 +245,7 @@ describe('stories API', () => { }); expect(storedStoriesHash['b-d--2']).toMatchObject({ + type: 'story', id: 'b-d--2', parent: 'b-d', kind: 'b/d', @@ -247,6 +256,7 @@ describe('stories API', () => { }); expect(storedStoriesHash['b-e']).toMatchObject({ + type: 'component', id: 'b-e', parent: 'b', children: ['custom-id--1'], @@ -255,6 +265,7 @@ describe('stories API', () => { }); expect(storedStoriesHash['custom-id--1']).toMatchObject({ + type: 'story', id: 'custom-id--1', parent: 'b-e', kind: 'b/e', @@ -293,14 +304,17 @@ describe('stories API', () => { 'design-system-some-component--my-story', ]); expect(storedStoriesHash['design-system']).toMatchObject({ + type: 'root', isRoot: true, name: 'Design System', // root name originates from `kind`, so it gets trimmed }); expect(storedStoriesHash['design-system-some-component']).toMatchObject({ + type: 'component', isComponent: true, name: 'Some Component', // component name originates from `kind`, so it gets trimmed }); expect(storedStoriesHash['design-system-some-component--my-story']).toMatchObject({ + type: 'story', isLeaf: true, kind: ' Design System / Some Component ', // kind is kept as-is, because it may be used as identifier name: ' My Story ', // story name is kept as-is, because it's set directly on the story @@ -332,12 +346,14 @@ describe('stories API', () => { // We need exact key ordering, even if in theory JS doens't guarantee it expect(Object.keys(storedStoriesHash)).toEqual(['a', 'a-b', 'a-b--1']); expect(storedStoriesHash.a).toMatchObject({ + type: 'root', id: 'a', children: ['a-b'], isRoot: true, isComponent: false, }); expect(storedStoriesHash['a-b']).toMatchObject({ + type: 'component', id: 'a-b', parent: 'a', children: ['a-b--1'], @@ -345,6 +361,7 @@ describe('stories API', () => { isComponent: true, }); expect(storedStoriesHash['a-b--1']).toMatchObject({ + type: 'story', id: 'a-b--1', parent: 'a-b', kind: 'a/b', @@ -379,12 +396,14 @@ describe('stories API', () => { // We need exact key ordering, even if in theory JS doens't guarantee it expect(Object.keys(storedStoriesHash)).toEqual(['a', 'a--1']); expect(storedStoriesHash.a).toMatchObject({ + type: 'component', id: 'a', children: ['a--1'], isRoot: false, isComponent: true, }); expect(storedStoriesHash['a--1']).toMatchObject({ + type: 'story', id: 'a--1', parent: 'a', kind: 'a', @@ -415,6 +434,7 @@ describe('stories API', () => { // We need exact key ordering, even if in theory JS doens't guarantee it expect(Object.keys(storedStoriesHash)).toEqual(['a', 'a--1', 'a--2', 'b', 'b--1']); expect(storedStoriesHash.a).toMatchObject({ + type: 'component', id: 'a', children: ['a--1', 'a--2'], isRoot: false, @@ -422,6 +442,7 @@ describe('stories API', () => { }); expect(storedStoriesHash.b).toMatchObject({ + type: 'component', id: 'b', children: ['b--1'], isRoot: false, @@ -989,6 +1010,7 @@ describe('stories API', () => { 'component-b--story-3', ]); expect(storedStoriesHash['component-a']).toMatchObject({ + type: 'component', id: 'component-a', children: ['component-a--story-1', 'component-a--story-2'], isRoot: false, @@ -996,6 +1018,7 @@ describe('stories API', () => { }); expect(storedStoriesHash['component-a--story-1']).toMatchObject({ + type: 'story', id: 'component-a--story-1', parent: 'component-a', kind: 'Component A', @@ -1040,21 +1063,25 @@ describe('stories API', () => { it('infers docs only if there is only one story and it has the name "Page"', async () => { mockStories.mockReset().mockReturnValue({ 'component-a--page': { + type: 'story', title: 'Component A', name: 'Page', // Called "Page" but not only story importPath: './path/to/component-a.ts', }, 'component-a--story-2': { + type: 'story', title: 'Component A', name: 'Story 2', importPath: './path/to/component-a.ts', }, 'component-b--page': { + type: 'docs', title: 'Component B', name: 'Page', // Page and only story importPath: './path/to/component-b.ts', }, 'component-c--story-4': { + type: 'story', title: 'Component c', name: 'Story 4', // Only story but not page importPath: './path/to/component-c.ts', @@ -1112,6 +1139,7 @@ describe('stories API', () => { const { storiesHash: storedStoriesHash } = store.getState(); expect(storedStoriesHash['component-a--story-1']).toMatchObject({ + type: 'story', id: 'component-a--story-1', parent: 'component-a', kind: 'Component A', diff --git a/lib/api/src/version.ts b/lib/api/src/version.ts index 039f944c48a..cd9fec8c18c 100644 --- a/lib/api/src/version.ts +++ b/lib/api/src/version.ts @@ -1 +1 @@ -export const version = '6.5.0-beta.1'; +export const version = '6.5.0-beta.4'; diff --git a/lib/builder-webpack4/package.json b/lib/builder-webpack4/package.json index 52dd5c376c6..cc2e5ad28ce 100644 --- a/lib/builder-webpack4/package.json +++ b/lib/builder-webpack4/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-webpack4", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -40,22 +40,22 @@ }, "dependencies": { "@babel/core": "^7.12.10", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/channel-postmessage": "6.5.0-beta.1", - "@storybook/channels": "6.5.0-beta.1", - "@storybook/client-api": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", - "@storybook/node-logger": "6.5.0-beta.1", - "@storybook/preview-web": "6.5.0-beta.1", - "@storybook/router": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/channel-postmessage": "6.5.0-beta.4", + "@storybook/channels": "6.5.0-beta.4", + "@storybook/client-api": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", + "@storybook/node-logger": "6.5.0-beta.4", + "@storybook/preview-web": "6.5.0-beta.4", + "@storybook/router": "6.5.0-beta.4", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", - "@storybook/ui": "6.5.0-beta.1", + "@storybook/store": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", + "@storybook/ui": "6.5.0-beta.4", "@types/node": "^14.0.10 || ^16.0.0", "@types/webpack": "^4.41.26", "autoprefixer": "^9.8.6", @@ -106,6 +106,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/builder-webpack5/package.json b/lib/builder-webpack5/package.json index f6f7b401718..88482330560 100644 --- a/lib/builder-webpack5/package.json +++ b/lib/builder-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/builder-webpack5", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -40,21 +40,21 @@ }, "dependencies": { "@babel/core": "^7.12.10", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/channel-postmessage": "6.5.0-beta.1", - "@storybook/channels": "6.5.0-beta.1", - "@storybook/client-api": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", - "@storybook/node-logger": "6.5.0-beta.1", - "@storybook/preview-web": "6.5.0-beta.1", - "@storybook/router": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/channel-postmessage": "6.5.0-beta.4", + "@storybook/channels": "6.5.0-beta.4", + "@storybook/client-api": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", + "@storybook/node-logger": "6.5.0-beta.4", + "@storybook/preview-web": "6.5.0-beta.4", + "@storybook/router": "6.5.0-beta.4", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/store": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", "@types/node": "^14.0.10 || ^16.0.0", "babel-loader": "^8.0.0", "babel-plugin-named-exports-order": "^0.0.2", @@ -97,6 +97,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/channel-postmessage/package.json b/lib/channel-postmessage/package.json index ebe0a815369..ad2d3992fd6 100644 --- a/lib/channel-postmessage/package.json +++ b/lib/channel-postmessage/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channel-postmessage", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "", "keywords": [ "storybook" @@ -40,9 +40,9 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/channels": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/channels": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "core-js": "^3.8.2", "global": "^4.4.0", "qs": "^6.10.0", @@ -51,6 +51,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/channel-websocket/package.json b/lib/channel-websocket/package.json index d487a478fef..5163ea04f99 100644 --- a/lib/channel-websocket/package.json +++ b/lib/channel-websocket/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channel-websocket", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "", "keywords": [ "storybook" @@ -40,8 +40,8 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/channels": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", + "@storybook/channels": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", "core-js": "^3.8.2", "global": "^4.4.0", "telejson": "^5.3.3" @@ -49,6 +49,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/channels/package.json b/lib/channels/package.json index 2fad5d21035..c5dfca03a72 100644 --- a/lib/channels/package.json +++ b/lib/channels/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/channels", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "", "keywords": [ "storybook" @@ -47,6 +47,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/cli-sb/package.json b/lib/cli-sb/package.json index 88cbe9cfbb9..96c38221a86 100644 --- a/lib/cli-sb/package.json +++ b/lib/cli-sb/package.json @@ -1,6 +1,6 @@ { "name": "sb", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook CLI", "keywords": [ "storybook" @@ -24,10 +24,10 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/cli": "6.5.0-beta.1" + "@storybook/cli": "6.5.0-beta.4" }, "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a" + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04" } diff --git a/lib/cli-storybook/package.json b/lib/cli-storybook/package.json index 3d09333903e..2120bd8b553 100644 --- a/lib/cli-storybook/package.json +++ b/lib/cli-storybook/package.json @@ -1,6 +1,6 @@ { "name": "storybook", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook CLI", "keywords": [ "storybook" @@ -27,10 +27,10 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/cli": "6.5.0-beta.1" + "@storybook/cli": "6.5.0-beta.4" }, "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a" + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04" } diff --git a/lib/cli/package.json b/lib/cli/package.json index 446d72a2379..3f7b85e814c 100644 --- a/lib/cli/package.json +++ b/lib/cli/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/cli", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook's CLI - easiest method of adding storybook to your projects", "keywords": [ "cli", @@ -47,12 +47,13 @@ "dependencies": { "@babel/core": "^7.12.10", "@babel/preset-env": "^7.12.11", - "@storybook/codemod": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-server": "6.5.0-beta.1", - "@storybook/csf-tools": "6.5.0-beta.1", - "@storybook/node-logger": "6.5.0-beta.1", + "@storybook/codemod": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-server": "6.5.0-beta.4", + "@storybook/csf-tools": "6.5.0-beta.4", + "@storybook/node-logger": "6.5.0-beta.4", "@storybook/semver": "^7.3.2", + "@storybook/telemetry": "6.5.0-beta.4", "boxen": "^5.1.2", "chalk": "^4.1.0", "commander": "^6.2.1", @@ -76,7 +77,7 @@ "update-notifier": "^5.0.1" }, "devDependencies": { - "@storybook/client-api": "6.5.0-beta.1", + "@storybook/client-api": "6.5.0-beta.4", "@types/cross-spawn": "^6.0.2", "@types/prompts": "^2.0.9", "@types/puppeteer-core": "^2.1.0", @@ -92,5 +93,5 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a" + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04" } diff --git a/lib/cli/src/automigrate/fixes/builder-vite.ts b/lib/cli/src/automigrate/fixes/builder-vite.ts index f7aa800a4d6..9c8d382b721 100644 --- a/lib/cli/src/automigrate/fixes/builder-vite.ts +++ b/lib/cli/src/automigrate/fixes/builder-vite.ts @@ -2,9 +2,9 @@ import chalk from 'chalk'; import dedent from 'ts-dedent'; import { ConfigFile, readConfig, writeConfig } from '@storybook/csf-tools'; +import { getStorybookInfo } from '@storybook/core-common'; import { Fix } from '../types'; -import { getStorybookInfo } from '../helpers/getStorybookInfo'; import { PackageJson, writePackageJson } from '../../js-package-manager'; const logger = console; diff --git a/lib/cli/src/automigrate/fixes/eslint-plugin.ts b/lib/cli/src/automigrate/fixes/eslint-plugin.ts index dd6e9351066..431038bc413 100644 --- a/lib/cli/src/automigrate/fixes/eslint-plugin.ts +++ b/lib/cli/src/automigrate/fixes/eslint-plugin.ts @@ -1,9 +1,9 @@ import chalk from 'chalk'; import dedent from 'ts-dedent'; import { ConfigFile, readConfig, writeConfig } from '@storybook/csf-tools'; +import { getStorybookInfo } from '@storybook/core-common'; import { findEslintFile, SUPPORTED_ESLINT_EXTENSIONS } from '../helpers/getEslintInfo'; -import { getStorybookInfo } from '../helpers/getStorybookInfo'; import type { Fix } from '../types'; diff --git a/lib/cli/src/automigrate/fixes/mainjsFramework.ts b/lib/cli/src/automigrate/fixes/mainjsFramework.ts index e074a9cd585..15a67e3ac67 100644 --- a/lib/cli/src/automigrate/fixes/mainjsFramework.ts +++ b/lib/cli/src/automigrate/fixes/mainjsFramework.ts @@ -3,8 +3,8 @@ import dedent from 'ts-dedent'; import semver from '@storybook/semver'; import { ConfigFile, readConfig, writeConfig } from '@storybook/csf-tools'; +import { getStorybookInfo } from '@storybook/core-common'; -import { getStorybookInfo } from '../helpers/getStorybookInfo'; import { Fix } from '../types'; const logger = console; diff --git a/lib/cli/src/automigrate/fixes/webpack5.ts b/lib/cli/src/automigrate/fixes/webpack5.ts index 323c3a064fc..de27e291451 100644 --- a/lib/cli/src/automigrate/fixes/webpack5.ts +++ b/lib/cli/src/automigrate/fixes/webpack5.ts @@ -2,8 +2,8 @@ import chalk from 'chalk'; import dedent from 'ts-dedent'; import semver from '@storybook/semver'; import { ConfigFile, readConfig, writeConfig } from '@storybook/csf-tools'; +import { getStorybookInfo } from '@storybook/core-common'; import { Fix } from '../types'; -import { getStorybookInfo } from '../helpers/getStorybookInfo'; import { PackageJsonWithDepsAndDevDeps } from '../../js-package-manager'; const logger = console; diff --git a/lib/cli/src/detect.ts b/lib/cli/src/detect.ts index d9966cb800e..a53dcfe00e3 100644 --- a/lib/cli/src/detect.ts +++ b/lib/cli/src/detect.ts @@ -90,7 +90,7 @@ const getFrameworkPreset = ( return matcherFunction(matcher) ? preset : null; }; -export function detectFrameworkPreset(packageJson = {}) { +export function detectFrameworkPreset(packageJson = {} as PackageJson) { const result = [...supportedTemplates, unsupportedTemplate].find((framework) => { return getFrameworkPreset(packageJson, framework) !== null; }); @@ -171,7 +171,12 @@ export function isStorybookInstalled(dependencies: PackageJson | false, force?: export function detectLanguage() { let language = SupportedLanguage.JAVASCRIPT; - const packageJson = readPackageJson(); + let packageJson; + try { + packageJson = readPackageJson(); + } catch (err) { + // + } const bowerJson = getBowerJson(); if (!packageJson && !bowerJson) { return language; @@ -185,7 +190,12 @@ export function detectLanguage() { } export function detect(options: { force?: boolean; html?: boolean } = {}) { - const packageJson = readPackageJson(); + let packageJson; + try { + packageJson = readPackageJson(); + } catch (err) { + // + } const bowerJson = getBowerJson(); if (!packageJson && !bowerJson) { diff --git a/lib/cli/src/generate.ts b/lib/cli/src/generate.ts index a382a7d6ad8..67963294466 100644 --- a/lib/cli/src/generate.ts +++ b/lib/cli/src/generate.ts @@ -23,6 +23,15 @@ import { parseList, getEnvConfig } from './utils'; const pkg = readUpSync({ cwd: __dirname }).packageJson; const consoleLogger = console; +program.option( + '--disable-telemetry', + 'disable sending telemetry data', + // default value is false, but if the user sets STORYBOOK_DISABLE_TELEMETRY, it can be true + process.env.STORYBOOK_DISABLE_TELEMETRY && process.env.STORYBOOK_DISABLE_TELEMETRY !== 'false' +); + +program.option('--enable-crash-reports', 'enable sending crash reports to telemetry data'); + program .command('init') .description('Initialize Storybook into your project.') diff --git a/lib/cli/src/initiate.ts b/lib/cli/src/initiate.ts index 50516c2e978..3ba05abe529 100644 --- a/lib/cli/src/initiate.ts +++ b/lib/cli/src/initiate.ts @@ -1,8 +1,9 @@ import { UpdateNotifier, Package } from 'update-notifier'; import chalk from 'chalk'; import prompts from 'prompts'; -import { detect, isStorybookInstalled, detectLanguage, detectBuilder } from './detect'; +import { telemetry } from '@storybook/telemetry'; import { installableProjectTypes, ProjectType, Builder } from './project_types'; +import { detect, isStorybookInstalled, detectLanguage, detectBuilder } from './detect'; import { commandLog, codeLog, paddedLog } from './helpers'; import angularGenerator from './generators/ANGULAR'; import aureliaGenerator from './generators/AURELIA'; @@ -26,7 +27,7 @@ import preactGenerator from './generators/PREACT'; import svelteGenerator from './generators/SVELTE'; import raxGenerator from './generators/RAX'; import serverGenerator from './generators/SERVER'; -import { JsPackageManagerFactory, readPackageJson } from './js-package-manager'; +import { JsPackageManagerFactory, JsPackageManager } from './js-package-manager'; import { NpmOptions } from './NpmOptions'; import { automigrate } from './automigrate'; @@ -43,11 +44,14 @@ type CommandOptions = { builder?: Builder; linkable?: boolean; commonJs?: boolean; + disableTelemetry?: boolean; }; -const installStorybook = (projectType: ProjectType, options: CommandOptions): Promise => { - const packageManager = JsPackageManagerFactory.getPackageManager(options.useNpm); - +const installStorybook = ( + projectType: ProjectType, + packageManager: JsPackageManager, + options: CommandOptions +): Promise => { const npmOptions: NpmOptions = { installAsDevDependencies: true, skipInstall: options.skipInstall, @@ -247,7 +251,7 @@ const installStorybook = (projectType: ProjectType, options: CommandOptions): Pr // Add a new line for the clear visibility. logger.log(); - return projectTypeInquirer(options); + return projectTypeInquirer(options, packageManager); } }; @@ -257,7 +261,10 @@ const installStorybook = (projectType: ProjectType, options: CommandOptions): Pr }); }; -const projectTypeInquirer = async (options: { yes?: boolean }) => { +const projectTypeInquirer = async ( + options: { yes?: boolean }, + packageManager: JsPackageManager +) => { const manualAnswer = options.yes ? true : await prompts([ @@ -280,15 +287,20 @@ const projectTypeInquirer = async (options: { yes?: boolean }) => { })), }, ]); - return installStorybook(frameworkAnswer.manualFramework, options); + return installStorybook(frameworkAnswer.manualFramework, packageManager, options); } return Promise.resolve(); }; export async function initiate(options: CommandOptions, pkg: Package): Promise { + const packageManager = JsPackageManagerFactory.getPackageManager(options.useNpm); const welcomeMessage = 'sb init - the simplest way to add a Storybook to your project.'; logger.log(chalk.inverse(`\n ${welcomeMessage} \n`)); + if (!options.disableTelemetry) { + telemetry('init'); + } + // Update notify code. new UpdateNotifier({ pkg, @@ -302,7 +314,7 @@ export async function initiate(options: CommandOptions, pkg: Package): Promise; - devDependencies?: Record; - peerDependencies?: Record; - scripts?: Record; - eslintConfig?: any; - type?: 'module'; -}; +import type { PackageJson } from '@storybook/core-common'; +export type { PackageJson } from '@storybook/core-common'; export type PackageJsonWithDepsAndDevDeps = PackageJson & Required>; diff --git a/lib/cli/src/js-package-manager/PackageJsonHelper.ts b/lib/cli/src/js-package-manager/PackageJsonHelper.ts index 17fa72935f0..e013783745e 100644 --- a/lib/cli/src/js-package-manager/PackageJsonHelper.ts +++ b/lib/cli/src/js-package-manager/PackageJsonHelper.ts @@ -1,11 +1,11 @@ import path from 'path'; import fs from 'fs'; -import { PackageJson } from './PackageJson'; +import type { PackageJson } from '@storybook/core-common'; -export function readPackageJson(): PackageJson | false { +export function readPackageJson(): PackageJson { const packageJsonPath = path.resolve('package.json'); if (!fs.existsSync(packageJsonPath)) { - return false; + throw new Error(`Could not read package.json file at ${packageJsonPath}`); } const jsonContent = fs.readFileSync(packageJsonPath, 'utf8'); diff --git a/lib/cli/src/upgrade.ts b/lib/cli/src/upgrade.ts index 79a42d5e7aa..e656b994bdf 100644 --- a/lib/cli/src/upgrade.ts +++ b/lib/cli/src/upgrade.ts @@ -1,4 +1,5 @@ import { sync as spawnSync } from 'cross-spawn'; +import { telemetry } from '@storybook/telemetry'; import semver from '@storybook/semver'; import { logger } from '@storybook/node-logger'; import { @@ -42,6 +43,10 @@ const excludeList = [ '@storybook/builder-vite', '@storybook/mdx1-csf', '@storybook/mdx2-csf', + '@storybook/expect', + '@storybook/jest', + '@storybook/test-runner', + '@storybook/testing-library', ]; export const isCorePackage = (pkg: string) => pkg.startsWith('@storybook/') && @@ -135,12 +140,23 @@ interface UpgradeOptions { useNpm: boolean; dryRun: boolean; yes: boolean; + disableTelemetry: boolean; } -export const upgrade = async ({ prerelease, skipCheck, useNpm, dryRun, yes }: UpgradeOptions) => { +export const upgrade = async ({ + prerelease, + skipCheck, + useNpm, + dryRun, + yes, + ...options +}: UpgradeOptions) => { const packageManager = JsPackageManagerFactory.getPackageManager(useNpm); commandLog(`Checking for latest versions of '@storybook/*' packages`); + if (!options.disableTelemetry) { + telemetry('upgrade', { prerelease }); + } let flags = []; if (!dryRun) flags.push('--upgrade'); diff --git a/lib/cli/src/versions.ts b/lib/cli/src/versions.ts index d8c03acae07..aa96e21f62c 100644 --- a/lib/cli/src/versions.ts +++ b/lib/cli/src/versions.ts @@ -1,59 +1,60 @@ // auto generated file, do not edit export default { - '@storybook/addon-a11y': '6.5.0-beta.1', - '@storybook/addon-actions': '6.5.0-beta.1', - '@storybook/addon-backgrounds': '6.5.0-beta.1', - '@storybook/addon-controls': '6.5.0-beta.1', - '@storybook/addon-docs': '6.5.0-beta.1', - '@storybook/addon-essentials': '6.5.0-beta.1', - '@storybook/addon-interactions': '6.5.0-beta.1', - '@storybook/addon-jest': '6.5.0-beta.1', - '@storybook/addon-links': '6.5.0-beta.1', - '@storybook/addon-measure': '6.5.0-beta.1', - '@storybook/addon-outline': '6.5.0-beta.1', - '@storybook/addon-storyshots': '6.5.0-beta.1', - '@storybook/addon-storyshots-puppeteer': '6.5.0-beta.1', - '@storybook/addon-storysource': '6.5.0-beta.1', - '@storybook/addon-toolbars': '6.5.0-beta.1', - '@storybook/addon-viewport': '6.5.0-beta.1', - '@storybook/addons': '6.5.0-beta.1', - '@storybook/angular': '6.5.0-beta.1', - '@storybook/api': '6.5.0-beta.1', - '@storybook/builder-webpack4': '6.5.0-beta.1', - '@storybook/builder-webpack5': '6.5.0-beta.1', - '@storybook/channel-postmessage': '6.5.0-beta.1', - '@storybook/channel-websocket': '6.5.0-beta.1', - '@storybook/channels': '6.5.0-beta.1', - '@storybook/cli': '6.5.0-beta.1', - '@storybook/client-api': '6.5.0-beta.1', - '@storybook/client-logger': '6.5.0-beta.1', - '@storybook/codemod': '6.5.0-beta.1', - '@storybook/components': '6.5.0-beta.1', - '@storybook/core': '6.5.0-beta.1', - '@storybook/core-client': '6.5.0-beta.1', - '@storybook/core-common': '6.5.0-beta.1', - '@storybook/core-events': '6.5.0-beta.1', - '@storybook/core-server': '6.5.0-beta.1', - '@storybook/csf-tools': '6.5.0-beta.1', - '@storybook/docs-tools': '6.5.0-beta.1', - '@storybook/ember': '6.5.0-beta.1', - '@storybook/html': '6.5.0-beta.1', - '@storybook/instrumenter': '6.5.0-beta.1', - '@storybook/manager-webpack4': '6.5.0-beta.1', - '@storybook/manager-webpack5': '6.5.0-beta.1', - '@storybook/node-logger': '6.5.0-beta.1', - '@storybook/postinstall': '6.5.0-beta.1', - '@storybook/preact': '6.5.0-beta.1', - '@storybook/preview-web': '6.5.0-beta.1', - '@storybook/react': '6.5.0-beta.1', - '@storybook/router': '6.5.0-beta.1', - '@storybook/server': '6.5.0-beta.1', - '@storybook/source-loader': '6.5.0-beta.1', - '@storybook/store': '6.5.0-beta.1', - '@storybook/svelte': '6.5.0-beta.1', - '@storybook/theming': '6.5.0-beta.1', - '@storybook/ui': '6.5.0-beta.1', - '@storybook/vue': '6.5.0-beta.1', - '@storybook/vue3': '6.5.0-beta.1', - '@storybook/web-components': '6.5.0-beta.1', + '@storybook/addon-a11y': '6.5.0-beta.4', + '@storybook/addon-actions': '6.5.0-beta.4', + '@storybook/addon-backgrounds': '6.5.0-beta.4', + '@storybook/addon-controls': '6.5.0-beta.4', + '@storybook/addon-docs': '6.5.0-beta.4', + '@storybook/addon-essentials': '6.5.0-beta.4', + '@storybook/addon-interactions': '6.5.0-beta.4', + '@storybook/addon-jest': '6.5.0-beta.4', + '@storybook/addon-links': '6.5.0-beta.4', + '@storybook/addon-measure': '6.5.0-beta.4', + '@storybook/addon-outline': '6.5.0-beta.4', + '@storybook/addon-storyshots': '6.5.0-beta.4', + '@storybook/addon-storyshots-puppeteer': '6.5.0-beta.4', + '@storybook/addon-storysource': '6.5.0-beta.4', + '@storybook/addon-toolbars': '6.5.0-beta.4', + '@storybook/addon-viewport': '6.5.0-beta.4', + '@storybook/addons': '6.5.0-beta.4', + '@storybook/angular': '6.5.0-beta.4', + '@storybook/api': '6.5.0-beta.4', + '@storybook/builder-webpack4': '6.5.0-beta.4', + '@storybook/builder-webpack5': '6.5.0-beta.4', + '@storybook/channel-postmessage': '6.5.0-beta.4', + '@storybook/channel-websocket': '6.5.0-beta.4', + '@storybook/channels': '6.5.0-beta.4', + '@storybook/cli': '6.5.0-beta.4', + '@storybook/client-api': '6.5.0-beta.4', + '@storybook/client-logger': '6.5.0-beta.4', + '@storybook/codemod': '6.5.0-beta.4', + '@storybook/components': '6.5.0-beta.4', + '@storybook/core': '6.5.0-beta.4', + '@storybook/core-client': '6.5.0-beta.4', + '@storybook/core-common': '6.5.0-beta.4', + '@storybook/core-events': '6.5.0-beta.4', + '@storybook/core-server': '6.5.0-beta.4', + '@storybook/csf-tools': '6.5.0-beta.4', + '@storybook/docs-tools': '6.5.0-beta.4', + '@storybook/ember': '6.5.0-beta.4', + '@storybook/html': '6.5.0-beta.4', + '@storybook/instrumenter': '6.5.0-beta.4', + '@storybook/manager-webpack4': '6.5.0-beta.4', + '@storybook/manager-webpack5': '6.5.0-beta.4', + '@storybook/node-logger': '6.5.0-beta.4', + '@storybook/postinstall': '6.5.0-beta.4', + '@storybook/preact': '6.5.0-beta.4', + '@storybook/preview-web': '6.5.0-beta.4', + '@storybook/react': '6.5.0-beta.4', + '@storybook/router': '6.5.0-beta.4', + '@storybook/server': '6.5.0-beta.4', + '@storybook/source-loader': '6.5.0-beta.4', + '@storybook/store': '6.5.0-beta.4', + '@storybook/svelte': '6.5.0-beta.4', + '@storybook/telemetry': '6.5.0-beta.4', + '@storybook/theming': '6.5.0-beta.4', + '@storybook/ui': '6.5.0-beta.4', + '@storybook/vue': '6.5.0-beta.4', + '@storybook/vue3': '6.5.0-beta.4', + '@storybook/web-components': '6.5.0-beta.4', }; diff --git a/lib/client-api/package.json b/lib/client-api/package.json index 73bb4bf4699..7a6b78b2f1a 100644 --- a/lib/client-api/package.json +++ b/lib/client-api/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/client-api", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook Client API", "keywords": [ "storybook" @@ -40,13 +40,13 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/channel-postmessage": "6.5.0-beta.1", - "@storybook/channels": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/channel-postmessage": "6.5.0-beta.4", + "@storybook/channels": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/store": "6.5.0-beta.1", + "@storybook/store": "6.5.0-beta.4", "@types/qs": "^6.9.5", "@types/webpack-env": "^1.16.0", "core-js": "^3.8.2", @@ -68,6 +68,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/client-logger/package.json b/lib/client-logger/package.json index d628a5fc2d8..cb18735bbdf 100644 --- a/lib/client-logger/package.json +++ b/lib/client-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/client-logger", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "", "keywords": [ "storybook" @@ -46,6 +46,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/codemod/package.json b/lib/codemod/package.json index 6505a8dcfd7..807c22e1fbb 100644 --- a/lib/codemod/package.json +++ b/lib/codemod/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/codemod", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "A collection of codemod scripts written with JSCodeshift", "keywords": [ "storybook" @@ -44,8 +44,8 @@ "@babel/types": "^7.12.11", "@mdx-js/mdx": "^1.6.22", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/csf-tools": "6.5.0-beta.1", - "@storybook/node-logger": "6.5.0-beta.1", + "@storybook/csf-tools": "6.5.0-beta.4", + "@storybook/node-logger": "6.5.0-beta.4", "core-js": "^3.8.2", "cross-spawn": "^7.0.3", "globby": "^11.0.2", @@ -62,6 +62,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/components/package.json b/lib/components/package.json index 826b30b69ee..180631491dc 100644 --- a/lib/components/package.json +++ b/lib/components/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/components", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Core Storybook Components", "keywords": [ "storybook" @@ -40,17 +40,18 @@ "prepare": "ts-node ../../scripts/prebundle.ts" }, "dependencies": { - "@storybook/client-logger": "6.5.0-beta.1", + "@storybook/client-logger": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/theming": "6.5.0-beta.4", + "@types/react-syntax-highlighter": "11.0.5", "core-js": "^3.8.2", + "react-syntax-highlighter": "^15.4.5", "regenerator-runtime": "^0.13.7" }, "devDependencies": { "@popperjs/core": "^2.6.0", "@types/color-convert": "^2.0.0", "@types/overlayscrollbars": "^1.12.0", - "@types/react-syntax-highlighter": "11.0.5", "color-convert": "^2.0.1", "css": "^3.0.0", "fast-deep-equal": "^3.1.3", @@ -66,7 +67,6 @@ "qs": "^6.10.0", "react-colorful": "^5.1.2", "react-popper-tooltip": "^3.1.1", - "react-syntax-highlighter": "^15.4.5", "react-textarea-autosize": "^8.3.0", "ts-dedent": "^2.0.0", "ts-node": "^10.4.0", @@ -80,6 +80,6 @@ "access": "public" }, "bundlerEntrypoint": "./src/index.ts", - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/core-client/package.json b/lib/core-client/package.json index e311b9df987..7a6c74b53c0 100644 --- a/lib/core-client/package.json +++ b/lib/core-client/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-client", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -40,16 +40,16 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/channel-postmessage": "6.5.0-beta.1", - "@storybook/channel-websocket": "6.5.0-beta.1", - "@storybook/client-api": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/channel-postmessage": "6.5.0-beta.4", + "@storybook/channel-websocket": "6.5.0-beta.4", + "@storybook/client-api": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/preview-web": "6.5.0-beta.1", - "@storybook/store": "6.5.0-beta.1", - "@storybook/ui": "6.5.0-beta.1", + "@storybook/preview-web": "6.5.0-beta.4", + "@storybook/store": "6.5.0-beta.4", + "@storybook/ui": "6.5.0-beta.4", "airbnb-js-shims": "^2.2.1", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", @@ -74,6 +74,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/core-common/package.json b/lib/core-common/package.json index c8e4369751c..6bad28bae94 100644 --- a/lib/core-common/package.json +++ b/lib/core-common/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-common", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -62,7 +62,7 @@ "@babel/preset-react": "^7.12.10", "@babel/preset-typescript": "^7.12.7", "@babel/register": "^7.12.1", - "@storybook/node-logger": "6.5.0-beta.1", + "@storybook/node-logger": "6.5.0-beta.4", "@storybook/semver": "^7.3.2", "@types/node": "^14.0.10 || ^16.0.0", "@types/pretty-hrtime": "^1.0.0", @@ -111,6 +111,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/core-common/src/index.ts b/lib/core-common/src/index.ts index ccdb8fbae13..0414b1dd2d3 100644 --- a/lib/core-common/src/index.ts +++ b/lib/core-common/src/index.ts @@ -11,6 +11,9 @@ export * from './utils/interpret-require'; export * from './utils/load-custom-babel-config'; export * from './utils/load-custom-presets'; export * from './utils/load-custom-webpack-config'; +export * from './utils/load-main-config'; +export * from './utils/get-storybook-configuration'; +export * from './utils/get-storybook-info'; export * from './utils/load-manager-or-addons-file'; export * from './utils/load-preview-or-config-file'; export * from './utils/log-config'; diff --git a/lib/core-common/src/types.ts b/lib/core-common/src/types.ts index 287c5476d2d..58c6cdc3f6f 100644 --- a/lib/core-common/src/types.ts +++ b/lib/core-common/src/types.ts @@ -50,6 +50,20 @@ export interface CoreConfig { builder: BuilderConfig; disableWebpackDefaults?: boolean; channelOptions?: Partial; + /** + * Disables the generation of project.json, a file containing Storybook metadata + */ + disableProjectJson?: boolean; + /** + * Disables Storybook telemetry + * @see https://storybook.js.org/telemetry + */ + disableTelemetry?: boolean; + /** + * Enable crash reports to be sent to Storybook telemetry + * @see https://storybook.js.org/telemetry + */ + enableCrashReports?: boolean; /** * enable CORS headings to run document in a "secure context" * see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements @@ -96,12 +110,6 @@ export interface LoadedPreset { options: any; } -export interface PresetsOptions { - corePresets: string[]; - overridePresets: string[]; - frameworkPresets: string[]; -} - export type PresetConfig = | string | { @@ -141,6 +149,11 @@ export interface PackageJson { version: string; dependencies?: Record; devDependencies?: Record; + peerDependencies?: Record; + scripts?: Record; + eslintConfig?: Record; + type?: 'module'; + [key: string]: any; } // TODO: This could be exported to the outside world and used in `options.ts` file of each `@storybook/APP` @@ -163,6 +176,8 @@ export interface CLIOptions { ignorePreview?: boolean; previewUrl?: string; forceBuildPreview?: boolean; + disableTelemetry?: boolean; + enableCrashReports?: boolean; host?: string; /** * @deprecated Use 'staticDirs' Storybook Configuration option instead diff --git a/lib/cli/src/automigrate/helpers/getStorybookConfiguration.test.ts b/lib/core-common/src/utils/get-storybook-configuration.test.ts similarity index 92% rename from lib/cli/src/automigrate/helpers/getStorybookConfiguration.test.ts rename to lib/core-common/src/utils/get-storybook-configuration.test.ts index 47c57eeba42..e6a460acdf9 100644 --- a/lib/cli/src/automigrate/helpers/getStorybookConfiguration.test.ts +++ b/lib/core-common/src/utils/get-storybook-configuration.test.ts @@ -1,4 +1,4 @@ -import { getStorybookConfiguration } from './getStorybookConfiguration'; +import { getStorybookConfiguration } from './get-storybook-configuration'; describe('getStorybookConfiguration', () => { it('handles short names', () => { diff --git a/lib/cli/src/automigrate/helpers/getStorybookConfiguration.ts b/lib/core-common/src/utils/get-storybook-configuration.ts similarity index 91% rename from lib/cli/src/automigrate/helpers/getStorybookConfiguration.ts rename to lib/core-common/src/utils/get-storybook-configuration.ts index 98529af472b..a1dd17c1ffc 100644 --- a/lib/cli/src/automigrate/helpers/getStorybookConfiguration.ts +++ b/lib/core-common/src/utils/get-storybook-configuration.ts @@ -9,6 +9,10 @@ export function getStorybookConfiguration( shortName: string, longName: string ) { + if (!storybookScript) { + return null; + } + const parts = storybookScript.split(/[\s='"]+/); let index = parts.indexOf(longName); if (index === -1) { diff --git a/lib/cli/src/automigrate/helpers/getStorybookInfo.ts b/lib/core-common/src/utils/get-storybook-info.ts similarity index 87% rename from lib/cli/src/automigrate/helpers/getStorybookInfo.ts rename to lib/core-common/src/utils/get-storybook-info.ts index 699ffff47dc..a1ee7b1c812 100644 --- a/lib/cli/src/automigrate/helpers/getStorybookInfo.ts +++ b/lib/core-common/src/utils/get-storybook-info.ts @@ -1,7 +1,7 @@ import path from 'path'; import fse from 'fs-extra'; -import { PackageJsonWithDepsAndDevDeps } from '../../js-package-manager'; -import { getStorybookConfiguration } from './getStorybookConfiguration'; +import { getStorybookConfiguration } from './get-storybook-configuration'; +import { PackageJson } from '../types'; interface StorybookInfo { framework: string; @@ -33,7 +33,7 @@ const viewLayers: Record = { const logger = console; const findDependency = ( - { dependencies, devDependencies, peerDependencies }: PackageJsonWithDepsAndDevDeps, + { dependencies, devDependencies, peerDependencies }: PackageJson, predicate: (entry: [string, string]) => string ) => [ Object.entries(dependencies || {}).find(predicate), @@ -41,7 +41,7 @@ const findDependency = ( Object.entries(peerDependencies || {}).find(predicate), ]; -const getFrameworkInfo = (packageJson: PackageJsonWithDepsAndDevDeps) => { +const getFrameworkInfo = (packageJson: PackageJson) => { // Pull the viewlayer from dependencies in package.json const [dep, devDep, peerDep] = findDependency(packageJson, ([key]) => viewLayers[key]); const [pkg, version] = dep || devDep || peerDep || []; @@ -71,7 +71,7 @@ const findConfigFile = (prefix: string, configDir: string) => { return extension ? `${filePrefix}.${extension}` : null; }; -const getConfigInfo = (packageJson: PackageJsonWithDepsAndDevDeps) => { +const getConfigInfo = (packageJson: PackageJson) => { let configDir = '.storybook'; const storybookScript = packageJson.scripts?.storybook; if (storybookScript) { @@ -87,7 +87,7 @@ const getConfigInfo = (packageJson: PackageJsonWithDepsAndDevDeps) => { }; }; -export const getStorybookInfo = (packageJson: PackageJsonWithDepsAndDevDeps) => { +export const getStorybookInfo = (packageJson: PackageJson) => { const frameworkInfo = getFrameworkInfo(packageJson); const configInfo = getConfigInfo(packageJson); diff --git a/lib/core-common/src/utils/load-main-config.ts b/lib/core-common/src/utils/load-main-config.ts new file mode 100644 index 00000000000..67b294e3327 --- /dev/null +++ b/lib/core-common/src/utils/load-main-config.ts @@ -0,0 +1,10 @@ +import path from 'path'; +import { serverRequire } from './interpret-require'; +import { validateConfigurationFiles } from './validate-configuration-files'; +import { StorybookConfig } from '../types'; + +export function loadMainConfig({ configDir }: { configDir: string }): StorybookConfig { + validateConfigurationFiles(configDir); + + return serverRequire(path.resolve(configDir, 'main')); +} diff --git a/lib/core-common/src/utils/notify-telemetry.ts b/lib/core-common/src/utils/notify-telemetry.ts new file mode 100644 index 00000000000..53b291b4b6a --- /dev/null +++ b/lib/core-common/src/utils/notify-telemetry.ts @@ -0,0 +1,31 @@ +import chalk from 'chalk'; +import { cache } from './cache'; + +const TELEMETRY_KEY_NOTIFY_DATE = 'telemetry-notification-date'; + +const logger = console; + +export const notifyTelemetry = async () => { + const telemetryNotifyDate = await cache.get(TELEMETRY_KEY_NOTIFY_DATE, null); + // The end-user has already been notified about our telemetry integration. We + // don't need to constantly annoy them about it. + // We will re-inform users about the telemetry if significant changes are + // ever made. + if (telemetryNotifyDate) { + return; + } + + cache.set(TELEMETRY_KEY_NOTIFY_DATE, Date.now().toString()); + + logger.log( + `${chalk.magenta.bold( + 'Attention' + )}: Storybook now collects completely anonymous telemetry regarding usage.` + ); + logger.log(`This information is used to shape Storybook's roadmap and prioritize features.`); + logger.log( + `You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:` + ); + logger.log(chalk.cyan('https://storybook.js.org/telemetry')); + logger.log(); +}; diff --git a/lib/core-events/package.json b/lib/core-events/package.json index 1cacfaa590e..5963afbb71e 100644 --- a/lib/core-events/package.json +++ b/lib/core-events/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-events", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Event names used in storybook core", "keywords": [ "storybook" @@ -45,6 +45,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/core-server/package.json b/lib/core-server/package.json index 6ec069090e6..60e3ed9355c 100644 --- a/lib/core-server/package.json +++ b/lib/core-server/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/core-server", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -40,17 +40,18 @@ }, "dependencies": { "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-webpack4": "6.5.0-beta.1", - "@storybook/core-client": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/builder-webpack4": "6.5.0-beta.4", + "@storybook/core-client": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", "@storybook/csf-tools": "6.5.0-beta.1", "@storybook/docs-mdx": "0.0.1-canary.1.4bea5cc.0", "@storybook/manager-webpack4": "6.5.0-beta.1", "@storybook/node-logger": "6.5.0-beta.1", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.0-beta.1", + "@storybook/store": "6.5.0-beta.4", + "@storybook/telemetry": "6.5.0-beta.4", "@types/node": "^14.0.10 || ^16.0.0", "@types/node-fetch": "^2.5.7", "@types/pretty-hrtime": "^1.0.0", @@ -87,7 +88,7 @@ "x-default-browser": "^0.4.0" }, "devDependencies": { - "@storybook/builder-webpack5": "6.5.0-beta.1", + "@storybook/builder-webpack5": "6.5.0-beta.4", "@types/compression": "^1.7.0", "@types/ip": "^1.1.0", "@types/serve-favicon": "^2.5.2", @@ -112,6 +113,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/core-server/src/__snapshots__/cra-ts-essentials_manager-prod-posix b/lib/core-server/src/__snapshots__/cra-ts-essentials_manager-prod-posix index 5327d847d2c..4bcbcf07d68 100644 --- a/lib/core-server/src/__snapshots__/cra-ts-essentials_manager-prod-posix +++ b/lib/core-server/src/__snapshots__/cra-ts-essentials_manager-prod-posix @@ -1,5 +1,262 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`cra-ts-essentials manager dev 1`] = ` +Object { + "entry": Array [ + "NODE_MODULES/@storybook/addon-ie11/dist/event-source-polyfill.js", + "ROOT/lib/core-client/dist/esm/globals/polyfills.js", + "ROOT/lib/core-client/dist/esm/manager/index.js", + "ROOT/addons/docs/manager.js", + "ROOT/addons/controls/manager.js", + "ROOT/addons/actions/manager.js", + "ROOT/addons/backgrounds/manager.js", + "ROOT/addons/toolbars/manager.js", + "ROOT/addons/measure/manager.js", + "ROOT/addons/outline/manager.js", + ], + "keys": Array [ + "name", + "mode", + "bail", + "devtool", + "entry", + "output", + "watchOptions", + "plugins", + "module", + "resolve", + "resolveLoader", + "recordsPath", + "performance", + "optimization", + ], + "module": Object { + "rules": Array [ + Object { + "exclude": Array [ + "NODE_MODULES/", + "/dist/", + ], + "include": Array [ + "ROOT", + ], + "test": "/\\\\.(mjs|tsx?|jsx?)$/", + "use": Array [ + Object { + "loader": "NODE_MODULES/babel-loader/lib/index.js", + "options": Object { + "babelrc": false, + "configFile": false, + "plugins": Array [ + "NODE_MODULES/@babel/plugin-transform-shorthand-properties/lib/index.js", + "NODE_MODULES/@babel/plugin-transform-block-scoping/lib/index.js", + Array [ + "NODE_MODULES/@babel/plugin-proposal-decorators/lib/index.js", + Object { + "legacy": true, + }, + ], + Array [ + "NODE_MODULES/@babel/plugin-proposal-class-properties/lib/index.js", + Object { + "loose": true, + }, + ], + Array [ + "NODE_MODULES/@babel/plugin-proposal-private-property-in-object/lib/index.js", + Object { + "loose": true, + }, + ], + Array [ + "NODE_MODULES/@babel/plugin-proposal-private-methods/lib/index.js", + Object { + "loose": true, + }, + ], + "NODE_MODULES/@babel/plugin-proposal-export-default-from/lib/index.js", + "NODE_MODULES/@babel/plugin-syntax-dynamic-import/lib/index.js", + Array [ + "NODE_MODULES/@babel/plugin-proposal-object-rest-spread/lib/index.js", + Object { + "loose": true, + "useBuiltIns": true, + }, + ], + "NODE_MODULES/@babel/plugin-transform-classes/lib/index.js", + "NODE_MODULES/@babel/plugin-transform-arrow-functions/lib/index.js", + "NODE_MODULES/@babel/plugin-transform-parameters/lib/index.js", + "NODE_MODULES/@babel/plugin-transform-destructuring/lib/index.js", + "NODE_MODULES/@babel/plugin-transform-spread/lib/index.js", + "NODE_MODULES/@babel/plugin-transform-for-of/lib/index.js", + "NODE_MODULES/babel-plugin-macros/dist/index.js", + "NODE_MODULES/@babel/plugin-proposal-optional-chaining/lib/index.js", + "NODE_MODULES/@babel/plugin-proposal-nullish-coalescing-operator/lib/index.js", + Array [ + "NODE_MODULES/babel-plugin-polyfill-corejs3/lib/index.js", + Object { + "absoluteImports": "NODE_MODULES/core-js/index.js", + "method": "usage-global", + "version": "*", + }, + ], + "NODE_MODULES/@babel/plugin-transform-template-literals/lib/index.js", + ], + "presets": Array [ + Array [ + "NODE_MODULES/@babel/preset-env/lib/index.js", + Object { + "loose": true, + "shippedProposals": true, + }, + ], + "NODE_MODULES/@babel/preset-typescript/lib/index.js", + "NODE_MODULES/@babel/preset-react/lib/index.js", + ], + "sourceType": "unambiguous", + }, + }, + ], + }, + Object { + "include": [Function], + "test": "/\\\\.js$/", + "use": Array [ + Object { + "loader": "NODE_MODULES/babel-loader/lib/index.js", + "options": Object { + "plugins": Array [ + "NODE_MODULES/@babel/plugin-transform-shorthand-properties/lib/index.js", + "NODE_MODULES/@babel/plugin-transform-block-scoping/lib/index.js", + Array [ + "NODE_MODULES/@babel/plugin-proposal-decorators/lib/index.js", + Object { + "legacy": true, + }, + ], + Array [ + "NODE_MODULES/@babel/plugin-proposal-class-properties/lib/index.js", + Object { + "loose": true, + }, + ], + Array [ + "NODE_MODULES/@babel/plugin-proposal-private-property-in-object/lib/index.js", + Object { + "loose": true, + }, + ], + Array [ + "NODE_MODULES/@babel/plugin-proposal-private-methods/lib/index.js", + Object { + "loose": true, + }, + ], + "NODE_MODULES/@babel/plugin-proposal-export-default-from/lib/index.js", + "NODE_MODULES/@babel/plugin-syntax-dynamic-import/lib/index.js", + Array [ + "NODE_MODULES/@babel/plugin-proposal-object-rest-spread/lib/index.js", + Object { + "loose": true, + "useBuiltIns": true, + }, + ], + "NODE_MODULES/@babel/plugin-transform-classes/lib/index.js", + "NODE_MODULES/@babel/plugin-transform-arrow-functions/lib/index.js", + "NODE_MODULES/@babel/plugin-transform-parameters/lib/index.js", + "NODE_MODULES/@babel/plugin-transform-destructuring/lib/index.js", + "NODE_MODULES/@babel/plugin-transform-spread/lib/index.js", + "NODE_MODULES/@babel/plugin-transform-for-of/lib/index.js", + "NODE_MODULES/babel-plugin-macros/dist/index.js", + "NODE_MODULES/@babel/plugin-proposal-optional-chaining/lib/index.js", + "NODE_MODULES/@babel/plugin-proposal-nullish-coalescing-operator/lib/index.js", + Array [ + "NODE_MODULES/babel-plugin-polyfill-corejs3/lib/index.js", + Object { + "absoluteImports": "NODE_MODULES/core-js/index.js", + "method": "usage-global", + "version": "*", + }, + ], + ], + "presets": Array [ + Array [ + "NODE_MODULES/@babel/preset-env/lib/index.js", + Object { + "loose": true, + "modules": false, + "shippedProposals": true, + "targets": "defaults", + }, + ], + "NODE_MODULES/@babel/preset-react/lib/index.js", + ], + "sourceType": "unambiguous", + }, + }, + ], + }, + Object { + "test": "/\\\\.css$/", + "use": Array [ + "NODE_MODULES/style-loader/dist/cjs.js", + Object { + "loader": "NODE_MODULES/css-loader/dist/cjs.js", + "options": Object { + "importLoaders": 1, + }, + }, + ], + }, + Object { + "loader": "NODE_MODULES/file-loader/dist/cjs.js", + "options": Object { + "name": "static/media/[path][name].[ext]", + }, + "test": "/\\\\.(svg|ico|jpg|jpeg|png|apng|gif|eot|otf|webp|ttf|woff|woff2|cur|ani|pdf)(\\\\?.*)?$/", + }, + Object { + "loader": "NODE_MODULES/url-loader/dist/cjs.js", + "options": Object { + "limit": 10000, + "name": "static/media/[path][name].[ext]", + }, + "test": "/\\\\.(mp4|webm|wav|mp3|m4a|aac|oga)(\\\\?.*)?$/", + }, + Object { + "include": "NODE_MODULES[\\\\\\\\/](@storybook[\\\\\\\\/]node_logger|@testing-library[\\\\\\\\/]dom|@testing-library[\\\\\\\\/]user-event|acorn-jsx|ansi-align|ansi-colors|ansi-escapes|ansi-regex|ansi-styles|better-opn|boxen|camelcase|chalk|color-convert|commander|find-cache-dir|find-up|fs-extra|highlight.js|json5|node-fetch|pkg-dir|prettier|pretty-format|react-dev-utils|resolve-from|semver|slash|strip-ansi|uuid)/", + "test": "/\\\\.js$/", + "use": Array [ + Object { + "loader": "NODE_MODULES/babel-loader/lib/index.js", + "options": Object { + "presets": Array [ + Array [ + "@babel/preset-env", + Object { + "targets": Object { + "ie": "11", + }, + }, + "storybook-addon-ie11", + ], + ], + "sourceType": "unambiguous", + }, + }, + ], + }, + ], + }, + "plugins": Array [ + "VirtualModulesPlugin", + "HtmlWebpackPlugin", + "CaseSensitivePathsPlugin", + "DefinePlugin", + ], +} +`; + exports[`cra-ts-essentials manager prod 1`] = ` Object { "entry": Array [ diff --git a/lib/core-server/src/__snapshots__/cra-ts-essentials_preview-prod-posix b/lib/core-server/src/__snapshots__/cra-ts-essentials_preview-prod-posix index 9eecd1ba125..19d3bb4c27a 100644 --- a/lib/core-server/src/__snapshots__/cra-ts-essentials_preview-prod-posix +++ b/lib/core-server/src/__snapshots__/cra-ts-essentials_preview-prod-posix @@ -1,5 +1,502 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`cra-ts-essentials preview dev 1`] = ` +Object { + "entry": Array [ + "ROOT/lib/core-client/dist/esm/globals/polyfills.js", + "ROOT/lib/core-client/dist/esm/globals/globals.js", + "NODE_MODULES/@storybook/addon-ie11/dist/event-source-polyfill.js", + "ROOT/storybook-init-framework-entry.js", + "ROOT/app/react/dist/esm/client/docs/config-generated-config-entry.js", + "ROOT/app/react/dist/esm/client/preview/config-generated-config-entry.js", + "ROOT/addons/docs/preview.js-generated-config-entry.js", + "ROOT/addons/actions/preview.js-generated-config-entry.js", + "ROOT/addons/backgrounds/preview.js-generated-config-entry.js", + "ROOT/addons/measure/preview.js-generated-config-entry.js", + "ROOT/addons/outline/preview.js-generated-config-entry.js", + "ROOT/examples/cra-ts-essentials/.storybook/preview.tsx-generated-config-entry.js", + "ROOT/generated-stories-entry.js", + ], + "keys": Array [ + "name", + "mode", + "bail", + "devtool", + "entry", + "output", + "watchOptions", + "plugins", + "module", + "resolve", + "resolveLoader", + "optimization", + "performance", + ], + "module": Object { + "rules": Array [ + Object { + "test": "/\\\\.md$/", + "use": Array [ + Object { + "loader": "NODE_MODULES/raw-loader/dist/cjs.js", + }, + ], + }, + Object { + "parser": Object { + "requireEnsure": false, + }, + }, + Object { + "oneOf": Array [ + Object { + "loader": "NODE_MODULES/url-loader/dist/cjs.js", + "options": Object { + "limit": 10000, + "mimetype": "image/avif", + "name": "static/media/[name].[hash:8].[ext]", + }, + "test": Array [ + "/\\\\.avif$/", + ], + }, + Object { + "loader": "NODE_MODULES/url-loader/dist/cjs.js", + "options": Object { + "limit": 10000, + "name": "static/media/[name].[hash:8].[ext]", + }, + "test": Array [ + "/\\\\.bmp$/", + "/\\\\.gif$/", + "/\\\\.jpe?g$/", + "/\\\\.png$/", + ], + }, + Object { + "include": Array [ + "ROOT/src", + "ROOT/examples/cra-ts-essentials/.storybook", + ], + "loader": "NODE_MODULES/babel-loader/lib/index.js", + "options": Object { + "babelrc": false, + "cacheCompression": false, + "cacheDirectory": true, + "cacheIdentifier": "production:babel-plugin-named-asset-import@:babel-preset-react-app@10.0.1:react-dev-utils@11.0.4:react-scripts@4.0.3", + "compact": true, + "configFile": false, + "customize": "NODE_MODULES/babel-preset-react-app/webpack-overrides.js", + "extends": undefined, + "overrides": Array [ + Object { + "plugins": Array [ + Array [ + "NODE_MODULES/babel-plugin-react-docgen/lib/index.js", + Object { + "DOC_GEN_COLLECTION_NAME": "STORYBOOK_REACT_CLASSES", + }, + ], + ], + "test": "/\\\\.(mjs|jsx?)$/", + }, + ], + "plugins": Array [ + Array [ + "NODE_MODULES/babel-plugin-named-asset-import/index.js", + Object { + "loaderMap": Object { + "svg": Object { + "ReactComponent": "@svgr/webpack?-svgo,+titleProp,+ref![path]", + }, + }, + }, + ], + ], + "presets": Array [ + Array [ + "@babel/preset-env", + Object { + "targets": Object { + "ie": "11", + }, + }, + "storybook-addon-ie11", + ], + Array [ + "NODE_MODULES/babel-preset-react-app/index.js", + Object { + "runtime": "automatic", + }, + ], + ], + }, + "test": "/\\\\.(js|mjs|jsx|ts|tsx)$/", + }, + Object { + "exclude": "/@babel(?:\\\\/|\\\\\\\\{1,2})runtime/", + "include": Array [ + "ROOT/examples/cra-ts-essentials/.storybook", + ], + "loader": "NODE_MODULES/babel-loader/lib/index.js", + "options": Object { + "babelrc": false, + "cacheCompression": false, + "cacheDirectory": true, + "cacheIdentifier": "production:babel-plugin-named-asset-import@:babel-preset-react-app@10.0.1:react-dev-utils@11.0.4:react-scripts@4.0.3", + "compact": false, + "configFile": false, + "inputSourceMap": true, + "presets": Array [ + Array [ + "NODE_MODULES/babel-preset-react-app/dependencies.js", + Object { + "helpers": true, + }, + ], + ], + "sourceMaps": true, + }, + "test": "/\\\\.(js|mjs)$/", + }, + Object { + "exclude": Array [ + "/\\\\.module\\\\.css$/", + "/@storybook/", + ], + "include": undefined, + "sideEffects": true, + "test": "/\\\\.css$/", + "use": Array [ + Object { + "loader": "NODE_MODULES/mini-css-extract-plugin/dist/loader.js", + "options": Object { + "publicPath": "../../", + }, + }, + Object { + "loader": "NODE_MODULES/css-loader/dist/cjs.js", + "options": Object { + "importLoaders": 1, + "sourceMap": true, + }, + }, + Object { + "loader": "NODE_MODULES/postcss-loader/src/index.js", + "options": Object { + "ident": "postcss", + "plugins": [Function], + "sourceMap": true, + }, + }, + ], + }, + Object { + "test": "/\\\\.module\\\\.css$/", + "use": Array [ + Object { + "loader": "NODE_MODULES/mini-css-extract-plugin/dist/loader.js", + "options": Object { + "publicPath": "../../", + }, + }, + Object { + "loader": "NODE_MODULES/css-loader/dist/cjs.js", + "options": Object { + "importLoaders": 1, + "modules": Object { + "getLocalIdent": [Function], + }, + "sourceMap": true, + }, + }, + Object { + "loader": "NODE_MODULES/postcss-loader/src/index.js", + "options": Object { + "ident": "postcss", + "plugins": [Function], + "sourceMap": true, + }, + }, + ], + }, + Object { + "exclude": "/\\\\.module\\\\.(scss|sass)$/", + "sideEffects": true, + "test": "/\\\\.(scss|sass)$/", + "use": Array [ + Object { + "loader": "NODE_MODULES/mini-css-extract-plugin/dist/loader.js", + "options": Object { + "publicPath": "../../", + }, + }, + Object { + "loader": "NODE_MODULES/css-loader/dist/cjs.js", + "options": Object { + "importLoaders": 3, + "sourceMap": true, + }, + }, + Object { + "loader": "NODE_MODULES/postcss-loader/src/index.js", + "options": Object { + "ident": "postcss", + "plugins": [Function], + "sourceMap": true, + }, + }, + Object { + "loader": "NODE_MODULES/resolve-url-loader/index.js", + "options": Object { + "root": "ROOT/src", + "sourceMap": true, + }, + }, + Object { + "loader": "NODE_MODULES/sass-loader/dist/cjs.js", + "options": Object { + "sourceMap": true, + }, + }, + ], + }, + Object { + "test": "/\\\\.module\\\\.(scss|sass)$/", + "use": Array [ + Object { + "loader": "NODE_MODULES/mini-css-extract-plugin/dist/loader.js", + "options": Object { + "publicPath": "../../", + }, + }, + Object { + "loader": "NODE_MODULES/css-loader/dist/cjs.js", + "options": Object { + "importLoaders": 3, + "modules": Object { + "getLocalIdent": [Function], + }, + "sourceMap": true, + }, + }, + Object { + "loader": "NODE_MODULES/postcss-loader/src/index.js", + "options": Object { + "ident": "postcss", + "plugins": [Function], + "sourceMap": true, + }, + }, + Object { + "loader": "NODE_MODULES/resolve-url-loader/index.js", + "options": Object { + "root": "ROOT/src", + "sourceMap": true, + }, + }, + Object { + "loader": "NODE_MODULES/sass-loader/dist/cjs.js", + "options": Object { + "sourceMap": true, + }, + }, + ], + }, + Object { + "exclude": Array [ + "/\\\\.(js|mjs|jsx|ts|tsx)$/", + "/\\\\.html$/", + "/\\\\.json$/", + "/\\\\.(ejs|md|mdx)$/", + ], + "loader": "NODE_MODULES/file-loader/dist/cjs.js", + "options": Object { + "name": "static/media/[name].[hash:8].[ext]", + }, + }, + ], + }, + Object { + "include": "NODE_MODULES[\\\\\\\\/](@storybook[\\\\\\\\/]node_logger|@testing-library[\\\\\\\\/]dom|@testing-library[\\\\\\\\/]user-event|acorn-jsx|ansi-align|ansi-colors|ansi-escapes|ansi-regex|ansi-styles|better-opn|boxen|camelcase|chalk|color-convert|commander|find-cache-dir|find-up|fs-extra|highlight.js|json5|node-fetch|pkg-dir|prettier|pretty-format|react-dev-utils|resolve-from|semver|slash|strip-ansi|uuid)/", + "test": "/\\\\.js$/", + "use": Array [ + Object { + "loader": "NODE_MODULES/babel-loader/lib/index.js", + "options": Object { + "presets": Array [ + Array [ + "@babel/preset-env", + Object { + "targets": Object { + "ie": "11", + }, + }, + "storybook-addon-ie11", + ], + ], + "sourceType": "unambiguous", + }, + }, + ], + }, + Object { + "include": "NODE_MODULES\\\\/acorn-jsx/", + "test": "/\\\\.js$/", + "use": Array [ + Object { + "loader": "NODE_MODULES/babel-loader/lib/index.js", + "options": Object { + "presets": Array [ + Array [ + "NODE_MODULES/@babel/preset-env/lib/index.js", + Object { + "modules": "commonjs", + }, + ], + ], + }, + }, + ], + }, + Object { + "test": "/(stories|story)\\\\.mdx$/", + "use": Array [ + Object { + "loader": "NODE_MODULES/babel-loader/lib/index.js", + "options": Object { + "babelrc": false, + "cacheDirectory": "NODE_MODULES/.cache/storybook/babel", + "configFile": false, + "overrides": Array [ + Object { + "plugins": Array [ + Array [ + "NODE_MODULES/babel-plugin-react-docgen/lib/index.js", + Object { + "DOC_GEN_COLLECTION_NAME": "STORYBOOK_REACT_CLASSES", + }, + ], + ], + "test": "/\\\\.(mjs|jsx?)$/", + }, + ], + "plugins": Array [ + Array [ + "NODE_MODULES/@babel/plugin-transform-react-jsx/lib/index.js", + Object { + "pragma": "React.createElement", + "pragmaFrag": "React.Fragment", + }, + ], + ], + "presets": Array [ + Array [ + "@babel/preset-env", + Object { + "targets": Object { + "ie": "11", + }, + }, + "storybook-addon-ie11", + ], + ], + }, + }, + Object { + "loader": "NODE_MODULES/@storybook/mdx1-csf/loader.js", + }, + ], + }, + Object { + "exclude": "/(stories|story)\\\\.mdx$/", + "test": "/\\\\.mdx$/", + "use": Array [ + Object { + "loader": "NODE_MODULES/babel-loader/lib/index.js", + "options": Object { + "babelrc": false, + "cacheDirectory": "NODE_MODULES/.cache/storybook/babel", + "configFile": false, + "overrides": Array [ + Object { + "plugins": Array [ + Array [ + "NODE_MODULES/babel-plugin-react-docgen/lib/index.js", + Object { + "DOC_GEN_COLLECTION_NAME": "STORYBOOK_REACT_CLASSES", + }, + ], + ], + "test": "/\\\\.(mjs|jsx?)$/", + }, + ], + "plugins": Array [ + Array [ + "NODE_MODULES/@babel/plugin-transform-react-jsx/lib/index.js", + Object { + "pragma": "React.createElement", + "pragmaFrag": "React.Fragment", + }, + ], + ], + "presets": Array [ + Array [ + "@babel/preset-env", + Object { + "targets": Object { + "ie": "11", + }, + }, + "storybook-addon-ie11", + ], + ], + }, + }, + Object { + "loader": "NODE_MODULES/@storybook/mdx1-csf/loader.js", + "options": Object { + "remarkPlugins": Array [ + [Function], + [Function], + ], + "skipCsf": true, + }, + }, + ], + }, + Object { + "enforce": "pre", + "loader": "ROOT/lib/source-loader/dist/cjs/index.js", + "options": Object { + "injectStoryParameters": true, + "inspectLocalDependencies": true, + }, + "test": "/\\\\.(stories|story)\\\\.[tj]sx?$/", + }, + ], + }, + "plugins": Array [ + "FilterWarningsPlugin", + "VirtualModulesPlugin", + "HtmlWebpackPlugin", + "DefinePlugin", + "CaseSensitivePathsPlugin", + "ProgressPlugin", + "InlineChunkHtmlPlugin", + "InterpolateHtmlPlugin", + "ModuleNotFoundPlugin", + "MiniCssExtractPlugin", + "ManifestPlugin", + "IgnorePlugin", + "ForkTsCheckerWebpackPlugin", + "ESLintWebpackPlugin", + "IgnorePlugin", + "DocgenPlugin", + ], +} +`; + exports[`cra-ts-essentials preview prod 1`] = ` Object { "entry": Array [ diff --git a/lib/core-server/src/build-static.ts b/lib/core-server/src/build-static.ts index 26e7b96f4c7..dd70ce1da9d 100644 --- a/lib/core-server/src/build-static.ts +++ b/lib/core-server/src/build-static.ts @@ -6,7 +6,7 @@ import dedent from 'ts-dedent'; import global from 'global'; import { logger } from '@storybook/node-logger'; - +import { telemetry } from '@storybook/telemetry'; import type { LoadOptions, CLIOptions, @@ -25,8 +25,9 @@ import { } from './utils/copy-all-static-files'; import { getPreviewBuilder } from './utils/get-preview-builder'; import { getManagerBuilder } from './utils/get-manager-builder'; +import { convertToIndexV3, extractStoriesJson } from './utils/stories-json'; +import { extractStorybookMetadata } from './utils/metadata'; import { StoryIndexGenerator } from './utils/StoryIndexGenerator'; -import { convertToIndexV3 } from './utils/stories-json'; export async function buildStaticStandalone(options: CLIOptions & LoadOptions & BuilderOptions) { /* eslint-disable no-param-reassign */ @@ -92,23 +93,61 @@ export async function buildStaticStandalone(options: CLIOptions & LoadOptions & const features = await presets.apply('features'); global.FEATURES = features; + const extractTasks = []; + + let initializedStoryIndexGenerator: Promise = Promise.resolve(undefined); if (features?.buildStoriesJson || features?.storyStoreV7) { + const workingDir = process.cwd(); const directories = { configDir: options.configDir, - workingDir: process.cwd(), + workingDir, }; - const stories = normalizeStories(await presets.apply('stories'), directories); - const extractOptions = { + + const normalizedStories = normalizeStories(await presets.apply('stories'), directories); + + const generator = new StoryIndexGenerator(normalizedStories, { ...directories, storiesV2Compatibility: !features?.breakingChangesV7 && !features?.storyStoreV7, storyStoreV7: features?.storyStoreV7, - }; + }); - const generator = new StoryIndexGenerator(stories, extractOptions); - await generator.initialize(); - const index = await generator.getIndex(); - await fs.writeJson(path.join(options.outputDir, 'index.json'), index); - await fs.writeJson(path.join(options.outputDir, 'stories.json'), convertToIndexV3(index)); + initializedStoryIndexGenerator = generator.initialize().then(() => generator); + extractTasks.push( + extractStoriesJson( + path.join(options.outputDir, 'stories.json'), + initializedStoryIndexGenerator, + convertToIndexV3 + ) + ); + extractTasks.push( + extractStoriesJson(path.join(options.outputDir, 'index.json'), initializedStoryIndexGenerator) + ); + } + + const core = await presets.apply('core'); + if (!core?.disableTelemetry) { + initializedStoryIndexGenerator.then(async (generator) => { + if (!generator) { + return; + } + + const storyIndex = await generator.getIndex(); + const payload = storyIndex + ? { + storyIndex: { + storyCount: Object.keys(storyIndex.entries).length, + version: storyIndex.v, + }, + } + : undefined; + telemetry('build', payload, { configDir: options.configDir }); + }); + } + + if (!core?.disableProjectJson) { + extractTasks.push( + extractStorybookMetadata(path.join(options.outputDir, 'project.json'), options.configDir) + ); } const fullOptions: Options = { @@ -122,7 +161,6 @@ export async function buildStaticStandalone(options: CLIOptions & LoadOptions & logConfig('Manager webpack config', await managerBuilder.getConfig(fullOptions)); } - const core = await presets.apply('core'); const builderName = typeof core?.builder === 'string' ? core.builder : core?.builder?.name; const { getPrebuiltDir } = builderName === 'webpack5' @@ -130,7 +168,7 @@ export async function buildStaticStandalone(options: CLIOptions & LoadOptions & await import('@storybook/manager-webpack5/prebuilt-manager') : await import('@storybook/manager-webpack4/prebuilt-manager'); - const prebuiltDir = await getPrebuiltDir(fullOptions); + const prebuiltDir = await getPrebuiltDir(fullOptions as any); const startTime = process.hrtime(); // When using the prebuilt manager, we straight up copy it into the outputDir instead of building it @@ -158,6 +196,7 @@ export async function buildStaticStandalone(options: CLIOptions & LoadOptions & await managerBuilder.bail(); throw err; }), + ...extractTasks, ]); if (options.webpackStatsJson) { diff --git a/lib/core-server/src/core-presets.test.ts b/lib/core-server/src/core-presets.test.ts index f7d9acc0c01..b03e9f3fe39 100644 --- a/lib/core-server/src/core-presets.test.ts +++ b/lib/core-server/src/core-presets.test.ts @@ -33,12 +33,31 @@ jest.mock('@storybook/builder-webpack4', () => { return actualBuilder; }); -jest.mock('./utils/stories-json', () => { - const actualStoriesJson = jest.requireActual('./utils/stories-json'); - actualStoriesJson.extractStoriesJson = () => Promise.resolve(); - return actualStoriesJson; +jest.mock('@storybook/telemetry', () => ({ + getStorybookMetadata: jest.fn(() => ({})), + telemetry: jest.fn(() => ({})), +})); + +jest.mock('./utils/StoryIndexGenerator', () => { + const { StoryIndexGenerator } = jest.requireActual('./utils/StoryIndexGenerator'); + return { + StoryIndexGenerator: class extends StoryIndexGenerator { + initialize() { + return Promise.resolve(undefined); + } + + getIndex() { + return { stories: {}, v: 3 }; + } + }, + }; }); +jest.mock('./utils/stories-json', () => ({ + extractStoriesJson: () => Promise.resolve(), + useStoriesJson: () => {}, +})); + jest.mock('@storybook/manager-webpack4', () => { const value = jest.fn(); const actualBuilder = jest.requireActual('@storybook/manager-webpack4'); @@ -153,6 +172,7 @@ describe.each([ ['prod', buildStaticStandalone], ['dev', buildDevStandalone], ])('%s', async (mode, builder) => { + console.log('running for ', mode, builder); const options = { ...baseOptions, configDir: path.resolve(`${__dirname}/../../../examples/${example}/.storybook`), diff --git a/lib/core-server/src/dev-server.ts b/lib/core-server/src/dev-server.ts index 4d82c1ff54f..764b8f1861a 100644 --- a/lib/core-server/src/dev-server.ts +++ b/lib/core-server/src/dev-server.ts @@ -1,33 +1,103 @@ import express, { Router } from 'express'; import compression from 'compression'; -import type { Builder, Options, StorybookConfig } from '@storybook/core-common'; -import { logConfig } from '@storybook/core-common'; +import { + Builder, + CoreConfig, + normalizeStories, + Options, + StorybookConfig, + logConfig, +} from '@storybook/core-common'; +import { telemetry } from '@storybook/telemetry'; import { getMiddleware } from './utils/middleware'; import { getServerAddresses } from './utils/server-address'; import { getServer } from './utils/server-init'; import { useStatics } from './utils/server-statics'; import { useStoriesJson } from './utils/stories-json'; +import { useStorybookMetadata } from './utils/metadata'; import { getServerChannel } from './utils/get-server-channel'; import { openInBrowser } from './utils/open-in-browser'; import { getPreviewBuilder } from './utils/get-preview-builder'; import { getManagerBuilder } from './utils/get-manager-builder'; +import { StoryIndexGenerator } from './utils/StoryIndexGenerator'; // @ts-ignore export const router: Router = new Router(); +export const DEBOUNCE = 100; + export async function storybookDevServer(options: Options) { const startTime = process.hrtime(); const app = express(); const server = await getServer(app, options); const serverChannel = getServerChannel(server); - app.use(compression({ level: 1 })); - const features = await options.presets.apply('features'); - const core = await options.presets.apply('core'); + const core = await options.presets.apply('core'); + // try get index generator, if failed, send telemetry without storyCount, then rethrow the error + let initializedStoryIndexGenerator: Promise = Promise.resolve(undefined); + if (features?.buildStoriesJson || features?.storyStoreV7) { + try { + const workingDir = process.cwd(); + const directories = { + configDir: options.configDir, + workingDir, + }; + const normalizedStories = normalizeStories( + await options.presets.apply('stories'), + directories + ); + const generator = new StoryIndexGenerator(normalizedStories, { + ...directories, + workingDir, + storiesV2Compatibility: !features?.breakingChangesV7 && !features?.storyStoreV7, + storyStoreV7: features?.storyStoreV7, + }); + + initializedStoryIndexGenerator = generator.initialize().then(() => generator); + + useStoriesJson({ + router, + initializedStoryIndexGenerator, + normalizedStories, + serverChannel, + workingDir, + }); + } catch (err) { + if (!core?.disableTelemetry) { + telemetry('start'); + } + throw err; + } + } + + if (!core?.disableTelemetry) { + initializedStoryIndexGenerator.then(async (generator) => { + if (!generator) { + return; + } + + const storyIndex = await generator.getIndex(); + const payload = storyIndex + ? { + storyIndex: { + storyCount: Object.keys(storyIndex.entries).length, + version: storyIndex.v, + }, + } + : undefined; + telemetry('start', payload, { configDir: options.configDir }); + }); + } + + if (!core?.disableProjectJson) { + useStorybookMetadata(router, options.configDir); + } + + app.use(compression({ level: 1 })); if (typeof options.extendServer === 'function') { options.extendServer(server); @@ -51,10 +121,6 @@ export async function storybookDevServer(options: Options) { }); } - if (features?.buildStoriesJson || features?.storyStoreV7) { - await useStoriesJson(router, serverChannel, options); - } - // User's own static files await useStatics(router, options); diff --git a/lib/core-server/src/presets/common-preset.ts b/lib/core-server/src/presets/common-preset.ts index 1f22ff93b10..378c37d7a84 100644 --- a/lib/core-server/src/presets/common-preset.ts +++ b/lib/core-server/src/presets/common-preset.ts @@ -6,6 +6,8 @@ import { loadCustomBabelConfig, getStorybookBabelConfig, loadEnvs, + CoreConfig, + StorybookConfig, } from '@storybook/core-common'; import type { Options } from '@storybook/core-common'; @@ -61,13 +63,52 @@ export const typescript = () => ({ }, }); +const optionalEnvToBoolean = (input: string | undefined): boolean | undefined => { + if (input === undefined) { + return undefined; + } + if (input.toUpperCase() === 'FALSE') { + return false; + } + if (input.toUpperCase() === 'TRUE') { + return true; + } + if (typeof input === 'string') { + return true; + } + return undefined; +}; + +/** + * If for some reason this config is not applied, the reason is that + * likely there is an addon that does `export core = () => ({ someConfig })`, + * instead of `export core = (existing) => ({ ...existing, someConfig })`, + * just overwriting everything and not merging with the existing values. + */ +export const core = async (existing: CoreConfig, options: Options): Promise => ({ + ...existing, + disableTelemetry: options.disableTelemetry === true, + enableCrashReports: + options.enableCrashReports || optionalEnvToBoolean(process.env.STORYBOOK_ENABLE_CRASH_REPORTS), +}); + export const config = async (base: any, options: Options) => { return [...(await options.presets.apply('previewAnnotations', [], options)), ...base]; }; -export const features = async (existing: Record) => ({ +export const features = async ( + existing: StorybookConfig['features'] +): Promise => ({ ...existing, postcss: true, emotionAlias: false, // TODO remove in 7.0, this no longer does anything warnOnLegacyHierarchySeparator: true, + buildStoriesJson: false, + storyStoreV7: false, + modernInlineRender: false, + breakingChangesV7: false, + interactionsDebugger: false, + babelModeV7: false, + argTypeTargetsV7: false, + previewMdx2: false, }); diff --git a/lib/core-server/src/utils/get-preview-builder.ts b/lib/core-server/src/utils/get-preview-builder.ts index 282d58f4324..d4825e5430d 100644 --- a/lib/core-server/src/utils/get-preview-builder.ts +++ b/lib/core-server/src/utils/get-preview-builder.ts @@ -7,7 +7,7 @@ export async function getPreviewBuilder(configDir: Options['configDir']) { const mainFile = getInterpretedFile(main); const { core } = mainFile ? serverRequire(mainFile) : { core: null }; let builderPackage: string; - if (core) { + if (core?.builder) { const builderName = typeof core.builder === 'string' ? core.builder : core.builder?.name; builderPackage = require.resolve( ['webpack4', 'webpack5'].includes(builderName) diff --git a/lib/core-server/src/utils/metadata.ts b/lib/core-server/src/utils/metadata.ts new file mode 100644 index 00000000000..9c0b377f7ef --- /dev/null +++ b/lib/core-server/src/utils/metadata.ts @@ -0,0 +1,17 @@ +import fs from 'fs-extra'; +import { Request, Response, Router } from 'express'; +import { getStorybookMetadata } from '@storybook/telemetry'; + +export async function extractStorybookMetadata(outputFile: string, configDir: string) { + const storybookMetadata = await getStorybookMetadata(configDir); + + await fs.writeJson(outputFile, storybookMetadata); +} + +export function useStorybookMetadata(router: Router, configDir?: string) { + router.use('/project.json', async (req: Request, res: Response) => { + const storybookMetadata = await getStorybookMetadata(configDir); + res.header('Content-Type', 'application/json'); + res.send(JSON.stringify(storybookMetadata)); + }); +} diff --git a/lib/core-server/src/utils/stories-json.test.ts b/lib/core-server/src/utils/stories-json.test.ts index a64d284eb05..a1ceee0eeac 100644 --- a/lib/core-server/src/utils/stories-json.test.ts +++ b/lib/core-server/src/utils/stories-json.test.ts @@ -6,6 +6,7 @@ import Events from '@storybook/core-events'; import { useStoriesJson, DEBOUNCE } from './stories-json'; import { ServerChannel } from './get-server-channel'; +import { StoryIndexGenerator } from './StoryIndexGenerator'; jest.mock('watchpack'); jest.mock('lodash/debounce'); @@ -21,25 +22,34 @@ jest.mock('@storybook/docs-mdx', async () => ({ }, })); -let storyStoreV7 = true; -const options: Parameters[2] = { - configDir: path.join(__dirname, '__mockdata__'), - presets: { - apply: async (what: string) => { - switch (what) { - case 'stories': { - return ['./src/**/*.docs.mdx', './src/**/*.stories.(ts|js|jsx)'] as any; - } - case 'features': { - return { storyStoreV7 }; - } - default: { - throw new Error(`Unexpected preset: ${what}`); - } - } - }, +const workingDir = path.join(__dirname, '__mockdata__'); +const normalizedStories = [ + { + titlePrefix: '', + directory: './src', + files: '**/*.stories.@(ts|js|jsx)', + importPathMatcher: + /^\.[\\/](?:src(?:\/(?!\.)(?:(?:(?!(?:^|\/)\.).)*?)\/|\/|$)(?!\.)(?=.)[^/]*?\.stories\.(ts|js|jsx))$/, }, -} as any; + { + titlePrefix: '', + directory: './src', + files: '**/*.docs.mdx', + importPathMatcher: + /^\.[\\/](?:src(?:\/(?!\.)(?:(?:(?!(?:^|\/)\.).)*?)\/|\/|$)(?!\.)(?=.)[^/]*?\.docs.mdx)$/, + }, +]; + +const getInitializedStoryIndexGenerator = async (overrides?: any) => { + const generator = new StoryIndexGenerator(normalizedStories, { + configDir: workingDir, + workingDir, + storyStoreV7: true, + ...overrides, + }); + await generator.initialize(); + return generator; +}; describe('useStoriesJson', () => { const use = jest.fn(); @@ -58,12 +68,11 @@ describe('useStoriesJson', () => { on: jest.fn(), } as any; - beforeEach(() => { + beforeEach(async () => { use.mockClear(); send.mockClear(); write.mockClear(); (debounce as jest.Mock).mockImplementation((cb) => cb); - storyStoreV7 = true; }); const request: Request = { @@ -73,7 +82,13 @@ describe('useStoriesJson', () => { describe('JSON endpoint', () => { it('scans and extracts index', async () => { const mockServerChannel = { emit: jest.fn() } as any as ServerChannel; - await useStoriesJson(router, mockServerChannel, options, options.configDir); + useStoriesJson({ + router, + initializedStoryIndexGenerator: getInitializedStoryIndexGenerator(), + serverChannel: mockServerChannel, + workingDir, + normalizedStories, + }); expect(use).toHaveBeenCalledTimes(2); const route = use.mock.calls[0][1]; @@ -160,7 +175,13 @@ describe('useStoriesJson', () => { it('scans and extracts stories v3', async () => { const mockServerChannel = { emit: jest.fn() } as any as ServerChannel; - await useStoriesJson(router, mockServerChannel, options, options.configDir); + await useStoriesJson({ + router, + initializedStoryIndexGenerator: getInitializedStoryIndexGenerator(), + workingDir, + serverChannel: mockServerChannel, + normalizedStories, + }); expect(use).toHaveBeenCalledTimes(2); const route = use.mock.calls[1][1]; @@ -214,9 +235,17 @@ describe('useStoriesJson', () => { }); it('scans and extracts stories v2', async () => { - storyStoreV7 = false; const mockServerChannel = { emit: jest.fn() } as any as ServerChannel; - await useStoriesJson(router, mockServerChannel, options, options.configDir); + await useStoriesJson({ + router, + initializedStoryIndexGenerator: getInitializedStoryIndexGenerator({ + storyStoreV7: false, + storiesV2Compatibility: true, + }), + workingDir, + serverChannel: mockServerChannel, + normalizedStories, + }); expect(use).toHaveBeenCalledTimes(2); const route = use.mock.calls[1][1]; @@ -313,7 +342,14 @@ describe('useStoriesJson', () => { it('can handle simultaneous access', async () => { const mockServerChannel = { emit: jest.fn() } as any as ServerChannel; - await useStoriesJson(router, mockServerChannel, options, options.configDir); + + useStoriesJson({ + router, + serverChannel: mockServerChannel, + workingDir, + normalizedStories, + initializedStoryIndexGenerator: getInitializedStoryIndexGenerator(), + }); expect(use).toHaveBeenCalledTimes(2); const route = use.mock.calls[0][1]; @@ -339,7 +375,13 @@ describe('useStoriesJson', () => { it('sends invalidate events', async () => { const mockServerChannel = { emit: jest.fn() } as any as ServerChannel; - await useStoriesJson(router, mockServerChannel, options, options.configDir); + useStoriesJson({ + router, + serverChannel: mockServerChannel, + workingDir, + normalizedStories, + initializedStoryIndexGenerator: getInitializedStoryIndexGenerator(), + }); expect(use).toHaveBeenCalledTimes(2); const route = use.mock.calls[0][1]; @@ -362,7 +404,13 @@ describe('useStoriesJson', () => { it('only sends one invalidation when multiple event listeners are listening', async () => { const mockServerChannel = { emit: jest.fn() } as any as ServerChannel; - await useStoriesJson(router, mockServerChannel, options, options.configDir); + useStoriesJson({ + router, + serverChannel: mockServerChannel, + workingDir, + normalizedStories, + initializedStoryIndexGenerator: getInitializedStoryIndexGenerator(), + }); expect(use).toHaveBeenCalledTimes(2); const route = use.mock.calls[0][1]; @@ -391,7 +439,13 @@ describe('useStoriesJson', () => { (debounce as jest.Mock).mockImplementation(jest.requireActual('lodash/debounce')); const mockServerChannel = { emit: jest.fn() } as any as ServerChannel; - await useStoriesJson(router, mockServerChannel, options, options.configDir); + useStoriesJson({ + router, + serverChannel: mockServerChannel, + workingDir, + normalizedStories, + initializedStoryIndexGenerator: getInitializedStoryIndexGenerator(), + }); expect(use).toHaveBeenCalledTimes(2); const route = use.mock.calls[0][1]; diff --git a/lib/core-server/src/utils/stories-json.ts b/lib/core-server/src/utils/stories-json.ts index 293ed0629b3..1a3ad5230bc 100644 --- a/lib/core-server/src/utils/stories-json.ts +++ b/lib/core-server/src/utils/stories-json.ts @@ -1,11 +1,11 @@ import { Router, Request, Response } from 'express'; import fs from 'fs-extra'; -import type { Options, NormalizedStoriesSpecifier, StorybookConfig } from '@storybook/core-common'; + +import type { NormalizedStoriesSpecifier } from '@storybook/core-common'; import type { StoryIndex, StoryIndexV3 } from '@storybook/store'; -import { normalizeStories } from '@storybook/core-common'; -import Events from '@storybook/core-events'; import debounce from 'lodash/debounce'; +import { STORY_INDEX_INVALIDATED } from '@storybook/core-events'; import { StoryIndexGenerator } from './StoryIndexGenerator'; import { watchStorySpecifiers } from './watch-story-specifiers'; import { ServerChannel } from './get-server-channel'; @@ -14,65 +14,39 @@ export const DEBOUNCE = 100; export async function extractStoriesJson( outputFile: string, - normalizedStories: NormalizedStoriesSpecifier[], - options: { - configDir: string; - workingDir: string; - storiesV2Compatibility: boolean; - storyStoreV7: boolean; - } + initializedStoryIndexGenerator: Promise, + transform?: (index: StoryIndex) => any ) { - const generator = new StoryIndexGenerator(normalizedStories, options); - await generator.initialize(); - - const index = await generator.getIndex(); - await fs.writeJson(outputFile, index); + const generator = await initializedStoryIndexGenerator; + const storyIndex = await generator.getIndex(); + await fs.writeJson(outputFile, transform ? transform(storyIndex) : storyIndex); } -export async function useStoriesJson( - router: Router, - serverChannel: ServerChannel, - options: Options, - workingDir: string = process.cwd() -) { - const normalizedStories = normalizeStories(await options.presets.apply('stories'), { - configDir: options.configDir, - workingDir, +export function useStoriesJson({ + router, + initializedStoryIndexGenerator, + workingDir = process.cwd(), + serverChannel, + normalizedStories, +}: { + router: Router; + initializedStoryIndexGenerator: Promise; + serverChannel: ServerChannel; + workingDir?: string; + normalizedStories: NormalizedStoriesSpecifier[]; +}) { + const maybeInvalidate = debounce(() => serverChannel.emit(STORY_INDEX_INVALIDATED), DEBOUNCE, { + leading: true, }); - const features = await options.presets.apply('features'); - const generator = new StoryIndexGenerator(normalizedStories, { - configDir: options.configDir, - workingDir, - storiesV2Compatibility: !features?.breakingChangesV7 && !features?.storyStoreV7, - storyStoreV7: features?.storyStoreV7, + watchStorySpecifiers(normalizedStories, { workingDir }, async (specifier, path, removed) => { + const generator = await initializedStoryIndexGenerator; + generator.invalidate(specifier, path, removed); + maybeInvalidate(); }); - // Wait until someone actually requests `stories.json` before we start generating/watching. - // This is mainly for testing purposes. - const maybeInvalidate = debounce( - () => serverChannel.emit(Events.STORY_INDEX_INVALIDATED), - DEBOUNCE, - { leading: true } - ); - let startedPromise: Promise; - async function ensureStarted() { - if (!startedPromise) { - startedPromise = (async () => { - watchStorySpecifiers(normalizedStories, { workingDir }, (specifier, path, removed) => { - generator.invalidate(specifier, path, removed); - maybeInvalidate(); - }); - - await generator.initialize(); - })(); - } - return startedPromise; - } - router.use('/index.json', async (req: Request, res: Response) => { - await ensureStarted(); - try { + const generator = await initializedStoryIndexGenerator; const index = await generator.getIndex(); res.header('Content-Type', 'application/json'); res.send(JSON.stringify(index)); @@ -83,9 +57,8 @@ export async function useStoriesJson( }); router.use('/stories.json', async (req: Request, res: Response) => { - await ensureStarted(); - try { + const generator = await initializedStoryIndexGenerator; const index = convertToIndexV3(await generator.getIndex()); res.header('Content-Type', 'application/json'); res.send(JSON.stringify(index)); diff --git a/lib/core-server/src/utils/update-check.ts b/lib/core-server/src/utils/update-check.ts index 1d517c41800..2b6486204de 100644 --- a/lib/core-server/src/utils/update-check.ts +++ b/lib/core-server/src/utils/update-check.ts @@ -48,7 +48,9 @@ export function createUpdateMessage(updateInfo: VersionCheck, version: string): ${chalk.gray('Upgrade now:')} ${colors.green(upgradeCommand)} - ${chalk.gray('Read full changelog:')} ${chalk.gray.underline('https://git.io/fhFYe')} + ${chalk.gray('Read full changelog:')} ${chalk.gray.underline( + 'https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md' + )} ` : ''; } catch (e) { diff --git a/lib/csf-tools/package.json b/lib/csf-tools/package.json index 05a21a042aa..e1de6e16b0e 100644 --- a/lib/csf-tools/package.json +++ b/lib/csf-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/csf-tools", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "", "keywords": [ "storybook" @@ -71,6 +71,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/docs-tools/package.json b/lib/docs-tools/package.json index 0e37336050b..7718877215a 100644 --- a/lib/docs-tools/package.json +++ b/lib/docs-tools/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/docs-tools", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Shared utility functions for frameworks to implement docs", "keywords": [ "storybook" @@ -42,7 +42,7 @@ "dependencies": { "@babel/core": "^7.12.10", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/store": "6.5.0-beta.1", + "@storybook/store": "6.5.0-beta.4", "core-js": "^3.8.2", "doctrine": "^3.0.0", "lodash": "^4.17.21", @@ -55,6 +55,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/instrumenter/package.json b/lib/instrumenter/package.json index af28a32a255..161aeedb192 100644 --- a/lib/instrumenter/package.json +++ b/lib/instrumenter/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/instrumenter", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "", "keywords": [ "storybook" @@ -40,15 +40,15 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "core-js": "^3.8.2", "global": "^4.4.0" }, "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/manager-webpack4/package.json b/lib/manager-webpack4/package.json index c778b625686..90ba347c894 100644 --- a/lib/manager-webpack4/package.json +++ b/lib/manager-webpack4/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager-webpack4", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -45,12 +45,12 @@ "@babel/core": "^7.12.10", "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/core-client": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/node-logger": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", - "@storybook/ui": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/core-client": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/node-logger": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", + "@storybook/ui": "6.5.0-beta.4", "@types/node": "^14.0.10 || ^16.0.0", "@types/webpack": "^4.41.26", "babel-loader": "^8.0.0", @@ -96,6 +96,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/manager-webpack5/package.json b/lib/manager-webpack5/package.json index 870ba09335a..c4acd477a7a 100644 --- a/lib/manager-webpack5/package.json +++ b/lib/manager-webpack5/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/manager-webpack5", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook framework-agnostic API", "keywords": [ "storybook" @@ -45,12 +45,12 @@ "@babel/core": "^7.12.10", "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.5.0-beta.1", - "@storybook/core-client": "6.5.0-beta.1", - "@storybook/core-common": "6.5.0-beta.1", - "@storybook/node-logger": "6.5.0-beta.1", - "@storybook/theming": "6.5.0-beta.1", - "@storybook/ui": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/core-client": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "@storybook/node-logger": "6.5.0-beta.4", + "@storybook/theming": "6.5.0-beta.4", + "@storybook/ui": "6.5.0-beta.4", "@types/node": "^14.0.10 || ^16.0.0", "babel-loader": "^8.0.0", "case-sensitive-paths-webpack-plugin": "^2.3.0", @@ -93,6 +93,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/node-logger/package.json b/lib/node-logger/package.json index 8c3fc116d0e..83498a2200e 100644 --- a/lib/node-logger/package.json +++ b/lib/node-logger/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/node-logger", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "", "keywords": [ "storybook" @@ -52,6 +52,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/postinstall/package.json b/lib/postinstall/package.json index b59f8f1ec4e..0a74ca43f5e 100644 --- a/lib/postinstall/package.json +++ b/lib/postinstall/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/postinstall", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Storybook addons postinstall utilities", "keywords": [ "api", @@ -51,6 +51,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/preview-web/package.json b/lib/preview-web/package.json index 80bea2b31ba..3c4e94b6c40 100644 --- a/lib/preview-web/package.json +++ b/lib/preview-web/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/preview-web", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "", "keywords": [ "storybook" @@ -40,12 +40,12 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/channel-postmessage": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/channel-postmessage": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/store": "6.5.0-beta.1", + "@storybook/store": "6.5.0-beta.4", "ansi-to-html": "^0.6.11", "core-js": "^3.8.2", "global": "^4.4.0", @@ -64,6 +64,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/router/package.json b/lib/router/package.json index 35e93b87708..edf66d3b133 100644 --- a/lib/router/package.json +++ b/lib/router/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/router", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Core Storybook Router", "keywords": [ "storybook" @@ -40,7 +40,7 @@ "prepare": "ts-node ../../scripts/prebundle.ts" }, "dependencies": { - "@storybook/client-logger": "6.5.0-beta.1", + "@storybook/client-logger": "6.5.0-beta.4", "core-js": "^3.8.2", "regenerator-runtime": "^0.13.7" }, @@ -64,6 +64,6 @@ "access": "public" }, "bundlerEntrypoint": "./src/index.ts", - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/source-loader/package.json b/lib/source-loader/package.json index 449dd041ec9..6e0005fa815 100644 --- a/lib/source-loader/package.json +++ b/lib/source-loader/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/source-loader", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Source loader", "keywords": [ "lib", @@ -41,8 +41,8 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", "core-js": "^3.8.2", "estraverse": "^5.2.0", @@ -59,6 +59,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/store/package.json b/lib/store/package.json index 5a7ae73455a..74da4ce1350 100644 --- a/lib/store/package.json +++ b/lib/store/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/store", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "", "keywords": [ "storybook" @@ -40,9 +40,9 @@ "prepare": "node ../../scripts/prepare.js" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", "@storybook/csf": "0.0.2--canary.4566f4d.1", "core-js": "^3.8.2", "fast-deep-equal": "^3.1.3", @@ -63,6 +63,6 @@ "publishConfig": { "access": "public" }, - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/store/src/args.test.ts b/lib/store/src/args.test.ts index f251fa3237f..ece3e1dd11e 100644 --- a/lib/store/src/args.test.ts +++ b/lib/store/src/args.test.ts @@ -83,6 +83,25 @@ describe('mapArgsToTypes', () => { expect(mapArgsToTypes({ a: 'something' }, { a: { type: functionType } })).toStrictEqual({}); }); + it('includes functions if there is a mapping', () => { + expect( + mapArgsToTypes( + { a: 'something' }, + { a: { type: functionType, mapping: { something: () => 'foo' } } } + ) + ).toStrictEqual({ + a: 'something', + }); + }); + + it('skips default mapping if there is a user-specified mapping', () => { + expect( + mapArgsToTypes({ a: 'something' }, { a: { type: numberType, mapping: { something: 10 } } }) + ).toStrictEqual({ + a: 'something', + }); + }); + it('omits unknown keys', () => { expect(mapArgsToTypes({ a: 'string' }, { b: { type: stringType } })).toStrictEqual({}); }); diff --git a/lib/store/src/args.ts b/lib/store/src/args.ts index e12acdff3b6..ca8997e8972 100644 --- a/lib/store/src/args.ts +++ b/lib/store/src/args.ts @@ -1,12 +1,16 @@ import deepEqual from 'fast-deep-equal'; -import type { SBType, Args, ArgTypes, StoryContext, AnyFramework } from '@storybook/csf'; +import type { SBType, Args, InputType, ArgTypes, StoryContext, AnyFramework } from '@storybook/csf'; import { once } from '@storybook/client-logger'; import isPlainObject from 'lodash/isPlainObject'; import dedent from 'ts-dedent'; const INCOMPATIBLE = Symbol('incompatible'); -const map = (arg: unknown, type: SBType): any => { +const map = (arg: unknown, argType: InputType): any => { + const type = argType.type as SBType; if (arg === undefined || arg === null || !type) return arg; + if (argType.mapping) { + return arg; + } switch (type.name) { case 'string': return String(arg); @@ -19,7 +23,7 @@ const map = (arg: unknown, type: SBType): any => { case 'array': if (!type.value || !Array.isArray(arg)) return INCOMPATIBLE; return arg.reduce((acc, item, index) => { - const mapped = map(item, type.value); + const mapped = map(item, { type: type.value }); if (mapped !== INCOMPATIBLE) acc[index] = mapped; return acc; }, new Array(arg.length)); @@ -27,7 +31,7 @@ const map = (arg: unknown, type: SBType): any => { if (typeof arg === 'string' || typeof arg === 'number') return arg; if (!type.value || typeof arg !== 'object') return INCOMPATIBLE; return Object.entries(arg).reduce((acc, [key, val]) => { - const mapped = map(val, type.value[key]); + const mapped = map(val, { type: type.value[key] }); return mapped === INCOMPATIBLE ? acc : Object.assign(acc, { [key]: mapped }); }, {} as Args); default: @@ -38,7 +42,7 @@ const map = (arg: unknown, type: SBType): any => { export const mapArgsToTypes = (args: Args, argTypes: ArgTypes): Args => { return Object.entries(args).reduce((acc, [key, value]) => { if (!argTypes[key]) return acc; - const mapped = map(value, argTypes[key].type as SBType); + const mapped = map(value, argTypes[key]); return mapped === INCOMPATIBLE ? acc : Object.assign(acc, { [key]: mapped }); }, {}); }; diff --git a/lib/telemetry/README.md b/lib/telemetry/README.md new file mode 100644 index 00000000000..7f84d318fc9 --- /dev/null +++ b/lib/telemetry/README.md @@ -0,0 +1,5 @@ +# Storybook Telemetry + +Storybook collects completely anonymous telemetry data about general usage. Participation in this program is optional and it’s easy to opt-out. + +For more information visit: [storybook.js.org/telemetry](https://storybook.js.org/telemetry) diff --git a/lib/telemetry/package.json b/lib/telemetry/package.json new file mode 100644 index 00000000000..f64d4bfbbe3 --- /dev/null +++ b/lib/telemetry/package.json @@ -0,0 +1,61 @@ +{ + "name": "@storybook/telemetry", + "version": "6.5.0-beta.4", + "description": "Telemetry logging for crash reports and usage statistics", + "keywords": [ + "storybook" + ], + "homepage": "https://github.com/storybookjs/storybook/tree/main/lib/telemetry", + "bugs": { + "url": "https://github.com/storybookjs/storybook/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/storybookjs/storybook.git", + "directory": "lib/telemetry" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "license": "MIT", + "sideEffects": false, + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "types": "dist/ts3.9/index.d.ts", + "typesVersions": { + "<3.8": { + "dist/ts3.9/*": [ + "dist/ts3.4/*" + ] + } + }, + "files": [ + "dist/**/*", + "README.md", + "*.js", + "*.d.ts" + ], + "scripts": { + "prepare": "node ../../scripts/prepare.js" + }, + "dependencies": { + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/core-common": "6.5.0-beta.4", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "detect-package-manager": "^2.0.1", + "fetch-retry": "^5.0.2", + "fs-extra": "^9.0.1", + "global": "^4.4.0", + "isomorphic-unfetch": "^3.1.0", + "nanoid": "^3.3.1", + "read-pkg-up": "^7.0.1", + "regenerator-runtime": "^0.13.7" + }, + "publishConfig": { + "access": "public" + }, + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", + "sbmodern": "dist/modern/index.js" +} diff --git a/lib/telemetry/src/anonymous-id.ts b/lib/telemetry/src/anonymous-id.ts new file mode 100644 index 00000000000..174661666a1 --- /dev/null +++ b/lib/telemetry/src/anonymous-id.ts @@ -0,0 +1,31 @@ +import path from 'path'; +import { execSync } from 'child_process'; +import { getProjectRoot } from '@storybook/core-common'; +import { oneWayHash } from './one-way-hash'; + +let anonymousProjectId: string; +export const getAnonymousProjectId = () => { + if (anonymousProjectId) { + return anonymousProjectId; + } + + let unhashedProjectId; + try { + const projectRoot = getProjectRoot(); + + const projectRootPath = path.relative(projectRoot, process.cwd()); + + const originBuffer = execSync(`git config --local --get remote.origin.url`, { + timeout: 1000, + stdio: `pipe`, + }); + + // we use a combination of remoteUrl and working directory + // to separate multiple storybooks from the same project (e.g. monorepo) + unhashedProjectId = `${String(originBuffer).trim()}${projectRootPath}`; + // eslint-disable-next-line no-empty + } catch (_) {} + + anonymousProjectId = oneWayHash(unhashedProjectId); + return anonymousProjectId; +}; diff --git a/lib/telemetry/src/get-monorepo-type.test.ts b/lib/telemetry/src/get-monorepo-type.test.ts new file mode 100644 index 00000000000..0ddd8862bb0 --- /dev/null +++ b/lib/telemetry/src/get-monorepo-type.test.ts @@ -0,0 +1,57 @@ +/* eslint-disable no-underscore-dangle */ +import path from 'path'; + +import { getMonorepoType, monorepoConfigs } from './get-monorepo-type'; + +// eslint-disable-next-line global-require, jest/no-mocks-import +jest.mock('fs-extra', () => require('../../../__mocks__/fs-extra')); + +jest.mock('@storybook/core-common', () => { + const coreCommon = jest.requireActual('@storybook/core-common'); + return { + ...coreCommon, + getProjectRoot: () => 'root', + }; +}); + +const checkMonorepoType = ({ monorepoConfigFile, isYarnWorkspace = false }) => { + const mockFiles = { + [path.join('root', 'package.json')]: isYarnWorkspace ? '{ "workspaces": [] }' : '{}', + }; + + if (monorepoConfigFile) { + mockFiles[path.join('root', monorepoConfigFile)] = '{}'; + } + + // eslint-disable-next-line global-require + require('fs-extra').__setMockFiles(mockFiles); + + return getMonorepoType(); +}; + +describe('getMonorepoType', () => { + describe('Monorepos from json files', () => { + it.each(Object.entries(monorepoConfigs))( + 'should detect %p from %s file', + (monorepoName, monorepoConfigFile) => { + expect(checkMonorepoType({ monorepoConfigFile })).toEqual(monorepoName); + } + ); + }); + + describe('Yarn|NPM workspaces', () => { + it('should detect Workspaces from package.json', () => { + expect(checkMonorepoType({ monorepoConfigFile: undefined, isYarnWorkspace: true })).toEqual( + 'Workspaces' + ); + }); + }); + + describe('Non-monorepos', () => { + it('should return undefined', () => { + expect(checkMonorepoType({ monorepoConfigFile: undefined, isYarnWorkspace: false })).toEqual( + undefined + ); + }); + }); +}); diff --git a/lib/telemetry/src/get-monorepo-type.ts b/lib/telemetry/src/get-monorepo-type.ts new file mode 100644 index 00000000000..30aae5eadc7 --- /dev/null +++ b/lib/telemetry/src/get-monorepo-type.ts @@ -0,0 +1,38 @@ +import fs from 'fs-extra'; +import path from 'path'; +import type { PackageJson } from '@storybook/core-common'; +import { getProjectRoot } from '@storybook/core-common'; + +export const monorepoConfigs = { + Nx: 'nx.json', + Turborepo: 'turbo.json', + Lerna: 'lerna.json', + Rush: 'rush.json', + Lage: 'lage.config.json', +} as const; + +export type MonorepoType = keyof typeof monorepoConfigs | 'Workspaces' | undefined; + +export const getMonorepoType = (): MonorepoType => { + const projectRootPath = getProjectRoot(); + if (!projectRootPath) return undefined; + + const monorepoType = Object.keys(monorepoConfigs).find( + (monorepo: keyof typeof monorepoConfigs) => { + const configFile = path.join(projectRootPath, monorepoConfigs[monorepo]); + return fs.existsSync(configFile); + } + ) as MonorepoType; + + if (monorepoType) { + return monorepoType; + } + + const packageJson = fs.readJsonSync(path.join(projectRootPath, 'package.json')) as PackageJson; + + if (packageJson?.workspaces) { + return 'Workspaces'; + } + + return undefined; +}; diff --git a/lib/telemetry/src/index.ts b/lib/telemetry/src/index.ts new file mode 100644 index 00000000000..864a6682857 --- /dev/null +++ b/lib/telemetry/src/index.ts @@ -0,0 +1,40 @@ +import { logger } from '@storybook/client-logger'; +import type { EventType, Payload, Options, TelemetryData } from './types'; +import { getStorybookMetadata } from './storybook-metadata'; +import { sendTelemetry } from './telemetry'; +import { notify } from './notify'; +import { sanitizeError } from './sanitize'; + +export * from './storybook-metadata'; + +export const telemetry = async ( + eventType: EventType, + payload: Payload = {}, + options?: Partial +) => { + await notify(); + const telemetryData: TelemetryData = { + eventType, + payload, + }; + try { + telemetryData.metadata = await getStorybookMetadata(options.configDir); + } catch (error) { + if (!telemetryData.payload.error) telemetryData.payload.error = error; + } finally { + const { error } = telemetryData.payload; + if (error) { + // make sure to anonymise possible paths from error messages + telemetryData.payload.error = sanitizeError(error); + } + + if (!telemetryData.payload.error || options?.enableCrashReports) { + if (process.env?.STORYBOOK_DEBUG_TELEMETRY) { + logger.info('\n[telemetry]'); + logger.info(JSON.stringify(telemetryData, null, 2)); + } else { + await sendTelemetry(telemetryData, options); + } + } + } +}; diff --git a/lib/telemetry/src/notify.ts b/lib/telemetry/src/notify.ts new file mode 100644 index 00000000000..dc57c7ff000 --- /dev/null +++ b/lib/telemetry/src/notify.ts @@ -0,0 +1,32 @@ +import chalk from 'chalk'; +import { cache } from '@storybook/core-common'; + +const TELEMETRY_KEY_NOTIFY_DATE = 'telemetry-notification-date'; + +const logger = console; + +export const notify = async () => { + const telemetryNotifyDate = await cache.get(TELEMETRY_KEY_NOTIFY_DATE, null); + // The end-user has already been notified about our telemetry integration. We + // don't need to constantly annoy them about it. + // We will re-inform users about the telemetry if significant changes are + // ever made. + if (telemetryNotifyDate) { + return; + } + + cache.set(TELEMETRY_KEY_NOTIFY_DATE, Date.now()); + + logger.log(); + logger.log( + `${chalk.magenta.bold( + 'attention' + )} => Storybook now collects completely anonymous telemetry regarding usage.` + ); + logger.log(`This information is used to shape Storybook's roadmap and prioritize features.`); + logger.log( + `You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:` + ); + logger.log(chalk.cyan('https://storybook.js.org/telemetry')); + logger.log(); +}; diff --git a/lib/telemetry/src/one-way-hash.ts b/lib/telemetry/src/one-way-hash.ts new file mode 100644 index 00000000000..039d0c71483 --- /dev/null +++ b/lib/telemetry/src/one-way-hash.ts @@ -0,0 +1,14 @@ +import { BinaryLike, createHash } from 'crypto'; + +export const oneWayHash = (payload: BinaryLike): string => { + const hash = createHash('sha256'); + + // Always prepend the payload value with salt. This ensures the hash is truly + // one-way. + hash.update('storybook-telemetry-salt'); + + // Update is an append operation, not a replacement. The salt from the prior + // update is still present! + hash.update(payload); + return hash.digest('hex'); +}; diff --git a/lib/telemetry/src/package-versions.ts b/lib/telemetry/src/package-versions.ts new file mode 100644 index 00000000000..daba180809d --- /dev/null +++ b/lib/telemetry/src/package-versions.ts @@ -0,0 +1,21 @@ +import path from 'path'; + +import { Dependency } from './types'; + +export const getActualPackageVersions = async (packages: Record>) => { + const packageNames = Object.keys(packages); + return Promise.all(packageNames.map(getActualPackageVersion)); +}; + +export const getActualPackageVersion = async (packageName: string) => { + try { + // eslint-disable-next-line import/no-dynamic-require,global-require + const packageJson = require(path.join(packageName, 'package.json')); + return { + name: packageName, + version: packageJson.version, + }; + } catch (err) { + return { name: packageName, version: null }; + } +}; diff --git a/lib/telemetry/src/sanitize.test.ts b/lib/telemetry/src/sanitize.test.ts new file mode 100644 index 00000000000..89f27fcef23 --- /dev/null +++ b/lib/telemetry/src/sanitize.test.ts @@ -0,0 +1,102 @@ +import { sanitizeError, cleanPaths } from './sanitize'; + +describe(`Errors Helpers`, () => { + describe(`sanitizeError`, () => { + it(`Sanitizes current path from error stacktraces`, () => { + const errorMessage = `this is a test`; + let e; + try { + throw new Error(errorMessage); + } catch (error) { + e = error; + } + expect(e).toBeDefined(); + expect(e.message).toEqual(errorMessage); + expect(e.stack).toEqual(expect.stringContaining(process.cwd())); + + const sanitizedError = sanitizeError(e); + + expect(sanitizedError.message).toEqual(expect.stringContaining(errorMessage)); + expect(sanitizedError.message).toEqual( + expect.not.stringContaining(process.cwd().replaceAll(`\\`, `\\\\`)) + ); + }); + + it(`Sanitizes a section of the current path from error stacktrace`, () => { + const errorMessage = `this is a test`; + + const e = { + message: errorMessage, + stack: ` + Error: this is an error + at Object. (/Users/username/Code/storybook-app/storybook-config.js:1:32) + at Object. (/Users/username/Code/storybook-app/node_module/storybook-telemetry/blah.js:1:69) + at Object. (/Users/username/Code/storybook-app/node_module/fake-path/index.js:1:41) + at Object. (/Users/username/.fake-path/index.js:1:69) + at Module._compile (internal/modules/cjs/loader.js:736:30) + at Object.Module._extensions..js (internal/modules/cjs/loader.js:747:10) + at Module.load (internal/modules/cjs/loader.js:628:32) + at tryModuleLoad (internal/modules/cjs/loader.js:568:12) + at Function.Module._load (internal/modules/cjs/loader.js:560:3) + at Function.Module.runMain (internal/modules/cjs/loader.js:801:12) + at executeUserCode (internal/bootstrap/node.js:526:15) + at startMainThreadExecution (internal/bootstrap/node.js:439:3) + `, + }; + + expect(e).toBeDefined(); + expect(e.message).toEqual(errorMessage); + expect(e.stack).toBeDefined(); + + const mockCwd = jest + .spyOn(process, `cwd`) + .mockImplementation(() => `/Users/username/Code/storybook-app`); + + expect(e.stack).toEqual(expect.stringContaining(`username`)); + + const sanitizedError = sanitizeError(e as Error, `/`); + + expect(sanitizedError.message.includes(errorMessage)).toBe(true); + expect(sanitizedError.stack).toEqual(expect.not.stringContaining(`username`)); + const result = sanitizedError.stack.match(/\$SNIP/g) as Array; + expect(result.length).toBe(4); + + mockCwd.mockRestore(); + }); + }); + describe(`cleanPaths`, () => { + it.each([`storybook-config.js`, `src/pages/index.js`])( + `should clean path on unix: %s`, + (filePath) => { + const cwdMockPath = `/Users/username/storybook-app`; + const fullPath = `${cwdMockPath}/${filePath}`; + + const mockCwd = jest.spyOn(process, `cwd`).mockImplementation(() => cwdMockPath); + + const errorMessage = `This path ${fullPath} is a test ${fullPath}`; + + expect(cleanPaths(errorMessage, `/`)).toBe( + `This path $SNIP/${filePath} is a test $SNIP/${filePath}` + ); + mockCwd.mockRestore(); + } + ); + + it.each([`storybook-config.js`, `src\\pages\\index.js`])( + `should clean path on windows: %s`, + (filePath) => { + const cwdMockPath = `C:\\Users\\username\\storybook-app`; + const fullPath = `${cwdMockPath}\\${filePath}`; + + const mockCwd = jest.spyOn(process, `cwd`).mockImplementation(() => cwdMockPath); + + const errorMessage = `This path ${fullPath} is a test ${fullPath}`; + + expect(cleanPaths(errorMessage, `\\`)).toBe( + `This path $SNIP\\${filePath} is a test $SNIP\\${filePath}` + ); + mockCwd.mockRestore(); + } + ); + }); +}); diff --git a/lib/telemetry/src/sanitize.ts b/lib/telemetry/src/sanitize.ts new file mode 100644 index 00000000000..b2d9f10c8c4 --- /dev/null +++ b/lib/telemetry/src/sanitize.ts @@ -0,0 +1,43 @@ +/* eslint-disable no-param-reassign */ +import { sep } from 'path'; + +export interface IErrorWithStdErrAndStdOut { + stderr?: Buffer | string; + stdout?: Buffer | string; + [key: string]: unknown; +} + +// Removes all user paths +function regexpEscape(str: string): string { + return str.replace(/[-[/{}()*+?.\\^$|]/g, `\\$&`); +} + +export function cleanPaths(str: string, separator: string = sep): string { + if (!str) return str; + + const stack = process.cwd().split(separator); + + while (stack.length > 1) { + const currentPath = stack.join(separator); + const currentRegex = new RegExp(regexpEscape(currentPath), `g`); + str = str.replace(currentRegex, `$SNIP`); + + const currentPath2 = stack.join(separator + separator); + const currentRegex2 = new RegExp(regexpEscape(currentPath2), `g`); + str = str.replace(currentRegex2, `$SNIP`); + + stack.pop(); + } + return str; +} + +// Takes an Error and returns a sanitized JSON String +export function sanitizeError(error: Error, pathSeparator: string = sep): string { + // Hack because Node + error = JSON.parse(JSON.stringify(error, Object.getOwnPropertyNames(error))); + + // Removes all user paths + const errorString = cleanPaths(JSON.stringify(error), pathSeparator); + + return JSON.parse(errorString); +} diff --git a/lib/telemetry/src/storybook-metadata.test.ts b/lib/telemetry/src/storybook-metadata.test.ts new file mode 100644 index 00000000000..0ccaeae27d9 --- /dev/null +++ b/lib/telemetry/src/storybook-metadata.test.ts @@ -0,0 +1,200 @@ +import type { PackageJson, StorybookConfig } from '@storybook/core-common'; + +import { computeStorybookMetadata, metaFrameworks } from './storybook-metadata'; + +const packageJsonMock: PackageJson = { + name: 'some-user-project', + version: 'x.x.x', +}; + +const mainJsMock: StorybookConfig = { + stories: [], +}; + +jest.mock('./package-versions', () => { + const getActualPackageVersion = jest.fn((name) => + Promise.resolve({ + name, + version: 'x.x.x', + }) + ); + + const getActualPackageVersions = jest.fn((packages) => + Promise.all(Object.keys(packages).map(getActualPackageVersion)) + ); + + return { + getActualPackageVersions, + getActualPackageVersion, + }; +}); + +jest.mock('./get-monorepo-type', () => ({ + getMonorepoType: () => 'Nx', +})); + +jest.mock('detect-package-manager', () => ({ + detect: () => 'Yarn', + getNpmVersion: () => '3.1.1', +})); + +describe('await computeStorybookMetadata', () => { + test('should return frameworkOptions from mainjs', async () => { + const reactResult = await computeStorybookMetadata({ + packageJson: { + ...packageJsonMock, + devDependencies: { + '@storybook/react': 'x.x.x', + }, + }, + mainConfig: { + ...mainJsMock, + reactOptions: { + fastRefresh: false, + }, + }, + }); + + expect(reactResult.framework).toEqual({ name: 'react', options: { fastRefresh: false } }); + + const angularResult = await computeStorybookMetadata({ + packageJson: { + ...packageJsonMock, + devDependencies: { + '@storybook/angular': 'x.x.x', + }, + }, + mainConfig: { + ...mainJsMock, + angularOptions: { + enableIvy: true, + }, + }, + }); + + expect(angularResult.framework).toEqual({ name: 'angular', options: { enableIvy: true } }); + }); + + test('should separate storybook packages and addons', async () => { + const result = await computeStorybookMetadata({ + packageJson: { + ...packageJsonMock, + devDependencies: { + '@storybook/react': 'x.y.z', + '@storybook/addon-essentials': 'x.x.x', + 'storybook-addon-deprecated': 'x.x.x', + }, + }, + mainConfig: { + ...mainJsMock, + addons: ['@storybook/addon-essentials', 'storybook-addon-deprecated/register'], + }, + }); + + expect(result.addons).toMatchInlineSnapshot(` + Object { + "@storybook/addon-essentials": Object { + "options": undefined, + "version": "x.x.x", + }, + "storybook-addon-deprecated": Object { + "options": undefined, + "version": "x.x.x", + }, + } + `); + expect(result.storybookPackages).toMatchInlineSnapshot(` + Object { + "@storybook/react": Object { + "version": "x.x.x", + }, + } + `); + }); + + test('should return user specified features', async () => { + const features = { + interactionsDebugger: true, + }; + + const result = await computeStorybookMetadata({ + packageJson: packageJsonMock, + mainConfig: { + ...mainJsMock, + features, + }, + }); + + expect(result.features).toEqual(features); + }); + + test('should handle different types of builders', async () => { + const simpleBuilder = 'webpack4'; + const complexBuilder = { + name: 'webpack5', + options: { + lazyCompilation: true, + }, + }; + expect( + ( + await computeStorybookMetadata({ + packageJson: packageJsonMock, + mainConfig: { + ...mainJsMock, + core: { + builder: complexBuilder, + }, + }, + }) + ).builder + ).toEqual(complexBuilder); + expect( + ( + await computeStorybookMetadata({ + packageJson: packageJsonMock, + mainConfig: { + ...mainJsMock, + core: { + builder: simpleBuilder, + }, + }, + }) + ).builder + ).toEqual({ name: simpleBuilder }); + }); + + test('should return the number of refs', async () => { + const res = await computeStorybookMetadata({ + packageJson: packageJsonMock, + mainConfig: { + ...mainJsMock, + refs: { + a: { title: '', url: '' }, + b: { title: '', url: '' }, + }, + }, + }); + expect(res.refCount).toEqual(2); + }); + + test.each(Object.entries(metaFrameworks))( + 'should detect the supported metaframework: %s', + async (metaFramework, name) => { + const res = await computeStorybookMetadata({ + packageJson: { + ...packageJsonMock, + dependencies: { + [metaFramework]: 'x.x.x', + }, + }, + mainConfig: mainJsMock, + }); + expect(res.metaFramework).toEqual({ + name, + packageName: metaFramework, + version: 'x.x.x', + }); + } + ); +}); diff --git a/lib/telemetry/src/storybook-metadata.ts b/lib/telemetry/src/storybook-metadata.ts new file mode 100644 index 00000000000..ec288805c3c --- /dev/null +++ b/lib/telemetry/src/storybook-metadata.ts @@ -0,0 +1,202 @@ +import readPkgUp from 'read-pkg-up'; +import { detect, getNpmVersion } from 'detect-package-manager'; +import { + loadMainConfig, + getStorybookInfo, + getStorybookConfiguration, + getProjectRoot, +} from '@storybook/core-common'; +import type { StorybookConfig, PackageJson } from '@storybook/core-common'; + +import type { StorybookMetadata, Dependency, StorybookAddon } from './types'; +import { getActualPackageVersion, getActualPackageVersions } from './package-versions'; +import { getMonorepoType } from './get-monorepo-type'; + +let cachedMetadata: StorybookMetadata; +export const getStorybookMetadata = async (_configDir: string) => { + if (cachedMetadata) { + return cachedMetadata; + } + + const packageJson = readPkgUp.sync({ cwd: process.cwd() }).packageJson as PackageJson; + const configDir = + (_configDir || + (getStorybookConfiguration(packageJson.scripts.storybook, '-c', '--config-dir') as string)) ?? + '.storybook'; + const mainConfig = loadMainConfig({ configDir }); + cachedMetadata = await computeStorybookMetadata({ mainConfig, packageJson }); + return cachedMetadata; +}; + +export const metaFrameworks = { + next: 'Next', + 'react-scripts': 'CRA', + gatsby: 'Gatsby', + '@nuxtjs/storybook': 'nuxt', + '@nrwl/storybook': 'nx', + '@vue/cli-service': 'vue-cli', + '@sveltejs/kit': 'svelte-kit', +} as Record; + +// @TODO: This should be removed in 7.0 as the framework.options field in main.js will replace this +const getFrameworkOptions = (mainConfig: any) => { + const possibleOptions = [ + 'angular', + 'ember', + 'html', + 'preact', + 'react', + 'server', + 'svelte', + 'vue', + 'vue3', + 'webComponents', + ].map((opt) => `${opt}Options`); + + // eslint-disable-next-line no-restricted-syntax + for (const opt of possibleOptions) { + if (opt in mainConfig) { + return mainConfig[opt] as any; + } + } + + return undefined; +}; + +// Analyze a combination of information from main.js and package.json +// to provide telemetry over a Storybook project +export const computeStorybookMetadata = async ({ + packageJson, + mainConfig, +}: { + packageJson: PackageJson; + mainConfig: StorybookConfig & Record; +}): Promise => { + const metadata: Partial = { + generatedAt: new Date().getTime(), + builder: { name: 'webpack4' }, + hasCustomBabel: false, + hasCustomWebpack: false, + hasStaticDirs: false, + hasStorybookEslint: false, + refCount: 0, + }; + + const allDependencies = { + ...packageJson?.dependencies, + ...packageJson?.devDependencies, + ...packageJson?.peerDependencies, + }; + + const metaFramework = Object.keys(allDependencies).find((dep) => !!metaFrameworks[dep]); + if (metaFramework) { + const { version } = await getActualPackageVersion(metaFramework); + metadata.metaFramework = { + name: metaFrameworks[metaFramework], + packageName: metaFramework, + version, + }; + } + + const monorepoType = getMonorepoType(); + if (monorepoType) { + metadata.monorepo = monorepoType; + } + + try { + const packageManagerType = await detect({ cwd: getProjectRoot() }); + const packageManagerVerson = await getNpmVersion(packageManagerType); + + metadata.packageManager = { + type: packageManagerType, + version: packageManagerVerson, + }; + // Better be safe than sorry, some codebases/paths might end up breaking with something like "spawn pnpm ENOENT" + // so we just set the package manager if the detection is successful + // eslint-disable-next-line no-empty + } catch (err) {} + + metadata.hasCustomBabel = !!mainConfig.babel; + metadata.hasCustomWebpack = !!mainConfig.webpackFinal; + metadata.hasStaticDirs = !!mainConfig.staticDirs; + + if (mainConfig.typescript) { + metadata.typescriptOptions = mainConfig.typescript; + } + + if (mainConfig.core?.builder) { + const { builder } = mainConfig.core; + + metadata.builder = { + name: typeof builder === 'string' ? builder : builder.name, + options: typeof builder === 'string' ? undefined : builder?.options ?? undefined, + }; + } + + if (mainConfig.refs) { + metadata.refCount = Object.keys(mainConfig.refs).length; + } + + if (mainConfig.features) { + metadata.features = mainConfig.features; + } + + const addons: Record = {}; + if (mainConfig.addons) { + mainConfig.addons.forEach((addon) => { + let result; + let options; + if (typeof addon === 'string') { + result = addon.replace('/register', ''); + } else { + options = addon.options; + result = addon.name; + } + + addons[result] = { + options, + version: undefined, + }; + }); + } + + const addonVersions = await getActualPackageVersions(addons); + addonVersions.forEach(({ name, version }) => { + addons[name].version = version; + }); + + const addonNames = Object.keys(addons); + + // all Storybook deps minus the addons + const storybookPackages = Object.keys(allDependencies) + .filter((dep) => dep.includes('storybook') && !addonNames.includes(dep)) + .reduce((acc, dep) => { + return { + ...acc, + [dep]: { version: undefined }, + }; + }, {}) as Record; + + const storybookPackageVersions = await getActualPackageVersions(storybookPackages); + storybookPackageVersions.forEach(({ name, version }) => { + storybookPackages[name].version = version; + }); + + const language = allDependencies.typescript ? 'typescript' : 'javascript'; + + const hasStorybookEslint = !!allDependencies['eslint-plugin-storybook']; + + const storybookInfo = getStorybookInfo(packageJson); + return { + ...metadata, + storybookVersion: storybookInfo.version, + language, + storybookPackages, + framework: { + name: storybookInfo.framework, + options: getFrameworkOptions(mainConfig), + }, + addons, + hasStorybookEslint, + }; +}; diff --git a/lib/telemetry/src/telemetry.test.ts b/lib/telemetry/src/telemetry.test.ts new file mode 100644 index 00000000000..66ed9a8ba6a --- /dev/null +++ b/lib/telemetry/src/telemetry.test.ts @@ -0,0 +1,85 @@ +/* eslint-disable no-plusplus */ +import fetch from 'isomorphic-unfetch'; + +import { sendTelemetry } from './telemetry'; + +jest.mock('isomorphic-unfetch'); + +const fetchMock = fetch as jest.Mock; + +beforeEach(() => { + fetchMock.mockResolvedValue({ status: 200 }); +}); + +it('makes a fetch request with name and data', async () => { + fetchMock.mockClear(); + await sendTelemetry({ eventType: 'start', payload: { foo: 'bar' } }); + + expect(fetch).toHaveBeenCalledTimes(1); + const body = JSON.parse(fetchMock.mock.calls[0][1].body); + expect(body).toMatchObject({ + eventType: 'start', + payload: { foo: 'bar' }, + }); +}); + +it('retries if fetch fails with a 503', async () => { + fetchMock.mockClear().mockResolvedValueOnce({ status: 503 }); + await sendTelemetry( + { + eventType: 'start', + payload: { foo: 'bar' }, + }, + { retryDelay: 0 } + ); + + expect(fetch).toHaveBeenCalledTimes(2); +}); + +it('gives up if fetch repeatedly fails', async () => { + fetchMock.mockClear().mockResolvedValue({ status: 503 }); + await sendTelemetry( + { + eventType: 'start', + payload: { foo: 'bar' }, + }, + { retryDelay: 0 } + ); + + expect(fetch).toHaveBeenCalledTimes(4); +}); + +it('await all pending telemetry when passing in immediate = true', async () => { + let numberOfResolvedTasks = 0; + + // when we call sendTelemetry with immediate = true + // all pending tasks will be awaited + // to test this we add a few telemetry tasks that will be in the 'queue' + // we do NOT await these tasks! + sendTelemetry({ + eventType: 'init', + payload: { foo: 'bar' }, + }).then(() => { + numberOfResolvedTasks++; + }); + sendTelemetry({ + eventType: 'start', + payload: { foo: 'bar' }, + }).then(() => { + numberOfResolvedTasks++; + }); + + // here we await + await sendTelemetry( + { + eventType: 'error-dev', + payload: { foo: 'bar' }, + }, + { retryDelay: 0, immediate: true } + ).then(() => { + numberOfResolvedTasks++; + }); + + expect(fetch).toHaveBeenCalledTimes(3); + expect(numberOfResolvedTasks).toBe(3); +}); diff --git a/lib/telemetry/src/telemetry.ts b/lib/telemetry/src/telemetry.ts new file mode 100644 index 00000000000..161794a4e70 --- /dev/null +++ b/lib/telemetry/src/telemetry.ts @@ -0,0 +1,57 @@ +import originalFetch from 'isomorphic-unfetch'; +import retry from 'fetch-retry'; +import { nanoid } from 'nanoid'; +import { Options, TelemetryData } from './types'; +import { getAnonymousProjectId } from './anonymous-id'; + +const URL = 'https://storybook.js.org/event-log'; + +const fetch = retry(originalFetch); + +let tasks: Promise[] = []; + +// getStorybookMetadata -> packagejson + Main.js +// event specific data: sessionId, ip, etc.. +// send telemetry +const sessionId = nanoid(); + +export async function sendTelemetry( + data: TelemetryData, + options: Partial = { retryDelay: 1000, immediate: false } +) { + // We use this id so we can de-dupe events that arrive at the index multiple times due to the + // use of retries. There are situations in which the request "5xx"s (or times-out), but + // the server actually gets the request and stores it anyway. + + // flatten the data before we send it + const { payload, metadata, ...rest } = data; + const context = { + anonymousId: getAnonymousProjectId(), + inCI: process.env.CI === 'true', + }; + const eventId = nanoid(); + const body = { ...rest, eventId, sessionId, metadata, payload, context }; + let request: Promise; + + try { + request = fetch(URL, { + method: 'POST', + body: JSON.stringify(body), + headers: { 'Content-Type': 'application/json' }, + retries: 3, + retryOn: [503, 504], + retryDelay: (attempt: number) => 2 ** attempt * options.retryDelay, + }); + tasks.push(request); + + if (options.immediate) { + await Promise.all(tasks); + } else { + await request; + } + } catch (err) { + // + } finally { + tasks = tasks.filter((task) => task !== request); + } +} diff --git a/lib/telemetry/src/types.ts b/lib/telemetry/src/types.ts new file mode 100644 index 00000000000..60bc575f163 --- /dev/null +++ b/lib/telemetry/src/types.ts @@ -0,0 +1,71 @@ +import type { StorybookConfig, TypescriptOptions } from '@storybook/core-common'; +import type { PM } from 'detect-package-manager'; + +import type { MonorepoType } from './get-monorepo-type'; + +export type EventType = + | 'start' + | 'build' + | 'upgrade' + | 'init' + | 'error-build' + | 'error-dev' + | 'error-metadata'; + +export interface Dependency { + version: string; +} + +export interface StorybookAddon extends Dependency { + options: any; +} + +export type StorybookMetadata = { + storybookVersion: string; + generatedAt?: number; + language: 'typescript' | 'javascript'; + framework: { + name: string; + options?: any; + }; + builder?: { + name: string; + options?: Record; + }; + monorepo?: MonorepoType; + packageManager?: { + type: PM; + version: string; + }; + typescriptOptions?: Partial; + addons?: Record; + storybookPackages?: Record; + metaFramework?: { + name: string; + packageName: string; + version: string; + }; + hasStorybookEslint?: boolean; + hasStaticDirs?: boolean; + hasCustomWebpack?: boolean; + hasCustomBabel?: boolean; + features?: StorybookConfig['features']; + refCount?: number; +}; + +export interface Payload { + [key: string]: any; +} + +export interface Options { + retryDelay: number; + immediate: boolean; + configDir?: string; + enableCrashReports?: boolean; +} + +export interface TelemetryData { + eventType: EventType; + payload: Payload; + metadata?: StorybookMetadata; +} diff --git a/lib/telemetry/src/typings.d.ts b/lib/telemetry/src/typings.d.ts new file mode 100644 index 00000000000..2f4eb9cf4fd --- /dev/null +++ b/lib/telemetry/src/typings.d.ts @@ -0,0 +1 @@ +declare module 'global'; diff --git a/lib/telemetry/tsconfig.json b/lib/telemetry/tsconfig.json new file mode 100644 index 00000000000..fb14222847d --- /dev/null +++ b/lib/telemetry/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "types": [ + "node" + ] + }, + "include": [ + "src/**/*" + ], + "exclude": [ + "src/**/*.test.*", + "src/**/tests/**/*", + "src/**/__tests__/**/*", + "src/**/*.stories.*", + "src/**/*.mockdata.*", + "src/**/__testfixtures__/**" + ] +} \ No newline at end of file diff --git a/lib/theming/package.json b/lib/theming/package.json index c7730d86730..3b0879a65d0 100644 --- a/lib/theming/package.json +++ b/lib/theming/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/theming", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Core Storybook Components", "keywords": [ "storybook" @@ -40,7 +40,7 @@ "prepare": "ts-node ../../scripts/prebundle.ts" }, "dependencies": { - "@storybook/client-logger": "6.5.0-beta.1", + "@storybook/client-logger": "6.5.0-beta.4", "core-js": "^3.8.2", "regenerator-runtime": "^0.13.7" }, @@ -65,6 +65,6 @@ "access": "public" }, "bundlerEntrypoint": "./src/index.ts", - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/ui/package.json b/lib/ui/package.json index fcba0b5cbd8..81df81b4612 100644 --- a/lib/ui/package.json +++ b/lib/ui/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/ui", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "description": "Core Storybook UI", "keywords": [ "storybook" @@ -40,15 +40,15 @@ "prepare": "ts-node ../../scripts/prebundle.ts" }, "dependencies": { - "@storybook/addons": "6.5.0-beta.1", - "@storybook/api": "6.5.0-beta.1", - "@storybook/channels": "6.5.0-beta.1", - "@storybook/client-logger": "6.5.0-beta.1", - "@storybook/components": "6.5.0-beta.1", - "@storybook/core-events": "6.5.0-beta.1", - "@storybook/router": "6.5.0-beta.1", + "@storybook/addons": "6.5.0-beta.4", + "@storybook/api": "6.5.0-beta.4", + "@storybook/channels": "6.5.0-beta.4", + "@storybook/client-logger": "6.5.0-beta.4", + "@storybook/components": "6.5.0-beta.4", + "@storybook/core-events": "6.5.0-beta.4", + "@storybook/router": "6.5.0-beta.4", "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.5.0-beta.1", + "@storybook/theming": "6.5.0-beta.4", "core-js": "^3.8.2", "regenerator-runtime": "^0.13.7", "resolve-from": "^5.0.0" @@ -83,6 +83,6 @@ "access": "public" }, "bundlerEntrypoint": "./src/index.tsx", - "gitHead": "85bcae3041a0664d7c0ee4756241e29ad1063a9a", + "gitHead": "55247a8e36da7061bfced80c588a539d3fda3f04", "sbmodern": "dist/modern/index.js" } diff --git a/lib/ui/src/app.stories.tsx b/lib/ui/src/app.stories.tsx index 29cce7d842b..05f180c6263 100644 --- a/lib/ui/src/app.stories.tsx +++ b/lib/ui/src/app.stories.tsx @@ -43,6 +43,7 @@ export const Default = () => ( panelPosition: 'right', showNav: true, showPanel: true, + showTabs: true, }} panelCount={0} docsOnly={false} @@ -70,6 +71,7 @@ export const LoadingState = () => ( panelPosition: 'right', showNav: true, showPanel: true, + showTabs: true, }} panelCount={0} docsOnly={false} diff --git a/lib/ui/src/components/layout/app.mockdata.tsx b/lib/ui/src/components/layout/app.mockdata.tsx index 90b60171efc..43594398650 100644 --- a/lib/ui/src/components/layout/app.mockdata.tsx +++ b/lib/ui/src/components/layout/app.mockdata.tsx @@ -154,6 +154,7 @@ export const mockProps: DesktopProps = { panelPosition: 'right', isToolshown: true, initialActive: 'canvas', + showTabs: true, }, viewMode: 'story', panelCount: 2, @@ -184,6 +185,7 @@ export const realProps: DesktopProps = { panelPosition: 'right', isToolshown: true, initialActive: 'canvas', + showTabs: true, }, viewMode: 'story', panelCount: 2, diff --git a/lib/ui/src/components/preview/preview.mockdata.tsx b/lib/ui/src/components/preview/preview.mockdata.tsx index 83b437c6e06..cbcca687503 100644 --- a/lib/ui/src/components/preview/preview.mockdata.tsx +++ b/lib/ui/src/components/preview/preview.mockdata.tsx @@ -47,6 +47,7 @@ export const previewProps: PreviewProps = { options: { isFullscreen: false, isToolshown: true, + showTabs: true, }, withLoader: false, docsOnly: false, diff --git a/lib/ui/src/components/preview/preview.stories.tsx b/lib/ui/src/components/preview/preview.stories.tsx index 1157b783cd3..331181cc9ee 100644 --- a/lib/ui/src/components/preview/preview.stories.tsx +++ b/lib/ui/src/components/preview/preview.stories.tsx @@ -132,35 +132,21 @@ export const HideAllDefaultTools = () => ( export const WithCanvasTab = () => ( {({ api }: Combo) => { - return ( - ({}), - }} - /> - ); + return ({}) }} />; }} ); export const WithTabs = () => ; -export const WithToolbarExclusions = () => ( +export const WithTabsHidden = () => ( {({ api }: Combo) => { return ( ({}), - getQueryParam: (key) => { - const params = { toolbarExclude: 'canvas,fullscreen' }; - return params[key]; - }, - }} + options={{ ...previewProps.options, showTabs: false }} + api={{ ...api, getElements: () => ({}) }} /> ); }} diff --git a/lib/ui/src/components/preview/preview.tsx b/lib/ui/src/components/preview/preview.tsx index de966bc29b4..f2407a20010 100644 --- a/lib/ui/src/components/preview/preview.tsx +++ b/lib/ui/src/components/preview/preview.tsx @@ -147,7 +147,8 @@ const Preview = React.memo((props) => { const tabs = useTabs(previewId, baseUrl, withLoader, getElements, story); const shouldScale = viewMode === 'story'; - const { isToolshown } = options; + const { isToolshown, showTabs = true } = options; + const visibleTabsInToolbar = showTabs ? tabs : []; const previousStoryId = useRef(storyId); const previousViewMode = useRef(viewMode); @@ -181,7 +182,13 @@ const Preview = React.memo((props) => { )} - + {tabs.map(({ render: Render, match, ...t }, i) => { // @ts-ignore diff --git a/lib/ui/src/components/preview/toolbar.tsx b/lib/ui/src/components/preview/toolbar.tsx index aa2e6ddc680..7332a61d34f 100644 --- a/lib/ui/src/components/preview/toolbar.tsx +++ b/lib/ui/src/components/preview/toolbar.tsx @@ -19,8 +19,6 @@ import { menuTool } from './tools/menu'; import { addonsTool } from './tools/addons'; import { remountTool } from './tools/remount'; -const TOOLBAR_EXCLUSION_PARAM = 'toolbarExclude'; - export const getTools = (getFn: API['getElements']) => Object.values(getFn(types.TOOL)); export const getToolsExtra = (getFn: API['getElements']) => @@ -118,8 +116,7 @@ const useTools = ( viewMode: PreviewProps['viewMode'], story: PreviewProps['story'], location: PreviewProps['location'], - path: PreviewProps['path'], - getQueryParam: API['getQueryParam'] + path: PreviewProps['path'] ) => { const toolsFromConfig = useMemo(() => getTools(getElements), [getElements]); const toolsExtraFromConfig = useMemo(() => getToolsExtra(getElements), [getElements]); @@ -133,20 +130,9 @@ const useTools = ( [defaultToolsExtra, toolsExtraFromConfig] ); - const toolbarExclusions: string[] = - getQueryParam && getQueryParam(TOOLBAR_EXCLUSION_PARAM) - ? getQueryParam(TOOLBAR_EXCLUSION_PARAM).split(',') - : []; - return useMemo(() => { return story && story.parameters - ? filterTools(tools, toolsExtra, tabs, { - viewMode, - story, - location, - path, - toolbarExclusions, - }) + ? filterTools(tools, toolsExtra, tabs, { viewMode, story, location, path }) : { left: tools, right: toolsExtra }; }, [viewMode, story, location, path, tools, toolsExtra, tabs]); }; @@ -160,15 +146,7 @@ export interface ToolData { export const ToolRes: FunctionComponent = React.memo( ({ api, story, tabs, isShown, location, path, viewMode }) => { - const { left, right } = useTools( - api.getElements, - tabs, - viewMode, - story, - location, - path, - api.getQueryParam - ); + const { left, right } = useTools(api.getElements, tabs, viewMode, story, location, path); return left || right ? ( @@ -213,24 +191,16 @@ export function filterTools( story, location, path, - toolbarExclusions, }: { viewMode: State['viewMode']; story: PreviewProps['story']; location: State['location']; path: State['path']; - toolbarExclusions: string[]; } ) { - const isToolIncluded = (id: string) => - toolbarExclusions.filter((exclusionKey) => id.match(new RegExp(`^${exclusionKey}.*`))) - .length === 0; - - const filteredTabs = tabs.filter((tab) => isToolIncluded(tab.id)); - const toolsLeft = [ menuTool, - filteredTabs.filter((p) => !p.hidden).length >= 1 && createTabsTool(filteredTabs), + tabs.filter((p) => !p.hidden).length >= 1 && createTabsTool(tabs), ...tools, ]; const toolsRight = [...toolsExtra]; @@ -245,8 +215,7 @@ export function filterTools( location, path, })) && - !toolbarItemHasBeenExcluded(item, story) && - isToolIncluded(item.id); + !toolbarItemHasBeenExcluded(item, story); const left = toolsLeft.filter(filter); const right = toolsRight.filter(filter); diff --git a/lib/ui/src/components/preview/utils/types.tsx b/lib/ui/src/components/preview/utils/types.tsx index edc557a4d36..d9cc2add2e1 100644 --- a/lib/ui/src/components/preview/utils/types.tsx +++ b/lib/ui/src/components/preview/utils/types.tsx @@ -1,4 +1,4 @@ -import { State, API, Story, Group } from '@storybook/api'; +import type { State, API, Story, Group } from '@storybook/api'; import { FunctionComponent, ReactNode } from 'react'; export type ViewMode = State['viewMode']; @@ -13,6 +13,7 @@ export interface PreviewProps { options: { isFullscreen: boolean; isToolshown: boolean; + showTabs: boolean; }; id: string; path: string; diff --git a/lib/ui/src/components/sidebar/__tests__/data.test.ts b/lib/ui/src/components/sidebar/__tests__/data.test.ts index 918542cff32..37049948496 100644 --- a/lib/ui/src/components/sidebar/__tests__/data.test.ts +++ b/lib/ui/src/components/sidebar/__tests__/data.test.ts @@ -5,6 +5,7 @@ type Item = StoriesHash[keyof StoriesHash]; const docsOnly = { parameters: { docsOnly: true } }; const root: Item = { + type: 'root', id: 'root', name: 'root', depth: 0, @@ -14,6 +15,7 @@ const root: Item = { isLeaf: false, }; const a: Item = { + type: 'component', id: 'a', name: 'a', depth: 1, @@ -24,6 +26,7 @@ const a: Item = { children: ['a1'], }; const a1: Item = { + type: 'story', id: 'a1', name: 'a1', kind: 'a', @@ -35,6 +38,7 @@ const a1: Item = { args: {}, }; const b: Item = { + type: 'component', id: 'b', name: 'b', depth: 1, @@ -45,6 +49,7 @@ const b: Item = { children: ['b1', 'b2'], }; const b1: Item = { + type: 'story', id: 'b1', name: 'b1', kind: 'b', @@ -56,6 +61,7 @@ const b1: Item = { args: {}, }; const b2: Item = { + type: 'story', id: 'b2', name: 'b2', kind: 'b', @@ -97,6 +103,7 @@ describe('collapse all stories', () => { const expected: StoriesHash = { a1: { + type: 'component', id: 'a1', depth: 1, name: 'a', @@ -109,6 +116,7 @@ describe('collapse all stories', () => { args: {}, }, b1: { + type: 'component', id: 'b1', depth: 1, name: 'b', @@ -121,6 +129,7 @@ describe('collapse all stories', () => { args: {}, }, root: { + type: 'root', id: 'root', name: 'root', depth: 0, @@ -143,6 +152,7 @@ describe('collapse all stories', () => { const collapsed = collapseAllStories(hasDocsOnly); expect(collapsed.a1).toEqual({ + type: 'component', id: 'a1', name: 'a', kind: 'a', @@ -158,6 +168,7 @@ describe('collapse all stories', () => { it('collapses mixtures of leaf and non-leaf children', () => { const mixedRoot: Item = { + type: 'root', id: 'root', name: 'root', depth: 0, @@ -177,6 +188,7 @@ describe('collapse all stories', () => { expect(collapsed).toEqual({ a1: { + type: 'component', id: 'a1', depth: 1, name: 'a', @@ -189,6 +201,7 @@ describe('collapse all stories', () => { args: {}, }, b1: { + type: 'story', id: 'b1', name: 'b1', kind: 'b', @@ -200,6 +213,7 @@ describe('collapse all stories', () => { args: {}, }, root: { + type: 'root', id: 'root', name: 'root', depth: 0, diff --git a/nx.json b/nx.json index 01c2cf39ed1..5aff958594a 100644 --- a/nx.json +++ b/nx.json @@ -236,6 +236,9 @@ "@storybook/source-loader": { "implicitDependencies": [] }, + "@storybook/telemetry": { + "implicitDependencies": [] + }, "@storybook/theming": { "implicitDependencies": [] }, diff --git a/package.json b/package.json index 76252ed1a4c..fe825254305 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@storybook/root", - "version": "6.5.0-beta.1", + "version": "6.5.0-beta.4", "private": true, "description": "Storybook is an open source tool for developing UI components in isolation for React, Vue and Angular. It makes building stunning UIs organized and efficient.", "keywords": [ @@ -182,6 +182,7 @@ "@storybook/source-loader": "workspace:*", "@storybook/store": "workspace:*", "@storybook/svelte": "workspace:*", + "@storybook/telemetry": "workspace:*", "@storybook/testing-library": "^0.0.7", "@storybook/theming": "workspace:*", "@storybook/ui": "workspace:*", diff --git a/scripts/build-manager-config/main.js b/scripts/build-manager-config/main.js index 5fc25e4e72f..e28a43bc925 100644 --- a/scripts/build-manager-config/main.js +++ b/scripts/build-manager-config/main.js @@ -1,4 +1,7 @@ module.exports = { // Should be kept in sync with addons listed in `baseGenerator.ts` addons: ['@storybook/addon-links', '@storybook/addon-essentials'], + core: { + disableTelemetry: true, + }, }; diff --git a/scripts/build-manager.js b/scripts/build-manager.js index 19f619f6e1a..1e12b2b9417 100644 --- a/scripts/build-manager.js +++ b/scripts/build-manager.js @@ -2,14 +2,25 @@ const { buildStaticStandalone } = require('../lib/core-server/dist/cjs/build-sta process.env.NODE_ENV = 'production'; -buildStaticStandalone({ - ignorePreview: true, - outputDir: './lib/manager-webpack4/prebuilt', - configDir: './scripts/build-manager-config', -}); +const logger = console; -buildStaticStandalone({ - ignorePreview: true, - outputDir: './lib/manager-webpack5/prebuilt', - configDir: './scripts/build-manager-config', +const run = async () => { + logger.log('Building Webpack4 Manager'); + await buildStaticStandalone({ + ignorePreview: true, + outputDir: './lib/manager-webpack4/prebuilt', + configDir: './scripts/build-manager-config', + }); + + logger.log('Building Webpack5 Manager'); + await buildStaticStandalone({ + ignorePreview: true, + outputDir: './lib/manager-webpack5/prebuilt', + configDir: './scripts/build-manager-config', + }); +}; + +run().catch((err) => { + logger.log(err); + process.exit(1); }); diff --git a/scripts/verdaccio.yaml b/scripts/verdaccio.yaml index 6cded738b0e..b26f00d5a59 100644 --- a/scripts/verdaccio.yaml +++ b/scripts/verdaccio.yaml @@ -79,6 +79,14 @@ packages: access: $all publish: $all proxy: npmjs + '@storybook/expect': + access: $all + publish: $all + proxy: npmjs + '@storybook/jest': + access: $all + publish: $all + proxy: npmjs # storybook packages are NOT proxied to global registry # allowing us to republish any version during tests diff --git a/workspace.json b/workspace.json index 9de09d99dea..8ed393c0501 100644 --- a/workspace.json +++ b/workspace.json @@ -289,6 +289,10 @@ "root": "lib/store", "type": "library" }, + "@storybook/telemetry": { + "root": "lib/telemetry", + "type": "library" + }, "@storybook/theming": { "root": "lib/theming", "type": "library" diff --git a/yarn.lock b/yarn.lock index 429bca7d970..8c1cadb92ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6413,18 +6413,18 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-a11y@6.5.0-beta.1, @storybook/addon-a11y@workspace:*, @storybook/addon-a11y@workspace:addons/a11y": +"@storybook/addon-a11y@6.5.0-beta.4, @storybook/addon-a11y@workspace:*, @storybook/addon-a11y@workspace:addons/a11y": version: 0.0.0-use.local resolution: "@storybook/addon-a11y@workspace:addons/a11y" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/channels": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/channels": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/theming": 6.5.0-beta.4 "@testing-library/react": ^11.2.2 "@types/webpack-env": ^1.16.0 axe-core: ^4.2.0 @@ -6446,17 +6446,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-actions@6.5.0-beta.1, @storybook/addon-actions@workspace:*, @storybook/addon-actions@workspace:addons/actions": +"@storybook/addon-actions@6.5.0-beta.4, @storybook/addon-actions@workspace:*, @storybook/addon-actions@workspace:addons/actions": version: 0.0.0-use.local resolution: "@storybook/addon-actions@workspace:addons/actions" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/theming": 6.5.0-beta.4 "@types/lodash": ^4.14.167 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 @@ -6482,17 +6482,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-backgrounds@6.5.0-beta.1, @storybook/addon-backgrounds@workspace:*, @storybook/addon-backgrounds@workspace:addons/backgrounds": +"@storybook/addon-backgrounds@6.5.0-beta.4, @storybook/addon-backgrounds@workspace:*, @storybook/addon-backgrounds@workspace:addons/backgrounds": version: 0.0.0-use.local resolution: "@storybook/addon-backgrounds@workspace:addons/backgrounds" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/theming": 6.5.0-beta.4 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 global: ^4.4.0 @@ -6511,19 +6511,19 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-controls@6.5.0-beta.1, @storybook/addon-controls@workspace:*, @storybook/addon-controls@workspace:addons/controls": +"@storybook/addon-controls@6.5.0-beta.4, @storybook/addon-controls@workspace:*, @storybook/addon-controls@workspace:addons/controls": version: 0.0.0-use.local resolution: "@storybook/addon-controls@workspace:addons/controls" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/node-logger": 6.5.0-beta.1 - "@storybook/store": 6.5.0-beta.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/node-logger": 6.5.0-beta.4 + "@storybook/store": 6.5.0-beta.4 + "@storybook/theming": 6.5.0-beta.4 core-js: ^3.8.2 lodash: ^4.17.21 ts-dedent: ^2.0.0 @@ -6538,7 +6538,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-docs@6.5.0-beta.1, @storybook/addon-docs@workspace:*, @storybook/addon-docs@workspace:addons/docs": +"@storybook/addon-docs@6.5.0-beta.4, @storybook/addon-docs@workspace:*, @storybook/addon-docs@workspace:addons/docs": version: 0.0.0-use.local resolution: "@storybook/addon-docs@workspace:addons/docs" dependencies: @@ -6547,21 +6547,21 @@ __metadata: "@babel/preset-env": ^7.12.11 "@jest/transform": ^26.6.2 "@mdx-js/react": ^1.6.22 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/docs-tools": 6.5.0-beta.1 + "@storybook/docs-tools": 6.5.0-beta.4 "@storybook/mdx1-csf": canary "@storybook/mdx2-csf": canary - "@storybook/node-logger": 6.5.0-beta.1 - "@storybook/postinstall": 6.5.0-beta.1 - "@storybook/preview-web": 6.5.0-beta.1 - "@storybook/source-loader": 6.5.0-beta.1 - "@storybook/store": 6.5.0-beta.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/node-logger": 6.5.0-beta.4 + "@storybook/postinstall": 6.5.0-beta.4 + "@storybook/preview-web": 6.5.0-beta.4 + "@storybook/source-loader": 6.5.0-beta.4 + "@storybook/store": 6.5.0-beta.4 + "@storybook/theming": 6.5.0-beta.4 "@types/util-deprecate": ^1.0.0 babel-loader: ^8.0.0 core-js: ^3.8.2 @@ -6587,24 +6587,24 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-essentials@6.5.0-beta.1, @storybook/addon-essentials@workspace:*, @storybook/addon-essentials@workspace:addons/essentials": +"@storybook/addon-essentials@6.5.0-beta.4, @storybook/addon-essentials@workspace:*, @storybook/addon-essentials@workspace:addons/essentials": version: 0.0.0-use.local resolution: "@storybook/addon-essentials@workspace:addons/essentials" dependencies: "@babel/core": ^7.12.10 - "@storybook/addon-actions": 6.5.0-beta.1 - "@storybook/addon-backgrounds": 6.5.0-beta.1 - "@storybook/addon-controls": 6.5.0-beta.1 - "@storybook/addon-docs": 6.5.0-beta.1 - "@storybook/addon-measure": 6.5.0-beta.1 - "@storybook/addon-outline": 6.5.0-beta.1 - "@storybook/addon-toolbars": 6.5.0-beta.1 - "@storybook/addon-viewport": 6.5.0-beta.1 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/node-logger": 6.5.0-beta.1 - "@storybook/vue": 6.5.0-beta.1 + "@storybook/addon-actions": 6.5.0-beta.4 + "@storybook/addon-backgrounds": 6.5.0-beta.4 + "@storybook/addon-controls": 6.5.0-beta.4 + "@storybook/addon-docs": 6.5.0-beta.4 + "@storybook/addon-measure": 6.5.0-beta.4 + "@storybook/addon-outline": 6.5.0-beta.4 + "@storybook/addon-toolbars": 6.5.0-beta.4 + "@storybook/addon-viewport": 6.5.0-beta.4 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/node-logger": 6.5.0-beta.4 + "@storybook/vue": 6.5.0-beta.4 "@types/jest": ^26.0.16 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 @@ -6667,22 +6667,22 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-interactions@6.5.0-beta.1, @storybook/addon-interactions@workspace:*, @storybook/addon-interactions@workspace:addons/interactions": +"@storybook/addon-interactions@6.5.0-beta.4, @storybook/addon-interactions@workspace:*, @storybook/addon-interactions@workspace:addons/interactions": version: 0.0.0-use.local resolution: "@storybook/addon-interactions@workspace:addons/interactions" dependencies: "@devtools-ds/object-inspector": ^1.1.2 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/instrumenter": 6.5.0-beta.1 + "@storybook/instrumenter": 6.5.0-beta.4 "@storybook/jest": ^0.0.5 "@storybook/testing-library": ^0.0.7 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/theming": 6.5.0-beta.4 core-js: ^3.8.2 formik: ^2.2.9 global: ^4.4.0 @@ -6700,16 +6700,16 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-jest@6.5.0-beta.1, @storybook/addon-jest@workspace:*, @storybook/addon-jest@workspace:addons/jest": +"@storybook/addon-jest@6.5.0-beta.4, @storybook/addon-jest@workspace:*, @storybook/addon-jest@workspace:addons/jest": version: 0.0.0-use.local resolution: "@storybook/addon-jest@workspace:addons/jest" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 + "@storybook/theming": 6.5.0-beta.4 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 global: ^4.4.0 @@ -6727,15 +6727,15 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-links@6.5.0-beta.1, @storybook/addon-links@workspace:*, @storybook/addon-links@workspace:addons/links": +"@storybook/addon-links@6.5.0-beta.4, @storybook/addon-links@workspace:*, @storybook/addon-links@workspace:addons/links": version: 0.0.0-use.local resolution: "@storybook/addon-links@workspace:addons/links" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/router": 6.5.0-beta.1 + "@storybook/router": 6.5.0-beta.4 "@types/qs": ^6.9.5 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 @@ -6755,15 +6755,15 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-measure@6.5.0-beta.1, @storybook/addon-measure@workspace:*, @storybook/addon-measure@workspace:addons/measure": +"@storybook/addon-measure@6.5.0-beta.4, @storybook/addon-measure@workspace:*, @storybook/addon-measure@workspace:addons/measure": version: 0.0.0-use.local resolution: "@storybook/addon-measure@workspace:addons/measure" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 @@ -6779,15 +6779,15 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-outline@6.5.0-beta.1, @storybook/addon-outline@workspace:*, @storybook/addon-outline@workspace:addons/outline": +"@storybook/addon-outline@6.5.0-beta.4, @storybook/addon-outline@workspace:*, @storybook/addon-outline@workspace:addons/outline": version: 0.0.0-use.local resolution: "@storybook/addon-outline@workspace:addons/outline" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 @@ -6818,20 +6818,20 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-storyshots-puppeteer@6.5.0-beta.1, @storybook/addon-storyshots-puppeteer@workspace:*, @storybook/addon-storyshots-puppeteer@workspace:addons/storyshots/storyshots-puppeteer": +"@storybook/addon-storyshots-puppeteer@6.5.0-beta.4, @storybook/addon-storyshots-puppeteer@workspace:*, @storybook/addon-storyshots-puppeteer@workspace:addons/storyshots/storyshots-puppeteer": version: 0.0.0-use.local resolution: "@storybook/addon-storyshots-puppeteer@workspace:addons/storyshots/storyshots-puppeteer" dependencies: "@axe-core/puppeteer": ^4.2.0 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/node-logger": 6.5.0-beta.1 + "@storybook/node-logger": 6.5.0-beta.4 "@types/jest-image-snapshot": ^4.1.3 "@types/puppeteer": ^5.4.0 core-js: ^3.8.2 jest-image-snapshot: ^4.3.0 regenerator-runtime: ^0.13.7 peerDependencies: - "@storybook/addon-storyshots": 6.5.0-beta.1 + "@storybook/addon-storyshots": 6.5.0-beta.4 puppeteer: ^2.0.0 || ^3.0.0 peerDependenciesMeta: puppeteer: @@ -6839,7 +6839,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-storyshots@6.5.0-beta.1, @storybook/addon-storyshots@workspace:*, @storybook/addon-storyshots@workspace:addons/storyshots/storyshots-core": +"@storybook/addon-storyshots@6.5.0-beta.4, @storybook/addon-storyshots@workspace:*, @storybook/addon-storyshots@workspace:addons/storyshots/storyshots-core": version: 0.0.0-use.local resolution: "@storybook/addon-storyshots@workspace:addons/storyshots/storyshots-core" dependencies: @@ -6847,17 +6847,17 @@ __metadata: "@angular/platform-browser-dynamic": ^11.2.0 "@emotion/jest": ^11.8.0 "@jest/transform": ^26.6.2 - "@storybook/addon-docs": 6.5.0-beta.1 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/angular": 6.5.0-beta.1 + "@storybook/addon-docs": 6.5.0-beta.4 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/angular": 6.5.0-beta.4 "@storybook/babel-plugin-require-context-hook": 1.0.1 - "@storybook/client-api": 6.5.0-beta.1 - "@storybook/core-client": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 + "@storybook/client-api": 6.5.0-beta.4 + "@storybook/core-client": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/react": 6.5.0-beta.1 - "@storybook/vue": 6.5.0-beta.1 - "@storybook/vue3": 6.5.0-beta.1 + "@storybook/react": 6.5.0-beta.4 + "@storybook/vue": 6.5.0-beta.4 + "@storybook/vue3": 6.5.0-beta.4 "@types/glob": ^7.1.3 "@types/jest": ^26.0.16 "@types/jest-specific-snapshot": ^0.5.3 @@ -6929,17 +6929,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-storysource@6.5.0-beta.1, @storybook/addon-storysource@workspace:*, @storybook/addon-storysource@workspace:addons/storysource": +"@storybook/addon-storysource@6.5.0-beta.4, @storybook/addon-storysource@workspace:*, @storybook/addon-storysource@workspace:addons/storysource": version: 0.0.0-use.local resolution: "@storybook/addon-storysource@workspace:addons/storysource" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/router": 6.5.0-beta.1 - "@storybook/source-loader": 6.5.0-beta.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/router": 6.5.0-beta.4 + "@storybook/source-loader": 6.5.0-beta.4 + "@storybook/theming": 6.5.0-beta.4 "@types/react": ^16.14.23 "@types/react-syntax-highlighter": ^11.0.5 core-js: ^3.8.2 @@ -6959,15 +6959,15 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-toolbars@6.5.0-beta.1, @storybook/addon-toolbars@workspace:*, @storybook/addon-toolbars@workspace:addons/toolbars": +"@storybook/addon-toolbars@6.5.0-beta.4, @storybook/addon-toolbars@workspace:*, @storybook/addon-toolbars@workspace:addons/toolbars": version: 0.0.0-use.local resolution: "@storybook/addon-toolbars@workspace:addons/toolbars" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/theming": 6.5.0-beta.4 core-js: ^3.8.2 regenerator-runtime: ^0.13.7 peerDependencies: @@ -6981,16 +6981,16 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addon-viewport@6.5.0-beta.1, @storybook/addon-viewport@workspace:*, @storybook/addon-viewport@workspace:addons/viewport": +"@storybook/addon-viewport@6.5.0-beta.4, @storybook/addon-viewport@workspace:*, @storybook/addon-viewport@workspace:addons/viewport": version: 0.0.0-use.local resolution: "@storybook/addon-viewport@workspace:addons/viewport" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 + "@storybook/theming": 6.5.0-beta.4 core-js: ^3.8.2 global: ^4.4.0 memoizerific: ^1.11.3 @@ -7007,17 +7007,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/addons@6.5.0-beta.1, @storybook/addons@workspace:*, @storybook/addons@workspace:lib/addons": +"@storybook/addons@6.5.0-beta.4, @storybook/addons@workspace:*, @storybook/addons@workspace:lib/addons": version: 0.0.0-use.local resolution: "@storybook/addons@workspace:lib/addons" dependencies: - "@storybook/api": 6.5.0-beta.1 - "@storybook/channels": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 + "@storybook/api": 6.5.0-beta.4 + "@storybook/channels": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/router": 6.5.0-beta.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/router": 6.5.0-beta.4 + "@storybook/theming": 6.5.0-beta.4 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 global: ^4.4.0 @@ -7050,7 +7050,29 @@ __metadata: languageName: node linkType: hard -"@storybook/angular@6.5.0-beta.1, @storybook/angular@workspace:*, @storybook/angular@workspace:app/angular": +"@storybook/addons@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/addons@npm:6.5.0-beta.1" + dependencies: + "@storybook/api": 6.5.0-beta.1 + "@storybook/channels": 6.5.0-beta.1 + "@storybook/client-logger": 6.5.0-beta.1 + "@storybook/core-events": 6.5.0-beta.1 + "@storybook/csf": 0.0.2--canary.4566f4d.1 + "@storybook/router": 6.5.0-beta.1 + "@storybook/theming": 6.5.0-beta.1 + "@types/webpack-env": ^1.16.0 + core-js: ^3.8.2 + global: ^4.4.0 + regenerator-runtime: ^0.13.7 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 041488f180946cd60db503c9cf7ab37540ea4f9d7fb1d271573cca465bb7a544953cab2191472bed10a5ec43f5fc41ba062e4fa758908c034aa0f1b7e19bc707 + languageName: node + linkType: hard + +"@storybook/angular@6.5.0-beta.4, @storybook/angular@workspace:*, @storybook/angular@workspace:app/angular": version: 0.0.0-use.local resolution: "@storybook/angular@workspace:app/angular" dependencies: @@ -7066,18 +7088,18 @@ __metadata: "@angular/platform-browser": ^11.2.14 "@angular/platform-browser-dynamic": ^11.2.14 "@nrwl/workspace": ^11.6.3 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/core-client": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 - "@storybook/core-server": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/core-client": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 + "@storybook/core-server": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/docs-tools": 6.5.0-beta.1 - "@storybook/node-logger": 6.5.0-beta.1 + "@storybook/docs-tools": 6.5.0-beta.4 + "@storybook/node-logger": 6.5.0-beta.4 "@storybook/semver": ^7.3.2 - "@storybook/store": 6.5.0-beta.1 + "@storybook/store": 6.5.0-beta.4 "@types/autoprefixer": ^9.7.2 "@types/node": ^14.14.20 || ^16.0.0 "@types/react": ^16.14.23 @@ -7135,17 +7157,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/api@6.5.0-beta.1, @storybook/api@workspace:*, @storybook/api@workspace:lib/api": +"@storybook/api@6.5.0-beta.4, @storybook/api@workspace:*, @storybook/api@workspace:lib/api": version: 0.0.0-use.local resolution: "@storybook/api@workspace:lib/api" dependencies: - "@storybook/channels": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 + "@storybook/channels": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/router": 6.5.0-beta.1 + "@storybook/router": 6.5.0-beta.4 "@storybook/semver": ^7.3.2 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/theming": 6.5.0-beta.4 "@types/lodash": ^4.14.167 "@types/qs": ^6 "@types/semver": ^7.3.4 @@ -7196,6 +7218,34 @@ __metadata: languageName: node linkType: hard +"@storybook/api@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/api@npm:6.5.0-beta.1" + dependencies: + "@storybook/channels": 6.5.0-beta.1 + "@storybook/client-logger": 6.5.0-beta.1 + "@storybook/core-events": 6.5.0-beta.1 + "@storybook/csf": 0.0.2--canary.4566f4d.1 + "@storybook/router": 6.5.0-beta.1 + "@storybook/semver": ^7.3.2 + "@storybook/theming": 6.5.0-beta.1 + core-js: ^3.8.2 + fast-deep-equal: ^3.1.3 + global: ^4.4.0 + lodash: ^4.17.21 + memoizerific: ^1.11.3 + regenerator-runtime: ^0.13.7 + store2: ^2.12.0 + telejson: ^5.3.3 + ts-dedent: ^2.0.0 + util-deprecate: ^1.0.2 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 17a8cb9f3bfcda56a7a31c77c8ce9fe3f22757853b8900c5cb00ffef70a27c4b96973f1eb24272b27163b8c4944acc42a59cbc167df0258105a792eab40326ad + languageName: node + linkType: hard + "@storybook/babel-plugin-require-context-hook@npm:1.0.1": version: 1.0.1 resolution: "@storybook/babel-plugin-require-context-hook@npm:1.0.1" @@ -7203,27 +7253,27 @@ __metadata: languageName: node linkType: hard -"@storybook/builder-webpack4@6.5.0-beta.1, @storybook/builder-webpack4@workspace:lib/builder-webpack4": +"@storybook/builder-webpack4@6.5.0-beta.4, @storybook/builder-webpack4@workspace:lib/builder-webpack4": version: 0.0.0-use.local resolution: "@storybook/builder-webpack4@workspace:lib/builder-webpack4" dependencies: "@babel/core": ^7.12.10 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/channel-postmessage": 6.5.0-beta.1 - "@storybook/channels": 6.5.0-beta.1 - "@storybook/client-api": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 - "@storybook/node-logger": 6.5.0-beta.1 - "@storybook/preview-web": 6.5.0-beta.1 - "@storybook/router": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/channel-postmessage": 6.5.0-beta.4 + "@storybook/channels": 6.5.0-beta.4 + "@storybook/client-api": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 + "@storybook/node-logger": 6.5.0-beta.4 + "@storybook/preview-web": 6.5.0-beta.4 + "@storybook/router": 6.5.0-beta.4 "@storybook/semver": ^7.3.2 - "@storybook/store": 6.5.0-beta.1 - "@storybook/theming": 6.5.0-beta.1 - "@storybook/ui": 6.5.0-beta.1 + "@storybook/store": 6.5.0-beta.4 + "@storybook/theming": 6.5.0-beta.4 + "@storybook/ui": 6.5.0-beta.4 "@types/case-sensitive-paths-webpack-plugin": ^2.1.4 "@types/node": ^14.0.10 || ^16.0.0 "@types/terser-webpack-plugin": ^4.2.0 @@ -7268,26 +7318,26 @@ __metadata: languageName: unknown linkType: soft -"@storybook/builder-webpack5@6.5.0-beta.1, @storybook/builder-webpack5@workspace:lib/builder-webpack5": +"@storybook/builder-webpack5@6.5.0-beta.4, @storybook/builder-webpack5@workspace:lib/builder-webpack5": version: 0.0.0-use.local resolution: "@storybook/builder-webpack5@workspace:lib/builder-webpack5" dependencies: "@babel/core": ^7.12.10 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/channel-postmessage": 6.5.0-beta.1 - "@storybook/channels": 6.5.0-beta.1 - "@storybook/client-api": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 - "@storybook/node-logger": 6.5.0-beta.1 - "@storybook/preview-web": 6.5.0-beta.1 - "@storybook/router": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/channel-postmessage": 6.5.0-beta.4 + "@storybook/channels": 6.5.0-beta.4 + "@storybook/client-api": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 + "@storybook/node-logger": 6.5.0-beta.4 + "@storybook/preview-web": 6.5.0-beta.4 + "@storybook/router": 6.5.0-beta.4 "@storybook/semver": ^7.3.2 - "@storybook/store": 6.5.0-beta.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/store": 6.5.0-beta.4 + "@storybook/theming": 6.5.0-beta.4 "@types/case-sensitive-paths-webpack-plugin": ^2.1.4 "@types/node": ^14.0.10 || ^16.0.0 "@types/terser-webpack-plugin": ^5.0.2 @@ -7324,9 +7374,23 @@ __metadata: languageName: unknown linkType: soft -"@storybook/channel-postmessage@6.5.0-beta.1, @storybook/channel-postmessage@workspace:*, @storybook/channel-postmessage@workspace:lib/channel-postmessage": +"@storybook/channel-postmessage@6.5.0-beta.4, @storybook/channel-postmessage@workspace:*, @storybook/channel-postmessage@workspace:lib/channel-postmessage": version: 0.0.0-use.local resolution: "@storybook/channel-postmessage@workspace:lib/channel-postmessage" + dependencies: + "@storybook/channels": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 + core-js: ^3.8.2 + global: ^4.4.0 + qs: ^6.10.0 + telejson: ^5.3.3 + languageName: unknown + linkType: soft + +"@storybook/channel-postmessage@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/channel-postmessage@npm:6.5.0-beta.1" dependencies: "@storybook/channels": 6.5.0-beta.1 "@storybook/client-logger": 6.5.0-beta.1 @@ -7335,22 +7399,36 @@ __metadata: global: ^4.4.0 qs: ^6.10.0 telejson: ^5.3.3 - languageName: unknown - linkType: soft + checksum: de4ef1f9cd131b8222ffa09567dd79f621ac3b347b25ac053b5c54e88a1910ad40540e0c2b890a5be66ab70017496b2864cb1ba12feb717f0943bb10541241b0 + languageName: node + linkType: hard -"@storybook/channel-websocket@6.5.0-beta.1, @storybook/channel-websocket@workspace:*, @storybook/channel-websocket@workspace:lib/channel-websocket": +"@storybook/channel-websocket@6.5.0-beta.4, @storybook/channel-websocket@workspace:*, @storybook/channel-websocket@workspace:lib/channel-websocket": version: 0.0.0-use.local resolution: "@storybook/channel-websocket@workspace:lib/channel-websocket" dependencies: - "@storybook/channels": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 + "@storybook/channels": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 core-js: ^3.8.2 global: ^4.4.0 telejson: ^5.3.3 languageName: unknown linkType: soft -"@storybook/channels@6.5.0-beta.1, @storybook/channels@workspace:*, @storybook/channels@workspace:lib/channels": +"@storybook/channel-websocket@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/channel-websocket@npm:6.5.0-beta.1" + dependencies: + "@storybook/channels": 6.5.0-beta.1 + "@storybook/client-logger": 6.5.0-beta.1 + core-js: ^3.8.2 + global: ^4.4.0 + telejson: ^5.3.3 + checksum: 3765121963a8be47783564ae1111836d862aaee8820ba1cc62238870e65eddd9b30f3c8385cc3e36a739983c8d3b2b1c11c58a56a743fc8ee3f3a94eef2b14ab + languageName: node + linkType: hard + +"@storybook/channels@6.5.0-beta.4, @storybook/channels@workspace:*, @storybook/channels@workspace:lib/channels": version: 0.0.0-use.local resolution: "@storybook/channels@workspace:lib/channels" dependencies: @@ -7371,19 +7449,31 @@ __metadata: languageName: node linkType: hard -"@storybook/cli@6.5.0-beta.1, @storybook/cli@workspace:*, @storybook/cli@workspace:lib/cli": +"@storybook/channels@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/channels@npm:6.5.0-beta.1" + dependencies: + core-js: ^3.8.2 + ts-dedent: ^2.0.0 + util-deprecate: ^1.0.2 + checksum: 33543e5dae6dc67f3e778acba495fd5ed14dc22dd5947e084d4ee2da6d699e25c5cfb9f91c3fce3a1ac0e7f05d5b089daa2cb95970ad528ae89ba31e72fefbc7 + languageName: node + linkType: hard + +"@storybook/cli@6.5.0-beta.4, @storybook/cli@workspace:*, @storybook/cli@workspace:lib/cli": version: 0.0.0-use.local resolution: "@storybook/cli@workspace:lib/cli" dependencies: "@babel/core": ^7.12.10 "@babel/preset-env": ^7.12.11 - "@storybook/client-api": 6.5.0-beta.1 - "@storybook/codemod": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-server": 6.5.0-beta.1 - "@storybook/csf-tools": 6.5.0-beta.1 - "@storybook/node-logger": 6.5.0-beta.1 + "@storybook/client-api": 6.5.0-beta.4 + "@storybook/codemod": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-server": 6.5.0-beta.4 + "@storybook/csf-tools": 6.5.0-beta.4 + "@storybook/node-logger": 6.5.0-beta.4 "@storybook/semver": ^7.3.2 + "@storybook/telemetry": 6.5.0-beta.4 "@types/cross-spawn": ^6.0.2 "@types/prompts": ^2.0.9 "@types/puppeteer-core": ^2.1.0 @@ -7419,9 +7509,39 @@ __metadata: languageName: unknown linkType: soft -"@storybook/client-api@6.5.0-beta.1, @storybook/client-api@workspace:*, @storybook/client-api@workspace:lib/client-api": +"@storybook/client-api@6.5.0-beta.4, @storybook/client-api@workspace:*, @storybook/client-api@workspace:lib/client-api": version: 0.0.0-use.local resolution: "@storybook/client-api@workspace:lib/client-api" + dependencies: + "@storybook/addons": 6.5.0-beta.4 + "@storybook/channel-postmessage": 6.5.0-beta.4 + "@storybook/channels": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 + "@storybook/csf": 0.0.2--canary.4566f4d.1 + "@storybook/store": 6.5.0-beta.4 + "@types/qs": ^6.9.5 + "@types/webpack-env": ^1.16.0 + core-js: ^3.8.2 + fast-deep-equal: ^3.1.3 + global: ^4.4.0 + lodash: ^4.17.21 + memoizerific: ^1.11.3 + qs: ^6.10.0 + regenerator-runtime: ^0.13.7 + store2: ^2.12.0 + synchronous-promise: ^2.0.15 + ts-dedent: ^2.0.0 + util-deprecate: ^1.0.2 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + languageName: unknown + linkType: soft + +"@storybook/client-api@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/client-api@npm:6.5.0-beta.1" dependencies: "@storybook/addons": 6.5.0-beta.1 "@storybook/channel-postmessage": 6.5.0-beta.1 @@ -7446,10 +7566,11 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: unknown - linkType: soft + checksum: 4748d171fc18a4966a6ab29377e2874315512f7b8d37090a716c1de41032ffb52ca4ff9d52a3217f0d8d6a7ecb38e09dbd5decdd1e5a951a2d5298ba6eecaa53 + languageName: node + linkType: hard -"@storybook/client-logger@6.5.0-beta.1, @storybook/client-logger@^6.4.0 || >=6.5.0-0, @storybook/client-logger@workspace:*, @storybook/client-logger@workspace:lib/client-logger": +"@storybook/client-logger@6.5.0-beta.4, @storybook/client-logger@^6.4.0 || >=6.5.0-0, @storybook/client-logger@workspace:*, @storybook/client-logger@workspace:lib/client-logger": version: 0.0.0-use.local resolution: "@storybook/client-logger@workspace:lib/client-logger" dependencies: @@ -7468,15 +7589,25 @@ __metadata: languageName: node linkType: hard -"@storybook/codemod@6.5.0-beta.1, @storybook/codemod@workspace:*, @storybook/codemod@workspace:lib/codemod": +"@storybook/client-logger@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/client-logger@npm:6.5.0-beta.1" + dependencies: + core-js: ^3.8.2 + global: ^4.4.0 + checksum: b37a15123235d7e17186440691675e778eb6934ee07fa5ebeaa99d2ca3bda0ffcc8dbd38023e77680c7da590a65a55c670018a6b49b591f6d5c15081a19e81df + languageName: node + linkType: hard + +"@storybook/codemod@6.5.0-beta.4, @storybook/codemod@workspace:*, @storybook/codemod@workspace:lib/codemod": version: 0.0.0-use.local resolution: "@storybook/codemod@workspace:lib/codemod" dependencies: "@babel/types": ^7.12.11 "@mdx-js/mdx": ^1.6.22 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/csf-tools": 6.5.0-beta.1 - "@storybook/node-logger": 6.5.0-beta.1 + "@storybook/csf-tools": 6.5.0-beta.4 + "@storybook/node-logger": 6.5.0-beta.4 core-js: ^3.8.2 cross-spawn: ^7.0.3 globby: ^11.0.2 @@ -7490,14 +7621,14 @@ __metadata: languageName: unknown linkType: soft -"@storybook/components@6.5.0-beta.1, @storybook/components@workspace:*, @storybook/components@workspace:lib/components": +"@storybook/components@6.5.0-beta.4, @storybook/components@workspace:*, @storybook/components@workspace:lib/components": version: 0.0.0-use.local resolution: "@storybook/components@workspace:lib/components" dependencies: "@popperjs/core": ^2.6.0 - "@storybook/client-logger": 6.5.0-beta.1 + "@storybook/client-logger": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/theming": 6.5.0-beta.4 "@types/color-convert": ^2.0.0 "@types/overlayscrollbars": ^1.12.0 "@types/react-syntax-highlighter": 11.0.5 @@ -7529,9 +7660,59 @@ __metadata: languageName: unknown linkType: soft -"@storybook/core-client@6.5.0-beta.1, @storybook/core-client@workspace:lib/core-client": +"@storybook/components@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/components@npm:6.5.0-beta.1" + dependencies: + "@storybook/client-logger": 6.5.0-beta.1 + "@storybook/csf": 0.0.2--canary.4566f4d.1 + "@storybook/theming": 6.5.0-beta.1 + core-js: ^3.8.2 + regenerator-runtime: ^0.13.7 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 82f8e56053e62372e0931aa0714579e3dc6708ecf4d6fcc2a64812b5a860652af5e7f5c09e8b08a314fc2149b4b2170b9e4a59f99bb7aacb3df063b80e1fc376 + languageName: node + linkType: hard + +"@storybook/core-client@6.5.0-beta.4, @storybook/core-client@workspace:lib/core-client": version: 0.0.0-use.local resolution: "@storybook/core-client@workspace:lib/core-client" + dependencies: + "@storybook/addons": 6.5.0-beta.4 + "@storybook/channel-postmessage": 6.5.0-beta.4 + "@storybook/channel-websocket": 6.5.0-beta.4 + "@storybook/client-api": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 + "@storybook/csf": 0.0.2--canary.4566f4d.1 + "@storybook/preview-web": 6.5.0-beta.4 + "@storybook/store": 6.5.0-beta.4 + "@storybook/ui": 6.5.0-beta.4 + airbnb-js-shims: ^2.2.1 + ansi-to-html: ^0.6.11 + core-js: ^3.8.2 + global: ^4.4.0 + lodash: ^4.17.21 + qs: ^6.10.0 + regenerator-runtime: ^0.13.7 + ts-dedent: ^2.0.0 + unfetch: ^4.2.0 + util-deprecate: ^1.0.2 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + webpack: "*" + peerDependenciesMeta: + typescript: + optional: true + languageName: unknown + linkType: soft + +"@storybook/core-client@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/core-client@npm:6.5.0-beta.1" dependencies: "@storybook/addons": 6.5.0-beta.1 "@storybook/channel-postmessage": 6.5.0-beta.1 @@ -7560,10 +7741,11 @@ __metadata: peerDependenciesMeta: typescript: optional: true - languageName: unknown - linkType: soft + checksum: 950baab422c9a14ab1fc00125d86892ade0e10344947498621e7a6b41ecb229c5b7e2d483fa8f92961b244f995b4594da17b55f2b2f7ae05a98cceefcfe73001 + languageName: node + linkType: hard -"@storybook/core-common@6.5.0-beta.1, @storybook/core-common@workspace:lib/core-common": +"@storybook/core-common@6.5.0-beta.4, @storybook/core-common@workspace:lib/core-common": version: 0.0.0-use.local resolution: "@storybook/core-common@workspace:lib/core-common" dependencies: @@ -7589,7 +7771,7 @@ __metadata: "@babel/preset-react": ^7.12.10 "@babel/preset-typescript": ^7.12.7 "@babel/register": ^7.12.1 - "@storybook/node-logger": 6.5.0-beta.1 + "@storybook/node-logger": 6.5.0-beta.4 "@storybook/react-docgen-typescript-plugin": 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0 "@storybook/semver": ^7.3.2 "@types/compression": ^1.7.0 @@ -7632,7 +7814,71 @@ __metadata: languageName: unknown linkType: soft -"@storybook/core-events@6.5.0-beta.1, @storybook/core-events@workspace:*, @storybook/core-events@workspace:lib/core-events": +"@storybook/core-common@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/core-common@npm:6.5.0-beta.1" + dependencies: + "@babel/core": ^7.12.10 + "@babel/plugin-proposal-class-properties": ^7.12.1 + "@babel/plugin-proposal-decorators": ^7.12.12 + "@babel/plugin-proposal-export-default-from": ^7.12.1 + "@babel/plugin-proposal-nullish-coalescing-operator": ^7.12.1 + "@babel/plugin-proposal-object-rest-spread": ^7.12.1 + "@babel/plugin-proposal-optional-chaining": ^7.12.7 + "@babel/plugin-proposal-private-methods": ^7.12.1 + "@babel/plugin-proposal-private-property-in-object": ^7.12.1 + "@babel/plugin-syntax-dynamic-import": ^7.8.3 + "@babel/plugin-transform-arrow-functions": ^7.12.1 + "@babel/plugin-transform-block-scoping": ^7.12.12 + "@babel/plugin-transform-classes": ^7.12.1 + "@babel/plugin-transform-destructuring": ^7.12.1 + "@babel/plugin-transform-for-of": ^7.12.1 + "@babel/plugin-transform-parameters": ^7.12.1 + "@babel/plugin-transform-shorthand-properties": ^7.12.1 + "@babel/plugin-transform-spread": ^7.12.1 + "@babel/preset-env": ^7.12.11 + "@babel/preset-react": ^7.12.10 + "@babel/preset-typescript": ^7.12.7 + "@babel/register": ^7.12.1 + "@storybook/node-logger": 6.5.0-beta.1 + "@storybook/semver": ^7.3.2 + "@types/node": ^14.0.10 || ^16.0.0 + "@types/pretty-hrtime": ^1.0.0 + babel-loader: ^8.0.0 + babel-plugin-macros: ^3.0.1 + babel-plugin-polyfill-corejs3: ^0.1.0 + chalk: ^4.1.0 + core-js: ^3.8.2 + express: ^4.17.1 + file-system-cache: ^1.0.5 + find-up: ^5.0.0 + fork-ts-checker-webpack-plugin: ^6.0.4 + fs-extra: ^9.0.1 + glob: ^7.1.6 + handlebars: ^4.7.7 + interpret: ^2.2.0 + json5: ^2.1.3 + lazy-universal-dotenv: ^3.0.1 + picomatch: ^2.3.0 + pkg-dir: ^5.0.0 + pretty-hrtime: ^1.0.3 + resolve-from: ^5.0.0 + slash: ^3.0.0 + telejson: ^5.3.3 + ts-dedent: ^2.0.0 + util-deprecate: ^1.0.2 + webpack: 4 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 08b85edce241185bbd947462f22e90fdef487c55e847fc33778148c7ab0482b33de32b483ac4e08c38b6591a20fec1a75c939371b9f881bad357d4925765f24d + languageName: node + linkType: hard + +"@storybook/core-events@6.5.0-beta.4, @storybook/core-events@workspace:*, @storybook/core-events@workspace:lib/core-events": version: 0.0.0-use.local resolution: "@storybook/core-events@workspace:lib/core-events" dependencies: @@ -7649,23 +7895,33 @@ __metadata: languageName: node linkType: hard -"@storybook/core-server@6.5.0-beta.1, @storybook/core-server@workspace:lib/core-server": +"@storybook/core-events@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/core-events@npm:6.5.0-beta.1" + dependencies: + core-js: ^3.8.2 + checksum: 698b7912404ea668bb45e7310662999e9c9386e906c9a675ffed3c500fd8dcda65a215e1cc05122066b1553f475f6632c5d9852755929c46bafec41229d4c151 + languageName: node + linkType: hard + +"@storybook/core-server@6.5.0-beta.4, @storybook/core-server@workspace:lib/core-server": version: 0.0.0-use.local resolution: "@storybook/core-server@workspace:lib/core-server" dependencies: "@discoveryjs/json-ext": ^0.5.3 - "@storybook/builder-webpack4": 6.5.0-beta.1 - "@storybook/builder-webpack5": 6.5.0-beta.1 - "@storybook/core-client": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 + "@storybook/builder-webpack4": 6.5.0-beta.4 + "@storybook/builder-webpack5": 6.5.0-beta.4 + "@storybook/core-client": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 "@storybook/csf-tools": 6.5.0-beta.1 "@storybook/docs-mdx": 0.0.1-canary.1.4bea5cc.0 "@storybook/manager-webpack4": 6.5.0-beta.1 "@storybook/node-logger": 6.5.0-beta.1 "@storybook/semver": ^7.3.2 - "@storybook/store": 6.5.0-beta.1 + "@storybook/store": 6.5.0-beta.4 + "@storybook/telemetry": 6.5.0-beta.4 "@types/compression": ^1.7.0 "@types/ip": ^1.1.0 "@types/node": ^14.0.10 || ^16.0.0 @@ -7718,7 +7974,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/csf-tools@6.5.0-beta.1, @storybook/csf-tools@workspace:*, @storybook/csf-tools@workspace:lib/csf-tools": +"@storybook/csf-tools@6.5.0-beta.4, @storybook/csf-tools@workspace:*, @storybook/csf-tools@workspace:lib/csf-tools": version: 0.0.0-use.local resolution: "@storybook/csf-tools@workspace:lib/csf-tools" dependencies: @@ -7747,6 +8003,33 @@ __metadata: languageName: unknown linkType: soft +"@storybook/csf-tools@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/csf-tools@npm:6.5.0-beta.1" + dependencies: + "@babel/core": ^7.12.10 + "@babel/generator": ^7.12.11 + "@babel/parser": ^7.12.11 + "@babel/plugin-transform-react-jsx": ^7.12.12 + "@babel/preset-env": ^7.12.11 + "@babel/traverse": ^7.12.11 + "@babel/types": ^7.12.11 + "@storybook/csf": 0.0.2--canary.4566f4d.1 + "@storybook/mdx1-csf": canary + core-js: ^3.8.2 + fs-extra: ^9.0.1 + global: ^4.4.0 + regenerator-runtime: ^0.13.7 + ts-dedent: ^2.0.0 + peerDependencies: + "@storybook/mdx2-csf": "*" + peerDependenciesMeta: + "@storybook/mdx2-csf": + optional: true + checksum: b30e616219f0c7df157cf46a036ef965bf6113d77aa298d5073f1594c50018f4dacfd5383c4aa0795354fc41eea70ef1649a7308b2952a2476c3c8d5060e1c90 + languageName: node + linkType: hard + "@storybook/csf@npm:0.0.2--canary.4566f4d.1": version: 0.0.2--canary.4566f4d.1 resolution: "@storybook/csf@npm:0.0.2--canary.4566f4d.1" @@ -7809,13 +8092,13 @@ __metadata: languageName: node linkType: hard -"@storybook/docs-tools@6.5.0-beta.1, @storybook/docs-tools@workspace:*, @storybook/docs-tools@workspace:lib/docs-tools": +"@storybook/docs-tools@6.5.0-beta.4, @storybook/docs-tools@workspace:*, @storybook/docs-tools@workspace:lib/docs-tools": version: 0.0.0-use.local resolution: "@storybook/docs-tools@workspace:lib/docs-tools" dependencies: "@babel/core": ^7.12.10 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/store": 6.5.0-beta.1 + "@storybook/store": 6.5.0-beta.4 core-js: ^3.8.2 doctrine: ^3.0.0 jest-specific-snapshot: ^4.0.0 @@ -7837,15 +8120,15 @@ __metadata: languageName: node linkType: hard -"@storybook/ember@6.5.0-beta.1, @storybook/ember@workspace:*, @storybook/ember@workspace:app/ember": +"@storybook/ember@6.5.0-beta.4, @storybook/ember@workspace:*, @storybook/ember@workspace:app/ember": version: 0.0.0-use.local resolution: "@storybook/ember@workspace:app/ember" dependencies: - "@storybook/core-client": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-server": 6.5.0-beta.1 - "@storybook/docs-tools": 6.5.0-beta.1 - "@storybook/store": 6.5.0-beta.1 + "@storybook/core-client": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-server": 6.5.0-beta.4 + "@storybook/docs-tools": 6.5.0-beta.4 + "@storybook/store": 6.5.0-beta.4 core-js: ^3.8.2 global: ^4.4.0 react: 16.14.0 @@ -7877,13 +8160,14 @@ __metadata: "@babel/preset-env": ^7.12.11 "@babel/preset-react": ^7.12.10 "@babel/preset-typescript": ^7.12.7 - "@storybook/addon-essentials": 6.5.0-beta.1 - "@storybook/addon-storyshots": 6.5.0-beta.1 - "@storybook/addon-storysource": 6.5.0-beta.1 - "@storybook/cli": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/react": 6.5.0-beta.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/addon-essentials": 6.5.0-beta.4 + "@storybook/addon-storyshots": 6.5.0-beta.4 + "@storybook/addon-storysource": 6.5.0-beta.4 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/cli": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/react": 6.5.0-beta.4 + "@storybook/theming": 6.5.0-beta.4 "@testing-library/dom": ^7.31.2 "@testing-library/react": 12.1.2 "@testing-library/user-event": ^13.1.9 @@ -7892,10 +8176,11 @@ __metadata: "@types/react-dom": ^16.9.14 cross-env: ^7.0.3 formik: ^2.2.9 + lodash: ^4.17.21 prop-types: 15.7.2 react: 16.14.0 react-dom: 16.14.0 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 typescript: ^3.9.7 webpack: 4 languageName: unknown @@ -7917,13 +8202,13 @@ __metadata: "@babel/preset-env": ^7.12.11 "@babel/preset-react": ^7.12.10 "@babel/preset-typescript": ^7.12.7 - "@storybook/addon-essentials": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 + "@storybook/addon-essentials": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.87bc651.0 - "@storybook/preview-web": 6.5.0-beta.1 - "@storybook/react": 6.5.0-beta.1 - "@storybook/store": 6.5.0-beta.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/preview-web": 6.5.0-beta.4 + "@storybook/react": 6.5.0-beta.4 + "@storybook/store": 6.5.0-beta.4 + "@storybook/theming": 6.5.0-beta.4 "@testing-library/dom": ^7.31.2 "@testing-library/user-event": ^13.1.9 "@types/babel__preset-env": ^7 @@ -7935,24 +8220,24 @@ __metadata: react: 16.14.0 react-dom: 16.14.0 react-scripts: ^4.0.2 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 typescript: ^3.9.7 webpack: 4 languageName: unknown linkType: soft -"@storybook/html@6.5.0-beta.1, @storybook/html@workspace:*, @storybook/html@workspace:app/html": +"@storybook/html@6.5.0-beta.4, @storybook/html@workspace:*, @storybook/html@workspace:app/html": version: 0.0.0-use.local resolution: "@storybook/html@workspace:app/html" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/core-client": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-server": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/core-client": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-server": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/docs-tools": 6.5.0-beta.1 - "@storybook/preview-web": 6.5.0-beta.1 - "@storybook/store": 6.5.0-beta.1 + "@storybook/docs-tools": 6.5.0-beta.4 + "@storybook/preview-web": 6.5.0-beta.4 + "@storybook/store": 6.5.0-beta.4 "@types/node": ^14.14.20 || ^16.0.0 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 @@ -7969,13 +8254,13 @@ __metadata: languageName: unknown linkType: soft -"@storybook/instrumenter@6.5.0-beta.1, @storybook/instrumenter@^6.4.0 || >=6.5.0-0, @storybook/instrumenter@workspace:*, @storybook/instrumenter@workspace:lib/instrumenter": +"@storybook/instrumenter@6.5.0-beta.4, @storybook/instrumenter@^6.4.0 || >=6.5.0-0, @storybook/instrumenter@workspace:*, @storybook/instrumenter@workspace:lib/instrumenter": version: 0.0.0-use.local resolution: "@storybook/instrumenter@workspace:lib/instrumenter" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 core-js: ^3.8.2 global: ^4.4.0 languageName: unknown @@ -8032,9 +8317,9 @@ __metadata: languageName: node linkType: hard -"@storybook/manager-webpack4@6.5.0-beta.1, @storybook/manager-webpack4@workspace:lib/manager-webpack4": - version: 0.0.0-use.local - resolution: "@storybook/manager-webpack4@workspace:lib/manager-webpack4" +"@storybook/manager-webpack4@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/manager-webpack4@npm:6.5.0-beta.1" dependencies: "@babel/core": ^7.12.10 "@babel/plugin-transform-template-literals": ^7.12.1 @@ -8045,6 +8330,55 @@ __metadata: "@storybook/node-logger": 6.5.0-beta.1 "@storybook/theming": 6.5.0-beta.1 "@storybook/ui": 6.5.0-beta.1 + "@types/node": ^14.0.10 || ^16.0.0 + "@types/webpack": ^4.41.26 + babel-loader: ^8.0.0 + case-sensitive-paths-webpack-plugin: ^2.3.0 + chalk: ^4.1.0 + core-js: ^3.8.2 + css-loader: ^3.6.0 + express: ^4.17.1 + file-loader: ^6.2.0 + find-up: ^5.0.0 + fs-extra: ^9.0.1 + html-webpack-plugin: ^4.0.0 + node-fetch: ^2.6.7 + pnp-webpack-plugin: 1.6.4 + read-pkg-up: ^7.0.1 + regenerator-runtime: ^0.13.7 + resolve-from: ^5.0.0 + style-loader: ^1.3.0 + telejson: ^5.3.3 + terser-webpack-plugin: ^4.2.3 + ts-dedent: ^2.0.0 + url-loader: ^4.1.1 + util-deprecate: ^1.0.2 + webpack: 4 + webpack-dev-middleware: ^3.7.3 + webpack-virtual-modules: ^0.2.2 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 159b926c41219ba6a4ca4512c8aed586b0d4cc7b241c1c0b7f05a2dc8776248877830c99809e953afcf852e01df28eac9d118c53d95203eb12398b362489365e + languageName: node + linkType: hard + +"@storybook/manager-webpack4@workspace:lib/manager-webpack4": + version: 0.0.0-use.local + resolution: "@storybook/manager-webpack4@workspace:lib/manager-webpack4" + dependencies: + "@babel/core": ^7.12.10 + "@babel/plugin-transform-template-literals": ^7.12.1 + "@babel/preset-react": ^7.12.10 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/core-client": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/node-logger": 6.5.0-beta.4 + "@storybook/theming": 6.5.0-beta.4 + "@storybook/ui": 6.5.0-beta.4 "@types/case-sensitive-paths-webpack-plugin": ^2.1.4 "@types/node": ^14.0.10 || ^16.0.0 "@types/terser-webpack-plugin": ^4.2.0 @@ -8091,12 +8425,12 @@ __metadata: "@babel/core": ^7.12.10 "@babel/plugin-transform-template-literals": ^7.12.1 "@babel/preset-react": ^7.12.10 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/core-client": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/node-logger": 6.5.0-beta.1 - "@storybook/theming": 6.5.0-beta.1 - "@storybook/ui": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/core-client": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/node-logger": 6.5.0-beta.4 + "@storybook/theming": 6.5.0-beta.4 + "@storybook/ui": 6.5.0-beta.4 "@types/case-sensitive-paths-webpack-plugin": ^2.1.4 "@types/node": ^14.0.10 || ^16.0.0 "@types/terser-webpack-plugin": ^5.0.2 @@ -8168,7 +8502,7 @@ __metadata: languageName: node linkType: hard -"@storybook/node-logger@6.5.0-beta.1, @storybook/node-logger@workspace:*, @storybook/node-logger@workspace:lib/node-logger": +"@storybook/node-logger@6.5.0-beta.4, @storybook/node-logger@workspace:*, @storybook/node-logger@workspace:lib/node-logger": version: 0.0.0-use.local resolution: "@storybook/node-logger@workspace:lib/node-logger" dependencies: @@ -8194,7 +8528,20 @@ __metadata: languageName: node linkType: hard -"@storybook/postinstall@6.5.0-beta.1, @storybook/postinstall@workspace:*, @storybook/postinstall@workspace:lib/postinstall": +"@storybook/node-logger@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/node-logger@npm:6.5.0-beta.1" + dependencies: + "@types/npmlog": ^4.1.2 + chalk: ^4.1.0 + core-js: ^3.8.2 + npmlog: ^5.0.1 + pretty-hrtime: ^1.0.3 + checksum: eeaeffb62c88d4c900494b398c26de12cfea44ee5aac89acd74f52422a3c7916cb9106cd0c37029279c13f93d231efaac257f2152246cbb90c32f60aae6f070f + languageName: node + linkType: hard + +"@storybook/postinstall@6.5.0-beta.4, @storybook/postinstall@workspace:*, @storybook/postinstall@workspace:lib/postinstall": version: 0.0.0-use.local resolution: "@storybook/postinstall@workspace:lib/postinstall" dependencies: @@ -8205,17 +8552,17 @@ __metadata: languageName: unknown linkType: soft -"@storybook/preact@6.5.0-beta.1, @storybook/preact@workspace:*, @storybook/preact@workspace:app/preact": +"@storybook/preact@6.5.0-beta.4, @storybook/preact@workspace:*, @storybook/preact@workspace:app/preact": version: 0.0.0-use.local resolution: "@storybook/preact@workspace:app/preact" dependencies: "@babel/plugin-transform-react-jsx": ^7.12.12 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/core-client": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-server": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/core-client": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-server": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/store": 6.5.0-beta.1 + "@storybook/store": 6.5.0-beta.4 "@types/node": ^14.14.20 || ^16.0.0 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 @@ -8264,9 +8611,35 @@ __metadata: languageName: node linkType: hard -"@storybook/preview-web@6.5.0-beta.1, @storybook/preview-web@workspace:*, @storybook/preview-web@workspace:lib/preview-web": +"@storybook/preview-web@6.5.0-beta.4, @storybook/preview-web@workspace:*, @storybook/preview-web@workspace:lib/preview-web": version: 0.0.0-use.local resolution: "@storybook/preview-web@workspace:lib/preview-web" + dependencies: + "@storybook/addons": 6.5.0-beta.4 + "@storybook/channel-postmessage": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 + "@storybook/csf": 0.0.2--canary.4566f4d.1 + "@storybook/store": 6.5.0-beta.4 + ansi-to-html: ^0.6.11 + core-js: ^3.8.2 + global: ^4.4.0 + lodash: ^4.17.21 + qs: ^6.10.0 + regenerator-runtime: ^0.13.7 + synchronous-promise: ^2.0.15 + ts-dedent: ^2.0.0 + unfetch: ^4.2.0 + util-deprecate: ^1.0.2 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + languageName: unknown + linkType: soft + +"@storybook/preview-web@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/preview-web@npm:6.5.0-beta.1" dependencies: "@storybook/addons": 6.5.0-beta.1 "@storybook/channel-postmessage": 6.5.0-beta.1 @@ -8287,8 +8660,9 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: unknown - linkType: soft + checksum: 0ea1e2d1b295b1f07c462b497dc878ac4f61c5eb810f16a0b6e923869f7b4e591af783df7edacd555178f1b4a41eebe789c3e259973299a81f0dda699c6e3581 + languageName: node + linkType: hard "@storybook/react-docgen-typescript-plugin@npm:1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0": version: 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0 @@ -8308,24 +8682,24 @@ __metadata: languageName: node linkType: hard -"@storybook/react@6.5.0-beta.1, @storybook/react@workspace:*, @storybook/react@workspace:app/react": +"@storybook/react@6.5.0-beta.4, @storybook/react@workspace:*, @storybook/react@workspace:app/react": version: 0.0.0-use.local resolution: "@storybook/react@workspace:app/react" dependencies: "@babel/preset-flow": ^7.12.1 "@babel/preset-react": ^7.12.10 "@pmmmwh/react-refresh-webpack-plugin": ^0.5.3 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/core-client": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-server": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/core-client": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-server": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/docs-tools": 6.5.0-beta.1 - "@storybook/node-logger": 6.5.0-beta.1 + "@storybook/docs-tools": 6.5.0-beta.4 + "@storybook/node-logger": 6.5.0-beta.4 "@storybook/react-docgen-typescript-plugin": 1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0 "@storybook/semver": ^7.3.2 - "@storybook/store": 6.5.0-beta.1 + "@storybook/store": 6.5.0-beta.4 "@types/estree": ^0.0.51 "@types/node": ^14.14.20 || ^16.0.0 "@types/util-deprecate": ^1.0.0 @@ -8340,6 +8714,7 @@ __metadata: fs-extra: ^9.0.1 global: ^4.4.0 html-tags: ^3.1.0 + jest-specific-snapshot: ^4.0.0 lodash: ^4.17.21 prop-types: ^15.7.2 react-element-to-jsx-string: ^14.3.4 @@ -8351,7 +8726,6 @@ __metadata: webpack: 4 peerDependencies: "@babel/core": ^7.11.5 - jest-specific-snapshot: ^4.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 require-from-string: ^2.0.2 @@ -8456,6 +8830,7 @@ __metadata: "@storybook/source-loader": "workspace:*" "@storybook/store": "workspace:*" "@storybook/svelte": "workspace:*" + "@storybook/telemetry": "workspace:*" "@storybook/testing-library": ^0.0.7 "@storybook/theming": "workspace:*" "@storybook/ui": "workspace:*" @@ -8618,11 +8993,11 @@ __metadata: languageName: unknown linkType: soft -"@storybook/router@6.5.0-beta.1, @storybook/router@workspace:*, @storybook/router@workspace:lib/router": +"@storybook/router@6.5.0-beta.4, @storybook/router@workspace:*, @storybook/router@workspace:lib/router": version: 0.0.0-use.local resolution: "@storybook/router@workspace:lib/router" dependencies: - "@storybook/client-logger": 6.5.0-beta.1 + "@storybook/client-logger": 6.5.0-beta.4 core-js: ^3.8.2 fast-deep-equal: ^3.1.3 global: ^4.4.0 @@ -8663,6 +9038,20 @@ __metadata: languageName: node linkType: hard +"@storybook/router@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/router@npm:6.5.0-beta.1" + dependencies: + "@storybook/client-logger": 6.5.0-beta.1 + core-js: ^3.8.2 + regenerator-runtime: ^0.13.7 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 32bf31bc4cfe6c955332dc906238f43559039dfed94edc00f9b566cb4334e659f90348fff74060d6b2076aabfad308a16929ef81728b36f3e2eed0bf8317e207 + languageName: node + linkType: hard + "@storybook/semver@npm:^7.3.2": version: 7.3.2 resolution: "@storybook/semver@npm:7.3.2" @@ -8675,20 +9064,20 @@ __metadata: languageName: node linkType: hard -"@storybook/server@6.5.0-beta.1, @storybook/server@workspace:*, @storybook/server@workspace:app/server": +"@storybook/server@6.5.0-beta.4, @storybook/server@workspace:*, @storybook/server@workspace:app/server": version: 0.0.0-use.local resolution: "@storybook/server@workspace:app/server" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/client-api": 6.5.0-beta.1 - "@storybook/core-client": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-server": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/client-api": 6.5.0-beta.4 + "@storybook/core-client": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-server": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/node-logger": 6.5.0-beta.1 - "@storybook/preview-web": 6.5.0-beta.1 - "@storybook/store": 6.5.0-beta.1 + "@storybook/node-logger": 6.5.0-beta.4 + "@storybook/preview-web": 6.5.0-beta.4 + "@storybook/store": 6.5.0-beta.4 "@types/node": ^14.14.20 || ^16.0.0 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 @@ -8705,12 +9094,12 @@ __metadata: languageName: unknown linkType: soft -"@storybook/source-loader@6.5.0-beta.1, @storybook/source-loader@workspace:*, @storybook/source-loader@workspace:lib/source-loader": +"@storybook/source-loader@6.5.0-beta.4, @storybook/source-loader@workspace:*, @storybook/source-loader@workspace:lib/source-loader": version: 0.0.0-use.local resolution: "@storybook/source-loader@workspace:lib/source-loader" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 core-js: ^3.8.2 estraverse: ^5.2.0 @@ -8725,9 +9114,34 @@ __metadata: languageName: unknown linkType: soft -"@storybook/store@6.5.0-beta.1, @storybook/store@workspace:*, @storybook/store@workspace:lib/store": +"@storybook/store@6.5.0-beta.4, @storybook/store@workspace:*, @storybook/store@workspace:lib/store": version: 0.0.0-use.local resolution: "@storybook/store@workspace:lib/store" + dependencies: + "@storybook/addons": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 + "@storybook/csf": 0.0.2--canary.4566f4d.1 + core-js: ^3.8.2 + fast-deep-equal: ^3.1.3 + global: ^4.4.0 + lodash: ^4.17.21 + memoizerific: ^1.11.3 + regenerator-runtime: ^0.13.7 + slash: ^3.0.0 + stable: ^0.1.8 + synchronous-promise: ^2.0.15 + ts-dedent: ^2.0.0 + util-deprecate: ^1.0.2 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + languageName: unknown + linkType: soft + +"@storybook/store@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/store@npm:6.5.0-beta.1" dependencies: "@storybook/addons": 6.5.0-beta.1 "@storybook/client-logger": 6.5.0-beta.1 @@ -8747,22 +9161,23 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - languageName: unknown - linkType: soft + checksum: 674d7e4e6fc8b4880d76391a5cbf05fc5c2a63dd87530217ad6327bab3f61769e58c2903ad31aa75b28d4b1ad324ead1e1eb408a11dc740e9b3a20b99bded1e3 + languageName: node + linkType: hard -"@storybook/svelte@6.5.0-beta.1, @storybook/svelte@workspace:*, @storybook/svelte@workspace:app/svelte": +"@storybook/svelte@6.5.0-beta.4, @storybook/svelte@workspace:*, @storybook/svelte@workspace:app/svelte": version: 0.0.0-use.local resolution: "@storybook/svelte@workspace:app/svelte" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/core-client": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-server": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/core-client": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-server": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/docs-tools": 6.5.0-beta.1 - "@storybook/node-logger": 6.5.0-beta.1 - "@storybook/store": 6.5.0-beta.1 + "@storybook/docs-tools": 6.5.0-beta.4 + "@storybook/node-logger": 6.5.0-beta.4 + "@storybook/store": 6.5.0-beta.4 "@types/loader-utils": ^2.0.0 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 @@ -8784,6 +9199,25 @@ __metadata: languageName: unknown linkType: soft +"@storybook/telemetry@6.5.0-beta.4, @storybook/telemetry@workspace:*, @storybook/telemetry@workspace:lib/telemetry": + version: 0.0.0-use.local + resolution: "@storybook/telemetry@workspace:lib/telemetry" + dependencies: + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + chalk: ^4.1.0 + core-js: ^3.8.2 + detect-package-manager: ^2.0.1 + fetch-retry: ^5.0.2 + fs-extra: ^9.0.1 + global: ^4.4.0 + isomorphic-unfetch: ^3.1.0 + nanoid: ^3.3.1 + read-pkg-up: ^7.0.1 + regenerator-runtime: ^0.13.7 + languageName: unknown + linkType: soft + "@storybook/testing-library@npm:^0.0.7": version: 0.0.7 resolution: "@storybook/testing-library@npm:0.0.7" @@ -8810,7 +9244,7 @@ __metadata: languageName: node linkType: hard -"@storybook/theming@6.5.0-beta.1, @storybook/theming@workspace:*, @storybook/theming@workspace:lib/theming": +"@storybook/theming@6.5.0-beta.4, @storybook/theming@workspace:*, @storybook/theming@workspace:lib/theming": version: 0.0.0-use.local resolution: "@storybook/theming@workspace:lib/theming" dependencies: @@ -8818,7 +9252,7 @@ __metadata: "@emotion/is-prop-valid": ^1.1.2 "@emotion/react": ^11.8.1 "@emotion/styled": ^11.8.1 - "@storybook/client-logger": 6.5.0-beta.1 + "@storybook/client-logger": 6.5.0-beta.4 "@types/node": ^14.14.20 || ^16.0.0 core-js: ^3.8.2 deep-object-diff: ^1.1.0 @@ -8857,20 +9291,34 @@ __metadata: languageName: node linkType: hard -"@storybook/ui@6.5.0-beta.1, @storybook/ui@workspace:*, @storybook/ui@workspace:lib/ui": +"@storybook/theming@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/theming@npm:6.5.0-beta.1" + dependencies: + "@storybook/client-logger": 6.5.0-beta.1 + core-js: ^3.8.2 + regenerator-runtime: ^0.13.7 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: aefdb16032eb811150fd1094d34638323c10332dbb10304bfd7debde5c9703dec8f1626212a0a41ffe3fc872c3884459bb8389b68073f9dd9a25691e10d624b0 + languageName: node + linkType: hard + +"@storybook/ui@6.5.0-beta.4, @storybook/ui@workspace:*, @storybook/ui@workspace:lib/ui": version: 0.0.0-use.local resolution: "@storybook/ui@workspace:lib/ui" dependencies: "@babel/core": ^7.12.10 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/api": 6.5.0-beta.1 - "@storybook/channels": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 - "@storybook/router": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/api": 6.5.0-beta.4 + "@storybook/channels": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 + "@storybook/router": 6.5.0-beta.4 "@storybook/semver": ^7.3.2 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/theming": 6.5.0-beta.4 "@testing-library/react": ^11.2.2 copy-to-clipboard: ^3.3.1 core-js: ^3.8.2 @@ -8899,17 +9347,40 @@ __metadata: languageName: unknown linkType: soft -"@storybook/vue3@6.5.0-beta.1, @storybook/vue3@workspace:app/vue3": +"@storybook/ui@npm:6.5.0-beta.1": + version: 6.5.0-beta.1 + resolution: "@storybook/ui@npm:6.5.0-beta.1" + dependencies: + "@storybook/addons": 6.5.0-beta.1 + "@storybook/api": 6.5.0-beta.1 + "@storybook/channels": 6.5.0-beta.1 + "@storybook/client-logger": 6.5.0-beta.1 + "@storybook/components": 6.5.0-beta.1 + "@storybook/core-events": 6.5.0-beta.1 + "@storybook/router": 6.5.0-beta.1 + "@storybook/semver": ^7.3.2 + "@storybook/theming": 6.5.0-beta.1 + core-js: ^3.8.2 + regenerator-runtime: ^0.13.7 + resolve-from: ^5.0.0 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: de8ac1715c636e7a58bbd0ebde626b66b916c953e9b242e27bdfbef098e1ab0deddc928411b1c629570d35c2e941fcc92fa4bd30ed643b6244e67fab26456dda + languageName: node + linkType: hard + +"@storybook/vue3@6.5.0-beta.4, @storybook/vue3@workspace:app/vue3": version: 0.0.0-use.local resolution: "@storybook/vue3@workspace:app/vue3" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/core-client": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-server": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/core-client": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-server": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/docs-tools": 6.5.0-beta.1 - "@storybook/store": 6.5.0-beta.1 + "@storybook/docs-tools": 6.5.0-beta.4 + "@storybook/store": 6.5.0-beta.4 "@types/node": ^14.14.20 || ^16.0.0 "@types/webpack-env": ^1.16.0 "@vue/compiler-sfc": 3.0.0 @@ -8934,18 +9405,18 @@ __metadata: languageName: unknown linkType: soft -"@storybook/vue@6.5.0-beta.1, @storybook/vue@workspace:*, @storybook/vue@workspace:app/vue": +"@storybook/vue@6.5.0-beta.4, @storybook/vue@workspace:*, @storybook/vue@workspace:app/vue": version: 0.0.0-use.local resolution: "@storybook/vue@workspace:app/vue" dependencies: - "@storybook/addons": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/core-client": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-server": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/core-client": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-server": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/docs-tools": 6.5.0-beta.1 - "@storybook/store": 6.5.0-beta.1 + "@storybook/docs-tools": 6.5.0-beta.4 + "@storybook/store": 6.5.0-beta.4 "@types/node": ^14.14.20 || ^16.0.0 "@types/webpack-env": ^1.16.0 core-js: ^3.8.2 @@ -8979,16 +9450,16 @@ __metadata: "@babel/plugin-syntax-dynamic-import": ^7.8.3 "@babel/plugin-syntax-import-meta": ^7.10.4 "@babel/preset-env": ^7.12.11 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/client-api": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 - "@storybook/core-client": 6.5.0-beta.1 - "@storybook/core-common": 6.5.0-beta.1 - "@storybook/core-server": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/client-api": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 + "@storybook/core-client": 6.5.0-beta.4 + "@storybook/core-common": 6.5.0-beta.4 + "@storybook/core-server": 6.5.0-beta.4 "@storybook/csf": 0.0.2--canary.4566f4d.1 - "@storybook/docs-tools": 6.5.0-beta.1 - "@storybook/preview-web": 6.5.0-beta.1 - "@storybook/store": 6.5.0-beta.1 + "@storybook/docs-tools": 6.5.0-beta.4 + "@storybook/preview-web": 6.5.0-beta.4 + "@storybook/store": 6.5.0-beta.4 "@types/node": ^14.14.20 || ^16.0.0 "@types/webpack-env": ^1.16.0 babel-plugin-bundled-import-meta: ^0.3.1 @@ -12868,21 +13339,21 @@ __metadata: "@angular/platform-browser-dynamic": ^11.2.14 "@compodoc/compodoc": ^1.1.18 "@ngrx/store": ^10.1.2 - "@storybook/addon-a11y": 6.5.0-beta.1 - "@storybook/addon-actions": 6.5.0-beta.1 - "@storybook/addon-backgrounds": 6.5.0-beta.1 - "@storybook/addon-controls": 6.5.0-beta.1 - "@storybook/addon-docs": 6.5.0-beta.1 - "@storybook/addon-interactions": 6.5.0-beta.1 - "@storybook/addon-jest": 6.5.0-beta.1 - "@storybook/addon-links": 6.5.0-beta.1 - "@storybook/addon-storyshots": 6.5.0-beta.1 - "@storybook/addon-storysource": 6.5.0-beta.1 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/angular": 6.5.0-beta.1 + "@storybook/addon-a11y": 6.5.0-beta.4 + "@storybook/addon-actions": 6.5.0-beta.4 + "@storybook/addon-backgrounds": 6.5.0-beta.4 + "@storybook/addon-controls": 6.5.0-beta.4 + "@storybook/addon-docs": 6.5.0-beta.4 + "@storybook/addon-interactions": 6.5.0-beta.4 + "@storybook/addon-jest": 6.5.0-beta.4 + "@storybook/addon-links": 6.5.0-beta.4 + "@storybook/addon-storyshots": 6.5.0-beta.4 + "@storybook/addon-storysource": 6.5.0-beta.4 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/angular": 6.5.0-beta.4 "@storybook/babel-plugin-require-context-hook": 1.0.1 "@storybook/jest": ^0.0.5 - "@storybook/source-loader": 6.5.0-beta.1 + "@storybook/source-loader": 6.5.0-beta.4 "@storybook/testing-library": ^0.0.7 "@types/core-js": ^2.5.4 "@types/jest": ^26.0.16 @@ -12899,7 +13370,7 @@ __metadata: protractor: ~7.0.0 rxjs: ^6.6.3 sass: ^1.43.4 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 storybook-addon-angular-ivy: ^0.0.1 telejson: ^5.3.3 ts-jest: ^26.4.4 @@ -17946,27 +18417,27 @@ __metadata: resolution: "cra-kitchen-sink@workspace:examples/cra-kitchen-sink" dependencies: "@pmmmwh/react-refresh-webpack-plugin": ^0.5.3 - "@storybook/addon-a11y": 6.5.0-beta.1 - "@storybook/addon-actions": 6.5.0-beta.1 - "@storybook/addon-backgrounds": 6.5.0-beta.1 - "@storybook/addon-docs": 6.5.0-beta.1 + "@storybook/addon-a11y": 6.5.0-beta.4 + "@storybook/addon-actions": 6.5.0-beta.4 + "@storybook/addon-backgrounds": 6.5.0-beta.4 + "@storybook/addon-docs": 6.5.0-beta.4 "@storybook/addon-ie11": 0.0.7--canary.5e87b64.0 - "@storybook/addon-jest": 6.5.0-beta.1 - "@storybook/addon-links": 6.5.0-beta.1 - "@storybook/addon-storyshots": 6.5.0-beta.1 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/builder-webpack4": 6.5.0-beta.1 - "@storybook/client-logger": 6.5.0-beta.1 + "@storybook/addon-jest": 6.5.0-beta.4 + "@storybook/addon-links": 6.5.0-beta.4 + "@storybook/addon-storyshots": 6.5.0-beta.4 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/builder-webpack4": 6.5.0-beta.4 + "@storybook/client-logger": 6.5.0-beta.4 "@storybook/preset-create-react-app": ^3.1.6 - "@storybook/react": 6.5.0-beta.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/react": 6.5.0-beta.4 + "@storybook/theming": 6.5.0-beta.4 global: ^4.4.0 prop-types: ^15.7.2 react: 16.14.0 react-dom: 16.14.0 react-lifecycles-compat: ^3.0.4 react-scripts: ^4.0.2 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 webpack: 4 languageName: unknown linkType: soft @@ -17975,14 +18446,14 @@ __metadata: version: 0.0.0-use.local resolution: "cra-react15@workspace:examples/cra-react15" dependencies: - "@storybook/addon-actions": 6.5.0-beta.1 + "@storybook/addon-actions": 6.5.0-beta.4 "@storybook/addon-ie11": 0.0.7--canary.5e87b64.0 - "@storybook/addon-links": 6.5.0-beta.1 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/builder-webpack4": 6.5.0-beta.1 + "@storybook/addon-links": 6.5.0-beta.4 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/builder-webpack4": 6.5.0-beta.4 "@storybook/preset-create-react-app": ^3.1.6 - "@storybook/react": 6.5.0-beta.1 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/react": 6.5.0-beta.4 + "@storybook/theming": 6.5.0-beta.4 babel-core: 6 babel-loader: ^8.0.0 babel-runtime: 6 @@ -17991,7 +18462,7 @@ __metadata: react: ^15.7.0 react-dom: ^15.7.0 react-scripts: 3.4.4 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 webpack: 4 languageName: unknown linkType: soft @@ -18000,15 +18471,15 @@ __metadata: version: 0.0.0-use.local resolution: "cra-ts-essentials@workspace:examples/cra-ts-essentials" dependencies: - "@storybook/addon-essentials": 6.5.0-beta.1 + "@storybook/addon-essentials": 6.5.0-beta.4 "@storybook/addon-ie11": 0.0.7--canary.5e87b64.0 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/builder-webpack4": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/builder-webpack4": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 "@storybook/preset-create-react-app": ^3.1.6 - "@storybook/react": 6.5.0-beta.1 + "@storybook/react": 6.5.0-beta.4 "@storybook/testing-library": ^0.0.9 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/theming": 6.5.0-beta.4 "@types/jest": ^26.0.16 "@types/node": ^14.14.20 || ^16.0.0 "@types/react": ^16.14.23 @@ -18018,7 +18489,7 @@ __metadata: react: 16.14.0 react-dom: 16.14.0 react-scripts: ^4.0.2 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 typescript: ^3.9.7 webpack: 4 languageName: unknown @@ -18028,15 +18499,15 @@ __metadata: version: 0.0.0-use.local resolution: "cra-ts-kitchen-sink@workspace:examples/cra-ts-kitchen-sink" dependencies: - "@storybook/addon-a11y": 6.5.0-beta.1 - "@storybook/addon-actions": 6.5.0-beta.1 - "@storybook/addon-docs": 6.5.0-beta.1 + "@storybook/addon-a11y": 6.5.0-beta.4 + "@storybook/addon-actions": 6.5.0-beta.4 + "@storybook/addon-docs": 6.5.0-beta.4 "@storybook/addon-ie11": 0.0.7--canary.5e87b64.0 - "@storybook/addon-links": 6.5.0-beta.1 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/builder-webpack4": 6.5.0-beta.1 + "@storybook/addon-links": 6.5.0-beta.4 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/builder-webpack4": 6.5.0-beta.4 "@storybook/preset-create-react-app": ^3.1.6 - "@storybook/react": 6.5.0-beta.1 + "@storybook/react": 6.5.0-beta.4 "@types/enzyme": ^3.10.8 "@types/jest": 25.2.3 "@types/node": ^14.14.20 || ^16.0.0 @@ -18051,7 +18522,7 @@ __metadata: react-dom: 16.14.0 react-moment-proptypes: ^1.7.0 react-scripts: ^4.0.2 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 ts-node: ^9.1.0 typescript: ^3.9.7 webpack: 4 @@ -19472,6 +19943,15 @@ __metadata: languageName: node linkType: hard +"detect-package-manager@npm:^2.0.1": + version: 2.0.1 + resolution: "detect-package-manager@npm:2.0.1" + dependencies: + execa: ^5.1.1 + checksum: 56ffd65228d1ff3ead5ea7f8ab951a517a29270de27510b790c9a8b77d4f36efbd61493e170ca77ee3dc13cbb5218583ce65b78ad14a59dc48565c9bcbbf3c71 + languageName: node + linkType: hard + "detect-port-alt@npm:1.1.6": version: 1.1.6 resolution: "detect-port-alt@npm:1.1.6" @@ -20441,18 +20921,18 @@ __metadata: dependencies: "@babel/core": ^7.12.10 "@ember/optional-features": ^2.0.0 - "@storybook/addon-a11y": 6.5.0-beta.1 - "@storybook/addon-actions": 6.5.0-beta.1 - "@storybook/addon-backgrounds": 6.5.0-beta.1 - "@storybook/addon-controls": 6.5.0-beta.1 - "@storybook/addon-docs": 6.5.0-beta.1 - "@storybook/addon-links": 6.5.0-beta.1 - "@storybook/addon-storysource": 6.5.0-beta.1 - "@storybook/addon-viewport": 6.5.0-beta.1 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/ember": 6.5.0-beta.1 + "@storybook/addon-a11y": 6.5.0-beta.4 + "@storybook/addon-actions": 6.5.0-beta.4 + "@storybook/addon-backgrounds": 6.5.0-beta.4 + "@storybook/addon-controls": 6.5.0-beta.4 + "@storybook/addon-docs": 6.5.0-beta.4 + "@storybook/addon-links": 6.5.0-beta.4 + "@storybook/addon-storysource": 6.5.0-beta.4 + "@storybook/addon-viewport": 6.5.0-beta.4 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/ember": 6.5.0-beta.4 "@storybook/ember-cli-storybook": ^0.2.1 - "@storybook/source-loader": 6.5.0-beta.1 + "@storybook/source-loader": 6.5.0-beta.4 babel-loader: ^8.0.0 broccoli-asset-rev: ^3.0.0 cross-env: ^7.0.3 @@ -20471,7 +20951,7 @@ __metadata: ember-source: ~3.24.0 ember-template-compiler: ^1.9.0-alpha loader.js: ^4.7.0 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 shx: ^0.3.2 webpack: 4 webpack-cli: ^4.2.0 @@ -22236,7 +22716,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:^5.0.0": +"execa@npm:^5.0.0, execa@npm:^5.1.1": version: 5.1.1 resolution: "execa@npm:5.1.1" dependencies: @@ -22718,6 +23198,13 @@ __metadata: languageName: node linkType: hard +"fetch-retry@npm:^5.0.2": + version: 5.0.2 + resolution: "fetch-retry@npm:5.0.2" + checksum: 694fae18ceec4c88c508daf682fccbf1e0736fa679e95daad50946e003df7e261d9a4d36388f6f9eab2426d1796b4ee054ced904794f1edad3ffdc55b2d4b785 + languageName: node + linkType: hard + "figgy-pudding@npm:^3.4.1, figgy-pudding@npm:^3.5.1": version: 3.5.2 resolution: "figgy-pudding@npm:3.5.2" @@ -25144,29 +25631,29 @@ __metadata: version: 0.0.0-use.local resolution: "html-kitchen-sink@workspace:examples/html-kitchen-sink" dependencies: - "@storybook/addon-a11y": 6.5.0-beta.1 - "@storybook/addon-actions": 6.5.0-beta.1 - "@storybook/addon-backgrounds": 6.5.0-beta.1 - "@storybook/addon-controls": 6.5.0-beta.1 - "@storybook/addon-docs": 6.5.0-beta.1 - "@storybook/addon-jest": 6.5.0-beta.1 - "@storybook/addon-links": 6.5.0-beta.1 + "@storybook/addon-a11y": 6.5.0-beta.4 + "@storybook/addon-actions": 6.5.0-beta.4 + "@storybook/addon-backgrounds": 6.5.0-beta.4 + "@storybook/addon-controls": 6.5.0-beta.4 + "@storybook/addon-docs": 6.5.0-beta.4 + "@storybook/addon-jest": 6.5.0-beta.4 + "@storybook/addon-links": 6.5.0-beta.4 "@storybook/addon-postcss": ^2.0.0 - "@storybook/addon-storyshots": 6.5.0-beta.1 - "@storybook/addon-storysource": 6.5.0-beta.1 - "@storybook/addon-viewport": 6.5.0-beta.1 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/client-api": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 - "@storybook/html": 6.5.0-beta.1 - "@storybook/source-loader": 6.5.0-beta.1 + "@storybook/addon-storyshots": 6.5.0-beta.4 + "@storybook/addon-storysource": 6.5.0-beta.4 + "@storybook/addon-viewport": 6.5.0-beta.4 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/client-api": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 + "@storybook/html": 6.5.0-beta.4 + "@storybook/source-loader": 6.5.0-beta.4 autoprefixer: ^10.0.1 eventemitter3: ^4.0.7 format-json: ^1.0.3 global: ^4.4.0 postcss: ^8.2.4 postcss-color-rebeccapurple: ^6.0.0 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 languageName: unknown linkType: soft @@ -33827,31 +34314,31 @@ __metadata: dependencies: "@emotion/jest": ^11.8.0 "@pmmmwh/react-refresh-webpack-plugin": ^0.5.3 - "@storybook/addon-a11y": 6.5.0-beta.1 - "@storybook/addon-actions": 6.5.0-beta.1 - "@storybook/addon-backgrounds": 6.5.0-beta.1 - "@storybook/addon-controls": 6.5.0-beta.1 - "@storybook/addon-docs": 6.5.0-beta.1 - "@storybook/addon-interactions": 6.5.0-beta.1 - "@storybook/addon-jest": 6.5.0-beta.1 - "@storybook/addon-links": 6.5.0-beta.1 - "@storybook/addon-storyshots": 6.5.0-beta.1 - "@storybook/addon-storyshots-puppeteer": 6.5.0-beta.1 - "@storybook/addon-storysource": 6.5.0-beta.1 - "@storybook/addon-toolbars": 6.5.0-beta.1 - "@storybook/addon-viewport": 6.5.0-beta.1 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/cli": 6.5.0-beta.1 - "@storybook/components": 6.5.0-beta.1 - "@storybook/core-events": 6.5.0-beta.1 + "@storybook/addon-a11y": 6.5.0-beta.4 + "@storybook/addon-actions": 6.5.0-beta.4 + "@storybook/addon-backgrounds": 6.5.0-beta.4 + "@storybook/addon-controls": 6.5.0-beta.4 + "@storybook/addon-docs": 6.5.0-beta.4 + "@storybook/addon-interactions": 6.5.0-beta.4 + "@storybook/addon-jest": 6.5.0-beta.4 + "@storybook/addon-links": 6.5.0-beta.4 + "@storybook/addon-storyshots": 6.5.0-beta.4 + "@storybook/addon-storyshots-puppeteer": 6.5.0-beta.4 + "@storybook/addon-storysource": 6.5.0-beta.4 + "@storybook/addon-toolbars": 6.5.0-beta.4 + "@storybook/addon-viewport": 6.5.0-beta.4 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/cli": 6.5.0-beta.4 + "@storybook/components": 6.5.0-beta.4 + "@storybook/core-events": 6.5.0-beta.4 "@storybook/design-system": ^5.4.7 "@storybook/jest": ^0.0.5 - "@storybook/node-logger": 6.5.0-beta.1 - "@storybook/react": 6.5.0-beta.1 - "@storybook/router": 6.5.0-beta.1 - "@storybook/source-loader": 6.5.0-beta.1 + "@storybook/node-logger": 6.5.0-beta.4 + "@storybook/react": 6.5.0-beta.4 + "@storybook/router": 6.5.0-beta.4 + "@storybook/source-loader": 6.5.0-beta.4 "@storybook/testing-library": ^0.0.7 - "@storybook/theming": 6.5.0-beta.1 + "@storybook/theming": 6.5.0-beta.4 "@testing-library/dom": ^7.31.2 "@testing-library/user-event": ^13.1.9 chromatic: ^6.0.2 @@ -33867,7 +34354,7 @@ __metadata: prop-types: ^15.7.2 react: 16.14.0 react-dom: 16.14.0 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 terser-webpack-plugin: ^5.0.3 uuid-browser: ^3.1.0 webpack: 4 @@ -36627,16 +37114,16 @@ __metadata: dependencies: "@babel/core": ^7.12.10 "@babel/plugin-transform-runtime": ^7.12.10 - "@storybook/addon-a11y": 6.5.0-beta.1 - "@storybook/addon-actions": 6.5.0-beta.1 - "@storybook/addon-backgrounds": 6.5.0-beta.1 - "@storybook/addon-links": 6.5.0-beta.1 - "@storybook/addon-storyshots": 6.5.0-beta.1 - "@storybook/addon-storysource": 6.5.0-beta.1 - "@storybook/addon-viewport": 6.5.0-beta.1 - "@storybook/addons": 6.5.0-beta.1 - "@storybook/preact": 6.5.0-beta.1 - "@storybook/source-loader": 6.5.0-beta.1 + "@storybook/addon-a11y": 6.5.0-beta.4 + "@storybook/addon-actions": 6.5.0-beta.4 + "@storybook/addon-backgrounds": 6.5.0-beta.4 + "@storybook/addon-links": 6.5.0-beta.4 + "@storybook/addon-storyshots": 6.5.0-beta.4 + "@storybook/addon-storysource": 6.5.0-beta.4 + "@storybook/addon-viewport": 6.5.0-beta.4 + "@storybook/addons": 6.5.0-beta.4 + "@storybook/preact": 6.5.0-beta.4 + "@storybook/source-loader": 6.5.0-beta.4 "@types/prop-types": ^15.7.3 "@types/react": ^17 "@types/react-dom": ^17 @@ -36651,7 +37138,7 @@ __metadata: raw-loader: ^4.0.2 react: ^17.0.2 react-dom: ^17.0.2 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 svg-url-loader: ^7.1.1 webpack: 4 webpack-dev-server: ^3.11.2 @@ -40640,11 +41127,11 @@ __metadata: languageName: node linkType: hard -"sb@6.5.0-beta.1, sb@workspace:lib/cli-sb": +"sb@6.5.0-beta.4, sb@workspace:lib/cli-sb": version: 0.0.0-use.local resolution: "sb@workspace:lib/cli-sb" dependencies: - "@storybook/cli": 6.5.0-beta.1 + "@storybook/cli": 6.5.0-beta.4 bin: sb: ./index.js languageName: unknown @@ -40968,13 +41455,13 @@ __metadata: version: 0.0.0-use.local resolution: "server-kitchen-sink@workspace:examples/server-kitchen-sink" dependencies: - "@storybook/addon-a11y": 6.5.0-beta.1 - "@storybook/addon-actions": 6.5.0-beta.1 - "@storybook/addon-backgrounds": 6.5.0-beta.1 - "@storybook/addon-controls": 6.5.0-beta.1 - "@storybook/addon-links": 6.5.0-beta.1 - "@storybook/node-logger": 6.5.0-beta.1 - "@storybook/server": 6.5.0-beta.1 + "@storybook/addon-a11y": 6.5.0-beta.4 + "@storybook/addon-actions": 6.5.0-beta.4 + "@storybook/addon-backgrounds": 6.5.0-beta.4 + "@storybook/addon-controls": 6.5.0-beta.4 + "@storybook/addon-links": 6.5.0-beta.4 + "@storybook/node-logger": 6.5.0-beta.4 + "@storybook/server": 6.5.0-beta.4 concurrently: ^5.3.0 cors: ^2.8.5 express: ~4.17.1 @@ -40982,7 +41469,7 @@ __metadata: nodemon: ^2.0.7 pug: ^3.0.0 safe-identifier: ^0.4.1 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 languageName: unknown linkType: soft @@ -41933,14 +42420,14 @@ __metadata: version: 0.0.0-use.local resolution: "standalone-preview@workspace:examples/standalone-preview" dependencies: - "@storybook/addon-docs": 6.5.0-beta.1 - "@storybook/cli": 6.5.0-beta.1 - "@storybook/react": 6.5.0-beta.1 + "@storybook/addon-docs": 6.5.0-beta.4 + "@storybook/cli": 6.5.0-beta.4 + "@storybook/react": 6.5.0-beta.4 cross-env: ^7.0.3 parcel: 2.0.1 react: 16.14.0 react-dom: 16.14.0 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 languageName: unknown linkType: soft @@ -42033,7 +42520,7 @@ __metadata: version: 0.0.0-use.local resolution: "storybook@workspace:lib/cli-storybook" dependencies: - "@storybook/cli": 6.5.0-beta.1 + "@storybook/cli": 6.5.0-beta.4 bin: sb: ./index.js storybook: ./index.js @@ -42753,23 +43240,23 @@ __metadata: version: 0.0.0-use.local resolution: "svelte-example@workspace:examples/svelte-kitchen-sink" dependencies: - "@storybook/addon-a11y": 6.5.0-beta.1 - "@storybook/addon-actions": 6.5.0-beta.1 - "@storybook/addon-backgrounds": 6.5.0-beta.1 - "@storybook/addon-controls": 6.5.0-beta.1 - "@storybook/addon-docs": 6.5.0-beta.1 - "@storybook/addon-interactions": 6.5.0-beta.1 - "@storybook/addon-links": 6.5.0-beta.1 - "@storybook/addon-storyshots": 6.5.0-beta.1 - "@storybook/addon-storysource": 6.5.0-beta.1 - "@storybook/addon-viewport": 6.5.0-beta.1 - "@storybook/addons": 6.5.0-beta.1 + "@storybook/addon-a11y": 6.5.0-beta.4 + "@storybook/addon-actions": 6.5.0-beta.4 + "@storybook/addon-backgrounds": 6.5.0-beta.4 + "@storybook/addon-controls": 6.5.0-beta.4 + "@storybook/addon-docs": 6.5.0-beta.4 + "@storybook/addon-interactions": 6.5.0-beta.4 + "@storybook/addon-links": 6.5.0-beta.4 + "@storybook/addon-storyshots": 6.5.0-beta.4 + "@storybook/addon-storysource": 6.5.0-beta.4 + "@storybook/addon-viewport": 6.5.0-beta.4 + "@storybook/addons": 6.5.0-beta.4 "@storybook/jest": ^0.0.5 - "@storybook/source-loader": 6.5.0-beta.1 - "@storybook/svelte": 6.5.0-beta.1 + "@storybook/source-loader": 6.5.0-beta.4 + "@storybook/svelte": 6.5.0-beta.4 "@storybook/testing-library": ^0.0.7 global: ^4.4.0 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 svelte-jester: 1.3.0 svelte-preprocess: 4.6.8 languageName: unknown @@ -45673,21 +46160,21 @@ __metadata: resolution: "vue-3-cli-example@workspace:examples/vue-3-cli" dependencies: "@babel/core": ^7.12.10 - "@storybook/addon-actions": 6.5.0-beta.1 - "@storybook/addon-essentials": 6.5.0-beta.1 - "@storybook/addon-interactions": 6.5.0-beta.1 - "@storybook/addon-links": 6.5.0-beta.1 - "@storybook/addon-storyshots": 6.5.0-beta.1 + "@storybook/addon-actions": 6.5.0-beta.4 + "@storybook/addon-essentials": 6.5.0-beta.4 + "@storybook/addon-interactions": 6.5.0-beta.4 + "@storybook/addon-links": 6.5.0-beta.4 + "@storybook/addon-storyshots": 6.5.0-beta.4 "@storybook/jest": ^0.0.5 "@storybook/testing-library": ^0.0.7 - "@storybook/vue3": 6.5.0-beta.1 + "@storybook/vue3": 6.5.0-beta.4 "@vue/cli-plugin-babel": ~4.5.0 "@vue/cli-plugin-typescript": ~4.5.0 "@vue/cli-service": ~4.5.0 "@vue/compiler-sfc": ^3.0.0 babel-loader: ^8.0.0 core-js: ^3.8.2 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 typescript: ~3.9.3 vue: ^3.0.0 vue-jest: ^5.0.0-alpha.8 @@ -45708,16 +46195,16 @@ __metadata: version: 0.0.0-use.local resolution: "vue-cli-example@workspace:examples/vue-cli" dependencies: - "@storybook/addon-controls": 6.5.0-beta.1 - "@storybook/addon-essentials": 6.5.0-beta.1 + "@storybook/addon-controls": 6.5.0-beta.4 + "@storybook/addon-essentials": 6.5.0-beta.4 "@storybook/preset-scss": ^1.0.3 - "@storybook/source-loader": 6.5.0-beta.1 - "@storybook/vue": 6.5.0-beta.1 + "@storybook/source-loader": 6.5.0-beta.4 + "@storybook/vue": 6.5.0-beta.4 "@vue/cli-plugin-babel": ~4.3.1 "@vue/cli-plugin-typescript": ~4.3.1 "@vue/cli-service": ~4.3.1 core-js: ^3.8.2 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 typescript: ^3.9.7 vue: ^2.6.12 vue-class-component: ^7.2.6 @@ -45765,27 +46252,27 @@ __metadata: resolution: "vue-example@workspace:examples/vue-kitchen-sink" dependencies: "@babel/core": ^7.12.10 - "@storybook/addon-a11y": 6.5.0-beta.1 - "@storybook/addon-actions": 6.5.0-beta.1 - "@storybook/addon-backgrounds": 6.5.0-beta.1 - "@storybook/addon-controls": 6.5.0-beta.1 - "@storybook/addon-docs": 6.5.0-beta.1 - "@storybook/addon-interactions": 6.5.0-beta.1 - "@storybook/addon-links": 6.5.0-beta.1 - "@storybook/addon-storyshots": 6.5.0-beta.1 - "@storybook/addon-storysource": 6.5.0-beta.1 - "@storybook/addon-viewport": 6.5.0-beta.1 - "@storybook/addons": 6.5.0-beta.1 + "@storybook/addon-a11y": 6.5.0-beta.4 + "@storybook/addon-actions": 6.5.0-beta.4 + "@storybook/addon-backgrounds": 6.5.0-beta.4 + "@storybook/addon-controls": 6.5.0-beta.4 + "@storybook/addon-docs": 6.5.0-beta.4 + "@storybook/addon-interactions": 6.5.0-beta.4 + "@storybook/addon-links": 6.5.0-beta.4 + "@storybook/addon-storyshots": 6.5.0-beta.4 + "@storybook/addon-storysource": 6.5.0-beta.4 + "@storybook/addon-viewport": 6.5.0-beta.4 + "@storybook/addons": 6.5.0-beta.4 "@storybook/jest": ^0.0.5 - "@storybook/source-loader": 6.5.0-beta.1 + "@storybook/source-loader": 6.5.0-beta.4 "@storybook/testing-library": ^0.0.7 - "@storybook/vue": 6.5.0-beta.1 + "@storybook/vue": 6.5.0-beta.4 "@vue/babel-preset-jsx": ^1.2.4 babel-loader: ^8.0.0 cross-env: ^7.0.3 file-loader: ^6.2.0 prop-types: ^15.7.2 - sb: 6.5.0-beta.1 + sb: 6.5.0-beta.4 svg-url-loader: ^7.1.1 vue: ^2.6.12 vue-loader: ^15.9.6