Merge branch 'next' into next

This commit is contained in:
jonniebigodes 2024-04-05 12:51:39 +01:00 committed by GitHub
commit c32b7f9bab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
138 changed files with 1153 additions and 702 deletions

View File

@ -1,3 +1,13 @@
## 8.1.0-alpha.6
- CLI: Add --config-dir flag to migrate command - [#26721](https://github.com/storybookjs/storybook/pull/26721), thanks @yannbf!
- Core: Add `duration` and `onClick` support to Notification API and improve Notification UI - [#26696](https://github.com/storybookjs/storybook/pull/26696), thanks @ghengeveld!
- Dependency: Bump es-module-lexer - [#26737](https://github.com/storybookjs/storybook/pull/26737), thanks @valentinpalkovic!
- Dependency: Update globby dependency - [#26733](https://github.com/storybookjs/storybook/pull/26733), thanks @valentinpalkovic!
- Dependency: Update postcss-loader in Next.js framework - [#26707](https://github.com/storybookjs/storybook/pull/26707), thanks @valentinpalkovic!
- Next.js: Fix next/font usage on Windows machines - [#26700](https://github.com/storybookjs/storybook/pull/26700), thanks @valentinpalkovic!
- Webpack: Fix sourcemap generation in webpack react-docgen-loader - [#26676](https://github.com/storybookjs/storybook/pull/26676), thanks @valentinpalkovic!
## 8.1.0-alpha.5
- Addon-docs: Fix `react-dom/server` imports breaking stories and docs - [#26557](https://github.com/storybookjs/storybook/pull/26557), thanks @JReinhold!

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-a11y",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Test component compliance with web accessibility standards",
"keywords": [
"a11y",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-actions",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Get UI feedback when an action is performed on an interactive element",
"keywords": [
"storybook",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-backgrounds",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Switch backgrounds to view components in different settings",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-controls",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Interact with component inputs dynamically in the Storybook UI",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-docs",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Document component usage and properties in Markdown",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-essentials",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Curated addons to bring out the best of Storybook",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-mdx-gfm",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "GitHub Flavored Markdown in Storybook",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-highlight",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Highlight DOM nodes within your stories",
"keywords": [
"storybook-addons",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-interactions",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Automate, test and debug user interactions",
"keywords": [
"storybook-addons",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-jest",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "React storybook addon that show component jest report",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-links",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Link stories together to build demos and prototypes with your UI components",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-measure",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Inspect layouts by visualizing the box model",
"keywords": [
"storybook-addons",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-onboarding",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook Addon Onboarding - Introduces a new onboarding experience",
"keywords": [
"storybook-addons",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-outline",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Outline all elements with CSS to help with layout placement and alignment",
"keywords": [
"storybook-addons",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-storysource",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "View a storys source code to see how it works and paste into your app",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-themes",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Switch between multiple themes for you components in Storybook",
"keywords": [
"css",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-toolbars",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Create your own toolbar items that control story rendering",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/addon-viewport",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Build responsive components by adjusting Storybooks viewport size and orientation",
"keywords": [
"addon",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/builder-manager",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook manager builder",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/builder-vite",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "A plugin to run and build Storybooks with Vite",
"homepage": "https://github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme",
"bugs": {
@ -54,7 +54,7 @@
"@storybook/types": "workspace:*",
"@types/find-cache-dir": "^3.2.1",
"browser-assert": "^1.2.1",
"es-module-lexer": "^0.9.3",
"es-module-lexer": "^1.5.0",
"express": "^4.17.3",
"find-cache-dir": "^3.0.0",
"fs-extra": "^11.1.0",

View File

@ -19,12 +19,14 @@ export async function injectExportOrderPlugin() {
// instead of calling `await parse()` every time.
const [, exports] = await parse(code);
if (exports.includes('__namedExportsOrder')) {
const exportNames = exports.map((e) => code.substring(e.s, e.e));
if (exportNames.includes('__namedExportsOrder')) {
// user has defined named exports already
return undefined;
}
const s = new MagicString(code);
const orderedExports = exports.filter((e) => e !== 'default');
const orderedExports = exportNames.filter((e) => e !== 'default');
s.append(`;export const __namedExportsOrder = ${JSON.stringify(orderedExports)};`);
return {
code: s.toString(),

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/builder-webpack5",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"
@ -78,7 +78,7 @@
"cjs-module-lexer": "^1.2.3",
"constants-browserify": "^1.0.0",
"css-loader": "^6.7.1",
"es-module-lexer": "^1.4.1",
"es-module-lexer": "^1.5.0",
"express": "^4.17.3",
"fork-ts-checker-webpack-plugin": "^8.0.0",
"fs-extra": "^11.1.0",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/angular",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for Angular: Develop Angular components in isolation with hot reloading.",
"keywords": [
"storybook",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/ember",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for Ember: Develop Ember Component in isolation with Hot Reloading.",
"homepage": "https://github.com/storybookjs/storybook/tree/next/code/frameworks/ember",
"bugs": {

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/html-vite",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for HTML and Vite: Develop HTML in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/html-webpack5",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/nextjs",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for Next.js",
"keywords": [
"storybook",
@ -108,8 +108,8 @@
"loader-utils": "^3.2.1",
"node-polyfill-webpack-plugin": "^2.0.1",
"pnp-webpack-plugin": "^1.7.0",
"postcss": "^8.4.21",
"postcss-loader": "^7.0.2",
"postcss": "^8.4.38",
"postcss-loader": "^8.1.1",
"react-refresh": "^0.14.0",
"resolve-url-loader": "^5.0.0",
"sass-loader": "^12.4.0",

View File

@ -36,7 +36,7 @@ export const configureCss = (baseConfig: WebpackConfig, nextConfig: NextConfig):
],
// We transform the "target.css" files from next.js into Javascript
// for Next.js to support fonts, so it should be ignored by the css-loader.
exclude: /next\/.*\/target.css$/,
exclude: /next(\\|\/|\\\\).*(\\|\/|\\\\)target\.css$/,
};
}
});

View File

@ -7,7 +7,7 @@ export function configureNextFont(baseConfig: Configuration, isSWC?: boolean) {
if (isSWC) {
baseConfig.module?.rules?.push({
test: /next\/.*\/target.css$/,
test: /next(\\|\/|\\\\).*(\\|\/|\\\\)target\.css$/,
loader: fontLoaderPath,
});
} else {

View File

@ -39,13 +39,9 @@ export async function getFontFaceDeclarations(
.map(({ prop, value }: { prop: string; value: string }) => `${prop}: ${value};`)
.join('\n');
const arePathsWin32Format = /^[a-z]:\\/iu.test(options.filename);
const cleanWin32Path = (pathString: string): string =>
arePathsWin32Format ? pathString.replace(/\\/gu, '/') : pathString;
const getFontFaceCSS = () => {
if (typeof localFontSrc === 'string') {
const localFontPath = cleanWin32Path(path.join(parentFolder, localFontSrc));
const localFontPath = path.join(parentFolder, localFontSrc).replaceAll('\\', '/');
return `@font-face {
font-family: ${id};
@ -55,7 +51,7 @@ export async function getFontFaceDeclarations(
}
return localFontSrc
.map((font) => {
const localFontPath = cleanWin32Path(path.join(parentFolder, font.path));
const localFontPath = path.join(parentFolder, font.path).replaceAll('\\', '/');
return `@font-face {
font-family: ${id};

View File

@ -3,6 +3,7 @@ import { getFontFaceDeclarations as getLocalFontFaceDeclarations } from './local
import type { LoaderOptions } from './types';
import { getCSSMeta } from './utils/get-css-meta';
import { setFontDeclarationsInHead } from './utils/set-font-declarations-in-head';
import path from 'path';
type FontFaceDeclaration = {
id: string;
@ -39,11 +40,19 @@ export default async function storybookNextjsFontLoader(this: any) {
let fontFaceDeclaration: FontFaceDeclaration | undefined;
if (options.source.endsWith('next/font/google') || options.source.endsWith('@next/font/google')) {
const pathSep = path.sep;
if (
options.source.endsWith(`next${pathSep}font${pathSep}google`) ||
options.source.endsWith(`@next${pathSep}font${pathSep}google`)
) {
fontFaceDeclaration = await getGoogleFontFaceDeclarations(options);
}
if (options.source.endsWith('next/font/local') || options.source.endsWith('@next/font/local')) {
if (
options.source.endsWith(`next${pathSep}font${pathSep}local`) ||
options.source.endsWith(`@next${pathSep}font${pathSep}local`)
) {
fontFaceDeclaration = await getLocalFontFaceDeclarations(options, rootCtx, swcMode);
}

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preact-vite",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for Preact and Vite: Develop Preact components in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preact-webpack5",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for Preact: Develop Preact Component in isolation.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/react-vite",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for React and Vite: Develop React components in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/react-webpack5",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for React: Develop React Component in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/server-webpack5",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/svelte-vite",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for Svelte and Vite: Develop Svelte components in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/svelte-webpack5",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/sveltekit",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for SvelteKit",
"keywords": [
"storybook",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/vue3-vite",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for Vue3 and Vite: Develop Vue3 components in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/vue3-webpack5",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/web-components-vite",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for web-components and Vite: Develop Web Components in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/web-components-webpack5",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for web-components: View web components snippets in isolation with Hot Reloading.",
"keywords": [
"lit",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/channels",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "sb",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook CLI",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "storybook",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook CLI",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/cli",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook's CLI - install, dev, build, upgrade, and more",
"keywords": [
"cli",
@ -80,7 +80,7 @@
"fs-extra": "^11.1.0",
"get-npm-tarball-url": "^2.0.3",
"giget": "^1.0.0",
"globby": "^11.0.2",
"globby": "^14.0.1",
"jscodeshift": "^0.15.1",
"leven": "^3.1.0",
"ora": "^5.4.1",

View File

@ -2,7 +2,6 @@ import chalk from 'chalk';
import { dedent } from 'ts-dedent';
import { basename } from 'path';
import fse from 'fs-extra';
import globby from 'globby';
import type { Fix } from '../types';
const MDX1_STYLE_START = /<style>{`/g;
@ -48,6 +47,9 @@ export const mdx1to3: Fix<Mdx1to3Options> = {
versionRange: ['<7.0.0', '>=8.0.0-alpha.0'],
async check() {
// Dynamically import globby because it is a pure ESM module
const { globby } = await import('globby');
const storiesMdxFiles = await globby('./!(node_modules)**/*.(story|stories).mdx');
return storiesMdxFiles.length ? { storiesMdxFiles } : null;
},

View File

@ -4,7 +4,7 @@ import { mdxgfm } from './mdx-gfm';
vi.mock('globby', () => ({
__esModule: true,
default: vi.fn().mockResolvedValue(['a/fake/file.mdx']),
globby: vi.fn().mockResolvedValue(['a/fake/file.mdx']),
}));
const check = async ({

View File

@ -1,7 +1,6 @@
import { dedent } from 'ts-dedent';
import { join } from 'path';
import slash from 'slash';
import glob from 'globby';
import { commonGlobOptions } from '@storybook/core-common';
import { updateMainConfig } from '../helpers/mainConfigFile';
import type { Fix } from '../types';
@ -46,7 +45,10 @@ export const mdxgfm: Fix<Options> = {
return false;
}
const files = await glob(pattern, commonGlobOptions(pattern));
// Dynamically import globby because it is a pure ESM module
const { globby } = await import('globby');
const files = await globby(pattern, commonGlobOptions(pattern));
return files.some((f) => f.endsWith('.mdx'));
}, Promise.resolve(false));

View File

@ -126,6 +126,7 @@ command('migrate [migration]')
.option('-l --list', 'List available migrations')
.option('-g --glob <glob>', 'Glob for files upon which to apply the migration', '**/*.js')
.option('-p --parser <babel | babylon | flow | ts | tsx>', 'jscodeshift parser')
.option('-c, --config-dir <dir-name>', 'Directory where to load Storybook configurations from')
.option(
'-n --dry-run',
'Dry run: verify the migration exists and show the files to which it will be applied'
@ -142,7 +143,6 @@ command('migrate [migration]')
list,
rename,
parser,
logger: consoleLogger,
}).catch((err) => {
logger.error(err);
process.exit(1);

View File

@ -11,7 +11,25 @@ import { getStorybookVersionSpecifier } from './helpers';
const logger = console;
export async function migrate(migration: any, { glob, dryRun, list, rename, parser }: any) {
type CLIOptions = {
glob: string;
configDir?: string;
dryRun?: boolean;
list?: string[];
/**
* Rename suffix of matching files after codemod has been applied, e.g. ".js:.ts"
*/
rename?: string;
/**
* jscodeshift parser
*/
parser?: 'babel' | 'babylon' | 'flow' | 'ts' | 'tsx';
};
export async function migrate(
migration: any,
{ glob, dryRun, list, rename, parser, configDir: userSpecifiedConfigDir }: CLIOptions
) {
if (list) {
listCodemods().forEach((key: any) => logger.log(key));
} else if (migration) {
@ -19,13 +37,14 @@ export async function migrate(migration: any, { glob, dryRun, list, rename, pars
const packageManager = JsPackageManagerFactory.getPackageManager();
const [packageJson, storybookVersion] = await Promise.all([
//
packageManager.retrievePackageJson(),
getCoercedStorybookVersion(packageManager),
]);
const { configDir: inferredConfigDir, mainConfig: mainConfigPath } =
getStorybookInfo(packageJson);
const configDir = inferredConfigDir || '.storybook';
const { configDir: inferredConfigDir, mainConfig: mainConfigPath } = getStorybookInfo(
packageJson,
userSpecifiedConfigDir
);
const configDir = userSpecifiedConfigDir || inferredConfigDir || '.storybook';
// GUARDS
if (!storybookVersion) {

View File

@ -1,10 +1,21 @@
import { describe, beforeEach, it, expect, vi } from 'vitest';
import globby from 'globby';
import { logger } from '@storybook/node-logger';
import { warn } from './warn';
vi.mock('@storybook/node-logger');
vi.mock('globby');
const mocks = vi.hoisted(() => {
return {
globby: vi.fn(),
};
});
vi.mock('globby', async (importOriginal) => {
return {
...(await importOriginal<typeof import('globby')>()),
globby: mocks.globby,
};
});
describe('warn', () => {
beforeEach(() => {
@ -21,17 +32,17 @@ describe('warn', () => {
});
describe('when TypeScript is not installed as a dependency', () => {
it('should not warn if `.tsx?` files are not found', () => {
vi.mocked(globby.sync).mockReturnValueOnce([]);
warn({
it('should not warn if `.tsx?` files are not found', async () => {
mocks.globby.mockResolvedValue([]);
await warn({
hasTSDependency: false,
});
expect(logger.warn).toHaveBeenCalledTimes(0);
});
it('should warn if `.tsx?` files are found', () => {
vi.mocked(globby.sync).mockReturnValueOnce(['a.ts']);
warn({
it('should warn if `.tsx?` files are found', async () => {
mocks.globby.mockResolvedValue(['a.ts']);
await warn({
hasTSDependency: false,
});
expect(logger.warn).toHaveBeenCalledTimes(2);

View File

@ -1,13 +1,18 @@
import globby from 'globby';
import { logger } from '@storybook/node-logger';
interface Options {
hasTSDependency: boolean;
}
export const warn = ({ hasTSDependency }: Options) => {
export const warn = async ({ hasTSDependency }: Options) => {
if (!hasTSDependency) {
const hasTSFiles = !!globby.sync(['**/*.@(ts|tsx)', '!**/node_modules', '!**/*.d.ts']).length;
// Dynamically import globby because it is a pure ESM module
const { globby } = await import('globby');
const files = await globby(['**/*.@(ts|tsx)', '!**/node_modules', '!**/*.d.ts']);
const hasTSFiles = !!files.length;
if (hasTSFiles) {
logger.warn(
'We have detected TypeScript files in your project directory, however TypeScript is not listed as a project dependency.'

View File

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

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/codemod",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "A collection of codemod scripts written with JSCodeshift",
"keywords": [
"storybook"
@ -63,7 +63,7 @@
"@storybook/types": "workspace:*",
"@types/cross-spawn": "^6.0.2",
"cross-spawn": "^7.0.3",
"globby": "^11.0.2",
"globby": "^14.0.1",
"jscodeshift": "^0.15.1",
"lodash": "^4.17.21",
"prettier": "^3.1.1",

View File

@ -2,7 +2,6 @@
import fs from 'fs';
import path from 'path';
import { promisify } from 'util';
import globby from 'globby';
import { sync as spawnSync } from 'cross-spawn';
import { jscodeshiftToPrettierParser } from './lib/utils';
@ -63,6 +62,9 @@ export async function runCodemod(
if (knownParser !== 'babel') inferredParser = extension;
}
// Dynamically import globby because it is a pure ESM module
const { globby } = await import('globby');
const files = await globby([glob, '!**/node_modules', '!**/dist']);
const extensions = new Set(files.map((file) => path.extname(file).slice(1)));
const commaSeparatedExtensions = Array.from(extensions).join(',');

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/core-common",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"

View File

@ -1,5 +1,4 @@
import { describe, beforeEach, it, expect, vi } from 'vitest';
import dedent from 'ts-dedent';
import { Yarn2Proxy } from './Yarn2Proxy';
describe('Yarn 2 Proxy', () => {

View File

@ -36,6 +36,7 @@ const CRITICAL_YARN2_ERROR_CODES = {
YN0083: 'AUTOMERGE_GIT_ERROR',
};
// @ts-expect-error The error codes might be helpful in the future
const YARN2_ERROR_CODES = {
...CRITICAL_YARN2_ERROR_CODES,
YN0000: 'UNNAMED',
@ -306,10 +307,12 @@ export class Yarn2Proxy extends JsPackageManager {
while ((match = regex.exec(logs)) !== null) {
const code = match[1];
const message = match[2].replace(/[┌│└]/g, '').trim();
if (CRITICAL_YARN2_ERROR_CODES[code]) {
if (code in CRITICAL_YARN2_ERROR_CODES) {
errorCodesWithMessages.push({
code,
message: `${CRITICAL_YARN2_ERROR_CODES[code]}\n-> ${message}\n`,
message: `${
CRITICAL_YARN2_ERROR_CODES[code as keyof typeof CRITICAL_YARN2_ERROR_CODES]
}\n-> ${message}\n`,
});
}
}

View File

@ -1,83 +1,83 @@
// auto generated file, do not edit
export default {
'@storybook/addon-a11y': '8.1.0-alpha.5',
'@storybook/addon-actions': '8.1.0-alpha.5',
'@storybook/addon-backgrounds': '8.1.0-alpha.5',
'@storybook/addon-controls': '8.1.0-alpha.5',
'@storybook/addon-docs': '8.1.0-alpha.5',
'@storybook/addon-essentials': '8.1.0-alpha.5',
'@storybook/addon-highlight': '8.1.0-alpha.5',
'@storybook/addon-interactions': '8.1.0-alpha.5',
'@storybook/addon-jest': '8.1.0-alpha.5',
'@storybook/addon-links': '8.1.0-alpha.5',
'@storybook/addon-mdx-gfm': '8.1.0-alpha.5',
'@storybook/addon-measure': '8.1.0-alpha.5',
'@storybook/addon-onboarding': '8.1.0-alpha.5',
'@storybook/addon-outline': '8.1.0-alpha.5',
'@storybook/addon-storysource': '8.1.0-alpha.5',
'@storybook/addon-themes': '8.1.0-alpha.5',
'@storybook/addon-toolbars': '8.1.0-alpha.5',
'@storybook/addon-viewport': '8.1.0-alpha.5',
'@storybook/angular': '8.1.0-alpha.5',
'@storybook/blocks': '8.1.0-alpha.5',
'@storybook/builder-manager': '8.1.0-alpha.5',
'@storybook/builder-vite': '8.1.0-alpha.5',
'@storybook/builder-webpack5': '8.1.0-alpha.5',
'@storybook/channels': '8.1.0-alpha.5',
'@storybook/cli': '8.1.0-alpha.5',
'@storybook/client-logger': '8.1.0-alpha.5',
'@storybook/codemod': '8.1.0-alpha.5',
'@storybook/components': '8.1.0-alpha.5',
'@storybook/core-common': '8.1.0-alpha.5',
'@storybook/core-events': '8.1.0-alpha.5',
'@storybook/core-server': '8.1.0-alpha.5',
'@storybook/core-webpack': '8.1.0-alpha.5',
'@storybook/csf-plugin': '8.1.0-alpha.5',
'@storybook/csf-tools': '8.1.0-alpha.5',
'@storybook/docs-tools': '8.1.0-alpha.5',
'@storybook/ember': '8.1.0-alpha.5',
'@storybook/html': '8.1.0-alpha.5',
'@storybook/html-vite': '8.1.0-alpha.5',
'@storybook/html-webpack5': '8.1.0-alpha.5',
'@storybook/instrumenter': '8.1.0-alpha.5',
'@storybook/manager': '8.1.0-alpha.5',
'@storybook/manager-api': '8.1.0-alpha.5',
'@storybook/nextjs': '8.1.0-alpha.5',
'@storybook/node-logger': '8.1.0-alpha.5',
'@storybook/preact': '8.1.0-alpha.5',
'@storybook/preact-vite': '8.1.0-alpha.5',
'@storybook/preact-webpack5': '8.1.0-alpha.5',
'@storybook/preset-create-react-app': '8.1.0-alpha.5',
'@storybook/preset-html-webpack': '8.1.0-alpha.5',
'@storybook/preset-preact-webpack': '8.1.0-alpha.5',
'@storybook/preset-react-webpack': '8.1.0-alpha.5',
'@storybook/preset-server-webpack': '8.1.0-alpha.5',
'@storybook/preset-svelte-webpack': '8.1.0-alpha.5',
'@storybook/preset-vue3-webpack': '8.1.0-alpha.5',
'@storybook/preview': '8.1.0-alpha.5',
'@storybook/preview-api': '8.1.0-alpha.5',
'@storybook/react': '8.1.0-alpha.5',
'@storybook/react-dom-shim': '8.1.0-alpha.5',
'@storybook/react-vite': '8.1.0-alpha.5',
'@storybook/react-webpack5': '8.1.0-alpha.5',
'@storybook/router': '8.1.0-alpha.5',
'@storybook/server': '8.1.0-alpha.5',
'@storybook/server-webpack5': '8.1.0-alpha.5',
'@storybook/source-loader': '8.1.0-alpha.5',
'@storybook/svelte': '8.1.0-alpha.5',
'@storybook/svelte-vite': '8.1.0-alpha.5',
'@storybook/svelte-webpack5': '8.1.0-alpha.5',
'@storybook/sveltekit': '8.1.0-alpha.5',
'@storybook/telemetry': '8.1.0-alpha.5',
'@storybook/test': '8.1.0-alpha.5',
'@storybook/theming': '8.1.0-alpha.5',
'@storybook/types': '8.1.0-alpha.5',
'@storybook/vue3': '8.1.0-alpha.5',
'@storybook/vue3-vite': '8.1.0-alpha.5',
'@storybook/vue3-webpack5': '8.1.0-alpha.5',
'@storybook/web-components': '8.1.0-alpha.5',
'@storybook/web-components-vite': '8.1.0-alpha.5',
'@storybook/web-components-webpack5': '8.1.0-alpha.5',
sb: '8.1.0-alpha.5',
storybook: '8.1.0-alpha.5',
'@storybook/addon-a11y': '8.1.0-alpha.6',
'@storybook/addon-actions': '8.1.0-alpha.6',
'@storybook/addon-backgrounds': '8.1.0-alpha.6',
'@storybook/addon-controls': '8.1.0-alpha.6',
'@storybook/addon-docs': '8.1.0-alpha.6',
'@storybook/addon-essentials': '8.1.0-alpha.6',
'@storybook/addon-highlight': '8.1.0-alpha.6',
'@storybook/addon-interactions': '8.1.0-alpha.6',
'@storybook/addon-jest': '8.1.0-alpha.6',
'@storybook/addon-links': '8.1.0-alpha.6',
'@storybook/addon-mdx-gfm': '8.1.0-alpha.6',
'@storybook/addon-measure': '8.1.0-alpha.6',
'@storybook/addon-onboarding': '8.1.0-alpha.6',
'@storybook/addon-outline': '8.1.0-alpha.6',
'@storybook/addon-storysource': '8.1.0-alpha.6',
'@storybook/addon-themes': '8.1.0-alpha.6',
'@storybook/addon-toolbars': '8.1.0-alpha.6',
'@storybook/addon-viewport': '8.1.0-alpha.6',
'@storybook/angular': '8.1.0-alpha.6',
'@storybook/blocks': '8.1.0-alpha.6',
'@storybook/builder-manager': '8.1.0-alpha.6',
'@storybook/builder-vite': '8.1.0-alpha.6',
'@storybook/builder-webpack5': '8.1.0-alpha.6',
'@storybook/channels': '8.1.0-alpha.6',
'@storybook/cli': '8.1.0-alpha.6',
'@storybook/client-logger': '8.1.0-alpha.6',
'@storybook/codemod': '8.1.0-alpha.6',
'@storybook/components': '8.1.0-alpha.6',
'@storybook/core-common': '8.1.0-alpha.6',
'@storybook/core-events': '8.1.0-alpha.6',
'@storybook/core-server': '8.1.0-alpha.6',
'@storybook/core-webpack': '8.1.0-alpha.6',
'@storybook/csf-plugin': '8.1.0-alpha.6',
'@storybook/csf-tools': '8.1.0-alpha.6',
'@storybook/docs-tools': '8.1.0-alpha.6',
'@storybook/ember': '8.1.0-alpha.6',
'@storybook/html': '8.1.0-alpha.6',
'@storybook/html-vite': '8.1.0-alpha.6',
'@storybook/html-webpack5': '8.1.0-alpha.6',
'@storybook/instrumenter': '8.1.0-alpha.6',
'@storybook/manager': '8.1.0-alpha.6',
'@storybook/manager-api': '8.1.0-alpha.6',
'@storybook/nextjs': '8.1.0-alpha.6',
'@storybook/node-logger': '8.1.0-alpha.6',
'@storybook/preact': '8.1.0-alpha.6',
'@storybook/preact-vite': '8.1.0-alpha.6',
'@storybook/preact-webpack5': '8.1.0-alpha.6',
'@storybook/preset-create-react-app': '8.1.0-alpha.6',
'@storybook/preset-html-webpack': '8.1.0-alpha.6',
'@storybook/preset-preact-webpack': '8.1.0-alpha.6',
'@storybook/preset-react-webpack': '8.1.0-alpha.6',
'@storybook/preset-server-webpack': '8.1.0-alpha.6',
'@storybook/preset-svelte-webpack': '8.1.0-alpha.6',
'@storybook/preset-vue3-webpack': '8.1.0-alpha.6',
'@storybook/preview': '8.1.0-alpha.6',
'@storybook/preview-api': '8.1.0-alpha.6',
'@storybook/react': '8.1.0-alpha.6',
'@storybook/react-dom-shim': '8.1.0-alpha.6',
'@storybook/react-vite': '8.1.0-alpha.6',
'@storybook/react-webpack5': '8.1.0-alpha.6',
'@storybook/router': '8.1.0-alpha.6',
'@storybook/server': '8.1.0-alpha.6',
'@storybook/server-webpack5': '8.1.0-alpha.6',
'@storybook/source-loader': '8.1.0-alpha.6',
'@storybook/svelte': '8.1.0-alpha.6',
'@storybook/svelte-vite': '8.1.0-alpha.6',
'@storybook/svelte-webpack5': '8.1.0-alpha.6',
'@storybook/sveltekit': '8.1.0-alpha.6',
'@storybook/telemetry': '8.1.0-alpha.6',
'@storybook/test': '8.1.0-alpha.6',
'@storybook/theming': '8.1.0-alpha.6',
'@storybook/types': '8.1.0-alpha.6',
'@storybook/vue3': '8.1.0-alpha.6',
'@storybook/vue3-vite': '8.1.0-alpha.6',
'@storybook/vue3-webpack5': '8.1.0-alpha.6',
'@storybook/web-components': '8.1.0-alpha.6',
'@storybook/web-components-vite': '8.1.0-alpha.6',
'@storybook/web-components-webpack5': '8.1.0-alpha.6',
sb: '8.1.0-alpha.6',
storybook: '8.1.0-alpha.6',
};

View File

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

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/core-server",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"
@ -83,7 +83,7 @@
"detect-port": "^1.3.0",
"express": "^4.17.3",
"fs-extra": "^11.1.0",
"globby": "^11.0.2",
"globby": "^14.0.1",
"ip": "^2.0.1",
"lodash": "^4.17.21",
"open": "^8.4.0",

View File

@ -1,7 +1,6 @@
import path from 'path';
import chalk from 'chalk';
import fs from 'fs-extra';
import glob from 'globby';
import slash from 'slash';
import invariant from 'tiny-invariant';
@ -124,7 +123,11 @@ export class StoryIndexGenerator {
const fullGlob = slash(
path.join(this.options.workingDir, specifier.directory, specifier.files)
);
const files = await glob(fullGlob, commonGlobOptions(fullGlob));
// Dynamically import globby because it is a pure ESM module
const { globby } = await import('globby');
const files = await globby(fullGlob, commonGlobOptions(fullGlob));
if (files.length === 0) {
once.warn(

View File

@ -2,7 +2,6 @@ import Watchpack from 'watchpack';
import slash from 'slash';
import fs from 'fs';
import path from 'path';
import glob from 'globby';
import uniq from 'lodash/uniq.js';
import type { NormalizedStoriesSpecifier, Path } from '@storybook/types';
@ -74,8 +73,12 @@ export function watchStorySpecifiers(
// because the directoru could already be within the files part (e.g. './x/foo/bar')
path.basename(specifier.files)
);
// Dynamically import globby because it is a pure ESM module
const { globby } = await import('globby');
// glob only supports forward slashes
const files = await glob(slash(dirGlob), commonGlobOptions(dirGlob));
const files = await globby(slash(dirGlob), commonGlobOptions(dirGlob));
files.forEach((filePath) => {
const fileImportPath = toImportPath(

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/core-webpack",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook framework-agnostic API",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/csf-plugin",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Enrich CSF files via static analysis",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/csf-tools",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Parse and manipulate CSF and Storybook config files",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/docs-tools",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Shared utility functions for frameworks to implement docs",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/instrumenter",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/manager-api",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Core Storybook Manager API & Context",
"keywords": [
"storybook"

View File

@ -1,4 +1,5 @@
import type { API_Notification } from '@storybook/types';
import partition from 'lodash/partition.js';
import type { ModuleFn } from '../lib/types';
export interface SubState {
@ -25,26 +26,24 @@ export interface SubAPI {
export const init: ModuleFn = ({ store }) => {
const api: SubAPI = {
addNotification: (notification) => {
// Get rid of it if already exists
api.clearNotification(notification.id);
const { notifications } = store.getState();
store.setState({ notifications: [...notifications, notification] });
addNotification: (newNotification) => {
store.setState(({ notifications }) => {
const [existing, others] = partition(notifications, (n) => n.id === newNotification.id);
existing.forEach((notification) => {
if (notification.onClear) notification.onClear({ dismissed: false, timeout: false });
});
return { notifications: [...others, newNotification] };
});
},
clearNotification: (id) => {
const { notifications } = store.getState();
const notification = notifications.find((n) => n.id === id);
if (notification) {
store.setState({ notifications: notifications.filter((n) => n.id !== id) });
if (notification.onClear) {
notification.onClear({ dismissed: false });
}
}
clearNotification: (notificationId) => {
store.setState(({ notifications }) => {
const [matching, others] = partition(notifications, (n) => n.id === notificationId);
matching.forEach((notification) => {
if (notification.onClear) notification.onClear({ dismissed: false, timeout: false });
});
return { notifications: others };
});
},
};

View File

@ -2,34 +2,33 @@ import { describe, it, expect, vi } from 'vitest';
import { init as initNotifications } from '../modules/notifications';
describe('notifications API', () => {
it('allows adding notifications', () => {
const store = {
getState: () => ({
notifications: [],
}),
setState: vi.fn(),
};
const store = {
state: { notifications: [] },
getState: () => store.state,
setState: (update) => {
if (typeof update === 'function') {
store.state = update(store.state);
} else {
store.state = update;
}
},
};
it('allows adding notifications', () => {
const { api } = initNotifications({ store });
api.addNotification({ id: '1' });
expect(store.setState).toHaveBeenCalledWith({
expect(store.getState()).toEqual({
notifications: [{ id: '1' }],
});
});
it('allows removing notifications', () => {
const store = {
getState: () => ({
notifications: [{ id: '1' }, { id: '2' }, { id: '3' }],
}),
setState: vi.fn(),
};
store.setState({ notifications: [{ id: '1' }, { id: '2' }, { id: '3' }] });
const { api } = initNotifications({ store });
api.clearNotification('2');
expect(store.setState).toHaveBeenCalledWith({
expect(store.getState()).toEqual({
notifications: [{ id: '1' }, { id: '3' }],
});
});

View File

@ -1 +1 @@
export const version = '8.1.0-alpha.5';
export const version = '8.1.0-alpha.6';

View File

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

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preview-api",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preview",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/react-dom-shim",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/router",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Core Storybook Router",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/source-loader",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Source loader",
"keywords": [
"lib",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/telemetry",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Telemetry logging for crash reports and usage statistics",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/test",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "",
"keywords": [
"storybook"

View File

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

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/types",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Core Storybook TS Types",
"keywords": [
"storybook"

View File

@ -115,9 +115,20 @@ export interface API_SidebarOptions {
interface OnClearOptions {
/**
* True when the user dismissed the notification.
* True when the user manually dismissed the notification.
*/
dismissed: boolean;
/**
* True when the notification timed out after the set duration.
*/
timeout: boolean;
}
interface OnClickOptions {
/**
* Function to dismiss the notification.
*/
onDismiss: () => void;
}
/**
@ -130,14 +141,16 @@ interface DeprecatedIconType {
}
export interface API_Notification {
id: string;
link: string;
content: {
headline: string;
subHeadline?: string | any;
};
duration?: number;
link?: string;
// TODO: Remove DeprecatedIconType in 9.0
icon?: React.ReactNode | DeprecatedIconType;
onClear?: (options: OnClearOptions) => void;
onClick?: (options: OnClickOptions) => void;
}
type API_Versions = Record<string, string>;

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/root",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"private": true,
"description": "Storybook root",
"homepage": "https://storybook.js.org/",
@ -223,7 +223,7 @@
"trash": "^7.0.0",
"ts-dedent": "^2.0.0",
"ts-node": "^10.9.1",
"typescript": "^5.3.2",
"typescript": "^5.4.3",
"util": "^0.12.4",
"vite": "^4.0.0",
"vitest": "^1.2.2",

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preset-create-react-app",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for Create React App preset",
"keywords": [
"storybook"
@ -50,6 +50,7 @@
},
"dependencies": {
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.1",
"@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0",
"@storybook/types": "workspace:*",
"@types/semver": "^7.5.6",
"pnp-webpack-plugin": "^1.7.0",

View File

@ -1,4 +1,5 @@
import type { Options } from '@storybook/types';
import type { PluginOptions as RDTSPluginOptions } from '@storybook/react-docgen-typescript-plugin';
export interface PluginOptions extends Options {

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preset-html-webpack",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for HTML: View HTML snippets in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preset-preact-webpack",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for Preact: Develop Preact Component in isolation.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preset-react-webpack",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for React: Develop React Component in isolation with Hot Reloading",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preset-server-webpack",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for Server: View HTML snippets from a server in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preset-svelte-webpack",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for Svelte: Develop Svelte Component in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preset-vue3-webpack",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook for Vue 3: Develop Vue 3 Components in isolation with Hot Reloading.",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/html",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook HTML renderer",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/preact",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook Preact renderer",
"keywords": [
"storybook"

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/react",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook React renderer",
"keywords": [
"storybook"

View File

@ -3,7 +3,6 @@ import React from 'react';
import { vi, it, expect, afterEach, describe } from 'vitest';
import { render, screen, cleanup } from '@testing-library/react';
import { addons } from '@storybook/preview-api';
//@ts-expect-error our tsconfig.jsn#moduleResolution is set to 'node', which doesn't support this import
import * as addonInteractionsPreview from '@storybook/addon-interactions/preview';
@ -92,6 +91,7 @@ describe('projectAnnotations', () => {
});
it('has spies when addon-interactions annotations are added', async () => {
//@ts-expect-error TODO investigate
const Story = composeStory(stories.WithActionArg, stories.default, addonInteractionsPreview);
expect(vi.mocked(Story.args.someActionArg!).mock).toBeDefined();

View File

@ -1,6 +1,6 @@
{
"name": "@storybook/server",
"version": "8.1.0-alpha.5",
"version": "8.1.0-alpha.6",
"description": "Storybook Server renderer",
"keywords": [
"storybook"

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