Merge branch 'future/docs2-core' into tom/sb-402-rename-docsmdx-extension-to-mdx

This commit is contained in:
Michael Shilman 2022-06-18 16:43:24 +08:00
commit d86c5948f0
118 changed files with 1992 additions and 2709 deletions

View File

@ -1,3 +1,19 @@
## 7.0.0-alpha.3 (June 17, 2022)
### Features
- Interactions: Collapse child interactions ([#18484](https://github.com/storybookjs/storybook/pull/18484))
### Bug Fixes
- Interactions: Fix `waitFor` behavior while debugging ([#18460](https://github.com/storybookjs/storybook/pull/18460))
- UI: Fix display skip to sidebar button ([#18479](https://github.com/storybookjs/storybook/pull/18479))
### Maintenance
- CLI: Use `storybook` instead of `sb` ([#18430](https://github.com/storybookjs/storybook/pull/18430))
- Components: Re-bundle the syntax highlighter ([#18425](https://github.com/storybookjs/storybook/pull/18425))
## 7.0.0-alpha.2 (June 15, 2022)
### Features

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-a11y",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Test component compliance with web accessibility standards",
"keywords": [
"a11y",
@ -38,14 +38,14 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/channels": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/channels": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.3",
"axe-core": "^4.2.0",
"core-js": "^3.8.2",
"global": "^4.4.0",
@ -73,7 +73,7 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44",
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9",
"storybook": {
"displayName": "Accessibility",
"icon": "https://user-images.githubusercontent.com/263385/101991665-47042f80-3c7c-11eb-8f00-64b5a18f498a.png",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-actions",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Get UI feedback when an action is performed on an interactive element",
"keywords": [
"storybook",
@ -34,13 +34,13 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"fast-deep-equal": "^3.1.3",
"global": "^4.4.0",
@ -72,7 +72,7 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44",
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9",
"storybook": {
"displayName": "Actions",
"unsupportedFrameworks": [

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-backgrounds",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Switch backgrounds to view components in different settings",
"keywords": [
"addon",
@ -38,13 +38,13 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"global": "^4.4.0",
"memoizerific": "^1.11.3",
@ -67,7 +67,7 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44",
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9",
"storybook": {
"displayName": "Backgrounds",
"icon": "https://user-images.githubusercontent.com/263385/101991667-479cc600-3c7c-11eb-96d3-410e936252e7.png",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-controls",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Interact with component inputs dynamically in the Storybook UI",
"keywords": [
"addon",
@ -38,15 +38,15 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/node-logger": "7.0.0-alpha.2",
"@storybook/store": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/node-logger": "7.0.0-alpha.3",
"@storybook/store": "7.0.0-alpha.3",
"@storybook/theming": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"lodash": "^4.17.21",
"ts-dedent": "^2.0.0"
@ -66,7 +66,7 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44",
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9",
"storybook": {
"displayName": "Controls",
"icon": "https://user-images.githubusercontent.com/263385/101991669-479cc600-3c7c-11eb-93d9-38b67e8371f2.png",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-docs",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Document component usage and properties in Markdown",
"keywords": [
"addon",
@ -52,21 +52,21 @@
"@babel/preset-env": "^7.12.11",
"@jest/transform": "^26.6.2",
"@mdx-js/react": "^1.6.22",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/csf-tools": "7.0.0-alpha.2",
"@storybook/docs-tools": "7.0.0-alpha.2",
"@storybook/csf-tools": "7.0.0-alpha.3",
"@storybook/docs-tools": "7.0.0-alpha.3",
"@storybook/mdx1-csf": "^0.0.1",
"@storybook/node-logger": "7.0.0-alpha.2",
"@storybook/postinstall": "7.0.0-alpha.2",
"@storybook/preview-web": "7.0.0-alpha.2",
"@storybook/source-loader": "7.0.0-alpha.2",
"@storybook/store": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/node-logger": "7.0.0-alpha.3",
"@storybook/postinstall": "7.0.0-alpha.3",
"@storybook/preview-web": "7.0.0-alpha.3",
"@storybook/source-loader": "7.0.0-alpha.3",
"@storybook/store": "7.0.0-alpha.3",
"@storybook/theming": "7.0.0-alpha.3",
"babel-loader": "^8.2.5",
"core-js": "^3.8.2",
"fast-deep-equal": "^3.1.3",
@ -102,7 +102,7 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44",
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9",
"storybook": {
"displayName": "Docs",
"icon": "https://user-images.githubusercontent.com/263385/101991672-48355c80-3c7c-11eb-82d9-95fa12438f64.png",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-essentials",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Curated addons to bring out the best of Storybook",
"keywords": [
"addon",
@ -32,25 +32,25 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addon-actions": "7.0.0-alpha.2",
"@storybook/addon-backgrounds": "7.0.0-alpha.2",
"@storybook/addon-controls": "7.0.0-alpha.2",
"@storybook/addon-docs": "7.0.0-alpha.2",
"@storybook/addon-measure": "7.0.0-alpha.2",
"@storybook/addon-outline": "7.0.0-alpha.2",
"@storybook/addon-toolbars": "7.0.0-alpha.2",
"@storybook/addon-viewport": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/node-logger": "7.0.0-alpha.2",
"@storybook/addon-actions": "7.0.0-alpha.3",
"@storybook/addon-backgrounds": "7.0.0-alpha.3",
"@storybook/addon-controls": "7.0.0-alpha.3",
"@storybook/addon-docs": "7.0.0-alpha.3",
"@storybook/addon-measure": "7.0.0-alpha.3",
"@storybook/addon-outline": "7.0.0-alpha.3",
"@storybook/addon-toolbars": "7.0.0-alpha.3",
"@storybook/addon-viewport": "7.0.0-alpha.3",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/node-logger": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"regenerator-runtime": "^0.13.7",
"ts-dedent": "^2.0.0"
},
"devDependencies": {
"@babel/core": "^7.12.10",
"@storybook/vue": "7.0.0-alpha.2",
"@storybook/vue": "7.0.0-alpha.3",
"@types/jest": "^26.0.16"
},
"peerDependencies": {
@ -97,5 +97,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-interactions",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Automate, test and debug user interactions",
"keywords": [
"storybook-addons",
@ -35,15 +35,15 @@
},
"dependencies": {
"@devtools-ds/object-inspector": "^1.1.2",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/instrumenter": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/instrumenter": "7.0.0-alpha.3",
"@storybook/theming": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"global": "^4.4.0",
"jest-mock": "^27.0.6",
@ -70,7 +70,7 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44",
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9",
"storybook": {
"displayName": "Interactions",
"unsupportedFrameworks": [

View File

@ -4,7 +4,7 @@ import { ComponentStoryObj, ComponentMeta } from '@storybook/react';
import { CallStates } from '@storybook/instrumenter';
import { styled } from '@storybook/theming';
import { getCall } from './mocks';
import { getCalls, getInteractions } from './mocks';
import { AddonPanelPure } from './Panel';
import SubnavStories from './components/Subnav/Subnav.stories';
@ -20,6 +20,8 @@ const StyledWrapper = styled.div(({ theme }) => ({
overflow: 'auto',
}));
const interactions = getInteractions(CallStates.DONE);
export default {
title: 'Addons/Interactions/Panel',
component: AddonPanelPure,
@ -34,10 +36,10 @@ export default {
layout: 'fullscreen',
},
args: {
calls: new Map(),
calls: new Map(getCalls(CallStates.DONE).map((call) => [call.id, call])),
controls: SubnavStories.args.controls,
controlStates: SubnavStories.args.controlStates,
interactions: [getCall(CallStates.DONE)],
interactions,
fileName: 'addon-interactions.stories.tsx',
hasException: false,
isPlaying: false,
@ -52,14 +54,14 @@ type Story = ComponentStoryObj<typeof AddonPanelPure>;
export const Passing: Story = {
args: {
interactions: [getCall(CallStates.DONE)],
interactions: getInteractions(CallStates.DONE),
},
};
export const Paused: Story = {
args: {
isPlaying: true,
interactions: [getCall(CallStates.WAITING)],
interactions: getInteractions(CallStates.WAITING),
controlStates: {
debugger: true,
start: false,
@ -68,20 +70,21 @@ export const Paused: Story = {
next: true,
end: true,
},
pausedAt: interactions[interactions.length - 1].id,
},
};
export const Playing: Story = {
args: {
isPlaying: true,
interactions: [getCall(CallStates.ACTIVE)],
interactions: getInteractions(CallStates.ACTIVE),
},
};
export const Failed: Story = {
args: {
hasException: true,
interactions: [getCall(CallStates.ERROR)],
interactions: getInteractions(CallStates.ERROR),
},
};

View File

@ -28,10 +28,16 @@ interface InteractionsPanelProps {
active: boolean;
controls: Controls;
controlStates: ControlStates;
interactions: (Call & { status?: CallStates })[];
interactions: (Call & {
status?: CallStates;
childCallIds: Call['id'][];
isCollapsed: boolean;
toggleCollapsed: () => void;
})[];
fileName?: string;
hasException?: boolean;
isPlaying?: boolean;
pausedAt?: Call['id'];
calls: Map<string, any>;
endRef?: React.Ref<HTMLDivElement>;
onScrollToEnd?: () => void;
@ -66,6 +72,7 @@ export const AddonPanelPure: React.FC<InteractionsPanelProps> = React.memo(
fileName,
hasException,
isPlaying,
pausedAt,
onScrollToEnd,
endRef,
isRerunAnimating,
@ -87,15 +94,21 @@ export const AddonPanelPure: React.FC<InteractionsPanelProps> = React.memo(
setIsRerunAnimating={setIsRerunAnimating}
/>
)}
{interactions.map((call) => (
<Interaction
key={call.id}
call={call}
callsById={calls}
controls={controls}
controlStates={controlStates}
/>
))}
<div>
{interactions.map((call) => (
<Interaction
key={call.id}
call={call}
callsById={calls}
controls={controls}
controlStates={controlStates}
childCallIds={call.childCallIds}
isCollapsed={call.isCollapsed}
toggleCollapsed={call.toggleCollapsed}
pausedAt={pausedAt}
/>
))}
</div>
<div ref={endRef} />
{!isPlaying && interactions.length === 0 && (
<Placeholder>
@ -116,16 +129,36 @@ export const AddonPanelPure: React.FC<InteractionsPanelProps> = React.memo(
export const Panel: React.FC<AddonPanelProps> = (props) => {
const [storyId, setStoryId] = React.useState<StoryId>();
const [controlStates, setControlStates] = React.useState<ControlStates>(INITIAL_CONTROL_STATES);
const [pausedAt, setPausedAt] = React.useState<Call['id']>();
const [isPlaying, setPlaying] = React.useState(false);
const [isRerunAnimating, setIsRerunAnimating] = React.useState(false);
const [scrollTarget, setScrollTarget] = React.useState<HTMLElement>();
const [collapsed, setCollapsed] = React.useState<Set<Call['id']>>(new Set());
// Calls are tracked in a ref so we don't needlessly rerender.
const calls = React.useRef<Map<Call['id'], Omit<Call, 'status'>>>(new Map());
const setCall = ({ status, ...call }: Call) => calls.current.set(call.id, call);
const [log, setLog] = React.useState<LogItem[]>([]);
const interactions = log.map(({ callId, status }) => ({ ...calls.current.get(callId), status }));
const childCallMap = new Map<Call['id'], Call['id'][]>();
const interactions = log
.filter((call) => {
if (!call.parentId) return true;
childCallMap.set(call.parentId, (childCallMap.get(call.parentId) || []).concat(call.callId));
return !collapsed.has(call.parentId);
})
.map(({ callId, status }) => ({
...calls.current.get(callId),
status,
childCallIds: childCallMap.get(callId),
isCollapsed: collapsed.has(callId),
toggleCollapsed: () =>
setCollapsed((ids) => {
if (ids.has(callId)) ids.delete(callId);
else ids.add(callId);
return new Set(ids);
}),
}));
const endRef = React.useRef();
React.useEffect(() => {
@ -146,10 +179,12 @@ export const Panel: React.FC<AddonPanelProps> = (props) => {
[EVENTS.SYNC]: (payload) => {
setControlStates(payload.controlStates);
setLog(payload.logItems);
setPausedAt(payload.pausedAt);
},
[STORY_RENDER_PHASE_CHANGED]: (event) => {
setStoryId(event.storyId);
setPlaying(event.newPhase === 'playing');
setPausedAt(undefined);
},
},
[]
@ -191,6 +226,7 @@ export const Panel: React.FC<AddonPanelProps> = (props) => {
fileName={fileName}
hasException={hasException}
isPlaying={isPlaying}
pausedAt={pausedAt}
endRef={endRef}
onScrollToEnd={scrollTarget && scrollToTarget}
isRerunAnimating={isRerunAnimating}

View File

@ -131,7 +131,7 @@ export const StandardEmailFailed: CSF3Story = {
await userEvent.click(canvas.getByRole('button', { name: /create account/i }));
await canvas.findByText('Please enter a correctly formatted email address');
expect(args.onSubmit).not.toHaveBeenCalled();
await expect(args.onSubmit).not.toHaveBeenCalled();
},
};

View File

@ -2,7 +2,7 @@ import { ComponentStoryObj, ComponentMeta } from '@storybook/react';
import { expect } from '@storybook/jest';
import { CallStates } from '@storybook/instrumenter';
import { userEvent, within } from '@storybook/testing-library';
import { getCall } from '../../mocks';
import { getCalls } from '../../mocks';
import { Interaction } from './Interaction';
import SubnavStories from '../Subnav/Subnav.stories';
@ -13,7 +13,7 @@ export default {
title: 'Addons/Interactions/Interaction',
component: Interaction,
args: {
callsById: new Map(),
callsById: new Map(getCalls(CallStates.DONE).map((call) => [call.id, call])),
controls: SubnavStories.args.controls,
controlStates: SubnavStories.args.controlStates,
},
@ -21,25 +21,31 @@ export default {
export const Active: Story = {
args: {
call: getCall(CallStates.ACTIVE),
call: getCalls(CallStates.ACTIVE).slice(-1)[0],
},
};
export const Waiting: Story = {
args: {
call: getCall(CallStates.WAITING),
call: getCalls(CallStates.WAITING).slice(-1)[0],
},
};
export const Failed: Story = {
args: {
call: getCall(CallStates.ERROR),
call: getCalls(CallStates.ERROR).slice(-1)[0],
},
};
export const Done: Story = {
args: {
call: getCall(CallStates.DONE),
call: getCalls(CallStates.DONE).slice(-1)[0],
},
};
export const WithParent: Story = {
args: {
call: { ...getCalls(CallStates.DONE).slice(-1)[0], parentId: 'parent-id' },
},
};

View File

@ -1,4 +1,5 @@
import * as React from 'react';
import { IconButton, Icons, TooltipNote, WithTooltip } from '@storybook/components';
import { Call, CallStates, ControlStates } from '@storybook/instrumenter';
import { styled, typography } from '@storybook/theming';
import { transparentize } from 'polished';
@ -15,23 +16,55 @@ const MethodCallWrapper = styled.div(() => ({
inlineSize: 'calc( 100% - 40px )',
}));
const RowContainer = styled('div', { shouldForwardProp: (prop) => !['call'].includes(prop) })<{
call: Call;
}>(({ theme, call }) => ({
display: 'flex',
flexDirection: 'column',
borderBottom: `1px solid ${theme.appBorderColor}`,
fontFamily: typography.fonts.base,
fontSize: 13,
...(call.status === CallStates.ERROR && {
backgroundColor:
theme.base === 'dark' ? transparentize(0.93, theme.color.negative) : theme.background.warning,
const RowContainer = styled('div', {
shouldForwardProp: (prop) => !['call', 'pausedAt'].includes(prop),
})<{ call: Call; pausedAt: Call['id'] }>(
({ theme, call }) => ({
position: 'relative',
display: 'flex',
flexDirection: 'column',
borderBottom: `1px solid ${theme.appBorderColor}`,
fontFamily: typography.fonts.base,
fontSize: 13,
...(call.status === CallStates.ERROR && {
backgroundColor:
theme.base === 'dark'
? transparentize(0.93, theme.color.negative)
: theme.background.warning,
}),
paddingLeft: call.parentId ? 20 : 0,
}),
({ theme, call, pausedAt }) =>
pausedAt === call.id && {
'&::before': {
content: '""',
position: 'absolute',
top: -5,
zIndex: 1,
borderTop: '4.5px solid transparent',
borderLeft: `7px solid ${theme.color.warning}`,
borderBottom: '4.5px solid transparent',
},
'&::after': {
content: '""',
position: 'absolute',
top: -1,
zIndex: 1,
width: '100%',
borderTop: `1.5px solid ${theme.color.warning}`,
},
}
);
const RowHeader = styled.div<{ disabled: boolean }>(({ theme, disabled }) => ({
display: 'flex',
'&:hover': disabled ? {} : { background: theme.background.hoverable },
}));
const RowLabel = styled('button', { shouldForwardProp: (prop) => !['call'].includes(prop) })<
React.ButtonHTMLAttributes<HTMLButtonElement> & { call: Call }
>(({ theme, disabled, call }) => ({
flex: 1,
display: 'grid',
background: 'none',
border: 0,
@ -42,7 +75,6 @@ const RowLabel = styled('button', { shouldForwardProp: (prop) => !['call'].inclu
padding: '8px 15px',
textAlign: 'start',
cursor: disabled || call.status === CallStates.ERROR ? 'default' : 'pointer',
'&:hover': disabled ? {} : { background: theme.background.hoverable },
'&:focus-visible': {
outline: 0,
boxShadow: `inset 3px 0 0 0 ${
@ -55,45 +87,101 @@ const RowLabel = styled('button', { shouldForwardProp: (prop) => !['call'].inclu
},
}));
const RowMessage = styled('pre')({
margin: 0,
padding: '8px 10px 8px 30px',
const RowActions = styled.div(({ theme }) => ({
padding: 6,
}));
export const StyledIconButton = styled(IconButton as any)(({ theme }) => ({
color: theme.color.mediumdark,
margin: '0 3px',
}));
const Note = styled(TooltipNote)(({ theme }) => ({
fontFamily: theme.typography.fonts.base,
}));
const RowMessage = styled('div')(({ theme }) => ({
padding: '8px 10px 8px 36px',
fontSize: typography.size.s1,
});
pre: {
margin: 0,
padding: 0,
},
p: {
color: theme.color.dark,
},
}));
const Exception = ({ exception }: { exception: Call['exception'] }) => {
if (exception.message.startsWith('expect(')) {
return <MatcherResult {...exception} />;
}
const paragraphs = exception.message.split('\n\n');
const more = paragraphs.length > 1;
return (
<RowMessage>
<pre>{paragraphs[0]}</pre>
{more && <p>See the full stack trace in the browser console.</p>}
</RowMessage>
);
};
export const Interaction = ({
call,
callsById,
controls,
controlStates,
childCallIds,
isCollapsed,
toggleCollapsed,
pausedAt,
}: {
call: Call;
callsById: Map<Call['id'], Call>;
controls: Controls;
controlStates: ControlStates;
childCallIds?: Call['id'][];
isCollapsed: boolean;
toggleCollapsed: () => void;
pausedAt?: Call['id'];
}) => {
const [isHovered, setIsHovered] = React.useState(false);
return (
<RowContainer call={call}>
<RowLabel
call={call}
onClick={() => controls.goto(call.id)}
disabled={!controlStates.goto}
onMouseEnter={() => controlStates.goto && setIsHovered(true)}
onMouseLeave={() => controlStates.goto && setIsHovered(false)}
>
<StatusIcon status={isHovered ? CallStates.ACTIVE : call.status} />
<MethodCallWrapper style={{ marginLeft: 6, marginBottom: 1 }}>
<MethodCall call={call} callsById={callsById} />
</MethodCallWrapper>
</RowLabel>
{call.status === CallStates.ERROR &&
call.exception &&
(call.exception.message.startsWith('expect(') ? (
<MatcherResult {...call.exception} />
) : (
<RowMessage>{call.exception.message}</RowMessage>
))}
<RowContainer call={call} pausedAt={pausedAt}>
<RowHeader disabled={!controlStates.goto || !call.interceptable || !!call.parentId}>
<RowLabel
call={call}
onClick={() => controls.goto(call.id)}
disabled={!controlStates.goto || !call.interceptable || !!call.parentId}
onMouseEnter={() => controlStates.goto && setIsHovered(true)}
onMouseLeave={() => controlStates.goto && setIsHovered(false)}
>
<StatusIcon status={isHovered ? CallStates.ACTIVE : call.status} />
<MethodCallWrapper style={{ marginLeft: 6, marginBottom: 1 }}>
<MethodCall call={call} callsById={callsById} />
</MethodCallWrapper>
</RowLabel>
<RowActions>
{childCallIds?.length > 0 && (
<WithTooltip
hasChrome={false}
tooltip={
<Note
note={`${isCollapsed ? 'Show' : 'Hide'} interactions (${childCallIds.length})`}
/>
}
>
<StyledIconButton containsIcon onClick={toggleCollapsed}>
<Icons icon="listunordered" />
</StyledIconButton>
</WithTooltip>
)}
</RowActions>
</RowHeader>
{call.status === CallStates.ERROR && call.exception?.callId === call.id && (
<Exception exception={call.exception} />
)}
</RowContainer>
);
};

View File

@ -50,7 +50,7 @@ export const MatcherResult = ({ message }: { message: string }) => {
<pre
style={{
margin: 0,
padding: '8px 10px 8px 30px',
padding: '8px 10px 8px 36px',
fontSize: typography.size.s1,
}}
>

View File

@ -27,7 +27,6 @@ export default {
},
};
class FooBar {}
export const Args = () => (
<div style={{ display: 'inline-flex', flexDirection: 'column', gap: 10 }}>
<Node value={null} />
@ -56,37 +55,49 @@ export const Args = () => (
}}
showObjectInspector
/>
<Node value={new FooBar()} />
<Node value={function goFaster() {}} />
<Node value={{ __class__: { name: 'FooBar' } }} />
<Node value={{ __function__: { name: 'goFaster' } }} />
<Node value={{ __element__: { localName: 'hr' } }} />
<Node value={{ __element__: { localName: 'foo', prefix: 'x' } }} />
<Node value={{ __element__: { localName: 'div', id: 'foo' } }} />
<Node value={{ __element__: { localName: 'span', classNames: ['foo', 'bar'] } }} />
<Node value={{ __element__: { localName: 'button', innerText: 'Click me' } }} />
<Node value={new Date(Date.UTC(2012, 11, 20, 0, 0, 0))} />
<Node value={new Date(1600000000000)} />
<Node value={new Date(1600000000123)} />
<Node value={new EvalError()} />
<Node value={new SyntaxError("Can't do that")} />
<Node value={new TypeError("Cannot read property 'foo' of undefined")} />
<Node value={new ReferenceError('Invalid left-hand side in assignment')} />
<Node
value={
new Error(
"XMLHttpRequest cannot load https://example.com. No 'Access-Control-Allow-Origin' header is present on the requested resource."
)
}
value={{ __date__: { value: new Date(Date.UTC(2012, 11, 20, 0, 0, 0)).toISOString() } }}
/>
<Node value={/hello/i} />
<Node value={new RegExp(`src(.*)\\.js$`)} />
{/* eslint-disable-next-line symbol-description */}
<Node value={Symbol()} />
<Node value={Symbol('Hello world')} />
<Node value={{ __date__: { value: new Date(1600000000000).toISOString() } }} />
<Node value={{ __date__: { value: new Date(1600000000123).toISOString() } }} />
<Node value={{ __error__: { name: 'EvalError', message: '' } }} />
<Node value={{ __error__: { name: 'SyntaxError', message: "Can't do that" } }} />
<Node
value={{
__error__: { name: 'TypeError', message: "Cannot read property 'foo' of undefined" },
}}
/>
<Node
value={{
__error__: { name: 'ReferenceError', message: 'Invalid left-hand side in assignment' },
}}
/>
<Node
value={{
__error__: {
name: 'Error',
message:
"XMLHttpRequest cannot load https://example.com. No 'Access-Control-Allow-Origin' header is present on the requested resource.",
},
}}
/>
<Node value={{ __regexp__: { flags: 'i', source: 'hello' } }} />
<Node value={{ __regexp__: { flags: '', source: 'src(.*)\\.js$' } }} />
<Node value={{ __symbol__: { description: '' } }} />
<Node value={{ __symbol__: { description: 'Hello world' } }} />
</div>
);
const calls: Call[] = [
{
cursor: 0,
id: '1',
path: ['screen'],
method: 'getByText',
@ -96,6 +107,7 @@ const calls: Call[] = [
retain: false,
},
{
cursor: 1,
id: '2',
path: ['userEvent'],
method: 'click',
@ -105,6 +117,7 @@ const calls: Call[] = [
retain: false,
},
{
cursor: 2,
id: '3',
path: [],
method: 'expect',
@ -114,6 +127,7 @@ const calls: Call[] = [
retain: false,
},
{
cursor: 3,
id: '4',
path: [{ __callId__: '3' }, 'not'],
method: 'toBe',
@ -123,15 +137,17 @@ const calls: Call[] = [
retain: false,
},
{
cursor: 4,
id: '5',
path: ['jest'],
method: 'fn',
storyId: 'kind--story',
args: [function actionHandler() {}],
args: [{ __function__: { name: 'actionHandler' } }],
interceptable: false,
retain: false,
},
{
cursor: 5,
id: '6',
path: [],
method: 'expect',
@ -141,20 +157,28 @@ const calls: Call[] = [
retain: false,
},
{
cursor: 6,
id: '7',
path: ['expect'],
method: 'stringMatching',
storyId: 'kind--story',
args: [/hello/i],
args: [{ __regexp__: { flags: 'i', source: 'hello' } }],
interceptable: false,
retain: false,
},
{
cursor: 7,
id: '8',
path: [{ __callId__: '6' }, 'not'],
method: 'toHaveBeenCalledWith',
storyId: 'kind--story',
args: [{ __callId__: '7' }, new Error("Cannot read property 'foo' of undefined")],
args: [
{ __callId__: '7' },
[
{ __error__: { name: 'Error', message: "Cannot read property 'foo' of undefined" } },
{ __symbol__: { description: 'Hello world' } },
],
],
interceptable: false,
retain: false,
},

View File

@ -111,32 +111,34 @@ export const Node = ({
return <NullNode {...props} />;
case value === undefined:
return <UndefinedNode {...props} />;
case Array.isArray(value):
return <ArrayNode {...props} value={value} />;
case typeof value === 'string':
return <StringNode value={value} {...props} />;
return <StringNode {...props} value={value} />;
case typeof value === 'number':
return <NumberNode value={value} {...props} />;
return <NumberNode {...props} value={value} />;
case typeof value === 'boolean':
return <BooleanNode value={value} {...props} />;
case typeof value === 'function':
return <FunctionNode value={value} {...props} />;
case value instanceof Array:
return <ArrayNode value={value} {...props} />;
case value instanceof Date:
return <DateNode value={value} {...props} />;
case value instanceof Error:
return <ErrorNode value={value} {...props} />;
case value instanceof RegExp:
return <RegExpNode value={value} {...props} />;
return <BooleanNode {...props} value={value} />;
/* eslint-disable no-underscore-dangle */
case Object.prototype.hasOwnProperty.call(value, '__date__'):
return <DateNode {...props} {...value.__date__} />;
case Object.prototype.hasOwnProperty.call(value, '__error__'):
return <ErrorNode {...props} {...value.__error__} />;
case Object.prototype.hasOwnProperty.call(value, '__regexp__'):
return <RegExpNode {...props} {...value.__regexp__} />;
case Object.prototype.hasOwnProperty.call(value, '__function__'):
return <FunctionNode {...props} {...value.__function__} />;
case Object.prototype.hasOwnProperty.call(value, '__symbol__'):
return <SymbolNode {...props} {...value.__symbol__} />;
case Object.prototype.hasOwnProperty.call(value, '__element__'):
// eslint-disable-next-line no-underscore-dangle
return <ElementNode value={value.__element__} {...props} />;
return <ElementNode {...props} {...value.__element__} />;
case Object.prototype.hasOwnProperty.call(value, '__class__'):
return <ClassNode {...props} {...value.__class__} />;
case Object.prototype.hasOwnProperty.call(value, '__callId__'):
// eslint-disable-next-line no-underscore-dangle
return <MethodCall call={callsById.get(value.__callId__)} callsById={callsById} />;
case typeof value === 'object' &&
value.constructor?.name &&
value.constructor?.name !== 'Object':
return <ClassNode value={value} {...props} />;
/* eslint-enable no-underscore-dangle */
case Object.prototype.toString.call(value) === '[object Object]':
return <ObjectNode value={value} showInspector={showObjectInspector} {...props} />;
default:
@ -263,18 +265,27 @@ export const ObjectNode = ({
);
};
export const ClassNode = ({ value }: { value: Record<string, any> }) => {
export const ClassNode = ({ name }: { name: string }) => {
const colors = useThemeColors();
return <span style={{ color: colors.instance }}>{value.constructor.name}</span>;
return <span style={{ color: colors.instance }}>{name}</span>;
};
export const FunctionNode = ({ value }: { value: Function }) => {
export const FunctionNode = ({ name }: { name: string }) => {
const colors = useThemeColors();
return <span style={{ color: colors.function }}>{value.name || 'anonymous'}</span>;
return name ? (
<span style={{ color: colors.function }}>{name}</span>
) : (
<span style={{ color: colors.nullish, fontStyle: 'italic' }}>anonymous</span>
);
};
export const ElementNode = ({ value }: { value: ElementRef['__element__'] }) => {
const { prefix, localName, id, classNames = [], innerText } = value;
export const ElementNode = ({
prefix,
localName,
id,
classNames = [],
innerText,
}: ElementRef['__element__']) => {
const name = prefix ? `${prefix}:${localName}` : localName;
const colors = useThemeColors();
return (
@ -309,8 +320,8 @@ export const ElementNode = ({ value }: { value: ElementRef['__element__'] }) =>
);
};
export const DateNode = ({ value }: { value: Date }) => {
const [date, time, ms] = value.toISOString().split(/[T.Z]/);
export const DateNode = ({ value }: { value: string }) => {
const [date, time, ms] = value.split(/[T.Z]/);
const colors = useThemeColors();
return (
<span style={{ whiteSpace: 'nowrap', color: colors.date }}>
@ -323,42 +334,36 @@ export const DateNode = ({ value }: { value: Date }) => {
);
};
export const ErrorNode = ({ value }: { value: Error }) => {
export const ErrorNode = ({ name, message }: { name: string; message: string }) => {
const colors = useThemeColors();
return (
<span style={{ color: colors.error.name }}>
{value.name}
{value.message && ': '}
{value.message && (
<span
style={{ color: colors.error.message }}
title={value.message.length > 50 ? value.message : ''}
>
{ellipsize(value.message, 50)}
{name}
{message && ': '}
{message && (
<span style={{ color: colors.error.message }} title={message.length > 50 ? message : ''}>
{ellipsize(message, 50)}
</span>
)}
</span>
);
};
export const RegExpNode = ({ value }: { value: RegExp }) => {
export const RegExpNode = ({ flags, source }: { flags: string; source: string }) => {
const colors = useThemeColors();
return (
<span style={{ whiteSpace: 'nowrap', color: colors.regex.flags }}>
/<span style={{ color: colors.regex.source }}>{value.source}</span>/{value.flags}
/<span style={{ color: colors.regex.source }}>{source}</span>/{flags}
</span>
);
};
export const SymbolNode = ({ value }: { value: symbol }) => {
export const SymbolNode = ({ description }: { description: string }) => {
const colors = useThemeColors();
return (
<span style={{ whiteSpace: 'nowrap', color: colors.instance }}>
Symbol(
{value.description && (
<span style={{ color: colors.meta }}>{JSON.stringify(value.description)}</span>
)}
)
{description && <span style={{ color: colors.meta }}>"{description}"</span>})
</span>
);
};

View File

@ -12,6 +12,7 @@ export default {
goto: action('goto'),
next: action('next'),
end: action('end'),
rerun: action('rerun'),
},
controlStates: {
debugger: true,

View File

@ -1,31 +1,122 @@
import { CallStates, Call } from '@storybook/instrumenter';
export const getCall = (status: CallStates): Call => {
const defaultData = {
id: 'addons-interactions-accountform--standard-email-filled [3] change',
cursor: 0,
path: ['fireEvent'],
method: 'change',
storyId: 'addons-interactions-accountform--standard-email-filled',
args: [
{
__callId__: 'addons-interactions-accountform--standard-email-filled [2] getByTestId',
retain: false,
},
{
target: {
value: 'michael@chromatic.com',
},
},
],
interceptable: true,
retain: false,
status,
};
export const getCalls = (finalStatus: CallStates) => {
const calls: Call[] = [
{
id: 'story--id [3] within',
storyId: 'story--id',
cursor: 3,
path: [],
method: 'within',
args: [{ __element__: { localName: 'div', id: 'root' } }],
interceptable: false,
retain: false,
status: CallStates.DONE,
},
{
id: 'story--id [4] findByText',
storyId: 'story--id',
cursor: 4,
path: [{ __callId__: 'story--id [3] within' }],
method: 'findByText',
args: ['Click'],
interceptable: true,
retain: false,
status: CallStates.DONE,
},
{
id: 'story--id [5] click',
storyId: 'story--id',
cursor: 5,
path: ['userEvent'],
method: 'click',
args: [{ __element__: { localName: 'button', innerText: 'Click' } }],
interceptable: true,
retain: false,
status: CallStates.DONE,
},
{
id: 'story--id [6] waitFor',
storyId: 'story--id',
cursor: 6,
path: [],
method: 'waitFor',
args: [{ __function__: { name: '' } }],
interceptable: true,
retain: false,
status: CallStates.DONE,
},
{
id: 'story--id [6] waitFor [0] expect',
parentId: 'story--id [6] waitFor',
storyId: 'story--id',
cursor: 1,
path: [],
method: 'expect',
args: [{ __function__: { name: 'handleSubmit' } }],
interceptable: false,
retain: false,
status: CallStates.DONE,
},
{
id: 'story--id [6] waitFor [1] stringMatching',
parentId: 'story--id [6] waitFor',
storyId: 'story--id',
cursor: 2,
path: ['expect'],
method: 'stringMatching',
args: [{ __regexp__: { flags: 'gi', source: '([A-Z])w+' } }],
interceptable: false,
retain: false,
status: CallStates.DONE,
},
{
id: 'story--id [6] waitFor [2] toHaveBeenCalledWith',
parentId: 'story--id [6] waitFor',
storyId: 'story--id',
cursor: 3,
path: [{ __callId__: 'story--id [6] waitFor [0] expect' }],
method: 'toHaveBeenCalledWith',
args: [{ __callId__: 'story--id [6] waitFor [1] stringMatching', retain: false }],
interceptable: true,
retain: false,
status: CallStates.DONE,
},
{
id: 'story--id [7] expect',
storyId: 'story--id',
cursor: 7,
path: [],
method: 'expect',
args: [{ __function__: { name: 'handleReset' } }],
interceptable: false,
retain: false,
status: CallStates.DONE,
},
{
id: 'story--id [8] toHaveBeenCalled',
storyId: 'story--id',
cursor: 8,
path: [{ __callId__: 'story--id [7] expect' }, 'not'],
method: 'toHaveBeenCalled',
args: [],
interceptable: true,
retain: false,
status: finalStatus,
},
];
const overrides = CallStates.ERROR
? { exception: { name: 'Error', stack: '', message: "Things didn't work!" } }
: {};
if (finalStatus === CallStates.ERROR) {
calls[calls.length - 1].exception = {
name: 'Error',
stack: '',
message: 'Oops!',
callId: calls[calls.length - 1].id,
};
}
return { ...defaultData, ...overrides };
return calls;
};
export const getInteractions = (finalStatus: CallStates) =>
getCalls(finalStatus).filter((call) => call.interceptable);

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-jest",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "React storybook addon that show component jest report",
"keywords": [
"addon",
@ -40,12 +40,12 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/theming": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"global": "^4.4.0",
"react-sizeme": "^3.0.1",
@ -67,7 +67,7 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44",
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9",
"storybook": {
"displayName": "Jest",
"icon": "https://pbs.twimg.com/profile_images/821713465245102080/mMtKIMax_400x400.jpg",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-links",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Link stories together to build demos and prototypes with your UI components",
"keywords": [
"addon",
@ -34,11 +34,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/router": "7.0.0-alpha.2",
"@storybook/router": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"global": "^4.4.0",
"prop-types": "^15.7.2",
@ -60,7 +60,7 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44",
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9",
"storybook": {
"displayName": "Links",
"icon": "https://user-images.githubusercontent.com/263385/101991673-48355c80-3c7c-11eb-9b6e-b627c96a75f6.png",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-measure",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Inspect layouts by visualizing the box model",
"keywords": [
"storybook-addons",
@ -37,11 +37,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"core-js": "^3.8.2",
"global": "^4.4.0"
@ -61,7 +61,7 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44",
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9",
"storybook": {
"displayName": "Measure",
"unsupportedFrameworks": [

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-outline",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Outline all elements with CSS to help with layout placement and alignment",
"keywords": [
"storybook-addons",
@ -40,11 +40,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"core-js": "^3.8.2",
"global": "^4.4.0",
@ -66,7 +66,7 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44",
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9",
"storybook": {
"displayName": "Outline",
"unsupportedFrameworks": [

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-storyshots",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Take a code snapshot of every story automatically with Jest",
"keywords": [
"addon",
@ -38,11 +38,11 @@
},
"dependencies": {
"@jest/transform": "^26.6.2",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/babel-plugin-require-context-hook": "1.0.1",
"@storybook/client-api": "7.0.0-alpha.2",
"@storybook/core-client": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/client-api": "7.0.0-alpha.3",
"@storybook/core-client": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@types/glob": "^7.1.3",
"@types/jest": "^26.0.16",
@ -62,11 +62,11 @@
"@angular/core": "^13.3.6",
"@angular/platform-browser-dynamic": "^13.3.6",
"@emotion/jest": "^11.8.0",
"@storybook/addon-docs": "7.0.0-alpha.2",
"@storybook/angular": "7.0.0-alpha.2",
"@storybook/react": "7.0.0-alpha.2",
"@storybook/vue": "7.0.0-alpha.2",
"@storybook/vue3": "7.0.0-alpha.2",
"@storybook/addon-docs": "7.0.0-alpha.3",
"@storybook/angular": "7.0.0-alpha.3",
"@storybook/react": "7.0.0-alpha.3",
"@storybook/vue": "7.0.0-alpha.3",
"@storybook/vue3": "7.0.0-alpha.3",
"babel-loader": "^8.2.5",
"enzyme": "^3.11.0",
"enzyme-to-json": "^3.6.1",
@ -143,7 +143,7 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44",
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9",
"storybook": {
"displayName": "Storyshots",
"icon": "https://user-images.githubusercontent.com/263385/101991676-48cdf300-3c7c-11eb-8aa1-944dab6ab29b.png",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-storyshots-puppeteer",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Image snapshots addition to StoryShots based on puppeteer",
"keywords": [
"addon",
@ -35,7 +35,7 @@
"dependencies": {
"@axe-core/puppeteer": "^4.2.0",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/node-logger": "7.0.0-alpha.2",
"@storybook/node-logger": "7.0.0-alpha.3",
"@types/jest-image-snapshot": "^4.1.3",
"core-js": "^3.8.2",
"jest-image-snapshot": "^4.3.0",
@ -46,7 +46,7 @@
"@types/puppeteer": "^5.4.0"
},
"peerDependencies": {
"@storybook/addon-storyshots": "7.0.0-alpha.2",
"@storybook/addon-storyshots": "7.0.0-alpha.3",
"puppeteer": "^2.0.0 || ^3.0.0"
},
"peerDependenciesMeta": {
@ -57,5 +57,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-storysource",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "View a storys source code to see how it works and paste into your app",
"keywords": [
"addon",
@ -34,13 +34,13 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/router": "7.0.0-alpha.2",
"@storybook/source-loader": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/router": "7.0.0-alpha.3",
"@storybook/source-loader": "7.0.0-alpha.3",
"@storybook/theming": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"estraverse": "^5.2.0",
"prop-types": "^15.7.2",
@ -66,7 +66,7 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44",
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9",
"storybook": {
"displayName": "Storysource",
"icon": "https://user-images.githubusercontent.com/263385/101991675-48cdf300-3c7c-11eb-9400-58de5ac6daa7.png",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-toolbars",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Create your own toolbar items that control story rendering",
"keywords": [
"addon",
@ -38,11 +38,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/theming": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"regenerator-runtime": "^0.13.7"
},
@ -61,7 +61,7 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44",
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9",
"storybook": {
"displayName": "Toolbars",
"icon": "https://user-images.githubusercontent.com/263385/101991677-48cdf300-3c7c-11eb-93b4-19b0e3366959.png",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-viewport",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Build responsive components by adjusting Storybooks viewport size and orientation",
"keywords": [
"addon",
@ -35,12 +35,12 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/theming": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"global": "^4.4.0",
"memoizerific": "^1.11.3",
@ -62,7 +62,7 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44",
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9",
"storybook": {
"displayName": "Viewport",
"icon": "https://user-images.githubusercontent.com/263385/101991678-48cdf300-3c7c-11eb-9764-f8af293c1b28.png",

View File

@ -43,8 +43,9 @@ Start your Storybook with:
<CodeSnippets
paths={[
'angular/storybook-run-dev.with-builder.js.mdx',
'common/storybook-run-dev.npm.js.mdx',
'common/storybook-run-dev.yarn.js.mdx',
'common/storybook-run-dev.npm.js.mdx',
]}
/>
@ -302,4 +303,4 @@ As the test runner is based on Playwright, you might need to use specific docker
- [Accessibility tests](./accessibility-testing.md) for accessibility
- [Interaction tests](./interaction-testing.md) for user behavior simulation
- [Snapshot tests](./snapshot-testing.md) for rendering errors and warnings
- [Import stories in other tests](./importing-stories-in-tests.md) for other tools
- [Import stories in other tests](./importing-stories-in-tests.md) for other tools

View File

@ -1,6 +1,6 @@
{
"name": "angular-cli",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"license": "MIT",
"workspaces": {
@ -44,21 +44,21 @@
"@angular/compiler-cli": "^13.3.6",
"@angular/elements": "^13.3.6",
"@compodoc/compodoc": "^1.1.18",
"@storybook/addon-a11y": "7.0.0-alpha.2",
"@storybook/addon-actions": "7.0.0-alpha.2",
"@storybook/addon-backgrounds": "7.0.0-alpha.2",
"@storybook/addon-controls": "7.0.0-alpha.2",
"@storybook/addon-docs": "7.0.0-alpha.2",
"@storybook/addon-interactions": "7.0.0-alpha.2",
"@storybook/addon-jest": "7.0.0-alpha.2",
"@storybook/addon-links": "7.0.0-alpha.2",
"@storybook/addon-storyshots": "7.0.0-alpha.2",
"@storybook/addon-storysource": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/angular": "7.0.0-alpha.2",
"@storybook/addon-a11y": "7.0.0-alpha.3",
"@storybook/addon-actions": "7.0.0-alpha.3",
"@storybook/addon-backgrounds": "7.0.0-alpha.3",
"@storybook/addon-controls": "7.0.0-alpha.3",
"@storybook/addon-docs": "7.0.0-alpha.3",
"@storybook/addon-interactions": "7.0.0-alpha.3",
"@storybook/addon-jest": "7.0.0-alpha.3",
"@storybook/addon-links": "7.0.0-alpha.3",
"@storybook/addon-storyshots": "7.0.0-alpha.3",
"@storybook/addon-storysource": "7.0.0-alpha.3",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/angular": "7.0.0-alpha.3",
"@storybook/babel-plugin-require-context-hook": "1.0.1",
"@storybook/jest": "^0.0.5",
"@storybook/source-loader": "7.0.0-alpha.2",
"@storybook/source-loader": "7.0.0-alpha.3",
"@storybook/testing-library": "^0.0.12",
"@types/core-js": "^2.5.4",
"@types/jest": "^26.0.16",
@ -71,7 +71,7 @@
"jest": "^26.6.3",
"jest-preset-angular": "^8.3.2",
"protractor": "~7.0.0",
"storybook": "7.0.0-alpha.2",
"storybook": "7.0.0-alpha.3",
"storybook-addon-angular-ivy": "^0.0.1",
"ts-jest": "^26.4.4",
"ts-node": "^10.4.0",

View File

@ -1,6 +1,6 @@
{
"name": "cra-kitchen-sink",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"scripts": {
"build": "react-scripts build",
@ -11,7 +11,7 @@
"test": "react-scripts test --env=jsdom"
},
"dependencies": {
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.3",
"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.5",
"@storybook/addon-a11y": "7.0.0-alpha.2",
"@storybook/addon-actions": "7.0.0-alpha.2",
"@storybook/addon-backgrounds": "7.0.0-alpha.2",
"@storybook/addon-docs": "7.0.0-alpha.2",
"@storybook/addon-jest": "7.0.0-alpha.2",
"@storybook/addon-links": "7.0.0-alpha.2",
"@storybook/addon-storyshots": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/builder-webpack5": "7.0.0-alpha.2",
"@storybook/addon-a11y": "7.0.0-alpha.3",
"@storybook/addon-actions": "7.0.0-alpha.3",
"@storybook/addon-backgrounds": "7.0.0-alpha.3",
"@storybook/addon-docs": "7.0.0-alpha.3",
"@storybook/addon-jest": "7.0.0-alpha.3",
"@storybook/addon-links": "7.0.0-alpha.3",
"@storybook/addon-storyshots": "7.0.0-alpha.3",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/builder-webpack5": "7.0.0-alpha.3",
"@storybook/preset-create-react-app": "^4.1.0",
"@storybook/react": "7.0.0-alpha.2",
"@storybook/react-webpack5": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.2",
"storybook": "7.0.0-alpha.2",
"@storybook/react": "7.0.0-alpha.3",
"@storybook/react-webpack5": "7.0.0-alpha.3",
"@storybook/theming": "7.0.0-alpha.3",
"storybook": "7.0.0-alpha.3",
"webpack": "5"
},
"storybook": {

View File

@ -1,6 +1,6 @@
{
"name": "cra-ts-essentials",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"scripts": {
"build": "react-scripts build",
@ -23,8 +23,8 @@
]
},
"dependencies": {
"@storybook/components": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/theming": "7.0.0-alpha.3",
"@types/jest": "^26.0.16",
"@types/node": "^14.14.20 || ^16.0.0",
"@types/react": "^16.14.23",
@ -37,14 +37,14 @@
"typescript": "~4.6.3"
},
"devDependencies": {
"@storybook/addon-essentials": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/builder-webpack5": "7.0.0-alpha.2",
"@storybook/addon-essentials": "7.0.0-alpha.3",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/builder-webpack5": "7.0.0-alpha.3",
"@storybook/preset-create-react-app": "^4.1.0",
"@storybook/react": "7.0.0-alpha.2",
"@storybook/react-webpack5": "7.0.0-alpha.2",
"@storybook/react": "7.0.0-alpha.3",
"@storybook/react-webpack5": "7.0.0-alpha.3",
"@storybook/testing-library": "^0.0.9",
"storybook": "7.0.0-alpha.2",
"storybook": "7.0.0-alpha.3",
"ts-node": "^10.4.0",
"webpack": "5"
},

View File

@ -1,6 +1,6 @@
{
"name": "cra-ts-kitchen-sink",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"scripts": {
"build": "react-scripts build",
@ -34,22 +34,22 @@
"typescript": "~4.6.3"
},
"devDependencies": {
"@storybook/addon-a11y": "7.0.0-alpha.2",
"@storybook/addon-actions": "7.0.0-alpha.2",
"@storybook/addon-docs": "7.0.0-alpha.2",
"@storybook/addon-links": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/builder-webpack5": "7.0.0-alpha.2",
"@storybook/addon-a11y": "7.0.0-alpha.3",
"@storybook/addon-actions": "7.0.0-alpha.3",
"@storybook/addon-docs": "7.0.0-alpha.3",
"@storybook/addon-links": "7.0.0-alpha.3",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/builder-webpack5": "7.0.0-alpha.3",
"@storybook/preset-create-react-app": "^4.1.0",
"@storybook/react": "7.0.0-alpha.2",
"@storybook/react-webpack5": "7.0.0-alpha.2",
"@storybook/react": "7.0.0-alpha.3",
"@storybook/react-webpack5": "7.0.0-alpha.3",
"@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": "^7.2.6",
"react-moment-proptypes": "^1.7.0",
"storybook": "7.0.0-alpha.2",
"storybook": "7.0.0-alpha.3",
"ts-node": "^10.4.0",
"webpack": "5"
},

View File

@ -1,6 +1,6 @@
{
"name": "ember-example",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"scripts": {
"--build-storybook": "yarn storybook-prebuild && storybook build",
@ -17,18 +17,18 @@
"devDependencies": {
"@babel/core": "^7.12.10",
"@ember/optional-features": "^2.0.0",
"@storybook/addon-a11y": "7.0.0-alpha.2",
"@storybook/addon-actions": "7.0.0-alpha.2",
"@storybook/addon-backgrounds": "7.0.0-alpha.2",
"@storybook/addon-controls": "7.0.0-alpha.2",
"@storybook/addon-docs": "7.0.0-alpha.2",
"@storybook/addon-links": "7.0.0-alpha.2",
"@storybook/addon-storysource": "7.0.0-alpha.2",
"@storybook/addon-viewport": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/ember": "7.0.0-alpha.2",
"@storybook/addon-a11y": "7.0.0-alpha.3",
"@storybook/addon-actions": "7.0.0-alpha.3",
"@storybook/addon-backgrounds": "7.0.0-alpha.3",
"@storybook/addon-controls": "7.0.0-alpha.3",
"@storybook/addon-docs": "7.0.0-alpha.3",
"@storybook/addon-links": "7.0.0-alpha.3",
"@storybook/addon-storysource": "7.0.0-alpha.3",
"@storybook/addon-viewport": "7.0.0-alpha.3",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/ember": "7.0.0-alpha.3",
"@storybook/ember-cli-storybook": "^0.2.1",
"@storybook/source-loader": "7.0.0-alpha.2",
"@storybook/source-loader": "7.0.0-alpha.3",
"babel-loader": "^8.2.5",
"broccoli-asset-rev": "^3.0.0",
"browserify-zlib": "^0.2.0",
@ -48,7 +48,7 @@
"loader.js": "^4.7.0",
"os-browserify": "^0.3.0",
"shx": "^0.3.2",
"storybook": "7.0.0-alpha.2",
"storybook": "7.0.0-alpha.3",
"stream-browserify": "^3.0.0",
"vm-browserify": "^1.1.2",
"webpack": "5",

View File

@ -0,0 +1,13 @@
{
"presets": [
"next/babel",
[
"@babel/preset-env",
{
"targets": {
"chrome": "100"
}
}
]
]
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/external-docs",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"scripts": {
"build": "next build",
@ -11,14 +11,14 @@
"storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true storybook dev -p 9011 --no-manager-cache -c .storybook"
},
"dependencies": {
"@storybook/addon-docs": "7.0.0-alpha.1",
"@storybook/addon-essentials": "7.0.0-alpha.1",
"@storybook/components": "7.0.0-alpha.1",
"@storybook/addon-docs": "7.0.0-alpha.3",
"@storybook/addon-essentials": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/preview-web": "7.0.0-alpha.1",
"@storybook/react": "7.0.0-alpha.1",
"@storybook/react-webpack5": "7.0.0-alpha.1",
"@storybook/theming": "7.0.0-alpha.1",
"@storybook/preview-web": "7.0.0-alpha.3",
"@storybook/react": "7.0.0-alpha.3",
"@storybook/react-webpack5": "7.0.0-alpha.3",
"@storybook/theming": "7.0.0-alpha.3",
"formik": "^2.2.9",
"next": "^12.1.0",
"nextra": "^1.1.0",
@ -37,7 +37,7 @@
"cross-env": "^7.0.3",
"eslint": "8.7.0",
"eslint-config-next": "12.0.8",
"storybook": "7.0.0-alpha.1",
"storybook": "7.0.0-alpha.3",
"typescript": "~4.6.3",
"webpack": "5"
}

View File

@ -1,6 +1,6 @@
{
"name": "html-kitchen-sink",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"description": "",
"keywords": [],
@ -13,30 +13,30 @@
"storybook": "storybook dev -p 9006 --no-manager-cache"
},
"devDependencies": {
"@storybook/addon-a11y": "7.0.0-alpha.2",
"@storybook/addon-actions": "7.0.0-alpha.2",
"@storybook/addon-backgrounds": "7.0.0-alpha.2",
"@storybook/addon-controls": "7.0.0-alpha.2",
"@storybook/addon-docs": "7.0.0-alpha.2",
"@storybook/addon-jest": "7.0.0-alpha.2",
"@storybook/addon-links": "7.0.0-alpha.2",
"@storybook/addon-a11y": "7.0.0-alpha.3",
"@storybook/addon-actions": "7.0.0-alpha.3",
"@storybook/addon-backgrounds": "7.0.0-alpha.3",
"@storybook/addon-controls": "7.0.0-alpha.3",
"@storybook/addon-docs": "7.0.0-alpha.3",
"@storybook/addon-jest": "7.0.0-alpha.3",
"@storybook/addon-links": "7.0.0-alpha.3",
"@storybook/addon-postcss": "^2.0.0",
"@storybook/addon-storyshots": "7.0.0-alpha.2",
"@storybook/addon-storysource": "7.0.0-alpha.2",
"@storybook/addon-viewport": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/client-api": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/html": "7.0.0-alpha.2",
"@storybook/html-webpack5": "7.0.0-alpha.2",
"@storybook/source-loader": "7.0.0-alpha.2",
"@storybook/addon-storyshots": "7.0.0-alpha.3",
"@storybook/addon-storysource": "7.0.0-alpha.3",
"@storybook/addon-viewport": "7.0.0-alpha.3",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/client-api": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/html": "7.0.0-alpha.3",
"@storybook/html-webpack5": "7.0.0-alpha.3",
"@storybook/source-loader": "7.0.0-alpha.3",
"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",
"storybook": "7.0.0-alpha.2"
"storybook": "7.0.0-alpha.3"
},
"storybook": {
"chromatic": {

View File

@ -1,6 +1,6 @@
{
"name": "official-storybook",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"scripts": {
"build-storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true storybook build -c ./",
@ -13,32 +13,32 @@
"devDependencies": {
"@emotion/jest": "^11.8.0",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.5",
"@storybook/addon-a11y": "7.0.0-alpha.2",
"@storybook/addon-actions": "7.0.0-alpha.2",
"@storybook/addon-backgrounds": "7.0.0-alpha.2",
"@storybook/addon-controls": "7.0.0-alpha.2",
"@storybook/addon-docs": "7.0.0-alpha.2",
"@storybook/addon-interactions": "7.0.0-alpha.2",
"@storybook/addon-jest": "7.0.0-alpha.2",
"@storybook/addon-links": "7.0.0-alpha.2",
"@storybook/addon-storyshots": "7.0.0-alpha.2",
"@storybook/addon-storyshots-puppeteer": "7.0.0-alpha.2",
"@storybook/addon-storysource": "7.0.0-alpha.2",
"@storybook/addon-toolbars": "7.0.0-alpha.2",
"@storybook/addon-viewport": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/cli": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/addon-a11y": "7.0.0-alpha.3",
"@storybook/addon-actions": "7.0.0-alpha.3",
"@storybook/addon-backgrounds": "7.0.0-alpha.3",
"@storybook/addon-controls": "7.0.0-alpha.3",
"@storybook/addon-docs": "7.0.0-alpha.3",
"@storybook/addon-interactions": "7.0.0-alpha.3",
"@storybook/addon-jest": "7.0.0-alpha.3",
"@storybook/addon-links": "7.0.0-alpha.3",
"@storybook/addon-storyshots": "7.0.0-alpha.3",
"@storybook/addon-storyshots-puppeteer": "7.0.0-alpha.3",
"@storybook/addon-storysource": "7.0.0-alpha.3",
"@storybook/addon-toolbars": "7.0.0-alpha.3",
"@storybook/addon-viewport": "7.0.0-alpha.3",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/cli": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/design-system": "^5.4.7",
"@storybook/jest": "^0.0.5",
"@storybook/node-logger": "7.0.0-alpha.2",
"@storybook/react": "7.0.0-alpha.2",
"@storybook/react-webpack5": "7.0.0-alpha.2",
"@storybook/router": "7.0.0-alpha.2",
"@storybook/source-loader": "7.0.0-alpha.2",
"@storybook/node-logger": "7.0.0-alpha.3",
"@storybook/react": "7.0.0-alpha.3",
"@storybook/react-webpack5": "7.0.0-alpha.3",
"@storybook/router": "7.0.0-alpha.3",
"@storybook/source-loader": "7.0.0-alpha.3",
"@storybook/testing-library": "^0.0.12",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.3",
"@testing-library/dom": "^7.31.2",
"@testing-library/user-event": "^13.1.9",
"chromatic": "^6.0.2",
@ -54,7 +54,7 @@
"prop-types": "^15.7.2",
"react": "16.14.0",
"react-dom": "16.14.0",
"storybook": "7.0.0-alpha.2",
"storybook": "7.0.0-alpha.3",
"terser-webpack-plugin": "^5.3.1",
"uuid-browser": "^3.1.0",
"webpack": "5"

View File

@ -1,6 +1,6 @@
{
"name": "preact-example",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"scripts": {
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules",
@ -15,17 +15,17 @@
"devDependencies": {
"@babel/core": "^7.12.10",
"@babel/plugin-transform-runtime": "^7.12.10",
"@storybook/addon-a11y": "7.0.0-alpha.2",
"@storybook/addon-actions": "7.0.0-alpha.2",
"@storybook/addon-backgrounds": "7.0.0-alpha.2",
"@storybook/addon-links": "7.0.0-alpha.2",
"@storybook/addon-storyshots": "7.0.0-alpha.2",
"@storybook/addon-storysource": "7.0.0-alpha.2",
"@storybook/addon-viewport": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/preact": "7.0.0-alpha.2",
"@storybook/preact-webpack5": "7.0.0-alpha.2",
"@storybook/source-loader": "7.0.0-alpha.2",
"@storybook/addon-a11y": "7.0.0-alpha.3",
"@storybook/addon-actions": "7.0.0-alpha.3",
"@storybook/addon-backgrounds": "7.0.0-alpha.3",
"@storybook/addon-links": "7.0.0-alpha.3",
"@storybook/addon-storyshots": "7.0.0-alpha.3",
"@storybook/addon-storysource": "7.0.0-alpha.3",
"@storybook/addon-viewport": "7.0.0-alpha.3",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/preact": "7.0.0-alpha.3",
"@storybook/preact-webpack5": "7.0.0-alpha.3",
"@storybook/source-loader": "7.0.0-alpha.3",
"@types/prop-types": "^15.7.3",
"@types/react": "^17",
"@types/react-dom": "^17",
@ -38,7 +38,7 @@
"raw-loader": "^4.0.2",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"storybook": "7.0.0-alpha.2",
"storybook": "7.0.0-alpha.3",
"svg-url-loader": "^7.1.1",
"webpack": "5",
"webpack-dev-server": "^4.8.1"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/example-react-ts",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"scripts": {
"build-storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true storybook build",
@ -17,15 +17,15 @@
"@babel/preset-env": "^7.12.11",
"@babel/preset-react": "^7.12.10",
"@babel/preset-typescript": "^7.12.7",
"@storybook/addon-essentials": "7.0.0-alpha.2",
"@storybook/addon-storyshots": "7.0.0-alpha.2",
"@storybook/addon-storysource": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/cli": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/react": "7.0.0-alpha.2",
"@storybook/react-webpack5": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/addon-essentials": "7.0.0-alpha.3",
"@storybook/addon-storyshots": "7.0.0-alpha.3",
"@storybook/addon-storysource": "7.0.0-alpha.3",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/cli": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/react": "7.0.0-alpha.3",
"@storybook/react-webpack5": "7.0.0-alpha.3",
"@storybook/theming": "7.0.0-alpha.3",
"@testing-library/dom": "^7.31.2",
"@testing-library/react": "12.1.2",
"@testing-library/user-event": "^13.1.9",
@ -34,7 +34,7 @@
"@types/react-dom": "^16.9.14",
"cross-env": "^7.0.3",
"lodash": "^4.17.21",
"storybook": "7.0.0-alpha.2",
"storybook": "7.0.0-alpha.3",
"typescript": "~4.6.3",
"webpack": "5"
}

View File

@ -1,6 +1,6 @@
{
"name": "server-kitchen-sink",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"description": "",
"keywords": [],
@ -14,14 +14,14 @@
"storybook": "SERVER_PORT=1137 storybook dev -p 9006 --quiet"
},
"devDependencies": {
"@storybook/addon-a11y": "7.0.0-alpha.2",
"@storybook/addon-actions": "7.0.0-alpha.2",
"@storybook/addon-backgrounds": "7.0.0-alpha.2",
"@storybook/addon-controls": "7.0.0-alpha.2",
"@storybook/addon-links": "7.0.0-alpha.2",
"@storybook/node-logger": "7.0.0-alpha.2",
"@storybook/server": "7.0.0-alpha.2",
"@storybook/server-webpack5": "7.0.0-alpha.2",
"@storybook/addon-a11y": "7.0.0-alpha.3",
"@storybook/addon-actions": "7.0.0-alpha.3",
"@storybook/addon-backgrounds": "7.0.0-alpha.3",
"@storybook/addon-controls": "7.0.0-alpha.3",
"@storybook/addon-links": "7.0.0-alpha.3",
"@storybook/node-logger": "7.0.0-alpha.3",
"@storybook/server": "7.0.0-alpha.3",
"@storybook/server-webpack5": "7.0.0-alpha.3",
"concurrently": "^5.3.0",
"cors": "^2.8.5",
"express": "~4.17.1",
@ -29,6 +29,6 @@
"nodemon": "^2.0.7",
"pug": "^3.0.0",
"safe-identifier": "^0.4.1",
"storybook": "7.0.0-alpha.2"
"storybook": "7.0.0-alpha.3"
}
}

View File

@ -1,20 +1,20 @@
{
"name": "standalone-preview",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"scripts": {
"storybook": "cross-env STORYBOOK_DISPLAY_WARNING=true DISPLAY_WARNING=true storybook 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": "7.0.0-alpha.2",
"@storybook/cli": "7.0.0-alpha.2",
"@storybook/react": "7.0.0-alpha.2",
"@storybook/react-webpack5": "7.0.0-alpha.2",
"@storybook/addon-docs": "7.0.0-alpha.3",
"@storybook/cli": "7.0.0-alpha.3",
"@storybook/react": "7.0.0-alpha.3",
"@storybook/react-webpack5": "7.0.0-alpha.3",
"cross-env": "^7.0.3",
"parcel": "2.0.1",
"react": "16.14.0",
"react-dom": "16.14.0",
"storybook": "7.0.0-alpha.2"
"storybook": "7.0.0-alpha.3"
}
}

View File

@ -1,6 +1,6 @@
{
"name": "svelte-example",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"scripts": {
"build-storybook": "storybook build",
@ -10,23 +10,23 @@
"global": "^4.4.0"
},
"devDependencies": {
"@storybook/addon-a11y": "7.0.0-alpha.2",
"@storybook/addon-actions": "7.0.0-alpha.2",
"@storybook/addon-backgrounds": "7.0.0-alpha.2",
"@storybook/addon-controls": "7.0.0-alpha.2",
"@storybook/addon-docs": "7.0.0-alpha.2",
"@storybook/addon-interactions": "7.0.0-alpha.2",
"@storybook/addon-links": "7.0.0-alpha.2",
"@storybook/addon-storyshots": "7.0.0-alpha.2",
"@storybook/addon-storysource": "7.0.0-alpha.2",
"@storybook/addon-viewport": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/addon-a11y": "7.0.0-alpha.3",
"@storybook/addon-actions": "7.0.0-alpha.3",
"@storybook/addon-backgrounds": "7.0.0-alpha.3",
"@storybook/addon-controls": "7.0.0-alpha.3",
"@storybook/addon-docs": "7.0.0-alpha.3",
"@storybook/addon-interactions": "7.0.0-alpha.3",
"@storybook/addon-links": "7.0.0-alpha.3",
"@storybook/addon-storyshots": "7.0.0-alpha.3",
"@storybook/addon-storysource": "7.0.0-alpha.3",
"@storybook/addon-viewport": "7.0.0-alpha.3",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/jest": "^0.0.5",
"@storybook/source-loader": "7.0.0-alpha.2",
"@storybook/svelte": "7.0.0-alpha.2",
"@storybook/svelte-webpack5": "7.0.0-alpha.2",
"@storybook/source-loader": "7.0.0-alpha.3",
"@storybook/svelte": "7.0.0-alpha.3",
"@storybook/svelte-webpack5": "7.0.0-alpha.3",
"@storybook/testing-library": "^0.0.7",
"storybook": "7.0.0-alpha.2",
"storybook": "7.0.0-alpha.3",
"svelte-jester": "^2.3.2",
"svelte-preprocess": "^4.10.6"
},

View File

@ -1,6 +1,6 @@
{
"name": "vue-3-cli-example",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"scripts": {
"build": "vue-cli-service build",
@ -14,21 +14,21 @@
},
"devDependencies": {
"@babel/core": "^7.12.10",
"@storybook/addon-actions": "7.0.0-alpha.2",
"@storybook/addon-essentials": "7.0.0-alpha.2",
"@storybook/addon-interactions": "7.0.0-alpha.2",
"@storybook/addon-links": "7.0.0-alpha.2",
"@storybook/addon-storyshots": "7.0.0-alpha.2",
"@storybook/addon-actions": "7.0.0-alpha.3",
"@storybook/addon-essentials": "7.0.0-alpha.3",
"@storybook/addon-interactions": "7.0.0-alpha.3",
"@storybook/addon-links": "7.0.0-alpha.3",
"@storybook/addon-storyshots": "7.0.0-alpha.3",
"@storybook/jest": "^0.0.5",
"@storybook/testing-library": "^0.0.12",
"@storybook/vue3": "7.0.0-alpha.2",
"@storybook/vue3-webpack5": "7.0.0-alpha.2",
"@storybook/vue3": "7.0.0-alpha.3",
"@storybook/vue3-webpack5": "7.0.0-alpha.3",
"@vue/cli-plugin-babel": "^5.0.4",
"@vue/cli-plugin-typescript": "^5.0.4",
"@vue/cli-service": "^5.0.4",
"@vue/compiler-sfc": "^3.2.36",
"babel-loader": "^8.2.5",
"storybook": "7.0.0-alpha.2",
"storybook": "7.0.0-alpha.3",
"typescript": "~4.6.3",
"vue-jest": "^5.0.0-alpha.8",
"vue-loader": "^16.0.0"

View File

@ -1,6 +1,6 @@
{
"name": "vue-cli-example",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"scripts": {
"build": "vue-cli-service build",
@ -15,16 +15,16 @@
"vue-property-decorator": "^9.1.2"
},
"devDependencies": {
"@storybook/addon-controls": "7.0.0-alpha.2",
"@storybook/addon-essentials": "7.0.0-alpha.2",
"@storybook/addon-controls": "7.0.0-alpha.3",
"@storybook/addon-essentials": "7.0.0-alpha.3",
"@storybook/preset-scss": "^1.0.3",
"@storybook/source-loader": "7.0.0-alpha.2",
"@storybook/vue": "7.0.0-alpha.2",
"@storybook/vue-webpack5": "7.0.0-alpha.2",
"@storybook/source-loader": "7.0.0-alpha.3",
"@storybook/vue": "7.0.0-alpha.3",
"@storybook/vue-webpack5": "7.0.0-alpha.3",
"@vue/cli-plugin-babel": "^5.0.4",
"@vue/cli-plugin-typescript": "^5.0.4",
"@vue/cli-service": "^5.0.4",
"storybook": "7.0.0-alpha.2",
"storybook": "7.0.0-alpha.3",
"typescript": "~4.6.3",
"vue-template-compiler": "^2.6.14"
}

View File

@ -1,6 +1,6 @@
{
"name": "vue-example",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"scripts": {
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules",
@ -14,28 +14,28 @@
},
"devDependencies": {
"@babel/core": "^7.12.10",
"@storybook/addon-a11y": "7.0.0-alpha.2",
"@storybook/addon-actions": "7.0.0-alpha.2",
"@storybook/addon-backgrounds": "7.0.0-alpha.2",
"@storybook/addon-controls": "7.0.0-alpha.2",
"@storybook/addon-docs": "7.0.0-alpha.2",
"@storybook/addon-interactions": "7.0.0-alpha.2",
"@storybook/addon-links": "7.0.0-alpha.2",
"@storybook/addon-storyshots": "7.0.0-alpha.2",
"@storybook/addon-storysource": "7.0.0-alpha.2",
"@storybook/addon-viewport": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/addon-a11y": "7.0.0-alpha.3",
"@storybook/addon-actions": "7.0.0-alpha.3",
"@storybook/addon-backgrounds": "7.0.0-alpha.3",
"@storybook/addon-controls": "7.0.0-alpha.3",
"@storybook/addon-docs": "7.0.0-alpha.3",
"@storybook/addon-interactions": "7.0.0-alpha.3",
"@storybook/addon-links": "7.0.0-alpha.3",
"@storybook/addon-storyshots": "7.0.0-alpha.3",
"@storybook/addon-storysource": "7.0.0-alpha.3",
"@storybook/addon-viewport": "7.0.0-alpha.3",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/jest": "^0.0.5",
"@storybook/source-loader": "7.0.0-alpha.2",
"@storybook/source-loader": "7.0.0-alpha.3",
"@storybook/testing-library": "^0.0.12",
"@storybook/vue": "7.0.0-alpha.2",
"@storybook/vue-webpack5": "7.0.0-alpha.2",
"@storybook/vue": "7.0.0-alpha.3",
"@storybook/vue-webpack5": "7.0.0-alpha.3",
"@vue/babel-preset-jsx": "^1.2.4",
"babel-loader": "^8.2.5",
"cross-env": "^7.0.3",
"file-loader": "^6.2.0",
"prop-types": "^15.7.2",
"storybook": "7.0.0-alpha.2",
"storybook": "7.0.0-alpha.3",
"svg-url-loader": "^7.1.1",
"vue-loader": "^15.9.6",
"vue-style-loader": "^4.1.3",

View File

@ -1,6 +1,6 @@
{
"name": "web-components-kitchen-sink",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"private": true,
"description": "",
"keywords": [],

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/angular",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook for Angular: Develop Angular components in isolation with hot reloading.",
"keywords": [
"storybook",
@ -33,19 +33,19 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/builder-webpack5": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/core-client": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/core-server": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/builder-webpack5": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/core-client": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/core-server": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/docs-tools": "7.0.0-alpha.2",
"@storybook/node-logger": "7.0.0-alpha.2",
"@storybook/docs-tools": "7.0.0-alpha.3",
"@storybook/node-logger": "7.0.0-alpha.3",
"@storybook/semver": "^7.3.2",
"@storybook/store": "7.0.0-alpha.2",
"@storybook/store": "7.0.0-alpha.3",
"@types/node": "^14.14.20 || ^16.0.0",
"@types/react": "^16.14.23",
"@types/react-dom": "^16.9.14",
@ -128,5 +128,5 @@
"access": "public"
},
"builders": "dist/types/builders/builders.json",
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/ember",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.",
"homepage": "https://github.com/storybookjs/storybook/tree/main/frameworks/ember",
"bugs": {
@ -29,12 +29,12 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/builder-webpack5": "7.0.0-alpha.2",
"@storybook/core-client": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/core-server": "7.0.0-alpha.2",
"@storybook/docs-tools": "7.0.0-alpha.2",
"@storybook/store": "7.0.0-alpha.2",
"@storybook/builder-webpack5": "7.0.0-alpha.3",
"@storybook/core-client": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/core-server": "7.0.0-alpha.3",
"@storybook/docs-tools": "7.0.0-alpha.3",
"@storybook/store": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"global": "^4.4.0",
"react": "16.14.0",
@ -55,5 +55,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/html-webpack5",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -32,11 +32,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/builder-webpack5": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/core-server": "7.0.0-alpha.2",
"@storybook/html": "7.0.0-alpha.2",
"@storybook/preset-html-webpack": "7.0.0-alpha.2",
"@storybook/builder-webpack5": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/core-server": "7.0.0-alpha.3",
"@storybook/html": "7.0.0-alpha.3",
"@storybook/preset-html-webpack": "7.0.0-alpha.3",
"@types/node": "^14.14.20 || ^16.0.0",
"core-js": "^3.8.2",
"global": "^4.4.0",
@ -53,5 +53,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preact-webpack5",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook for Preact: Develop Preact Component in isolation.",
"keywords": [
"storybook"
@ -32,11 +32,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/builder-webpack5": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/core-server": "7.0.0-alpha.2",
"@storybook/preact": "7.0.0-alpha.2",
"@storybook/preset-preact-webpack": "7.0.0-alpha.2",
"@storybook/builder-webpack5": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/core-server": "7.0.0-alpha.3",
"@storybook/preact": "7.0.0-alpha.3",
"@storybook/preset-preact-webpack": "7.0.0-alpha.3",
"@types/node": "^14.14.20 || ^16.0.0",
"core-js": "^3.8.2",
"react": "16.14.0",
@ -56,5 +56,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/react-webpack5",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook for React: Develop React Component in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -33,10 +33,10 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/builder-webpack5": "7.0.0-alpha.2",
"@storybook/core-server": "7.0.0-alpha.2",
"@storybook/preset-react-webpack": "7.0.0-alpha.2",
"@storybook/react": "7.0.0-alpha.2",
"@storybook/builder-webpack5": "7.0.0-alpha.3",
"@storybook/core-server": "7.0.0-alpha.3",
"@storybook/preset-react-webpack": "7.0.0-alpha.3",
"@storybook/react": "7.0.0-alpha.3",
"@types/node": "^14.14.20 || ^16.0.0",
"core-js": "^3.8.2",
"regenerator-runtime": "^0.13.7"
@ -63,5 +63,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/server-webpack5",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -32,11 +32,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/builder-webpack5": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/core-server": "7.0.0-alpha.2",
"@storybook/preset-server-webpack": "7.0.0-alpha.2",
"@storybook/server": "7.0.0-alpha.2",
"@storybook/builder-webpack5": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/core-server": "7.0.0-alpha.3",
"@storybook/preset-server-webpack": "7.0.0-alpha.3",
"@storybook/server": "7.0.0-alpha.3",
"@types/node": "^14.14.20 || ^16.0.0",
"core-js": "^3.8.2",
"react": "16.14.0",
@ -49,5 +49,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/svelte-webpack5",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -33,11 +33,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/builder-webpack5": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/core-server": "7.0.0-alpha.2",
"@storybook/preset-svelte-webpack": "7.0.0-alpha.2",
"@storybook/svelte": "7.0.0-alpha.2",
"@storybook/builder-webpack5": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/core-server": "7.0.0-alpha.3",
"@storybook/preset-svelte-webpack": "7.0.0-alpha.3",
"@storybook/svelte": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"react": "16.14.0",
"react-dom": "16.14.0",
@ -58,5 +58,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/vue-webpack5",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook for Vue: Develop Vue Component in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -32,11 +32,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/builder-webpack5": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/core-server": "7.0.0-alpha.2",
"@storybook/preset-vue-webpack": "7.0.0-alpha.2",
"@storybook/vue": "7.0.0-alpha.2",
"@storybook/builder-webpack5": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/core-server": "7.0.0-alpha.3",
"@storybook/preset-vue-webpack": "7.0.0-alpha.3",
"@storybook/vue": "7.0.0-alpha.3",
"@types/node": "^14.14.20 || ^16.0.0",
"core-js": "^3.8.2",
"react": "16.14.0",
@ -62,5 +62,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/vue3-webpack5",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.",
"keywords": [
"storybook"
@ -32,11 +32,11 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/builder-webpack5": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/core-server": "7.0.0-alpha.2",
"@storybook/preset-vue3-webpack": "7.0.0-alpha.2",
"@storybook/vue3": "7.0.0-alpha.2",
"@storybook/builder-webpack5": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/core-server": "7.0.0-alpha.3",
"@storybook/preset-vue3-webpack": "7.0.0-alpha.3",
"@storybook/vue3": "7.0.0-alpha.3",
"@types/node": "^14.14.20 || ^16.0.0",
"core-js": "^3.8.2",
"react": "16.14.0",
@ -59,5 +59,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/web-components-webpack5",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.",
"keywords": [
"lit-html",
@ -35,11 +35,11 @@
},
"dependencies": {
"@babel/preset-env": "^7.12.11",
"@storybook/builder-webpack5": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/core-server": "7.0.0-alpha.2",
"@storybook/preset-web-components-webpack": "7.0.0-alpha.2",
"@storybook/web-components": "7.0.0-alpha.2",
"@storybook/builder-webpack5": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/core-server": "7.0.0-alpha.3",
"@storybook/preset-web-components-webpack": "7.0.0-alpha.3",
"@storybook/web-components": "7.0.0-alpha.3",
"@types/node": "^14.14.20 || ^16.0.0",
"core-js": "^3.8.2",
"react": "16.14.0",
@ -58,5 +58,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -2,5 +2,5 @@
"npmClient": "yarn",
"useWorkspaces": true,
"registry": "https://registry.npmjs.org",
"version": "7.0.0-alpha.2"
"version": "7.0.0-alpha.3"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addons",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook addons store",
"keywords": [
"storybook"
@ -33,13 +33,13 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/api": "7.0.0-alpha.2",
"@storybook/channels": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/channels": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/router": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/router": "7.0.0-alpha.3",
"@storybook/theming": "7.0.0-alpha.3",
"@types/webpack-env": "^1.16.4",
"core-js": "^3.8.2",
"global": "^4.4.0",
@ -52,5 +52,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/api",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Core Storybook API & Context",
"keywords": [
"storybook"
@ -31,13 +31,13 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/channels": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/channels": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/router": "7.0.0-alpha.2",
"@storybook/router": "7.0.0-alpha.3",
"@storybook/semver": "^7.3.2",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"fast-deep-equal": "^3.1.3",
"global": "^4.4.0",
@ -64,5 +64,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1196,7 +1196,8 @@ describe('stories API', () => {
expect(storedStoriesHash['component-c--story-4'].type).toBe('story');
});
it('prefers parameters.docsOnly to inferred docsOnly status', async () => {
// Skip this for now, will come back soon
it.skip('prefers parameters.docsOnly to inferred docsOnly status', async () => {
mockStories.mockReset().mockReturnValue({
'component-a--docs': {
type: 'story',

View File

@ -1 +1 @@
export const version = '7.0.0-alpha.2';
export const version = '7.0.0-alpha.3';

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/builder-webpack5",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"
@ -33,23 +33,23 @@
},
"dependencies": {
"@babel/core": "^7.12.10",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/channel-postmessage": "7.0.0-alpha.2",
"@storybook/channel-websocket": "7.0.0-alpha.2",
"@storybook/channels": "7.0.0-alpha.2",
"@storybook/client-api": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/core-webpack": "7.0.0-alpha.2",
"@storybook/node-logger": "7.0.0-alpha.2",
"@storybook/preview-web": "7.0.0-alpha.2",
"@storybook/router": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/channel-postmessage": "7.0.0-alpha.3",
"@storybook/channel-websocket": "7.0.0-alpha.3",
"@storybook/channels": "7.0.0-alpha.3",
"@storybook/client-api": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/core-webpack": "7.0.0-alpha.3",
"@storybook/node-logger": "7.0.0-alpha.3",
"@storybook/preview-web": "7.0.0-alpha.3",
"@storybook/router": "7.0.0-alpha.3",
"@storybook/semver": "^7.3.2",
"@storybook/store": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/store": "7.0.0-alpha.3",
"@storybook/theming": "7.0.0-alpha.3",
"@types/node": "^14.0.10 || ^16.0.0",
"babel-loader": "^8.2.5",
"babel-plugin-named-exports-order": "^0.0.2",
@ -93,5 +93,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/channel-postmessage",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "",
"keywords": [
"storybook"
@ -33,9 +33,9 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/channels": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/channels": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"global": "^4.4.0",
"qs": "^6.10.0",
@ -44,5 +44,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/channel-websocket",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "",
"keywords": [
"storybook"
@ -33,8 +33,8 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/channels": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/channels": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"global": "^4.4.0",
"telejson": "^6.0.8"
@ -42,5 +42,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/channels",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "",
"keywords": [
"storybook"
@ -40,5 +40,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "sb",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook CLI",
"keywords": [
"storybook"
@ -24,10 +24,10 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/cli": "7.0.0-alpha.2"
"@storybook/cli": "7.0.0-alpha.3"
},
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "storybook",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook CLI",
"keywords": [
"storybook"
@ -27,10 +27,10 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/cli": "7.0.0-alpha.2"
"@storybook/cli": "7.0.0-alpha.3"
},
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/cli",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook's CLI - easiest method of adding storybook to your projects",
"keywords": [
"cli",
@ -47,13 +47,13 @@
"dependencies": {
"@babel/core": "^7.12.10",
"@babel/preset-env": "^7.12.11",
"@storybook/codemod": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/core-server": "7.0.0-alpha.2",
"@storybook/csf-tools": "7.0.0-alpha.2",
"@storybook/node-logger": "7.0.0-alpha.2",
"@storybook/codemod": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/core-server": "7.0.0-alpha.3",
"@storybook/csf-tools": "7.0.0-alpha.3",
"@storybook/node-logger": "7.0.0-alpha.3",
"@storybook/semver": "^7.3.2",
"@storybook/telemetry": "7.0.0-alpha.2",
"@storybook/telemetry": "7.0.0-alpha.3",
"boxen": "^5.1.2",
"chalk": "^4.1.0",
"commander": "^6.2.1",
@ -78,7 +78,7 @@
"update-notifier": "^5.0.1"
},
"devDependencies": {
"@storybook/client-api": "7.0.0-alpha.2",
"@storybook/client-api": "7.0.0-alpha.3",
"@types/cross-spawn": "^6.0.2",
"@types/prompts": "^2.0.9",
"@types/puppeteer-core": "^2.1.0",
@ -91,5 +91,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,76 +1,76 @@
// auto generated file, do not edit
export default {
'@storybook/addon-a11y': '7.0.0-alpha.2',
'@storybook/addon-actions': '7.0.0-alpha.2',
'@storybook/addon-backgrounds': '7.0.0-alpha.2',
'@storybook/addon-controls': '7.0.0-alpha.2',
'@storybook/addon-docs': '7.0.0-alpha.2',
'@storybook/addon-essentials': '7.0.0-alpha.2',
'@storybook/addon-interactions': '7.0.0-alpha.2',
'@storybook/addon-jest': '7.0.0-alpha.2',
'@storybook/addon-links': '7.0.0-alpha.2',
'@storybook/addon-measure': '7.0.0-alpha.2',
'@storybook/addon-outline': '7.0.0-alpha.2',
'@storybook/addon-storyshots': '7.0.0-alpha.2',
'@storybook/addon-storyshots-puppeteer': '7.0.0-alpha.2',
'@storybook/addon-storysource': '7.0.0-alpha.2',
'@storybook/addon-toolbars': '7.0.0-alpha.2',
'@storybook/addon-viewport': '7.0.0-alpha.2',
'@storybook/addons': '7.0.0-alpha.2',
'@storybook/angular': '7.0.0-alpha.2',
'@storybook/api': '7.0.0-alpha.2',
'@storybook/builder-webpack5': '7.0.0-alpha.2',
'@storybook/channel-postmessage': '7.0.0-alpha.2',
'@storybook/channel-websocket': '7.0.0-alpha.2',
'@storybook/channels': '7.0.0-alpha.2',
'@storybook/cli': '7.0.0-alpha.2',
'@storybook/client-api': '7.0.0-alpha.2',
'@storybook/client-logger': '7.0.0-alpha.2',
'@storybook/codemod': '7.0.0-alpha.2',
'@storybook/components': '7.0.0-alpha.2',
'@storybook/core-client': '7.0.0-alpha.2',
'@storybook/core-common': '7.0.0-alpha.2',
'@storybook/core-events': '7.0.0-alpha.2',
'@storybook/core-server': '7.0.0-alpha.2',
'@storybook/core-webpack': '7.0.0-alpha.2',
'@storybook/csf-tools': '7.0.0-alpha.2',
'@storybook/docs-tools': '7.0.0-alpha.2',
'@storybook/ember': '7.0.0-alpha.2',
'@storybook/html': '7.0.0-alpha.2',
'@storybook/html-webpack5': '7.0.0-alpha.2',
'@storybook/instrumenter': '7.0.0-alpha.2',
'@storybook/manager-webpack5': '7.0.0-alpha.2',
'@storybook/node-logger': '7.0.0-alpha.2',
'@storybook/postinstall': '7.0.0-alpha.2',
'@storybook/preact': '7.0.0-alpha.2',
'@storybook/preact-webpack5': '7.0.0-alpha.2',
'@storybook/preset-html-webpack': '7.0.0-alpha.2',
'@storybook/preset-preact-webpack': '7.0.0-alpha.2',
'@storybook/preset-react-webpack': '7.0.0-alpha.2',
'@storybook/preset-server-webpack': '7.0.0-alpha.2',
'@storybook/preset-svelte-webpack': '7.0.0-alpha.2',
'@storybook/preset-vue-webpack': '7.0.0-alpha.2',
'@storybook/preset-vue3-webpack': '7.0.0-alpha.2',
'@storybook/preset-web-components-webpack': '7.0.0-alpha.2',
'@storybook/preview-web': '7.0.0-alpha.2',
'@storybook/react': '7.0.0-alpha.2',
'@storybook/react-webpack5': '7.0.0-alpha.2',
'@storybook/router': '7.0.0-alpha.2',
'@storybook/server': '7.0.0-alpha.2',
'@storybook/server-webpack5': '7.0.0-alpha.2',
'@storybook/source-loader': '7.0.0-alpha.2',
'@storybook/store': '7.0.0-alpha.2',
'@storybook/svelte': '7.0.0-alpha.2',
'@storybook/svelte-webpack5': '7.0.0-alpha.2',
'@storybook/telemetry': '7.0.0-alpha.2',
'@storybook/theming': '7.0.0-alpha.2',
'@storybook/ui': '7.0.0-alpha.2',
'@storybook/vue': '7.0.0-alpha.2',
'@storybook/vue-webpack5': '7.0.0-alpha.2',
'@storybook/vue3': '7.0.0-alpha.2',
'@storybook/vue3-webpack5': '7.0.0-alpha.2',
'@storybook/web-components': '7.0.0-alpha.2',
'@storybook/web-components-webpack5': '7.0.0-alpha.2',
sb: '7.0.0-alpha.2',
storybook: '7.0.0-alpha.2',
'@storybook/addon-a11y': '7.0.0-alpha.3',
'@storybook/addon-actions': '7.0.0-alpha.3',
'@storybook/addon-backgrounds': '7.0.0-alpha.3',
'@storybook/addon-controls': '7.0.0-alpha.3',
'@storybook/addon-docs': '7.0.0-alpha.3',
'@storybook/addon-essentials': '7.0.0-alpha.3',
'@storybook/addon-interactions': '7.0.0-alpha.3',
'@storybook/addon-jest': '7.0.0-alpha.3',
'@storybook/addon-links': '7.0.0-alpha.3',
'@storybook/addon-measure': '7.0.0-alpha.3',
'@storybook/addon-outline': '7.0.0-alpha.3',
'@storybook/addon-storyshots': '7.0.0-alpha.3',
'@storybook/addon-storyshots-puppeteer': '7.0.0-alpha.3',
'@storybook/addon-storysource': '7.0.0-alpha.3',
'@storybook/addon-toolbars': '7.0.0-alpha.3',
'@storybook/addon-viewport': '7.0.0-alpha.3',
'@storybook/addons': '7.0.0-alpha.3',
'@storybook/angular': '7.0.0-alpha.3',
'@storybook/api': '7.0.0-alpha.3',
'@storybook/builder-webpack5': '7.0.0-alpha.3',
'@storybook/channel-postmessage': '7.0.0-alpha.3',
'@storybook/channel-websocket': '7.0.0-alpha.3',
'@storybook/channels': '7.0.0-alpha.3',
'@storybook/cli': '7.0.0-alpha.3',
'@storybook/client-api': '7.0.0-alpha.3',
'@storybook/client-logger': '7.0.0-alpha.3',
'@storybook/codemod': '7.0.0-alpha.3',
'@storybook/components': '7.0.0-alpha.3',
'@storybook/core-client': '7.0.0-alpha.3',
'@storybook/core-common': '7.0.0-alpha.3',
'@storybook/core-events': '7.0.0-alpha.3',
'@storybook/core-server': '7.0.0-alpha.3',
'@storybook/core-webpack': '7.0.0-alpha.3',
'@storybook/csf-tools': '7.0.0-alpha.3',
'@storybook/docs-tools': '7.0.0-alpha.3',
'@storybook/ember': '7.0.0-alpha.3',
'@storybook/html': '7.0.0-alpha.3',
'@storybook/html-webpack5': '7.0.0-alpha.3',
'@storybook/instrumenter': '7.0.0-alpha.3',
'@storybook/manager-webpack5': '7.0.0-alpha.3',
'@storybook/node-logger': '7.0.0-alpha.3',
'@storybook/postinstall': '7.0.0-alpha.3',
'@storybook/preact': '7.0.0-alpha.3',
'@storybook/preact-webpack5': '7.0.0-alpha.3',
'@storybook/preset-html-webpack': '7.0.0-alpha.3',
'@storybook/preset-preact-webpack': '7.0.0-alpha.3',
'@storybook/preset-react-webpack': '7.0.0-alpha.3',
'@storybook/preset-server-webpack': '7.0.0-alpha.3',
'@storybook/preset-svelte-webpack': '7.0.0-alpha.3',
'@storybook/preset-vue-webpack': '7.0.0-alpha.3',
'@storybook/preset-vue3-webpack': '7.0.0-alpha.3',
'@storybook/preset-web-components-webpack': '7.0.0-alpha.3',
'@storybook/preview-web': '7.0.0-alpha.3',
'@storybook/react': '7.0.0-alpha.3',
'@storybook/react-webpack5': '7.0.0-alpha.3',
'@storybook/router': '7.0.0-alpha.3',
'@storybook/server': '7.0.0-alpha.3',
'@storybook/server-webpack5': '7.0.0-alpha.3',
'@storybook/source-loader': '7.0.0-alpha.3',
'@storybook/store': '7.0.0-alpha.3',
'@storybook/svelte': '7.0.0-alpha.3',
'@storybook/svelte-webpack5': '7.0.0-alpha.3',
'@storybook/telemetry': '7.0.0-alpha.3',
'@storybook/theming': '7.0.0-alpha.3',
'@storybook/ui': '7.0.0-alpha.3',
'@storybook/vue': '7.0.0-alpha.3',
'@storybook/vue-webpack5': '7.0.0-alpha.3',
'@storybook/vue3': '7.0.0-alpha.3',
'@storybook/vue3-webpack5': '7.0.0-alpha.3',
'@storybook/web-components': '7.0.0-alpha.3',
'@storybook/web-components-webpack5': '7.0.0-alpha.3',
sb: '7.0.0-alpha.3',
storybook: '7.0.0-alpha.3',
};

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/client-api",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook Client API",
"keywords": [
"storybook"
@ -33,13 +33,13 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/channel-postmessage": "7.0.0-alpha.2",
"@storybook/channels": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/channel-postmessage": "7.0.0-alpha.3",
"@storybook/channels": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/store": "7.0.0-alpha.2",
"@storybook/store": "7.0.0-alpha.3",
"@types/qs": "^6.9.5",
"@types/webpack-env": "^1.16.4",
"core-js": "^3.8.2",
@ -61,5 +61,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/client-logger",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "",
"keywords": [
"storybook"
@ -39,5 +39,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/codemod",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"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": "7.0.0-alpha.2",
"@storybook/node-logger": "7.0.0-alpha.2",
"@storybook/csf-tools": "7.0.0-alpha.3",
"@storybook/node-logger": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"cross-spawn": "^7.0.3",
"globby": "^11.0.2",
@ -62,5 +62,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/components",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Core Storybook Components",
"keywords": [
"storybook"
@ -50,9 +50,9 @@
"prepare": "esrun ../../scripts/prepare/bundle.ts"
},
"dependencies": {
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"memoizerific": "^1.11.3",
"qs": "^6.10.0",
@ -93,5 +93,5 @@
"./src/index.ts",
"./src/html.tsx"
],
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/core-client",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"
@ -33,16 +33,16 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/channel-postmessage": "7.0.0-alpha.2",
"@storybook/channel-websocket": "7.0.0-alpha.2",
"@storybook/client-api": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/channel-postmessage": "7.0.0-alpha.3",
"@storybook/channel-websocket": "7.0.0-alpha.3",
"@storybook/client-api": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/preview-web": "7.0.0-alpha.2",
"@storybook/store": "7.0.0-alpha.2",
"@storybook/ui": "7.0.0-alpha.2",
"@storybook/preview-web": "7.0.0-alpha.3",
"@storybook/store": "7.0.0-alpha.3",
"@storybook/ui": "7.0.0-alpha.3",
"airbnb-js-shims": "^2.2.1",
"ansi-to-html": "^0.6.11",
"core-js": "^3.8.2",
@ -62,5 +62,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/core-common",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"
@ -56,7 +56,7 @@
"@babel/preset-typescript": "^7.12.7",
"@babel/register": "^7.12.1",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/node-logger": "7.0.0-alpha.1",
"@storybook/node-logger": "7.0.0-alpha.3",
"@storybook/semver": "^7.3.2",
"@types/babel__core": "^7.0.0",
"@types/express": "^4.7.0",
@ -104,5 +104,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/core-events",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Event names used in storybook core",
"keywords": [
"storybook"
@ -38,5 +38,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/core-server",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"
@ -33,17 +33,17 @@
},
"dependencies": {
"@discoveryjs/json-ext": "^0.5.3",
"@storybook/core-client": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/core-client": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/csf-tools": "7.0.0-alpha.1",
"@storybook/csf-tools": "7.0.0-alpha.3",
"@storybook/docs-mdx": "0.0.1-canary.1.4bea5cc.0",
"@storybook/manager-webpack5": "7.0.0-alpha.1",
"@storybook/node-logger": "7.0.0-alpha.1",
"@storybook/manager-webpack5": "7.0.0-alpha.3",
"@storybook/node-logger": "7.0.0-alpha.3",
"@storybook/semver": "^7.3.2",
"@storybook/store": "7.0.0-alpha.2",
"@storybook/telemetry": "7.0.0-alpha.2",
"@storybook/store": "7.0.0-alpha.3",
"@storybook/telemetry": "7.0.0-alpha.3",
"@types/node": "^14.0.10 || ^16.0.0",
"@types/node-fetch": "^2.5.7",
"@types/pretty-hrtime": "^1.0.0",
@ -79,7 +79,7 @@
"x-default-browser": "^0.4.0"
},
"devDependencies": {
"@storybook/builder-webpack5": "7.0.0-alpha.2",
"@storybook/builder-webpack5": "7.0.0-alpha.3",
"@types/compression": "^1.7.0",
"@types/ip": "^1.1.0",
"@types/serve-favicon": "^2.5.2",
@ -104,5 +104,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -28,7 +28,7 @@ import {
copyAllStaticFilesRelativeToMain,
} from './utils/copy-all-static-files';
import { getBuilders } from './utils/get-builders';
import { extractStoriesJson } from './utils/stories-json';
import { extractStoriesJson, convertToIndexV3 } from './utils/stories-json';
import { extractStorybookMetadata } from './utils/metadata';
import { StoryIndexGenerator } from './utils/StoryIndexGenerator';
@ -138,9 +138,13 @@ export async function buildStaticStandalone(options: CLIOptions & LoadOptions &
extractTasks.push(
extractStoriesJson(
path.join(options.outputDir, 'stories.json'),
initializedStoryIndexGenerator
initializedStoryIndexGenerator,
convertToIndexV3
)
);
extractTasks.push(
extractStoriesJson(path.join(options.outputDir, 'index.json'), initializedStoryIndexGenerator)
);
}
const core = await presets.apply<CoreConfig>('core');

View File

@ -6,6 +6,7 @@ import debounce from 'lodash/debounce';
import { STORY_INDEX_INVALIDATED } from '@storybook/core-events';
import type { StoryIndex } from '@storybook/store';
import { loadCsf } from '@storybook/csf-tools';
import { normalizeStoriesEntry } from '@storybook/core-common';
import { useStoriesJson, DEBOUNCE, convertToIndexV3 } from './stories-json';
import { ServerChannel } from './get-server-channel';
@ -27,20 +28,22 @@ jest.mock('@storybook/docs-mdx', async () => ({
const workingDir = path.join(__dirname, '__mockdata__');
const normalizedStories = [
{
titlePrefix: '',
directory: './src',
files: '**/*.stories.@(ts|js|jsx)',
importPathMatcher:
/^\.[\\/](?:src(?:\/(?!\.)(?:(?:(?!(?:^|\/)\.).)*?)\/|\/|$)(?!\.)(?=.)[^/]*?\.stories\.(ts|js|jsx))$/,
},
{
titlePrefix: '',
directory: './src',
files: '**/*.mdx',
importPathMatcher:
/^\.[\\/](?:src(?:\/(?!\.)(?:(?:(?!(?:^|\/)\.).)*?)\/|\/|$)(?!\.)(?=.)[^/]*?\.mdx)$/,
},
normalizeStoriesEntry(
{
titlePrefix: '',
directory: './src',
files: '**/*.stories.@(ts|js|jsx)',
},
{ workingDir, configDir: workingDir }
),
normalizeStoriesEntry(
{
titlePrefix: '',
directory: './src',
files: '**/*.docs.mdx',
},
{ workingDir, configDir: workingDir }
),
];
const csfIndexer = async (fileName: string, opts: any) => {
@ -105,7 +108,6 @@ describe('useStoriesJson', () => {
expect(use).toHaveBeenCalledTimes(2);
const route = use.mock.calls[0][1];
console.log({ route });
await route(request, response);

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/core-webpack",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"
@ -33,8 +33,8 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/node-logger": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/node-logger": "7.0.0-alpha.3",
"@types/node": "^14.0.10 || ^16.0.0",
"core-js": "^3.8.2",
"ts-dedent": "^2.0.0"
@ -42,5 +42,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/csf-tools",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "",
"keywords": [
"storybook"
@ -55,5 +55,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/docs-tools",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Shared utility functions for frameworks to implement docs",
"keywords": [
"storybook"
@ -35,7 +35,7 @@
"dependencies": {
"@babel/core": "^7.12.10",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/store": "7.0.0-alpha.2",
"@storybook/store": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"doctrine": "^3.0.0",
"lodash": "^4.17.21",
@ -48,5 +48,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/instrumenter",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "",
"keywords": [
"storybook"
@ -40,14 +40,14 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"global": "^4.4.0"
},
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,7 @@
/* eslint-disable no-underscore-dangle */
import { addons, mockChannel } from '@storybook/addons';
import { logger } from '@storybook/client-logger';
import {
FORCE_REMOUNT,
SET_CURRENT_STORY,
@ -11,6 +12,8 @@ import global from 'global';
import { EVENTS, Instrumenter } from './instrumenter';
import type { Options } from './types';
jest.mock('@storybook/client-logger');
const callSpy = jest.fn();
const syncSpy = jest.fn();
const forceRemountSpy = jest.fn();
@ -39,6 +42,8 @@ let instrumenter: Instrumenter;
const instrument = <TObj extends Record<string, any>>(obj: TObj, options: Options = {}) =>
instrumenter.instrument(obj, options);
const tick = () => new Promise((resolve) => setTimeout(resolve, 0));
beforeEach(() => {
jest.useRealTimers();
callSpy.mockClear();
@ -296,25 +301,40 @@ describe('Instrumenter', () => {
);
});
it('catches thrown errors and returns the error', () => {
it('catches thrown errors and throws an ignoredException instead', () => {
const { fn } = instrument({
fn: () => {
throw new Error('Boom!');
},
});
expect(fn()).toEqual(new Error('Boom!'));
expect(() => setRenderPhase('played')).toThrow(new Error('Boom!'));
expect(fn).toThrow('ignoredException');
});
it('forwards nested exceptions', () => {
it('catches nested exceptions and throws an ignoredException instead', () => {
const { fn1, fn2 } = instrument({
fn1: (...args: any) => {}, // doesn't forward args
fn1: (_: any) => {},
fn2: () => {
throw new Error('Boom!');
},
});
expect(fn1(fn2())).toEqual(new Error('Boom!'));
expect(() => setRenderPhase('played')).toThrow(new Error('Boom!'));
expect(() => fn1(fn2())).toThrow('ignoredException');
});
it('bubbles child exceptions up to parent (in callback)', () => {
const { fn1, fn2 } = instrument({
fn1: jest.fn((callback: Function) => callback()),
fn2: () => {
throw new Error('Boom!');
},
});
expect(() =>
fn1(() => {
fn2();
})
).toThrow('ignoredException');
expect(fn1).toHaveBeenCalled();
expect(logger.warn).toHaveBeenCalledWith(new Error('Boom!'));
expect((logger.warn as any).mock.calls[0][0].callId).toBe('kind--story [0] fn1 [0] fn2');
});
it("re-throws anything that isn't an error", () => {
@ -357,6 +377,45 @@ describe('Instrumenter', () => {
describe('with intercept: true', () => {
const options = { intercept: true };
it('only includes intercepted calls in the log', async () => {
const fn = (callback?: Function) => callback && callback();
const { fn1, fn2 } = instrument({ fn1: fn, fn2: fn }, options);
const { fn3 } = instrument({ fn3: fn }, { intercept: false });
fn1();
fn2();
fn3();
await tick();
expect(syncSpy).toHaveBeenCalledWith(
expect.objectContaining({
logItems: [
{ callId: 'kind--story [0] fn1', status: 'done' },
{ callId: 'kind--story [1] fn2', status: 'done' },
],
})
);
});
it('also includes child calls in the log', async () => {
const fn = (callback?: Function) => callback && callback();
const { fn1, fn2 } = instrument({ fn1: fn, fn2: fn }, options);
fn1(() => {
fn2();
});
await tick();
expect(syncSpy).toHaveBeenCalledWith(
expect.objectContaining({
logItems: [
{ callId: 'kind--story [0] fn1', status: 'done' },
{
callId: 'kind--story [0] fn1 [0] fn2',
status: 'done',
parentId: 'kind--story [0] fn1',
},
],
})
);
});
it('emits a call event with error data when the function throws', () => {
const { fn } = instrument(
{
@ -374,35 +433,11 @@ describe('Instrumenter', () => {
name: 'Error',
message: 'Boom!',
stack: expect.stringContaining('Error: Boom!'),
callId: 'kind--story [0] fn',
},
})
);
});
it('catches thrown errors and throws an ignoredException instead', () => {
const { fn } = instrument(
{
fn: () => {
throw new Error('Boom!');
},
},
options
);
expect(fn).toThrow('ignoredException');
});
it('catches forwarded exceptions and throws an ignoredException instead', () => {
const { fn1, fn2 } = instrument(
{
fn1: (_: any) => {},
fn2: () => {
throw new Error('Boom!');
},
},
options
);
expect(() => fn1(fn2())).toThrow('ignoredException');
});
});
describe('while debugging', () => {
@ -443,12 +478,13 @@ describe('Instrumenter', () => {
});
it.skip('starts debugging at the first non-nested interceptable call', () => {
const { fn } = instrument({ fn: jest.fn((...args: any) => args) }, { intercept: true });
fn(fn(), fn()); // setup the dependencies
const fn = (...args) => args;
const { fn1, fn2, fn3 } = instrument({ fn1: fn, fn2: fn, fn3: fn }, { intercept: true });
fn3(fn1(), fn2()); // setup the dependencies
addons.getChannel().emit(EVENTS.START, { storyId });
const a = fn('a');
const b = fn('b');
const c = fn(a, b);
const a = fn1('a');
const b = fn2('b');
const c = fn3(a, b);
expect(a).toEqual(['a']);
expect(b).toEqual(['b']);
expect(c).toEqual(expect.any(Promise));
@ -476,13 +512,13 @@ describe('Instrumenter', () => {
expect(fn).toHaveBeenCalledTimes(0);
addons.getChannel().emit(EVENTS.NEXT, { storyId });
await new Promise((resolve) => setTimeout(resolve, 0));
await tick();
expect(mockedInstrumentedFn).toHaveBeenCalledTimes(2);
expect(fn).toHaveBeenCalledTimes(1);
addons.getChannel().emit(EVENTS.END, { storyId });
await new Promise((resolve) => setTimeout(resolve, 0));
await tick();
expect(mockedInstrumentedFn).toHaveBeenCalledTimes(3);
expect(fn).toHaveBeenCalledTimes(3);

View File

@ -1,7 +1,7 @@
/* eslint-disable no-underscore-dangle */
import { addons, Channel } from '@storybook/addons';
import type { StoryId } from '@storybook/addons';
import { once } from '@storybook/client-logger';
import { logger, once } from '@storybook/client-logger';
import {
FORCE_REMOUNT,
IGNORED_EXCEPTION,
@ -10,7 +10,7 @@ import {
} from '@storybook/core-events';
import global from 'global';
import { Call, CallRef, CallStates, State, Options, ControlStates, LogItem } from './types';
import { Call, CallRef, CallStates, ControlStates, LogItem, Options, State } from './types';
export const EVENTS = {
CALL: 'instrumenter/call',
@ -73,7 +73,6 @@ const getInitialState = (): State => ({
playUntil: undefined,
resolvers: {},
syncTimeout: undefined,
forwardedException: undefined,
});
const getRetainedState = (state: State, isDebugging = false) => {
@ -132,7 +131,7 @@ export class Instrumenter {
// Start with a clean slate before playing after a remount, and stop debugging when done.
this.channel.on(STORY_RENDER_PHASE_CHANGED, ({ storyId, newPhase }) => {
const { isDebugging, forwardedException } = this.getState(storyId);
const { isDebugging } = this.getState(storyId);
this.setState(storyId, { renderPhase: newPhase });
if (newPhase === 'playing') {
resetState({ storyId, isDebugging });
@ -142,10 +141,13 @@ export class Instrumenter {
isLocked: false,
isPlaying: false,
isDebugging: false,
forwardedException: undefined,
});
// Rethrow any unhandled forwarded exception so it doesn't go unnoticed.
if (forwardedException) throw forwardedException;
}
if (newPhase === 'errored') {
this.setState(storyId, {
isLocked: false,
isPlaying: false,
});
}
});
@ -172,7 +174,7 @@ export class Instrumenter {
playUntil ||
shadowCalls
.slice(0, firstRowIndex)
.filter((call) => call.interceptable)
.filter((call) => call.interceptable && !call.parentId)
.slice(-1)[0]?.id,
};
});
@ -182,12 +184,12 @@ export class Instrumenter {
};
const back = ({ storyId }: { storyId: string }) => {
const { isDebugging } = this.getState(storyId);
const log = this.getLog(storyId);
const next = isDebugging
? log.findIndex(({ status }) => status === CallStates.WAITING)
: log.length;
start({ storyId, playUntil: log[next - 2]?.callId });
const log = this.getLog(storyId).filter((call) => !call.parentId);
const last = log.reduceRight((res, item, index) => {
if (res >= 0 || item.status === CallStates.WAITING) return res;
return index;
}, -1);
start({ storyId, playUntil: log[last - 1]?.callId });
};
const goto = ({ storyId, callId }: { storyId: string; callId: Call['id'] }) => {
@ -269,8 +271,8 @@ export class Instrumenter {
seen.add((node as CallRef).__callId__);
}
});
if (call.interceptable && !seen.has(call.id)) {
acc.unshift({ callId: call.id, status: call.status });
if ((call.interceptable || call.exception) && !seen.has(call.id)) {
acc.unshift({ callId: call.id, status: call.status, parentId: call.parentId });
seen.add(call.id);
}
return acc;
@ -333,7 +335,8 @@ export class Instrumenter {
const { path = [], intercept = false, retain = false } = options;
const interceptable = typeof intercept === 'function' ? intercept(method, path) : intercept;
const call: Call = { id, parentId, storyId, cursor, path, method, args, interceptable, retain };
const result = (interceptable ? this.intercept : this.invoke).call(this, fn, call, options);
const interceptOrInvoke = interceptable && !parentId ? this.intercept : this.invoke;
const result = interceptOrInvoke.call(this, fn, call, options);
return this.instrument(result, { ...options, mutate: true, path: [{ __callId__: call.id }] });
}
@ -370,25 +373,50 @@ export class Instrumenter {
// const { abortSignal } = global.window.__STORYBOOK_PREVIEW__ || {};
// if (abortSignal && abortSignal.aborted) throw IGNORED_EXCEPTION;
const { callRefsByResult, forwardedException, renderPhase } = this.getState(call.storyId);
const { callRefsByResult, renderPhase } = this.getState(call.storyId);
const info: Call = {
...call,
// Map args that originate from a tracked function call to a call reference to enable nesting.
// These values are often not fully serializable anyway (e.g. HTML elements).
args: call.args.map((arg) => {
if (callRefsByResult.has(arg)) {
return callRefsByResult.get(arg);
}
if (arg instanceof global.window.HTMLElement) {
const { prefix, localName, id, classList, innerText } = arg;
const classNames = Array.from(classList);
return { __element__: { prefix, localName, id, classNames, innerText } };
}
return arg;
}),
// Map complex values to a JSON-serializable representation.
const serializeValues = (value: any): any => {
if (callRefsByResult.has(value)) {
return callRefsByResult.get(value);
}
if (value instanceof Array) {
return value.map(serializeValues);
}
if (value instanceof Date) {
return { __date__: { value: value.toISOString() } };
}
if (value instanceof Error) {
const { name, message, stack } = value;
return { __error__: { name, message, stack } };
}
if (value instanceof RegExp) {
const { flags, source } = value;
return { __regexp__: { flags, source } };
}
if (value instanceof global.window.HTMLElement) {
const { prefix, localName, id, classList, innerText } = value;
const classNames = Array.from(classList);
return { __element__: { prefix, localName, id, classNames, innerText } };
}
if (typeof value === 'function') {
return { __function__: { name: value.name } };
}
if (typeof value === 'symbol') {
return { __symbol__: { description: value.description } };
}
if (
typeof value === 'object' &&
value?.constructor?.name &&
value?.constructor?.name !== 'Object'
) {
return { __class__: { name: value.constructor.name } };
}
return value;
};
const info: Call = { ...call, args: call.args.map(serializeValues) };
// Mark any ancestor calls as "chained upon" so we won't attempt to defer it later.
call.path.forEach((ref: any) => {
if (ref?.__callId__) {
@ -398,10 +426,10 @@ export class Instrumenter {
}
});
const handleException = (e: unknown) => {
const handleException = (e: any) => {
if (e instanceof Error) {
const { name, message, stack } = e;
const exception = { name, message, stack };
const { name, message, stack, callId = call.id } = e as Error & { callId: Call['id'] };
const exception = { name, message, stack, callId };
this.update({ ...info, status: CallStates.ERROR, exception });
// Always track errors to their originating call.
@ -412,50 +440,56 @@ export class Instrumenter {
]),
}));
// We need to throw to break out of the play function, but we don't want to trigger a redbox
// so we throw an ignoredException, which is caught and silently ignored by Storybook.
if (call.interceptable && e !== alreadyCompletedException) {
throw IGNORED_EXCEPTION;
// Exceptions inside callbacks should bubble up to the parent call.
if (call.parentId) {
Object.defineProperty(e, 'callId', { value: call.id });
throw e;
}
// Non-interceptable calls need their exceptions forwarded to the next interceptable call.
// In case no interceptable call picks it up, it'll get rethrown in the "completed" phase.
this.setState(call.storyId, { forwardedException: e });
return e;
// We need to throw to break out of the play function, but we don't want to trigger a redbox
// so we throw an ignoredException, which is caught and silently ignored by Storybook.
if (e !== alreadyCompletedException) {
logger.warn(e);
throw IGNORED_EXCEPTION;
}
}
throw e;
};
try {
// An earlier, non-interceptable call might have forwarded an exception.
if (forwardedException) {
this.setState(call.storyId, { forwardedException: undefined });
throw forwardedException;
}
if (renderPhase === 'played' && !call.retain) {
throw alreadyCompletedException;
}
const finalArgs = options.getArgs
// Some libraries override function args through the `getArgs` option.
const actualArgs = options.getArgs
? options.getArgs(call, this.getState(call.storyId))
: call.args;
const result = fn(
// Wrap any callback functions to provide a way to access their "parent" call.
// This is picked up in the `track` function and used for call metadata.
...finalArgs.map((arg: any) => {
if (typeof arg !== 'function' || Object.keys(arg).length) return arg;
return (...args: any) => {
const { cursor, parentId } = this.getState(call.storyId);
this.setState(call.storyId, { cursor: 0, parentId: call.id });
const restore = () => this.setState(call.storyId, { cursor, parentId });
const res = arg(...args);
if (res instanceof Promise) res.then(restore, restore);
else restore();
return res;
};
})
);
// Wrap any callback functions to provide a way to access their "parent" call.
// This is picked up in the `track` function and used for call metadata.
const finalArgs = actualArgs.map((arg: any) => {
// We only want to wrap plain functions, not objects.
if (typeof arg !== 'function' || Object.keys(arg).length) return arg;
return (...args: any) => {
// Set the cursor and parentId for calls that happen inside the callback.
const { cursor, parentId } = this.getState(call.storyId);
this.setState(call.storyId, { cursor: 0, parentId: call.id });
const restore = () => this.setState(call.storyId, { cursor, parentId });
// Invoke the actual callback function.
const res = arg(...args);
// Reset cursor and parentId to their original values before we entered the callback.
if (res instanceof Promise) res.then(restore, restore);
else restore();
return res;
};
});
const result = fn(...finalArgs);
// Track the result so we can trace later uses of it back to the originating call.
// Primitive results (undefined, null, boolean, string, number, BigInt) are ignored.
@ -510,6 +544,9 @@ export class Instrumenter {
sync(storyId: StoryId) {
const { isLocked, isPlaying } = this.getState(storyId);
const logItems: LogItem[] = this.getLog(storyId);
const pausedAt = logItems
.filter(({ parentId }) => !parentId)
.find((item) => item.status === CallStates.WAITING)?.callId;
const hasActive = logItems.some((item) => item.status === CallStates.ACTIVE);
if (debuggerDisabled || isLocked || hasActive || logItems.length === 0) {
@ -528,7 +565,8 @@ export class Instrumenter {
next: isPlaying,
end: isPlaying,
};
this.channel.emit(EVENTS.SYNC, { controlStates, logItems });
this.channel.emit(EVENTS.SYNC, { controlStates, logItems, pausedAt });
}
}

View File

@ -11,7 +11,12 @@ export interface Call {
interceptable: boolean;
retain: boolean;
status?: CallStates.DONE | CallStates.ERROR | CallStates.ACTIVE | CallStates.WAITING;
exception?: Error;
exception?: {
name: Error['name'];
message: Error['message'];
stack: Error['stack'];
callId: Call['id'];
};
}
export enum CallStates {
@ -47,6 +52,7 @@ export interface ControlStates {
export interface LogItem {
callId: Call['id'];
status: Call['status'];
parentId?: Call['id'];
}
export interface Payload {

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/manager-webpack5",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"
@ -38,13 +38,13 @@
"@babel/core": "^7.12.10",
"@babel/plugin-transform-template-literals": "^7.12.1",
"@babel/preset-react": "^7.12.10",
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/core-client": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/core-webpack": "7.0.0-alpha.2",
"@storybook/node-logger": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/ui": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/core-client": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"@storybook/core-webpack": "7.0.0-alpha.3",
"@storybook/node-logger": "7.0.0-alpha.3",
"@storybook/theming": "7.0.0-alpha.3",
"@storybook/ui": "7.0.0-alpha.3",
"@types/node": "^14.0.10 || ^16.0.0",
"babel-loader": "^8.2.5",
"case-sensitive-paths-webpack-plugin": "^2.4.0",
@ -83,5 +83,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/node-logger",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "",
"keywords": [
"storybook"
@ -45,5 +45,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/postinstall",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Storybook addons postinstall utilities",
"keywords": [
"api",
@ -44,5 +44,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preview-web",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "",
"keywords": [
"storybook"
@ -40,12 +40,12 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/channel-postmessage": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/channel-postmessage": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"@storybook/store": "7.0.0-alpha.2",
"@storybook/store": "7.0.0-alpha.3",
"ansi-to-html": "^0.6.11",
"core-js": "^3.8.2",
"global": "^4.4.0",
@ -60,5 +60,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,4 +1,3 @@
import global from 'global';
import { AnyFramework, StoryId, ViewMode, StoryContextForLoaders } from '@storybook/csf';
import { Story, StoryStore, CSFFile, ModuleExports, IndexEntry } from '@storybook/store';
import { Channel } from '@storybook/addons';

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/router",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Core Storybook Router",
"keywords": [
"storybook"
@ -33,7 +33,7 @@
"prepare": "ts-node ../../scripts/prebundle.ts"
},
"dependencies": {
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"memoizerific": "^1.11.3",
"qs": "^6.10.0",
@ -57,5 +57,5 @@
"access": "public"
},
"bundlerEntrypoint": "./src/index.ts",
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/source-loader",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Source loader",
"keywords": [
"lib",
@ -34,8 +34,8 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"core-js": "^3.8.2",
"estraverse": "^5.2.0",
@ -51,5 +51,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/store",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "",
"keywords": [
"storybook"
@ -40,9 +40,9 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/csf": "0.0.2--canary.4566f4d.1",
"core-js": "^3.8.2",
"fast-deep-equal": "^3.1.3",
@ -63,5 +63,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -11,7 +11,6 @@ import type {
} from '@storybook/csf';
import mapValues from 'lodash/mapValues';
import pick from 'lodash/pick';
import global from 'global';
import { SynchronousPromise } from 'synchronous-promise';
import { StoryIndexStore } from './StoryIndexStore';
@ -28,7 +27,6 @@ import type {
BoundStory,
PromiseLike,
StoryIndex,
StoryIndexEntry,
V2CompatIndexEntry,
StoryIndexV3,
ModuleExports,

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/telemetry",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Telemetry logging for crash reports and usage statistics",
"keywords": [
"storybook"
@ -33,8 +33,8 @@
"prepare": "node ../../scripts/prepare.js"
},
"dependencies": {
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/core-common": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/core-common": "7.0.0-alpha.3",
"chalk": "^4.1.0",
"core-js": "^3.8.2",
"detect-package-manager": "^2.0.1",
@ -49,5 +49,5 @@
"publishConfig": {
"access": "public"
},
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/theming",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Core Storybook Components",
"keywords": [
"storybook"
@ -33,7 +33,7 @@
"prepare": "ts-node ../../scripts/prebundle.ts"
},
"dependencies": {
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"memoizerific": "^1.11.3",
"regenerator-runtime": "^0.13.7"
@ -58,5 +58,5 @@
"access": "public"
},
"bundlerEntrypoint": "./src/index.ts",
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/ui",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"description": "Core Storybook UI",
"keywords": [
"storybook"
@ -33,15 +33,15 @@
"prepare": "ts-node ../../scripts/prebundle.ts"
},
"dependencies": {
"@storybook/addons": "7.0.0-alpha.2",
"@storybook/api": "7.0.0-alpha.2",
"@storybook/channels": "7.0.0-alpha.2",
"@storybook/client-logger": "7.0.0-alpha.2",
"@storybook/components": "7.0.0-alpha.2",
"@storybook/core-events": "7.0.0-alpha.2",
"@storybook/router": "7.0.0-alpha.2",
"@storybook/addons": "7.0.0-alpha.3",
"@storybook/api": "7.0.0-alpha.3",
"@storybook/channels": "7.0.0-alpha.3",
"@storybook/client-logger": "7.0.0-alpha.3",
"@storybook/components": "7.0.0-alpha.3",
"@storybook/core-events": "7.0.0-alpha.3",
"@storybook/router": "7.0.0-alpha.3",
"@storybook/semver": "^7.3.2",
"@storybook/theming": "7.0.0-alpha.2",
"@storybook/theming": "7.0.0-alpha.3",
"core-js": "^3.8.2",
"memoizerific": "^1.11.3",
"qs": "^6.10.0",
@ -76,5 +76,5 @@
"access": "public"
},
"bundlerEntrypoint": "./src/index.tsx",
"gitHead": "44920e2b6bd51981bac5124743c29fb9f5517e44"
"gitHead": "629b056190993bcee6445471b8cb27208eb401a9"
}

View File

@ -20,6 +20,7 @@ const SkipToSidebarLink = styled(Button)(({ theme }) => ({
display: 'none',
'@media (min-width: 600px)': {
position: 'absolute',
display: 'block',
top: 10,
right: 15,
padding: '10px 15px',

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/root",
"version": "7.0.0-alpha.2",
"version": "7.0.0-alpha.3",
"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": [

Some files were not shown because too many files have changed in this diff Show More