From a275999a89ca8bd6a6a3dad0a43225ecac02b573 Mon Sep 17 00:00:00 2001 From: Yadong Zhang Date: Wed, 9 Nov 2022 01:05:37 +0000 Subject: [PATCH 01/64] refactor: inherited 'react-element-to-jsx-string'. --- .../react/src/docs/jsxDecorator.test.tsx | 17 +++++++++++++++++ code/renderers/react/src/docs/jsxDecorator.tsx | 12 +----------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/code/renderers/react/src/docs/jsxDecorator.test.tsx b/code/renderers/react/src/docs/jsxDecorator.test.tsx index cbc163f1384b..0d9613881239 100644 --- a/code/renderers/react/src/docs/jsxDecorator.test.tsx +++ b/code/renderers/react/src/docs/jsxDecorator.test.tsx @@ -155,6 +155,23 @@ describe('renderJsx', () => { `); }); + it('Suspense', () => { + function SuspenseComponent(props: any) { + return ( + +
{props.children}
+
+ ); + } + + expect(renderJsx(createElement(SuspenseComponent, {}, 'I am Suspense'), {})) + .toMatchInlineSnapshot(` + + I am Suspense + + `); + }); + it('should not add default props to string if the prop value has not changed', () => { const Container = ({ className, children }: { className: string; children: string }) => { return
{children}
; diff --git a/code/renderers/react/src/docs/jsxDecorator.tsx b/code/renderers/react/src/docs/jsxDecorator.tsx index 75e9d4616972..94a708c5a4b5 100644 --- a/code/renderers/react/src/docs/jsxDecorator.tsx +++ b/code/renderers/react/src/docs/jsxDecorator.tsx @@ -11,8 +11,6 @@ import { logger } from '@storybook/client-logger'; import type { ReactFramework } from '../types'; -import { isMemo, isForwardRef } from './lib'; - type JSXOptions = Options & { /** How many wrappers to skip when rendering the jsx */ skip?: number; @@ -79,15 +77,7 @@ export const renderJsx = (code: React.ReactElement, options: JSXOptions) => { ? { showFunctions: true, displayName: () => options.displayName } : { // To get exotic component names resolving properly - displayName: (el: any): string => - el.type.displayName || - (el.type === Symbol.for('react.profiler') ? 'Profiler' : null) || - getDocgenSection(el.type, 'displayName') || - (el.type.name !== '_default' ? el.type.name : null) || - (typeof el.type === 'function' ? 'No Display Name' : null) || - (isForwardRef(el.type) ? el.type.render.name : null) || - (isMemo(el.type) ? el.type.type.name : null) || - el.type, + displayName: (el: any): string => getDocgenSection(el.type, 'displayName'), }; const filterDefaults = { From 543bdf4c95d66090cbc6dd41217ac2a5b8575e32 Mon Sep 17 00:00:00 2001 From: Yadong Zhang Date: Wed, 9 Nov 2022 02:02:00 +0000 Subject: [PATCH 02/64] fix: passed undefined value into displayNameDefaults if getDocgenSection returns null. --- code/renderers/react/src/docs/jsxDecorator.tsx | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/code/renderers/react/src/docs/jsxDecorator.tsx b/code/renderers/react/src/docs/jsxDecorator.tsx index 94a708c5a4b5..a1b847ee47e5 100644 --- a/code/renderers/react/src/docs/jsxDecorator.tsx +++ b/code/renderers/react/src/docs/jsxDecorator.tsx @@ -72,13 +72,16 @@ export const renderJsx = (code: React.ReactElement, options: JSXOptions) => { } } - const displayNameDefaults = - typeof options.displayName === 'string' - ? { showFunctions: true, displayName: () => options.displayName } - : { - // To get exotic component names resolving properly - displayName: (el: any): string => getDocgenSection(el.type, 'displayName'), - }; + let displayNameDefaults; + + if (typeof options.displayName === 'string') { + displayNameDefaults = { showFunctions: true, displayName: () => options.displayName }; + } else if (getDocgenSection(code.type, 'displayName')) { + displayNameDefaults = { + // To get exotic component names resolving properly + displayName: (el: any): string => getDocgenSection(el.type, 'displayName'), + }; + } const filterDefaults = { filterProps: (value: any, key: string): boolean => value !== undefined, From 3d25687b1a4f28749ba38bb41f8c09851a478cff Mon Sep 17 00:00:00 2001 From: Yadong Zhang Date: Wed, 9 Nov 2022 03:09:03 +0000 Subject: [PATCH 03/64] fix: used reassigned renderedJSX instead of code var. --- code/renderers/react/src/docs/jsxDecorator.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/renderers/react/src/docs/jsxDecorator.tsx b/code/renderers/react/src/docs/jsxDecorator.tsx index a1b847ee47e5..40ea32c56942 100644 --- a/code/renderers/react/src/docs/jsxDecorator.tsx +++ b/code/renderers/react/src/docs/jsxDecorator.tsx @@ -76,7 +76,7 @@ export const renderJsx = (code: React.ReactElement, options: JSXOptions) => { if (typeof options.displayName === 'string') { displayNameDefaults = { showFunctions: true, displayName: () => options.displayName }; - } else if (getDocgenSection(code.type, 'displayName')) { + } else if (getDocgenSection(renderedJSX.type, 'displayName')) { displayNameDefaults = { // To get exotic component names resolving properly displayName: (el: any): string => getDocgenSection(el.type, 'displayName'), From 9d96efb1068b2f47b60bcef89d9b1c7de14dc5e8 Mon Sep 17 00:00:00 2001 From: Yadong Zhang Date: Wed, 9 Nov 2022 22:54:13 +0000 Subject: [PATCH 04/64] test: log renderedJSX for debug. --- code/renderers/react/src/docs/jsxDecorator.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/renderers/react/src/docs/jsxDecorator.tsx b/code/renderers/react/src/docs/jsxDecorator.tsx index 40ea32c56942..082975cc029e 100644 --- a/code/renderers/react/src/docs/jsxDecorator.tsx +++ b/code/renderers/react/src/docs/jsxDecorator.tsx @@ -72,6 +72,8 @@ export const renderJsx = (code: React.ReactElement, options: JSXOptions) => { } } + console.log(renderedJSX); + let displayNameDefaults; if (typeof options.displayName === 'string') { From 7797cda663b4de5fe284d1af11e2061b7f150ef1 Mon Sep 17 00:00:00 2001 From: Yadong Zhang Date: Thu, 10 Nov 2022 14:11:49 +0800 Subject: [PATCH 05/64] fix: Cannot read properties of undefined (reading '__docgenInfo'). --- code/renderers/react/src/docs/jsxDecorator.tsx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/code/renderers/react/src/docs/jsxDecorator.tsx b/code/renderers/react/src/docs/jsxDecorator.tsx index 082975cc029e..f62efe6390ee 100644 --- a/code/renderers/react/src/docs/jsxDecorator.tsx +++ b/code/renderers/react/src/docs/jsxDecorator.tsx @@ -72,13 +72,20 @@ export const renderJsx = (code: React.ReactElement, options: JSXOptions) => { } } - console.log(renderedJSX); - let displayNameDefaults; if (typeof options.displayName === 'string') { displayNameDefaults = { showFunctions: true, displayName: () => options.displayName }; - } else if (getDocgenSection(renderedJSX.type, 'displayName')) { + /** + * add `renderedJSX?.type`to handle this case: + * + * https://github.com/zhyd1997/storybook/blob/20863a75ba4026d7eba6b288991a2cf091d4dfff/code/renderers/react/template/stories/errors.stories.tsx#L14 + * + * or it show the error message when run `yarn build-storybook --quiet`: + * + * Cannot read properties of undefined (reading '__docgenInfo'). + */ + } else if (renderedJSX?.type && getDocgenSection(renderedJSX.type, 'displayName')) { displayNameDefaults = { // To get exotic component names resolving properly displayName: (el: any): string => getDocgenSection(el.type, 'displayName'), From ef1d14adb00472c13b04df31d8a68a2d721e5c4c Mon Sep 17 00:00:00 2001 From: Yadong Zhang Date: Thu, 10 Nov 2022 14:45:55 +0800 Subject: [PATCH 06/64] feat: added StrictMode support in source code snippet. --- .../react/src/docs/jsxDecorator.test.tsx | 19 ++++++++++++++++++- .../renderers/react/src/docs/jsxDecorator.tsx | 4 ++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/code/renderers/react/src/docs/jsxDecorator.test.tsx b/code/renderers/react/src/docs/jsxDecorator.test.tsx index 0d9613881239..eae7160598d0 100644 --- a/code/renderers/react/src/docs/jsxDecorator.test.tsx +++ b/code/renderers/react/src/docs/jsxDecorator.test.tsx @@ -1,6 +1,6 @@ /* eslint-disable jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */ import type { FC, PropsWithChildren } from 'react'; -import React, { createElement, Profiler } from 'react'; +import React, { StrictMode, createElement, Profiler } from 'react'; import PropTypes from 'prop-types'; import { addons, useEffect } from '@storybook/addons'; import { SNIPPET_RENDERED } from '@storybook/docs-tools'; @@ -155,6 +155,23 @@ describe('renderJsx', () => { `); }); + it('StrictMode', () => { + function StrictModeComponent(props: any) { + return ( + +
{props.children}
+
+ ); + } + + expect(renderJsx(createElement(StrictModeComponent, {}, 'I am StrictMode'))) + .toMatchInlineSnapshot(` + + I am StrictMode + + `); + }); + it('Suspense', () => { function SuspenseComponent(props: any) { return ( diff --git a/code/renderers/react/src/docs/jsxDecorator.tsx b/code/renderers/react/src/docs/jsxDecorator.tsx index f62efe6390ee..0073bef0c67d 100644 --- a/code/renderers/react/src/docs/jsxDecorator.tsx +++ b/code/renderers/react/src/docs/jsxDecorator.tsx @@ -48,7 +48,7 @@ export const renderJsx = (code: React.ReactElement, options: JSXOptions) => { const Type = renderedJSX.type; // @ts-expect-error (Converted from ts-ignore) - for (let i = 0; i < options.skip; i += 1) { + for (let i = 0; i < options?.skip; i += 1) { if (typeof renderedJSX === 'undefined') { logger.warn('Cannot skip undefined element'); return null; @@ -74,7 +74,7 @@ export const renderJsx = (code: React.ReactElement, options: JSXOptions) => { let displayNameDefaults; - if (typeof options.displayName === 'string') { + if (typeof options?.displayName === 'string') { displayNameDefaults = { showFunctions: true, displayName: () => options.displayName }; /** * add `renderedJSX?.type`to handle this case: From 4fbcd93e3483c51e84aaa6b9912a9d420a138834 Mon Sep 17 00:00:00 2001 From: Yadong Zhang Date: Tue, 15 Nov 2022 08:54:19 +0800 Subject: [PATCH 07/64] fix: added missing arguments. --- code/renderers/react/src/docs/jsxDecorator.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/renderers/react/src/docs/jsxDecorator.test.tsx b/code/renderers/react/src/docs/jsxDecorator.test.tsx index eae7160598d0..e38b41cfdcce 100644 --- a/code/renderers/react/src/docs/jsxDecorator.test.tsx +++ b/code/renderers/react/src/docs/jsxDecorator.test.tsx @@ -164,7 +164,7 @@ describe('renderJsx', () => { ); } - expect(renderJsx(createElement(StrictModeComponent, {}, 'I am StrictMode'))) + expect(renderJsx(createElement(StrictModeComponent, {}, 'I am StrictMode'), {})) .toMatchInlineSnapshot(` I am StrictMode From 88c63b7af1a7b1dccd85bc651e365beeba2cff08 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 20 Oct 2023 13:09:07 +0200 Subject: [PATCH 08/64] change the includes list of angular projects to reduce the warnings from ts-loader --- .../angular/application/template-csf/.storybook/tsconfig.json | 2 +- .../angular/library/template-csf/.storybook/tsconfig.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.json b/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.json index eb06864100d8..84d7e7424a2c 100644 --- a/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.json +++ b/code/lib/cli/templates/angular/application/template-csf/.storybook/tsconfig.json @@ -6,6 +6,6 @@ "resolveJsonModule": true }, "exclude": ["../src/test.ts", "../src/**/*.spec.ts"], - "include": ["../src/**/*", "./preview.ts"], + "include": ["../src/**/*.stories.*", "./preview.ts"], "files": ["./typings.d.ts"] } diff --git a/code/lib/cli/templates/angular/library/template-csf/.storybook/tsconfig.json b/code/lib/cli/templates/angular/library/template-csf/.storybook/tsconfig.json index 59daf738abdb..957791d5bf3f 100644 --- a/code/lib/cli/templates/angular/library/template-csf/.storybook/tsconfig.json +++ b/code/lib/cli/templates/angular/library/template-csf/.storybook/tsconfig.json @@ -6,6 +6,6 @@ "resolveJsonModule": true }, "exclude": ["../src/test.ts", "../src/**/*.spec.ts"], - "include": ["../src/**/*", "./preview.ts"], + "include": ["../src/**/*.stories.*", "./preview.ts"], "files": ["./typings.d.ts"] } From 376029fb1bf53d93a318457ae010806d479dc17f Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Thu, 16 Nov 2023 23:04:26 +0100 Subject: [PATCH 09/64] spike removing react as a peer dependency from addon-docs --- code/addons/docs/package.json | 8 +- code/addons/docs/src/DocsRenderer.tsx | 1 + .../addons/docs/src/ensure-react-peer-deps.ts | 40 --------- code/addons/docs/src/preset.ts | 86 ++++++++++++++++++- code/addons/essentials/package.json | 4 - .../builders/builder-vite/src/optimizeDeps.ts | 8 +- .../core-server/src/presets/common-preset.ts | 21 ++++- code/lib/react-dom-shim/src/preset.ts | 41 ++++++--- code/renderers/react/src/preset.ts | 27 +++++- code/yarn.lock | 37 ++++++-- 10 files changed, 195 insertions(+), 78 deletions(-) delete mode 100644 code/addons/docs/src/ensure-react-peer-deps.ts diff --git a/code/addons/docs/package.json b/code/addons/docs/package.json index c6b01de32890..e58ca76c38af 100644 --- a/code/addons/docs/package.json +++ b/code/addons/docs/package.json @@ -114,21 +114,17 @@ "@storybook/theming": "workspace:*", "@storybook/types": "workspace:*", "fs-extra": "^11.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", "ts-dedent": "^2.0.0" }, "devDependencies": { "@rollup/pluginutils": "^5.0.2", - "react": "^16.14.0", - "react-dom": "^16.8.0", "typescript": "~4.9.3", "vite": "^4.0.4" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, "publishConfig": { "access": "public" }, diff --git a/code/addons/docs/src/DocsRenderer.tsx b/code/addons/docs/src/DocsRenderer.tsx index 42d8d279b749..c293e09322db 100644 --- a/code/addons/docs/src/DocsRenderer.tsx +++ b/code/addons/docs/src/DocsRenderer.tsx @@ -12,6 +12,7 @@ export const defaultComponents: Record = { class ErrorBoundary extends Component<{ showException: (err: Error) => void; + children: React.ReactNode; }> { state = { hasError: false }; diff --git a/code/addons/docs/src/ensure-react-peer-deps.ts b/code/addons/docs/src/ensure-react-peer-deps.ts deleted file mode 100644 index 37520dff343e..000000000000 --- a/code/addons/docs/src/ensure-react-peer-deps.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { logger } from '@storybook/node-logger'; -import dedent from 'ts-dedent'; - -export function ensureReactPeerDeps() { - try { - require.resolve('react'); - require.resolve('react-dom'); - } catch (e) { - logger.error(dedent` - Starting in 7.0, react and react-dom are now required peer dependencies of @storybook/addon-docs. - https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#react-peer-dependencies-required - - You can continue to use Storybook without addon-docs, or you can install react and react-dom in your project: - - You can use the upgrade command in Storybook's CLI to automatically install the required - peer dependencies for you. - - If you want to upgrade to the latest prerelease version, please run: - - $ npx storybook@next upgrade --prerelease - - Otherwise, please run: - - $ npx storybook upgrade - - If you do not want to use the upgrade commands, - please install react and react-dom in your project manually. - - npm: - $ npm add react react-dom --dev - - yarn: - $ yarn add react react-dom --dev - - pnpm: - $ pnpm add react react-dom --dev - `); - process.exit(1); - } -} diff --git a/code/addons/docs/src/preset.ts b/code/addons/docs/src/preset.ts index c716775bdfa9..53f69e42e7fd 100644 --- a/code/addons/docs/src/preset.ts +++ b/code/addons/docs/src/preset.ts @@ -10,7 +10,26 @@ import type { JSXOptions, CompileOptions } from '@storybook/mdx2-csf'; import { global } from '@storybook/global'; import { loadCsf } from '@storybook/csf-tools'; import { logger } from '@storybook/node-logger'; -import { ensureReactPeerDeps } from './ensure-react-peer-deps'; + +/** + * Get the resolvedReact preset, which points either to + * the user's react dependencies or the react dependencies shipped with addon-docs + * if the user has not installed react explicitly. + */ +const getResolvedReact = async (options: Options) => { + const resolvedReact = (await options.presets.apply('resolvedReact', {})) as any; + // resolvedReact should always be set by the time we get here, but just in case, we'll default to addon-docs's react dependencies + return { + react: resolvedReact.react ?? join(dirname(require.resolve('react/package.json'))), + reactDom: resolvedReact.reactDom ?? join(dirname(require.resolve('react-dom/package.json'))), + // In Webpack, symlinked MDX files will cause @mdx-js/react to not be resolvable if it is not hoisted + // This happens for the SB monorepo's template stories when a sandbox has a different react version than + // addon-docs, causing addon-docs's dependencies not to be hoisted. + // This might also affect regular users who have a similar setup. + // Explicitly alias @mdx-js/react to avoid this issue. + mdx: resolvedReact.mdx ?? join(dirname(require.resolve('@mdx-js/react/package.json'))), + }; +}; async function webpack( webpackConfig: any = {}, @@ -90,6 +109,35 @@ async function webpack( ? require.resolve('@storybook/mdx1-csf/loader') : require.resolve('@storybook/mdx2-csf/loader'); + // Use the resolvedReact preset to alias react and react-dom to either the users version or the version shipped with addon-docs + const { react, reactDom, mdx } = await getResolvedReact(options); + + let alias; + if (Array.isArray(webpackConfig.resolve?.alias)) { + alias = [...webpackConfig.resolve?.alias]; + alias.push( + { + name: 'react', + alias: react, + }, + { + name: 'react-dom', + alias: reactDom, + }, + { + name: '@mdx-js/react', + alias: mdx, + } + ); + } else { + alias = { + ...webpackConfig.resolve?.alias, + react, + 'react-dom': reactDom, + '@mdx-js/react': mdx, + }; + } + const result = { ...webpackConfig, plugins: [ @@ -99,7 +147,10 @@ async function webpack( ? [(await import('@storybook/csf-plugin')).webpack(csfPluginOptions)] : []), ], - + resolve: { + ...webpackConfig.resolve, + alias, + }, module: { ...module, rules: [ @@ -179,7 +230,23 @@ export const viteFinal = async (config: any, options: Options) => { const { plugins = [] } = config; const { mdxPlugin } = await import('./plugins/mdx-plugin'); - plugins.push(mdxPlugin(options)); + // Use the resolvedReact preset to alias react and react-dom to either the users version or the version shipped with addon-docs + const { react, reactDom } = await getResolvedReact(options); + + const reactAliasPlugin = { + name: 'storybook:react-alias', + config: () => ({ + resolve: { + // TODO: does this work if pre-existing alias is an array? + alias: { + react, + 'react-dom': reactDom, + }, + }, + }), + }; + + plugins.push(mdxPlugin(options), reactAliasPlugin); return config; }; @@ -192,7 +259,18 @@ const webpackX = webpack as any; const indexersX = indexers as any; const docsX = docs as any; -ensureReactPeerDeps(); +/** + * If the user has not installed react explicitly in their project, + * the resolvedReact preset will not be set. + * We then set it here in addon-docs to use addon-docs's react version that always exists. + * This is just a fallback that never overrides the existing preset, + * but ensures that there is always a resolved react. + */ +export const resolvedReact = async (existing: any) => ({ + react: existing?.react ?? join(dirname(require.resolve('react/package.json'))), + reactDom: existing?.reactDom ?? join(dirname(require.resolve('react-dom/package.json'))), + mdx: existing?.mdx ?? join(dirname(require.resolve('@mdx-js/react/package.json'))), +}); const optimizeViteDeps = [ '@mdx-js/react', diff --git a/code/addons/essentials/package.json b/code/addons/essentials/package.json index 726026d690bf..5af9cb397970 100644 --- a/code/addons/essentials/package.json +++ b/code/addons/essentials/package.json @@ -79,10 +79,6 @@ "@storybook/vue": "workspace:*", "typescript": "^4.9.3" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, "publishConfig": { "access": "public" }, diff --git a/code/builders/builder-vite/src/optimizeDeps.ts b/code/builders/builder-vite/src/optimizeDeps.ts index 1972fde8e8e7..725d625b1ecd 100644 --- a/code/builders/builder-vite/src/optimizeDeps.ts +++ b/code/builders/builder-vite/src/optimizeDeps.ts @@ -75,13 +75,13 @@ const INCLUDE_CANDIDATES = [ 'prettier/parser-typescript', 'prop-types', 'qs', - 'react-dom', - 'react-dom/client', + // 'react-dom', // TODO: de we really need to disable these? + // 'react-dom/client', 'react-fast-compare', 'react-is', 'react-textarea-autosize', - 'react', - 'react/jsx-runtime', + // 'react', + // 'react/jsx-runtime', 'refractor/core', 'refractor/lang/bash.js', 'refractor/lang/css.js', diff --git a/code/lib/core-server/src/presets/common-preset.ts b/code/lib/core-server/src/presets/common-preset.ts index 6854a8f48682..159264e4d342 100644 --- a/code/lib/core-server/src/presets/common-preset.ts +++ b/code/lib/core-server/src/presets/common-preset.ts @@ -17,7 +17,7 @@ import type { StorybookConfig, } from '@storybook/types'; import { printConfig, readConfig, readCsf } from '@storybook/csf-tools'; -import { join, isAbsolute } from 'path'; +import { join, dirname, isAbsolute } from 'path'; import { dedent } from 'ts-dedent'; import fetch from 'node-fetch'; import type { Channel } from '@storybook/channels'; @@ -348,3 +348,22 @@ export const experimental_serverChannel = async ( return channel; }; + +/** + * Try to resolve react and react-dom from the root node_modules of the project + * addon-docs uses this to alias react and react-dom to the project's version when possible + * If the user doesn't have an explicit dependency on react this will return the existing values + * Which will be the versions shipped with addon-docs + */ +export const resolvedReact = async (existing: any) => { + try { + return { + ...existing, + react: join(dirname(require.resolve('react/package.json'))), + reactDom: join(dirname(require.resolve('react-dom/package.json'))), + mdx: join(dirname(require.resolve('@mdx-js/react/package.json'))), + }; + } catch (e) { + return existing; + } +}; diff --git a/code/lib/react-dom-shim/src/preset.ts b/code/lib/react-dom-shim/src/preset.ts index cfd44f567649..137b2411b5e2 100644 --- a/code/lib/react-dom-shim/src/preset.ts +++ b/code/lib/react-dom-shim/src/preset.ts @@ -1,14 +1,33 @@ import type { Options } from '@storybook/types'; -// @ts-expect-error react-dom doesn't have this in export maps in v16, messing up TS -import { version } from 'react-dom/package.json'; +import { join, dirname } from 'path'; +import { readFile } from 'fs/promises'; -export const webpackFinal = async (config: any, options: Options) => { +/** + * Get react-dom version from the resolvedReact preset, which points to either + * a root react-dom dependency or the react-dom dependency shipped with addon-docs + */ +const getIsReactVersion18 = async (options: Options) => { const { legacyRootApi } = (await options.presets.apply<{ legacyRootApi?: boolean } | null>('frameworkOptions')) || {}; - const isReact18 = version.startsWith('18') || version.startsWith('0.0.0'); - const useReact17 = legacyRootApi ?? !isReact18; - if (useReact17) return config; + if (legacyRootApi) { + return false; + } + + const resolvedReact = await options.presets.apply<{ reactDom?: string }>('resolvedReact', {}); + const reactDom = + resolvedReact.reactDom || join(dirname(require.resolve('react-dom/package.json'))); + + const { version } = JSON.parse(await readFile(join(reactDom, 'package.json'), 'utf-8')); + + return version.startsWith('18') || version.startsWith('0.0.0'); +}; + +export const webpackFinal = async (config: any, options: Options) => { + const isReactVersion18 = await getIsReactVersion18(options); + if (!isReactVersion18) { + return config; + } return { ...config, @@ -23,12 +42,10 @@ export const webpackFinal = async (config: any, options: Options) => { }; export const viteFinal = async (config: any, options: Options) => { - const { legacyRootApi } = - (await options.presets.apply<{ legacyRootApi?: boolean } | null>('frameworkOptions')) || {}; - - const isReact18 = version.startsWith('18') || version.startsWith('0.0.0'); - const useReact17 = legacyRootApi || !isReact18; - if (useReact17) return config; + const isReactVersion18 = await getIsReactVersion18(options); + if (!isReactVersion18) { + return config; + } const alias = Array.isArray(config.resolve?.alias) ? config.resolve.alias.concat({ diff --git a/code/renderers/react/src/preset.ts b/code/renderers/react/src/preset.ts index 6da62d30bbf2..768754a6e172 100644 --- a/code/renderers/react/src/preset.ts +++ b/code/renderers/react/src/preset.ts @@ -1,6 +1,6 @@ -import type { StorybookConfig } from '@storybook/types'; +import type { Options, StorybookConfig } from '@storybook/types'; -import { join } from 'path'; +import { dirname, join } from 'path'; export const addons: StorybookConfig['addons'] = [ require.resolve('@storybook/react-dom-shim/dist/preset'), @@ -16,3 +16,26 @@ export const previewAnnotations: StorybookConfig['previewAnnotations'] = async ( .concat([join(__dirname, 'entry-preview.mjs')]) .concat(docsEnabled ? [join(__dirname, 'entry-preview-docs.mjs')] : []); }; + +/** + * Try to resolve react and react-dom from the root node_modules of the project + * addon-docs uses this to alias react and react-dom to the project's version when possible + * If the user doesn't have an explicit dependency on react this will return the existing values + * Which will be the versions shipped with addon-docs + * + * We do the exact same thing in the common preset, but that will fail in Yarn PnP because + * @storybook/core-server doesn't have a peer dependency on react + * This will make @storybook/react projects work in Yarn PnP + */ +export const resolvedReact = async (existing: any) => { + try { + return { + ...existing, + react: join(dirname(require.resolve('react/package.json'))), + reactDom: join(dirname(require.resolve('react-dom/package.json'))), + mdx: join(dirname(require.resolve('@mdx-js/react/package.json'))), + }; + } catch (e) { + return existing; + } +}; diff --git a/code/yarn.lock b/code/yarn.lock index ba6d74b8127a..a6b0e34f67bb 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -5470,16 +5470,13 @@ __metadata: "@storybook/theming": "workspace:*" "@storybook/types": "workspace:*" fs-extra: "npm:^11.1.0" - react: "npm:^16.14.0" - react-dom: "npm:^16.8.0" + react: "npm:>16.14.0" + react-dom: "npm:>16.8.0" remark-external-links: "npm:^8.0.0" remark-slug: "npm:^6.0.0" ts-dedent: "npm:^2.0.0" typescript: "npm:~4.9.3" vite: "npm:^4.0.4" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 languageName: unknown linkType: soft @@ -25331,6 +25328,18 @@ __metadata: languageName: node linkType: hard +"react-dom@npm:>16.8.0": + version: 18.2.0 + resolution: "react-dom@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + scheduler: "npm:^0.23.0" + peerDependencies: + react: ^18.2.0 + checksum: 66dfc5f93e13d0674e78ef41f92ed21dfb80f9c4ac4ac25a4b51046d41d4d2186abc915b897f69d3d0ebbffe6184e7c5876f2af26bfa956f179225d921be713a + languageName: node + linkType: hard + "react-dom@npm:^16.8.0": version: 16.14.0 resolution: "react-dom@npm:16.14.0" @@ -25672,6 +25681,15 @@ __metadata: languageName: node linkType: hard +"react@npm:>16.14.0": + version: 18.2.0 + resolution: "react@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8 + languageName: node + linkType: hard + "react@npm:^16.14.0, react@npm:^16.8.0": version: 16.14.0 resolution: "react@npm:16.14.0" @@ -27000,6 +27018,15 @@ __metadata: languageName: node linkType: hard +"scheduler@npm:^0.23.0": + version: 0.23.0 + resolution: "scheduler@npm:0.23.0" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: b777f7ca0115e6d93e126ac490dbd82642d14983b3079f58f35519d992fa46260be7d6e6cede433a92db70306310c6f5f06e144f0e40c484199e09c1f7be53dd + languageName: node + linkType: hard + "schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": version: 3.3.0 resolution: "schema-utils@npm:3.3.0" From 7f6c1cc91a525116b866ab9670f0be2610d21428 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Fri, 17 Nov 2023 09:09:33 +0100 Subject: [PATCH 10/64] update lockfile --- code/yarn.lock | 49 +++++++++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/code/yarn.lock b/code/yarn.lock index a6b0e34f67bb..c5d661e80137 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -5470,8 +5470,8 @@ __metadata: "@storybook/theming": "workspace:*" "@storybook/types": "workspace:*" fs-extra: "npm:^11.1.0" - react: "npm:>16.14.0" - react-dom: "npm:>16.8.0" + react: "npm:^18.2.0" + react-dom: "npm:^18.2.0" remark-external-links: "npm:^8.0.0" remark-slug: "npm:^6.0.0" ts-dedent: "npm:^2.0.0" @@ -5500,9 +5500,6 @@ __metadata: "@storybook/vue": "workspace:*" ts-dedent: "npm:^2.0.0" typescript: "npm:^4.9.3" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 languageName: unknown linkType: soft @@ -25328,18 +25325,6 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:>16.8.0": - version: 18.2.0 - resolution: "react-dom@npm:18.2.0" - dependencies: - loose-envify: "npm:^1.1.0" - scheduler: "npm:^0.23.0" - peerDependencies: - react: ^18.2.0 - checksum: 66dfc5f93e13d0674e78ef41f92ed21dfb80f9c4ac4ac25a4b51046d41d4d2186abc915b897f69d3d0ebbffe6184e7c5876f2af26bfa956f179225d921be713a - languageName: node - linkType: hard - "react-dom@npm:^16.8.0": version: 16.14.0 resolution: "react-dom@npm:16.14.0" @@ -25354,6 +25339,18 @@ __metadata: languageName: node linkType: hard +"react-dom@npm:^18.2.0": + version: 18.2.0 + resolution: "react-dom@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + scheduler: "npm:^0.23.0" + peerDependencies: + react: ^18.2.0 + checksum: 66dfc5f93e13d0674e78ef41f92ed21dfb80f9c4ac4ac25a4b51046d41d4d2186abc915b897f69d3d0ebbffe6184e7c5876f2af26bfa956f179225d921be713a + languageName: node + linkType: hard + "react-draggable@npm:^4.4.3": version: 4.4.6 resolution: "react-draggable@npm:4.4.6" @@ -25681,15 +25678,6 @@ __metadata: languageName: node linkType: hard -"react@npm:>16.14.0": - version: 18.2.0 - resolution: "react@npm:18.2.0" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8 - languageName: node - linkType: hard - "react@npm:^16.14.0, react@npm:^16.8.0": version: 16.14.0 resolution: "react@npm:16.14.0" @@ -25701,6 +25689,15 @@ __metadata: languageName: node linkType: hard +"react@npm:^18.2.0": + version: 18.2.0 + resolution: "react@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8 + languageName: node + linkType: hard + "read-package-json-fast@npm:^3.0.0": version: 3.0.2 resolution: "read-package-json-fast@npm:3.0.2" From c85a698b28a49b0af7bb15723db54f6a59a86b74 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Fri, 17 Nov 2023 11:05:58 +0100 Subject: [PATCH 11/64] remove unused join --- code/addons/docs/src/preset.ts | 12 ++++++------ code/lib/core-server/src/presets/common-preset.ts | 6 +++--- code/lib/react-dom-shim/src/preset.ts | 3 +-- code/renderers/react/src/preset.ts | 6 +++--- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/code/addons/docs/src/preset.ts b/code/addons/docs/src/preset.ts index 53f69e42e7fd..8abc100fd36b 100644 --- a/code/addons/docs/src/preset.ts +++ b/code/addons/docs/src/preset.ts @@ -20,14 +20,14 @@ const getResolvedReact = async (options: Options) => { const resolvedReact = (await options.presets.apply('resolvedReact', {})) as any; // resolvedReact should always be set by the time we get here, but just in case, we'll default to addon-docs's react dependencies return { - react: resolvedReact.react ?? join(dirname(require.resolve('react/package.json'))), - reactDom: resolvedReact.reactDom ?? join(dirname(require.resolve('react-dom/package.json'))), + react: resolvedReact.react ?? dirname(require.resolve('react/package.json')), + reactDom: resolvedReact.reactDom ?? dirname(require.resolve('react-dom/package.json')), // In Webpack, symlinked MDX files will cause @mdx-js/react to not be resolvable if it is not hoisted // This happens for the SB monorepo's template stories when a sandbox has a different react version than // addon-docs, causing addon-docs's dependencies not to be hoisted. // This might also affect regular users who have a similar setup. // Explicitly alias @mdx-js/react to avoid this issue. - mdx: resolvedReact.mdx ?? join(dirname(require.resolve('@mdx-js/react/package.json'))), + mdx: resolvedReact.mdx ?? dirname(require.resolve('@mdx-js/react/package.json')), }; }; @@ -267,9 +267,9 @@ const docsX = docs as any; * but ensures that there is always a resolved react. */ export const resolvedReact = async (existing: any) => ({ - react: existing?.react ?? join(dirname(require.resolve('react/package.json'))), - reactDom: existing?.reactDom ?? join(dirname(require.resolve('react-dom/package.json'))), - mdx: existing?.mdx ?? join(dirname(require.resolve('@mdx-js/react/package.json'))), + react: existing?.react ?? dirname(require.resolve('react/package.json')), + reactDom: existing?.reactDom ?? dirname(require.resolve('react-dom/package.json')), + mdx: existing?.mdx ?? dirname(require.resolve('@mdx-js/react/package.json')), }); const optimizeViteDeps = [ diff --git a/code/lib/core-server/src/presets/common-preset.ts b/code/lib/core-server/src/presets/common-preset.ts index 453c5c574c55..0630f9602df3 100644 --- a/code/lib/core-server/src/presets/common-preset.ts +++ b/code/lib/core-server/src/presets/common-preset.ts @@ -360,9 +360,9 @@ export const resolvedReact = async (existing: any) => { try { return { ...existing, - react: join(dirname(require.resolve('react/package.json'))), - reactDom: join(dirname(require.resolve('react-dom/package.json'))), - mdx: join(dirname(require.resolve('@mdx-js/react/package.json'))), + react: dirname(require.resolve('react/package.json')), + reactDom: dirname(require.resolve('react-dom/package.json')), + mdx: dirname(require.resolve('@mdx-js/react/package.json')), }; } catch (e) { return existing; diff --git a/code/lib/react-dom-shim/src/preset.ts b/code/lib/react-dom-shim/src/preset.ts index 137b2411b5e2..9c0c39b7111b 100644 --- a/code/lib/react-dom-shim/src/preset.ts +++ b/code/lib/react-dom-shim/src/preset.ts @@ -15,8 +15,7 @@ const getIsReactVersion18 = async (options: Options) => { } const resolvedReact = await options.presets.apply<{ reactDom?: string }>('resolvedReact', {}); - const reactDom = - resolvedReact.reactDom || join(dirname(require.resolve('react-dom/package.json'))); + const reactDom = resolvedReact.reactDom || dirname(require.resolve('react-dom/package.json')); const { version } = JSON.parse(await readFile(join(reactDom, 'package.json'), 'utf-8')); diff --git a/code/renderers/react/src/preset.ts b/code/renderers/react/src/preset.ts index 768754a6e172..5616fa593392 100644 --- a/code/renderers/react/src/preset.ts +++ b/code/renderers/react/src/preset.ts @@ -31,9 +31,9 @@ export const resolvedReact = async (existing: any) => { try { return { ...existing, - react: join(dirname(require.resolve('react/package.json'))), - reactDom: join(dirname(require.resolve('react-dom/package.json'))), - mdx: join(dirname(require.resolve('@mdx-js/react/package.json'))), + react: dirname(require.resolve('react/package.json')), + reactDom: dirname(require.resolve('react-dom/package.json')), + mdx: dirname(require.resolve('@mdx-js/react/package.json')), }; } catch (e) { return existing; From 012e909252e52386e6fd322936d369cfc90a60ac Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Fri, 17 Nov 2023 13:14:49 +0100 Subject: [PATCH 12/64] fix --- code/renderers/react/src/preset.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/renderers/react/src/preset.ts b/code/renderers/react/src/preset.ts index 5616fa593392..895d7c995be1 100644 --- a/code/renderers/react/src/preset.ts +++ b/code/renderers/react/src/preset.ts @@ -1,4 +1,4 @@ -import type { Options, StorybookConfig } from '@storybook/types'; +import type { StorybookConfig } from '@storybook/types'; import { dirname, join } from 'path'; From a27c2c7beca0b2c7d9c9ea6c0ea6d3722172091f Mon Sep 17 00:00:00 2001 From: Bodo Graumann Date: Tue, 31 Oct 2023 12:39:33 +0100 Subject: [PATCH 13/64] Explain how to clean local files for contributers --- CONTRIBUTING.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 78993afd8386..8370206291d9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,6 +25,13 @@ If you run `yarn start` and encounter the following error, try rerunning `yarn s ```sh > NX ENOENT: no such file or directory, open 'storybook/code/node_modules/nx/package.json' ``` +If you are a Storybook contributor and still experience issues, it is recommended that you verify your local Storybook instance for any unintentional local changes and left-overs. To do this, you can use the following command: + +```sh +git clean -dx --dry-run +``` + +By executing this command, you will be able to see which untracked or ignored files and directories will be removed from your working directory if you run it with the `--force` flag. Before running the command with the `--force` flag, please commit any local changes that you want to keep. Otherwise they will be lost. ## Forked repos From c863342e7ff6feb5ec68b68f6ca7f54e51836ae4 Mon Sep 17 00:00:00 2001 From: Mark berry Date: Fri, 24 Nov 2023 02:53:03 -0600 Subject: [PATCH 14/64] Add random attribute to bootstrapped selector --- code/frameworks/angular/package.json | 1 + .../client/angular-beta/AbstractRenderer.ts | 23 ++++++++-- .../angular-beta/RendererFactory.test.ts | 46 ++++++++++++++++++- code/yarn.lock | 1 + 4 files changed, 66 insertions(+), 5 deletions(-) diff --git a/code/frameworks/angular/package.json b/code/frameworks/angular/package.json index e2eaf1b7d8ab..6f34efa558e6 100644 --- a/code/frameworks/angular/package.json +++ b/code/frameworks/angular/package.json @@ -56,6 +56,7 @@ "@types/semver": "^7.3.4", "@types/webpack-env": "^1.18.0", "find-up": "^5.0.0", + "nanoid": "^4.0.2", "read-pkg-up": "^7.0.1", "semver": "^7.3.7", "telejson": "^7.2.0", diff --git a/code/frameworks/angular/src/client/angular-beta/AbstractRenderer.ts b/code/frameworks/angular/src/client/angular-beta/AbstractRenderer.ts index f83fd00dde84..43df332f82ab 100644 --- a/code/frameworks/angular/src/client/angular-beta/AbstractRenderer.ts +++ b/code/frameworks/angular/src/client/angular-beta/AbstractRenderer.ts @@ -3,7 +3,8 @@ import { bootstrapApplication } from '@angular/platform-browser'; import { BehaviorSubject, Subject } from 'rxjs'; import { stringify } from 'telejson'; -import { ICollection, Parameters, StoryFnAngularReturnType } from '../types'; +import { nanoid } from 'nanoid'; +import { ICollection, StoryFnAngularReturnType } from '../types'; import { getApplication } from './StorybookModule'; import { storyPropsProvider } from './StorybookProvider'; import { componentNgModules } from './StorybookWrapperComponent'; @@ -16,6 +17,8 @@ type StoryRenderInfo = { const applicationRefs = new Map(); +export const STORY_UID_ATTRIBUTE = 'data-sb-story-uid'; + export abstract class AbstractRenderer { /** * Wait and destroy the platform @@ -122,10 +125,15 @@ export abstract class AbstractRenderer { const analyzedMetadata = new PropertyExtractor(storyFnAngular.moduleMetadata, component); + const componentSelector = + targetDOMNode.getAttribute(STORY_UID_ATTRIBUTE) !== null + ? `${targetSelector}[${targetDOMNode.getAttribute(STORY_UID_ATTRIBUTE)}]` + : targetSelector; + const application = getApplication({ storyFnAngular, component, - targetSelector, + targetSelector: componentSelector, analyzedMetadata, }); @@ -161,11 +169,18 @@ export abstract class AbstractRenderer { return storyIdIsInvalidHtmlTagName ? `sb-${id.replace(invalidHtmlTag, '')}-component` : id; } + /** + * Adds DOM element that angular will use as bootstrap component. + */ protected initAngularRootElement(targetDOMNode: HTMLElement, targetSelector: string) { - // Adds DOM element that angular will use as bootstrap component // eslint-disable-next-line no-param-reassign targetDOMNode.innerHTML = ''; - targetDOMNode.appendChild(document.createElement(targetSelector)); + + targetDOMNode.setAttribute(STORY_UID_ATTRIBUTE, `${targetDOMNode.id}-${nanoid(10)}`); + const element = document.createElement(targetSelector); + element.toggleAttribute(targetDOMNode.getAttribute(STORY_UID_ATTRIBUTE), true); + + targetDOMNode.appendChild(element); } private fullRendererRequired({ diff --git a/code/frameworks/angular/src/client/angular-beta/RendererFactory.test.ts b/code/frameworks/angular/src/client/angular-beta/RendererFactory.test.ts index 0dc51d15eb6c..8a543b3df201 100644 --- a/code/frameworks/angular/src/client/angular-beta/RendererFactory.test.ts +++ b/code/frameworks/angular/src/client/angular-beta/RendererFactory.test.ts @@ -13,11 +13,13 @@ describe('RendererFactory', () => { let rendererFactory: RendererFactory; let rootTargetDOMNode: HTMLElement; let rootDocstargetDOMNode: HTMLElement; + let storyInDocstargetDOMNode: HTMLElement; beforeEach(async () => { rendererFactory = new RendererFactory(); document.body.innerHTML = - '
'; + '
' + + '
'; rootTargetDOMNode = global.document.getElementById('storybook-root'); rootDocstargetDOMNode = global.document.getElementById('root-docs'); (platformBrowserDynamic as any).mockImplementation(platformBrowserDynamicTesting); @@ -180,5 +182,47 @@ describe('RendererFactory', () => { const render = await rendererFactory.getRendererInstance(rootDocstargetDOMNode); expect(render).toBeInstanceOf(DocsRenderer); }); + + describe('when multiple story for the same component', () => { + it('should render both stories', async () => { + @Component({ selector: 'foo', template: '🦊' }) + class FooComponent {} + + const render = await rendererFactory.getRendererInstance( + global.document.getElementById('storybook-docs') + ); + + const targetDOMNode1 = global.document.createElement('div'); + targetDOMNode1.id = 'story-1'; + global.document.getElementById('storybook-docs').appendChild(targetDOMNode1); + await render?.render({ + storyFnAngular: { + props: {}, + }, + forced: false, + component: FooComponent, + targetDOMNode: targetDOMNode1, + }); + + const targetDOMNode2 = global.document.createElement('div'); + targetDOMNode2.id = 'story-1'; + global.document.getElementById('storybook-docs').appendChild(targetDOMNode2); + await render?.render({ + storyFnAngular: { + props: {}, + }, + forced: false, + component: FooComponent, + targetDOMNode: targetDOMNode2, + }); + + expect(global.document.querySelectorAll('#story-1 > story-1')[0].innerHTML).toBe( + '🦊' + ); + expect(global.document.querySelectorAll('#story-1 > story-1')[1].innerHTML).toBe( + '🦊' + ); + }); + }); }); }); diff --git a/code/yarn.lock b/code/yarn.lock index 88ea95a5e552..656763a90076 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -5951,6 +5951,7 @@ __metadata: jest: "npm:^29.7.0" jest-preset-angular: "npm:^13.0.1" jest-specific-snapshot: "npm:^8.0.0" + nanoid: "npm:^4.0.2" read-pkg-up: "npm:^7.0.1" semver: "npm:^7.3.7" telejson: "npm:^7.2.0" From fce6e2adedcb8cec08dda4b9435fa60c33c434fd Mon Sep 17 00:00:00 2001 From: Kaelig Deloumeau-Prigent Date: Mon, 27 Nov 2023 15:08:22 -0800 Subject: [PATCH 15/64] Render colors in the same order as provided Object.keys/Object.values/Object.entries (see screenshot below) don't guarantee maintaining the output order. We're using `for..in` instead to ensure colors swatches are rendered. --- code/ui/blocks/src/components/ColorPalette.tsx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/code/ui/blocks/src/components/ColorPalette.tsx b/code/ui/blocks/src/components/ColorPalette.tsx index 4bf8d3e91401..c545669654d3 100644 --- a/code/ui/blocks/src/components/ColorPalette.tsx +++ b/code/ui/blocks/src/components/ColorPalette.tsx @@ -164,13 +164,23 @@ function renderSwatchSpecimen(colors: Colors) { ); } + + const swatchElements = []; + const labelElements = []; + + for (const colorKey in colors) { + const colorValue = colors[colorKey]; + swatchElements.push(renderSwatch(colorValue, swatchElements.length)); + labelElements.push(renderSwatchLabel(colorKey, labelElements.length, colorValue)); + } + return ( - {Object.values(colors).map((color, index) => renderSwatch(color, index))} + {swatchElements} - {Object.keys(colors).map((color, index) => renderSwatchLabel(color, index, colors[color]))} + {labelElements} ); From 413f5792a0cc0ed869ea5da9a7f4d8489ddeacef Mon Sep 17 00:00:00 2001 From: Mark berry Date: Fri, 1 Dec 2023 22:22:23 -0600 Subject: [PATCH 16/64] Refactor story's unique attribute to be more predictable --- code/frameworks/angular/package.json | 1 - .../client/angular-beta/AbstractRenderer.ts | 25 ++++++----- .../src/client/angular-beta/DocsRenderer.ts | 13 +++++- .../src/client/angular-beta/utils/StoryUID.ts | 43 +++++++++++++++++++ code/yarn.lock | 1 - 5 files changed, 69 insertions(+), 14 deletions(-) create mode 100644 code/frameworks/angular/src/client/angular-beta/utils/StoryUID.ts diff --git a/code/frameworks/angular/package.json b/code/frameworks/angular/package.json index b6d2ebc733e4..bdc500c756e2 100644 --- a/code/frameworks/angular/package.json +++ b/code/frameworks/angular/package.json @@ -56,7 +56,6 @@ "@types/semver": "^7.3.4", "@types/webpack-env": "^1.18.0", "find-up": "^5.0.0", - "nanoid": "^4.0.2", "read-pkg-up": "^7.0.1", "semver": "^7.3.7", "telejson": "^7.2.0", diff --git a/code/frameworks/angular/src/client/angular-beta/AbstractRenderer.ts b/code/frameworks/angular/src/client/angular-beta/AbstractRenderer.ts index 43df332f82ab..ec5c2ac7ba52 100644 --- a/code/frameworks/angular/src/client/angular-beta/AbstractRenderer.ts +++ b/code/frameworks/angular/src/client/angular-beta/AbstractRenderer.ts @@ -3,7 +3,7 @@ import { bootstrapApplication } from '@angular/platform-browser'; import { BehaviorSubject, Subject } from 'rxjs'; import { stringify } from 'telejson'; -import { nanoid } from 'nanoid'; + import { ICollection, StoryFnAngularReturnType } from '../types'; import { getApplication } from './StorybookModule'; import { storyPropsProvider } from './StorybookProvider'; @@ -17,6 +17,12 @@ type StoryRenderInfo = { const applicationRefs = new Map(); +/** + * Attribute name for the story UID that may be written to the targetDOMNode. + * + * If a target DOM node has a story UID attribute, it will be used as part of + * the selector for the Angular component. + */ export const STORY_UID_ATTRIBUTE = 'data-sb-story-uid'; export abstract class AbstractRenderer { @@ -125,10 +131,12 @@ export abstract class AbstractRenderer { const analyzedMetadata = new PropertyExtractor(storyFnAngular.moduleMetadata, component); - const componentSelector = - targetDOMNode.getAttribute(STORY_UID_ATTRIBUTE) !== null - ? `${targetSelector}[${targetDOMNode.getAttribute(STORY_UID_ATTRIBUTE)}]` - : targetSelector; + const storyUid = targetDOMNode.getAttribute(STORY_UID_ATTRIBUTE); + const componentSelector = storyUid !== null ? `${targetSelector}[${storyUid}]` : targetSelector; + if (storyUid !== null) { + const element = targetDOMNode.querySelector(targetSelector); + element.toggleAttribute(storyUid, true); + } const application = getApplication({ storyFnAngular, @@ -175,12 +183,7 @@ export abstract class AbstractRenderer { protected initAngularRootElement(targetDOMNode: HTMLElement, targetSelector: string) { // eslint-disable-next-line no-param-reassign targetDOMNode.innerHTML = ''; - - targetDOMNode.setAttribute(STORY_UID_ATTRIBUTE, `${targetDOMNode.id}-${nanoid(10)}`); - const element = document.createElement(targetSelector); - element.toggleAttribute(targetDOMNode.getAttribute(STORY_UID_ATTRIBUTE), true); - - targetDOMNode.appendChild(element); + targetDOMNode.appendChild(document.createElement(targetSelector)); } private fullRendererRequired({ diff --git a/code/frameworks/angular/src/client/angular-beta/DocsRenderer.ts b/code/frameworks/angular/src/client/angular-beta/DocsRenderer.ts index d51573376fcb..9b7629854626 100644 --- a/code/frameworks/angular/src/client/angular-beta/DocsRenderer.ts +++ b/code/frameworks/angular/src/client/angular-beta/DocsRenderer.ts @@ -1,6 +1,8 @@ import { addons } from '@storybook/preview-api'; import { DOCS_RENDERED, STORY_CHANGED } from '@storybook/core-events'; -import { AbstractRenderer } from './AbstractRenderer'; + +import { getNextStoryUID } from './utils/StoryUID'; +import { AbstractRenderer, STORY_UID_ATTRIBUTE } from './AbstractRenderer'; import { StoryFnAngularReturnType, Parameters } from '../types'; export class DocsRenderer extends AbstractRenderer { @@ -45,4 +47,13 @@ export class DocsRenderer extends AbstractRenderer { async afterFullRender(): Promise { await AbstractRenderer.resetCompiledComponents(); } + + protected override initAngularRootElement( + targetDOMNode: HTMLElement, + targetSelector: string + ): void { + super.initAngularRootElement(targetDOMNode, targetSelector); + + targetDOMNode.setAttribute(STORY_UID_ATTRIBUTE, getNextStoryUID(targetDOMNode.id)); + } } diff --git a/code/frameworks/angular/src/client/angular-beta/utils/StoryUID.ts b/code/frameworks/angular/src/client/angular-beta/utils/StoryUID.ts new file mode 100644 index 000000000000..131ebda1adf9 --- /dev/null +++ b/code/frameworks/angular/src/client/angular-beta/utils/StoryUID.ts @@ -0,0 +1,43 @@ +/** + * Count of stories for each storyId. + */ +const storyCounts = new Map(); + +/** + * Increments the count for a storyId and returns the next UID. + * + * When a story is bootstrapped, the storyId is used as the element tag. That + * becomes an issue when a story is rendered multiple times in the same docs + * page. This function returns a UID that is appended to the storyId to make + * it unique. + * + * @param storyId id of a story + * @returns uid of a story + */ +export const getNextStoryUID = (storyId: string): string => { + if (!storyCounts.has(storyId)) { + storyCounts.set(storyId, -1); + } + + const count = storyCounts.get(storyId) + 1; + storyCounts.set(storyId, count); + return `${storyId}-${count}`; +}; + +/** + * Clears the storyId counts. + * + * Can be useful for testing, where you need predictable increments, without + * reloading the global state. + * + * If onlyStoryId is provided, only that storyId is cleared. + * + * @param onlyStoryId id of a story + */ +export const clearStoryUIDs = (onlyStoryId?: string): void => { + if (onlyStoryId !== undefined && onlyStoryId !== null) { + storyCounts.delete(onlyStoryId); + } else { + storyCounts.clear(); + } +}; diff --git a/code/yarn.lock b/code/yarn.lock index 3da7817e1669..c5118b9cd016 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -5156,7 +5156,6 @@ __metadata: jest: "npm:^29.7.0" jest-preset-angular: "npm:^13.0.1" jest-specific-snapshot: "npm:^8.0.0" - nanoid: "npm:^4.0.2" read-pkg-up: "npm:^7.0.1" semver: "npm:^7.3.7" telejson: "npm:^7.2.0" From a79a362cdc594cf9f6690515bd7c0e321994fc52 Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Wed, 6 Dec 2023 15:18:32 +0100 Subject: [PATCH 17/64] SvelteKit: fix missing $app modules --- .../src/plugins/mock-sveltekit-stores.ts | 6 ++++-- .../Environment.svelte | 8 ++++++++ .../Paths.svelte | 6 ++++++ .../environment.stories.js | 18 ++++++++++++++++++ .../paths.stories.js | 16 ++++++++++++++++ 5 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/Environment.svelte create mode 100644 code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/Paths.svelte create mode 100644 code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/environment.stories.js create mode 100644 code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/paths.stories.js diff --git a/code/frameworks/sveltekit/src/plugins/mock-sveltekit-stores.ts b/code/frameworks/sveltekit/src/plugins/mock-sveltekit-stores.ts index b5e63f8591e2..be48d8356275 100644 --- a/code/frameworks/sveltekit/src/plugins/mock-sveltekit-stores.ts +++ b/code/frameworks/sveltekit/src/plugins/mock-sveltekit-stores.ts @@ -1,5 +1,5 @@ import { resolve } from 'node:path'; -import type { Plugin } from 'vite'; +import { mergeConfig, type Plugin } from 'vite'; export function mockSveltekitStores() { return { @@ -7,7 +7,9 @@ export function mockSveltekitStores() { config: () => ({ resolve: { alias: { - $app: resolve(__dirname, '../src/mocks/app/'), + '$app/forms': resolve(__dirname, '../src/mocks/app/forms.ts'), + '$app/navigation': resolve(__dirname, '../src/mocks/app/navigation.ts'), + '$app/stores': resolve(__dirname, '../src/mocks/app/stores.ts'), }, }, }), diff --git a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/Environment.svelte b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/Environment.svelte new file mode 100644 index 000000000000..aef1c05011f8 --- /dev/null +++ b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/Environment.svelte @@ -0,0 +1,8 @@ + + +
{browser}
+
{dev}
+
{building}
+
{version}
diff --git a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/Paths.svelte b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/Paths.svelte new file mode 100644 index 000000000000..f4c1e81b53fe --- /dev/null +++ b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/Paths.svelte @@ -0,0 +1,6 @@ + + +
{assets}
+
{base}
diff --git a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/environment.stories.js b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/environment.stories.js new file mode 100644 index 000000000000..fa1a32a4b95b --- /dev/null +++ b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/environment.stories.js @@ -0,0 +1,18 @@ +import { expect, fn, within } from '@storybook/test'; +import Environment from './Environment.svelte'; + +export default { + title: 'stories/sveltekit/modules/environment', + component: Environment, + tags: ['autodocs'], +}; + +export const Default = { + async play({ canvasElement }) { + const canvas = within(canvasElement); + expect(canvas.getByTestId('browser')).toBeInTheDocument(); + expect(canvas.getByTestId('dev')).toBeInTheDocument(); + expect(canvas.getByTestId('building')).toBeInTheDocument(); + expect(canvas.getByTestId('version')).toBeInTheDocument(); + }, +}; diff --git a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/paths.stories.js b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/paths.stories.js new file mode 100644 index 000000000000..ed75c3cbdd4a --- /dev/null +++ b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/paths.stories.js @@ -0,0 +1,16 @@ +import { expect, fn, within } from '@storybook/test'; +import Paths from './Paths.svelte'; + +export default { + title: 'stories/sveltekit/modules/paths', + component: Paths, + tags: ['autodocs'], +}; + +export const Default = { + async play({ canvasElement }) { + const canvas = within(canvasElement); + expect(canvas.getByTestId('assets')).toBeInTheDocument(); + expect(canvas.getByTestId('base')).toBeInTheDocument(); + }, +}; From 16722d6fc514889546f2104279048d0256059ede Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Wed, 6 Dec 2023 15:22:14 +0100 Subject: [PATCH 18/64] Add tests for svelte-kit/skeleton-js too --- .../Environment.svelte | 8 ++++++++ .../Paths.svelte | 6 ++++++ .../environment.stories.js | 18 ++++++++++++++++++ .../paths.stories.js | 16 ++++++++++++++++ 4 files changed, 48 insertions(+) create mode 100644 code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/Environment.svelte create mode 100644 code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/Paths.svelte create mode 100644 code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/environment.stories.js create mode 100644 code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/paths.stories.js diff --git a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/Environment.svelte b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/Environment.svelte new file mode 100644 index 000000000000..aef1c05011f8 --- /dev/null +++ b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/Environment.svelte @@ -0,0 +1,8 @@ + + +
{browser}
+
{dev}
+
{building}
+
{version}
diff --git a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/Paths.svelte b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/Paths.svelte new file mode 100644 index 000000000000..f4c1e81b53fe --- /dev/null +++ b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/Paths.svelte @@ -0,0 +1,6 @@ + + +
{assets}
+
{base}
diff --git a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/environment.stories.js b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/environment.stories.js new file mode 100644 index 000000000000..fa1a32a4b95b --- /dev/null +++ b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/environment.stories.js @@ -0,0 +1,18 @@ +import { expect, fn, within } from '@storybook/test'; +import Environment from './Environment.svelte'; + +export default { + title: 'stories/sveltekit/modules/environment', + component: Environment, + tags: ['autodocs'], +}; + +export const Default = { + async play({ canvasElement }) { + const canvas = within(canvasElement); + expect(canvas.getByTestId('browser')).toBeInTheDocument(); + expect(canvas.getByTestId('dev')).toBeInTheDocument(); + expect(canvas.getByTestId('building')).toBeInTheDocument(); + expect(canvas.getByTestId('version')).toBeInTheDocument(); + }, +}; diff --git a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/paths.stories.js b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/paths.stories.js new file mode 100644 index 000000000000..ed75c3cbdd4a --- /dev/null +++ b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/paths.stories.js @@ -0,0 +1,16 @@ +import { expect, fn, within } from '@storybook/test'; +import Paths from './Paths.svelte'; + +export default { + title: 'stories/sveltekit/modules/paths', + component: Paths, + tags: ['autodocs'], +}; + +export const Default = { + async play({ canvasElement }) { + const canvas = within(canvasElement); + expect(canvas.getByTestId('assets')).toBeInTheDocument(); + expect(canvas.getByTestId('base')).toBeInTheDocument(); + }, +}; From 2785843dff0d4960dd7b064bef4a5bc7ba0be6f7 Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Wed, 6 Dec 2023 15:51:41 +0100 Subject: [PATCH 19/64] fix pr comments --- .../sveltekit/src/plugins/mock-sveltekit-stores.ts | 2 +- .../environment.stories.js | 10 +--------- .../stories_svelte-kit-skeleton-js/paths.stories.js | 8 +------- .../environment.stories.js | 10 +--------- .../stories_svelte-kit-skeleton-ts/paths.stories.js | 8 +------- 5 files changed, 5 insertions(+), 33 deletions(-) diff --git a/code/frameworks/sveltekit/src/plugins/mock-sveltekit-stores.ts b/code/frameworks/sveltekit/src/plugins/mock-sveltekit-stores.ts index be48d8356275..f338760c3908 100644 --- a/code/frameworks/sveltekit/src/plugins/mock-sveltekit-stores.ts +++ b/code/frameworks/sveltekit/src/plugins/mock-sveltekit-stores.ts @@ -1,5 +1,5 @@ import { resolve } from 'node:path'; -import { mergeConfig, type Plugin } from 'vite'; +import type { Plugin } from 'vite'; export function mockSveltekitStores() { return { diff --git a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/environment.stories.js b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/environment.stories.js index fa1a32a4b95b..a8baaabbf5be 100644 --- a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/environment.stories.js +++ b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/environment.stories.js @@ -7,12 +7,4 @@ export default { tags: ['autodocs'], }; -export const Default = { - async play({ canvasElement }) { - const canvas = within(canvasElement); - expect(canvas.getByTestId('browser')).toBeInTheDocument(); - expect(canvas.getByTestId('dev')).toBeInTheDocument(); - expect(canvas.getByTestId('building')).toBeInTheDocument(); - expect(canvas.getByTestId('version')).toBeInTheDocument(); - }, -}; +export const Default = {}; diff --git a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/paths.stories.js b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/paths.stories.js index ed75c3cbdd4a..5d87296483a5 100644 --- a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/paths.stories.js +++ b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/paths.stories.js @@ -7,10 +7,4 @@ export default { tags: ['autodocs'], }; -export const Default = { - async play({ canvasElement }) { - const canvas = within(canvasElement); - expect(canvas.getByTestId('assets')).toBeInTheDocument(); - expect(canvas.getByTestId('base')).toBeInTheDocument(); - }, -}; +export const Default = {}; diff --git a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/environment.stories.js b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/environment.stories.js index fa1a32a4b95b..a8baaabbf5be 100644 --- a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/environment.stories.js +++ b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/environment.stories.js @@ -7,12 +7,4 @@ export default { tags: ['autodocs'], }; -export const Default = { - async play({ canvasElement }) { - const canvas = within(canvasElement); - expect(canvas.getByTestId('browser')).toBeInTheDocument(); - expect(canvas.getByTestId('dev')).toBeInTheDocument(); - expect(canvas.getByTestId('building')).toBeInTheDocument(); - expect(canvas.getByTestId('version')).toBeInTheDocument(); - }, -}; +export const Default = {}; diff --git a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/paths.stories.js b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/paths.stories.js index ed75c3cbdd4a..5d87296483a5 100644 --- a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/paths.stories.js +++ b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/paths.stories.js @@ -7,10 +7,4 @@ export default { tags: ['autodocs'], }; -export const Default = { - async play({ canvasElement }) { - const canvas = within(canvasElement); - expect(canvas.getByTestId('assets')).toBeInTheDocument(); - expect(canvas.getByTestId('base')).toBeInTheDocument(); - }, -}; +export const Default = {}; From 297eca80ba48d8f2600f073cac614aace370ecd3 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 12 Dec 2023 09:58:49 +0100 Subject: [PATCH 20/64] cleanup --- code/addons/docs/package.json | 2 +- code/yarn.lock | 420 +++------------------------------- 2 files changed, 32 insertions(+), 390 deletions(-) diff --git a/code/addons/docs/package.json b/code/addons/docs/package.json index 3675ccc31bb8..1754e778a097 100644 --- a/code/addons/docs/package.json +++ b/code/addons/docs/package.json @@ -120,7 +120,7 @@ }, "devDependencies": { "@rollup/pluginutils": "^5.0.2", - "typescript": "~4.9.3", + "typescript": "^5.3.2", "vite": "^4.0.4" }, "publishConfig": { diff --git a/code/yarn.lock b/code/yarn.lock index 362afebab30c..4994a08208c1 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -24,20 +24,13 @@ __metadata: languageName: node linkType: hard -"@adobe/css-tools@npm:^4.0.1": +"@adobe/css-tools@npm:^4.0.1, @adobe/css-tools@npm:^4.3.0": version: 4.3.2 resolution: "@adobe/css-tools@npm:4.3.2" checksum: 296a03dd29f227c60500d2da8c7f64991fecf1d8b456ce2b4adb8cec7363d9c08b5b03f1463673fc8cbfe54b538745588e7a13c736d2dd14a80c01a20f127f39 languageName: node linkType: hard -"@adobe/css-tools@npm:^4.3.0": - version: 4.3.1 - resolution: "@adobe/css-tools@npm:4.3.1" - checksum: 05672719b544cc0c21ae3ed0eb6349bf458e9d09457578eeeb07cf0f696469ac6417e9c9be1b129e5d6a18098a061c1db55b2275591760ef30a79822436fcbfa - languageName: node - linkType: hard - "@ampproject/remapping@npm:2.2.1, @ampproject/remapping@npm:^2.2.0, @ampproject/remapping@npm:^2.2.1": version: 2.2.1 resolution: "@ampproject/remapping@npm:2.2.1" @@ -383,20 +376,13 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9, @babel/compat-data@npm:^7.23.3, @babel/compat-data@npm:^7.23.5": +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9, @babel/compat-data@npm:^7.23.2, @babel/compat-data@npm:^7.23.3, @babel/compat-data@npm:^7.23.5": version: 7.23.5 resolution: "@babel/compat-data@npm:7.23.5" checksum: 081278ed46131a890ad566a59c61600a5f9557bd8ee5e535890c8548192532ea92590742fd74bd9db83d74c669ef8a04a7e1c85cdea27f960233e3b83c3a957c languageName: node linkType: hard -"@babel/compat-data@npm:^7.23.2": - version: 7.23.2 - resolution: "@babel/compat-data@npm:7.23.2" - checksum: 0397a08c3e491696cc1b12cf0879bf95fc550bfc6ef524d5a9452981aa0e192a958b2246debfb230fa22718fac473cc5a36616f89b1ad6e7e52055732cd374a1 - languageName: node - linkType: hard - "@babel/core@npm:^7.23.2": version: 7.23.2 resolution: "@babel/core@npm:7.23.2" @@ -554,22 +540,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/helper-module-transforms@npm:7.23.0" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-module-imports": "npm:^7.22.15" - "@babel/helper-simple-access": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/helper-validator-identifier": "npm:^7.22.20" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 15a52e401bd17fe44ba9be51cca693a3e182dc93264dc28ede732081c43211741df81ce8eb15e82e81c8ad51beb8893301ecc31d5c77add0f7be78dff6815318 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.23.3": +"@babel/helper-module-transforms@npm:^7.23.0, @babel/helper-module-transforms@npm:^7.23.3": version: 7.23.3 resolution: "@babel/helper-module-transforms@npm:7.23.3" dependencies: @@ -653,13 +624,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-string-parser@npm:7.22.5" - checksum: 6b0ff8af724377ec41e5587fffa7605198da74cb8e7d8d48a36826df0c0ba210eb9fedb3d9bef4d541156e0bd11040f021945a6cbb731ccec4aefb4affa17aa4 - languageName: node - linkType: hard - "@babel/helper-string-parser@npm:^7.23.4": version: 7.23.4 resolution: "@babel/helper-string-parser@npm:7.23.4" @@ -714,7 +678,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.11.5, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.4, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.3, @babel/parser@npm:^7.4.5, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.7.0, @babel/parser@npm:^7.9.6": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.11.5, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.15, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.3, @babel/parser@npm:^7.21.4, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.3, @babel/parser@npm:^7.4.5, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.7.0, @babel/parser@npm:^7.9.6": version: 7.23.5 resolution: "@babel/parser@npm:7.23.5" bin: @@ -723,15 +687,6 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.20.15, @babel/parser@npm:^7.21.3": - version: 7.23.0 - resolution: "@babel/parser@npm:7.23.0" - bin: - parser: ./bin/babel-parser.js - checksum: ab4ea9360ed4ba3c728c5a9bf33035103ebde20a7e943c4ae1d42becb02a313d731d12a93c795c5a19777031e4022e64b92a52262eda902522a1a18649826283 - languageName: node - linkType: hard - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.15, @babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.23.3": version: 7.23.3 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.23.3" @@ -987,17 +942,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-syntax-jsx@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b56ceaa9c6adc17fadfb48e1c801d07797195df2a581489e33c8034950e12e7778de6e1e70d6bcf7c5c7ada6222fe6bad5746187ab280df435f5a2799c8dd0d8 - languageName: node - linkType: hard - "@babel/plugin-syntax-jsx@npm:^7.23.3, @babel/plugin-syntax-jsx@npm:^7.7.2": version: 7.23.3 resolution: "@babel/plugin-syntax-jsx@npm:7.23.3" @@ -1097,17 +1041,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-syntax-typescript@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 523a76627f17e67dc1999f4d7c7a71ed79e9f77f55a61cf05051101967ac23ec378ff0c93787b2cbd5d53720ad799658d796a649fa351682b2bf636f63b665a1 - languageName: node - linkType: hard - "@babel/plugin-syntax-typescript@npm:^7.23.3, @babel/plugin-syntax-typescript@npm:^7.7.2": version: 7.23.3 resolution: "@babel/plugin-syntax-typescript@npm:7.23.3" @@ -1285,19 +1218,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.22.5" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.22.5" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e0d7b95380483ef563c13f7c0a2122f575c58708cfb56494d6265ebb31753cf46ee0b3f5126fa6bbea5af392b3a2da05bf1e028d0b2b4d1dc279edd67cf3c3d9 - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.23.3": +"@babel/plugin-transform-dotall-regex@npm:^7.22.5, @babel/plugin-transform-dotall-regex@npm:^7.23.3": version: 7.23.3 resolution: "@babel/plugin-transform-dotall-regex@npm:7.23.3" dependencies: @@ -1691,22 +1612,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.14.9": - version: 7.22.15 - resolution: "@babel/plugin-transform-react-jsx@npm:7.22.15" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-module-imports": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-jsx": "npm:^7.22.5" - "@babel/types": "npm:^7.22.15" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: db37491e3eea5530521e177380312f308f01f806866fa0ce08d48fc5a8c9eaf9a954f778fa1ff477248afb72e916eb66ab3d35254bb6a8979f8b8e74a0fd8873 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx@npm:^7.22.15, @babel/plugin-transform-react-jsx@npm:^7.22.5": +"@babel/plugin-transform-react-jsx@npm:^7.14.9, @babel/plugin-transform-react-jsx@npm:^7.22.15, @babel/plugin-transform-react-jsx@npm:^7.22.5": version: 7.23.4 resolution: "@babel/plugin-transform-react-jsx@npm:7.23.4" dependencies: @@ -1756,7 +1662,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-runtime@npm:7.23.2, @babel/plugin-transform-runtime@npm:^7.23.2": +"@babel/plugin-transform-runtime@npm:7.23.2": version: 7.23.2 resolution: "@babel/plugin-transform-runtime@npm:7.23.2" dependencies: @@ -1772,7 +1678,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-runtime@npm:^7.13.9": +"@babel/plugin-transform-runtime@npm:^7.13.9, @babel/plugin-transform-runtime@npm:^7.23.2": version: 7.23.4 resolution: "@babel/plugin-transform-runtime@npm:7.23.4" dependencies: @@ -1858,20 +1764,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-transform-typescript@npm:7.22.15" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-create-class-features-plugin": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-typescript": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e6a110f5b70334c6a503c90855dde5660f479e48262c8338261aeb30c70eedcfe885265b788c89f5bef757d99ab6704ee22bb0d23579597bc9415cfa86607458 - languageName: node - linkType: hard - "@babel/plugin-transform-unicode-escapes@npm:^7.22.10, @babel/plugin-transform-unicode-escapes@npm:^7.23.3": version: 7.23.3 resolution: "@babel/plugin-transform-unicode-escapes@npm:7.23.3" @@ -1929,7 +1821,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:7.23.2, @babel/preset-env@npm:^7.23.2": +"@babel/preset-env@npm:7.23.2": version: 7.23.2 resolution: "@babel/preset-env@npm:7.23.2" dependencies: @@ -2019,7 +1911,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:^7.16.5": +"@babel/preset-env@npm:^7.16.5, @babel/preset-env@npm:^7.23.2": version: 7.23.5 resolution: "@babel/preset-env@npm:7.23.5" dependencies: @@ -2151,7 +2043,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.23.0": +"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.23.0, @babel/preset-typescript@npm:^7.23.2": version: 7.23.3 resolution: "@babel/preset-typescript@npm:7.23.3" dependencies: @@ -2166,21 +2058,6 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.23.2": - version: 7.23.2 - resolution: "@babel/preset-typescript@npm:7.23.2" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-validator-option": "npm:^7.22.15" - "@babel/plugin-syntax-jsx": "npm:^7.22.5" - "@babel/plugin-transform-modules-commonjs": "npm:^7.23.0" - "@babel/plugin-transform-typescript": "npm:^7.22.15" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 40eb71e9959d97a0c2e89fe5cf4c9db7edea5b103618d4c4b5cc7a41dd8c66ab1b1922c443607427000d7bb63e135e8c5f268f35426b2ba00ce53f75bf3b0f8b - languageName: node - linkType: hard - "@babel/register@npm:^7.13.16, @babel/register@npm:^7.22.15": version: 7.22.15 resolution: "@babel/register@npm:7.22.15" @@ -2222,7 +2099,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:7.23.2, @babel/runtime@npm:^7.23.2": +"@babel/runtime@npm:7.23.2": version: 7.23.2 resolution: "@babel/runtime@npm:7.23.2" dependencies: @@ -2240,7 +2117,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": +"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.23.5 resolution: "@babel/runtime@npm:7.23.5" dependencies: @@ -2249,15 +2126,6 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.20.7": - version: 7.23.1 - resolution: "@babel/runtime@npm:7.23.1" - dependencies: - regenerator-runtime: "npm:^0.14.0" - checksum: e57ab1436d4845efe67c3f76d578508bb584173690ecfeac105bc4e09d64b2aa6a53c1e03bca3c97cc238e5390a804e5a4ded211e6350243b735905ca45a4822 - languageName: node - linkType: hard - "@babel/runtime@npm:~7.5.4": version: 7.5.5 resolution: "@babel/runtime@npm:7.5.5" @@ -2278,7 +2146,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.23.2": +"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.4.5, @babel/traverse@npm:^7.7.0": version: 7.23.2 resolution: "@babel/traverse@npm:7.23.2" dependencies: @@ -2296,36 +2164,7 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.4.5, @babel/traverse@npm:^7.7.0": - version: 7.23.0 - resolution: "@babel/traverse@npm:7.23.0" - dependencies: - "@babel/code-frame": "npm:^7.22.13" - "@babel/generator": "npm:^7.23.0" - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-function-name": "npm:^7.23.0" - "@babel/helper-hoist-variables": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/parser": "npm:^7.23.0" - "@babel/types": "npm:^7.23.0" - debug: "npm:^4.1.0" - globals: "npm:^11.1.0" - checksum: 84f93e64179965a0de6109a8b1ce92d66eb52a76e8ba325d27bdec6952cedd8fc98eabf09fe443ef667a051300dc7ed8924e7bf61a87ad456501d1da46657509 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.11.5, @babel/types@npm:^7.18.9, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.4, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.6.1, @babel/types@npm:^7.7.0, @babel/types@npm:^7.7.2, @babel/types@npm:^7.8.3, @babel/types@npm:^7.9.6": - version: 7.23.0 - resolution: "@babel/types@npm:7.23.0" - dependencies: - "@babel/helper-string-parser": "npm:^7.22.5" - "@babel/helper-validator-identifier": "npm:^7.22.20" - to-fast-properties: "npm:^2.0.0" - checksum: 70e4db41acb6793d0eb8d81a2fa88f19ee661219b84bd5f703dbdb54eb3a4d3c0dfc55e69034c945b479df9f43fd4b1376480aaccfc19797ce5af1c5d2576b36 - languageName: node - linkType: hard - -"@babel/types@npm:^7.23.4": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.11.5, @babel/types@npm:^7.18.9, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.4, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.6.1, @babel/types@npm:^7.7.0, @babel/types@npm:^7.7.2, @babel/types@npm:^7.8.3, @babel/types@npm:^7.9.6": version: 7.23.5 resolution: "@babel/types@npm:7.23.5" dependencies: @@ -4980,7 +4819,7 @@ __metadata: remark-external-links: "npm:^8.0.0" remark-slug: "npm:^6.0.0" ts-dedent: "npm:^2.0.0" - typescript: "npm:~4.9.3" + typescript: "npm:^5.3.2" vite: "npm:^4.0.4" languageName: unknown linkType: soft @@ -8190,14 +8029,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>= 8": - version: 20.8.2 - resolution: "@types/node@npm:20.8.2" - checksum: e9952db222dd3e1cca1107d1b2aaec4e93b4af8b4fc32b42dd4fac3719f98c14edb8c591829c972d2f6e2b527bbb34af53608f6a7973f4a7dbd1d3bc929bbe8d - languageName: node - linkType: hard - -"@types/node@npm:>=10.0.0": +"@types/node@npm:*, @types/node@npm:>= 8, @types/node@npm:>=10.0.0": version: 20.10.3 resolution: "@types/node@npm:20.10.3" dependencies: @@ -8785,7 +8617,7 @@ __metadata: languageName: node linkType: hard -"@urql/core@npm:>=4.1.0": +"@urql/core@npm:>=4.1.0, @urql/core@npm:^4.1.0": version: 4.2.0 resolution: "@urql/core@npm:4.2.0" dependencies: @@ -8795,16 +8627,6 @@ __metadata: languageName: node linkType: hard -"@urql/core@npm:^4.1.0": - version: 4.1.3 - resolution: "@urql/core@npm:4.1.3" - dependencies: - "@0no-co/graphql.web": "npm:^1.0.1" - wonka: "npm:^6.3.2" - checksum: 9aa5c8b9df04c79e71f4be6ce0d97cc2301d1ab7aea3ffafa9f53d89564f063dc77a011239c2a51581b50bbedc1e9dab0a3551acc7ee5dda9dd1bece2d5a1644 - languageName: node - linkType: hard - "@urql/exchange-auth@npm:^2.1.6": version: 2.1.6 resolution: "@urql/exchange-auth@npm:2.1.6" @@ -11283,21 +11105,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.14.5, browserslist@npm:^4.21.5, browserslist@npm:^4.21.9, browserslist@npm:^4.22.1": - version: 4.22.1 - resolution: "browserslist@npm:4.22.1" - dependencies: - caniuse-lite: "npm:^1.0.30001541" - electron-to-chromium: "npm:^1.4.535" - node-releases: "npm:^2.0.13" - update-browserslist-db: "npm:^1.0.13" - bin: - browserslist: cli.js - checksum: 6810f2d63f171d0b7b8d38cf091708e00cb31525501810a507839607839320d66e657293b0aa3d7f051ecbc025cb07390a90c037682c1d05d12604991e41050b - languageName: node - linkType: hard - -"browserslist@npm:^4.21.10": +"browserslist@npm:^4.14.5, browserslist@npm:^4.21.10, browserslist@npm:^4.21.5, browserslist@npm:^4.21.9, browserslist@npm:^4.22.1": version: 4.22.2 resolution: "browserslist@npm:4.22.2" dependencies: @@ -11612,14 +11420,7 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001406, caniuse-lite@npm:^1.0.30001541": - version: 1.0.30001565 - resolution: "caniuse-lite@npm:1.0.30001565" - checksum: b400e0364651a700e39d59449ca6c65b26e2caceecc4b93ae54a01ed1f62d2a7e1333b1dc640d95fbe620ffa5be38fe4dbacd880cd7a1f42fc72bb8de9a2d0c9 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001538, caniuse-lite@npm:^1.0.30001565": +"caniuse-lite@npm:^1.0.30001406, caniuse-lite@npm:^1.0.30001538, caniuse-lite@npm:^1.0.30001565": version: 1.0.30001566 resolution: "caniuse-lite@npm:1.0.30001566" checksum: cd163075b1a9feaf9c9f657c3551279fcdac471471d67ee57ab2286c7b5480168e6336e359741b469fa40e94716f0f95ec185d87bd57d58894d66d8c21d7db04 @@ -12523,7 +12324,7 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.31.0": +"core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.33.1": version: 3.33.3 resolution: "core-js-compat@npm:3.33.3" dependencies: @@ -12532,15 +12333,6 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.33.1": - version: 3.33.1 - resolution: "core-js-compat@npm:3.33.1" - dependencies: - browserslist: "npm:^4.22.1" - checksum: 9c7361b370eac30756e6ec52469988d62c6110759efa1c85edd15e6b30f05ace8319a9cc0671bf596a98e7e81c67ad693ceaab2691b85cb62c636da1afe8feb9 - languageName: node - linkType: hard - "core-js-pure@npm:^3.23.3, core-js-pure@npm:^3.30.2": version: 3.33.0 resolution: "core-js-pure@npm:3.33.0" @@ -13817,13 +13609,6 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.535": - version: 1.4.540 - resolution: "electron-to-chromium@npm:1.4.540" - checksum: 8bacd2a06a6a78875b4f4035c97fb8155447f93d854292005f9958a5d1366597fabecc1561c642eae55815583fa3436b164c8bf8f7ca3cfe15741466b3c5e0cf - languageName: node - linkType: hard - "electron-to-chromium@npm:^1.4.601": version: 1.4.601 resolution: "electron-to-chromium@npm:1.4.601" @@ -14394,7 +14179,7 @@ __metadata: languageName: node linkType: hard -"esbuild-wasm@npm:0.19.5": +"esbuild-wasm@npm:0.19.5, esbuild-wasm@npm:>=0.13.8": version: 0.19.5 resolution: "esbuild-wasm@npm:0.19.5" bin: @@ -14403,15 +14188,6 @@ __metadata: languageName: node linkType: hard -"esbuild-wasm@npm:>=0.13.8": - version: 0.19.4 - resolution: "esbuild-wasm@npm:0.19.4" - bin: - esbuild: bin/esbuild - checksum: c2d995a280dbff4d50193dd666d3603afc33f2123c3ce8fc89dbe5915dcf0252e5f4a75429e8e5e5ba8a6df2ff397f08ba314c59868511785164f2380a3ecd18 - languageName: node - linkType: hard - "esbuild@npm:^0.18.0": version: 0.18.20 resolution: "esbuild@npm:0.18.20" @@ -20207,7 +19983,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.1": +"lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": version: 10.1.0 resolution: "lru-cache@npm:10.1.0" checksum: 778bc8b2626daccd75f24c4b4d10632496e21ba064b126f526c626fbdbc5b28c472013fccd45d7646b9e1ef052444824854aed617b59cd570d01a8b7d651fc1e @@ -20246,13 +20022,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.0.1 - resolution: "lru-cache@npm:10.0.1" - checksum: 982dabfb227b9a2daf56d712ae0e72e01115a28c0a2068cd71277bca04568f3417bbf741c6c7941abc5c620fd8059e34f15607f90ebccbfa0a17533322d27a8e - languageName: node - linkType: hard - "lz-string@npm:^1.4.4, lz-string@npm:^1.5.0": version: 1.5.0 resolution: "lz-string@npm:1.5.0" @@ -20269,7 +20038,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:0.30.5, magic-string@npm:^0.30.4, magic-string@npm:^0.30.5": +"magic-string@npm:0.30.5, magic-string@npm:^0.30.0, magic-string@npm:^0.30.3, magic-string@npm:^0.30.4, magic-string@npm:^0.30.5": version: 0.30.5 resolution: "magic-string@npm:0.30.5" dependencies: @@ -20296,15 +20065,6 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": - version: 0.30.4 - resolution: "magic-string@npm:0.30.4" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.4.15" - checksum: 076c0402334a8f7c69d83175b4ff10c83b50fd2c6d884a758a563ad9bea312db3b5c7b16cf717229c11505a1deb52d6225503b3b638e1879101d65d08f03c467 - languageName: node - linkType: hard - "make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": version: 2.1.0 resolution: "make-dir@npm:2.1.0" @@ -22134,7 +21894,7 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.13, node-releases@npm:^2.0.14": +"node-releases@npm:^2.0.14": version: 2.0.14 resolution: "node-releases@npm:2.0.14" checksum: 199fc93773ae70ec9969bc6d5ac5b2bbd6eb986ed1907d751f411fef3ede0e4bfdb45ceb43711f8078bea237b6036db8b1bf208f6ff2b70c7d615afd157f3ab9 @@ -22467,14 +22227,7 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.12.3": - version: 1.12.3 - resolution: "object-inspect@npm:1.12.3" - checksum: 752bb5f4dc595e214157ea8f442adb77bdb850ace762b078d151d8b6486331ab12364997a89ee6509be1023b15adf2b3774437a7105f8a5043dfda11ed622411 - languageName: node - linkType: hard - -"object-inspect@npm:^1.9.0": +"object-inspect@npm:^1.12.3, object-inspect@npm:^1.9.0": version: 1.13.1 resolution: "object-inspect@npm:1.13.1" checksum: fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d @@ -25572,7 +25325,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:1.22.8": +"resolve@npm:1.22.8, resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.13.1, resolve@npm:^1.14.2, resolve@npm:^1.15.1, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4, resolve@npm:^1.4.0": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -25585,19 +25338,6 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.13.1, resolve@npm:^1.14.2, resolve@npm:^1.15.1, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4, resolve@npm:^1.4.0": - version: 1.22.6 - resolution: "resolve@npm:1.22.6" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 967f2eb67c77d1be7ff15676a7dbac9334090cfbf8b967305da5f4bd22fc7d12e7045223dc820bcc783031815b60b7f42f2a495165c320ffb4c7bb92eb2eb2d7 - languageName: node - linkType: hard - "resolve@npm:^2.0.0-next.4": version: 2.0.0-next.4 resolution: "resolve@npm:2.0.0-next.4" @@ -25611,7 +25351,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A1.22.8#optional!builtin": +"resolve@patch:resolve@npm%3A1.22.8#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.12.0#optional!builtin, resolve@patch:resolve@npm%3A^1.13.1#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.15.1#optional!builtin, resolve@patch:resolve@npm%3A^1.17.0#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A^1.4.0#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -25624,19 +25364,6 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.12.0#optional!builtin, resolve@patch:resolve@npm%3A^1.13.1#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.15.1#optional!builtin, resolve@patch:resolve@npm%3A^1.17.0#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A^1.4.0#optional!builtin": - version: 1.22.6 - resolution: "resolve@patch:resolve@npm%3A1.22.6#optional!builtin::version=1.22.6&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: acedc45a638b3635730669bb65e87bb61f5bf9b4e81982aba9ece0049ff792472a6fbb0c22cc59073cdbf17a0926c1d3d77ba86c88c60e15cc46f929278210cb - languageName: node - linkType: hard - "resolve@patch:resolve@npm%3A^2.0.0-next.4#optional!builtin": version: 2.0.0-next.4 resolution: "resolve@patch:resolve@npm%3A2.0.0-next.4#optional!builtin::version=2.0.0-next.4&hash=c3c19d" @@ -27792,7 +27519,7 @@ __metadata: languageName: node linkType: hard -"terser@npm:5.24.0": +"terser@npm:5.24.0, terser@npm:^5.10.0, terser@npm:^5.16.8": version: 5.24.0 resolution: "terser@npm:5.24.0" dependencies: @@ -27806,20 +27533,6 @@ __metadata: languageName: node linkType: hard -"terser@npm:^5.10.0, terser@npm:^5.16.8": - version: 5.21.0 - resolution: "terser@npm:5.21.0" - dependencies: - "@jridgewell/source-map": "npm:^0.3.3" - acorn: "npm:^8.8.2" - commander: "npm:^2.20.0" - source-map-support: "npm:~0.5.20" - bin: - terser: bin/terser - checksum: f14ee816b668e014a2a37f4d00c2d9038374be56f0a141d4eb386b316c5645f49bb038a6b78f75353e9745d622dc66a1d6368aea5b08d46489b57dbf195f761c - languageName: node - linkType: hard - "test-exclude@npm:^6.0.0": version: 6.0.0 resolution: "test-exclude@npm:6.0.0" @@ -28441,16 +28154,6 @@ __metadata: languageName: node linkType: hard -"typescript@npm:~4.9.3": - version: 4.9.5 - resolution: "typescript@npm:4.9.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 5f6cad2e728a8a063521328e612d7876e12f0d8a8390d3b3aaa452a6a65e24e9ac8ea22beb72a924fd96ea0a49ea63bb4e251fb922b12eedfb7f7a26475e5c56 - languageName: node - linkType: hard - "typescript@patch:typescript@npm%3A^3.8.3#optional!builtin": version: 3.9.10 resolution: "typescript@patch:typescript@npm%3A3.9.10#optional!builtin::version=3.9.10&hash=3bd3d3" @@ -28471,16 +28174,6 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A~4.9.3#optional!builtin": - version: 4.9.5 - resolution: "typescript@patch:typescript@npm%3A4.9.5#optional!builtin::version=4.9.5&hash=289587" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: e3333f887c6829dfe0ab6c1dbe0dd1e3e2aeb56c66460cb85c5440c566f900c833d370ca34eb47558c0c69e78ced4bfe09b8f4f98b6de7afed9b84b8d1dd06a1 - languageName: node - linkType: hard - "ua-parser-js@npm:^1.0.33": version: 1.0.37 resolution: "ua-parser-js@npm:1.0.37" @@ -29159,7 +28852,7 @@ __metadata: languageName: node linkType: hard -"v8-to-istanbul@npm:^9.0.0": +"v8-to-istanbul@npm:^9.0.0, v8-to-istanbul@npm:^9.0.1": version: 9.2.0 resolution: "v8-to-istanbul@npm:9.2.0" dependencies: @@ -29170,17 +28863,6 @@ __metadata: languageName: node linkType: hard -"v8-to-istanbul@npm:^9.0.1": - version: 9.1.2 - resolution: "v8-to-istanbul@npm:9.1.2" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.12" - "@types/istanbul-lib-coverage": "npm:^2.0.1" - convert-source-map: "npm:^2.0.0" - checksum: ceed817914e1ddbe88cbeaae37aff82effbbf67846810f24c551315dade629e65f65d8cd853ce0982eb30c8865eeeed2e0d3935e3b227cbcefb2c1607de04e82 - languageName: node - linkType: hard - "validate-npm-package-license@npm:^3.0.1, validate-npm-package-license@npm:^3.0.4": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" @@ -29293,7 +28975,7 @@ __metadata: languageName: node linkType: hard -"vite@npm:4.5.0": +"vite@npm:4.5.0, vite@npm:^4.0.0, vite@npm:^4.0.4": version: 4.5.0 resolution: "vite@npm:4.5.0" dependencies: @@ -29333,46 +29015,6 @@ __metadata: languageName: node linkType: hard -"vite@npm:^4.0.0, vite@npm:^4.0.4": - version: 4.4.10 - resolution: "vite@npm:4.4.10" - dependencies: - esbuild: "npm:^0.18.10" - fsevents: "npm:~2.3.2" - postcss: "npm:^8.4.27" - rollup: "npm:^3.27.1" - peerDependencies: - "@types/node": ">= 14" - less: "*" - lightningcss: ^1.21.0 - sass: "*" - stylus: "*" - sugarss: "*" - terser: ^5.4.0 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - bin: - vite: bin/vite.js - checksum: d1359f147eb84aad9922460848184f14295e76f335ab03f90a585886ff070e1a7c74996022b3bb07da0a3130c9829565b5556e6eb1d0db12a8aad26f3694d445 - languageName: node - linkType: hard - "vitefu@npm:^0.2.4": version: 0.2.4 resolution: "vitefu@npm:0.2.4" From f5a72357d01cbfb79cd623c2bc33fef52ace44f7 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 12 Dec 2023 10:14:56 +0100 Subject: [PATCH 21/64] cleanup --- code/package.json | 2 +- code/yarn.lock | 1180 ++++++++++++++++++++++----------------------- 2 files changed, 581 insertions(+), 601 deletions(-) diff --git a/code/package.json b/code/package.json index c79f213d3c18..8b27aee34008 100644 --- a/code/package.json +++ b/code/package.json @@ -248,7 +248,7 @@ "wait-on": "^7.0.1" }, "devDependencies": { - "@chromaui/addon-visual-tests": "^0.0.114" + "@chromaui/addon-visual-tests": "^0.0.124" }, "dependenciesMeta": { "ejs": { diff --git a/code/yarn.lock b/code/yarn.lock index 4994a08208c1..a771dd142ac8 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -24,7 +24,7 @@ __metadata: languageName: node linkType: hard -"@adobe/css-tools@npm:^4.0.1, @adobe/css-tools@npm:^4.3.0": +"@adobe/css-tools@npm:^4.0.1, @adobe/css-tools@npm:^4.3.1": version: 4.3.2 resolution: "@adobe/css-tools@npm:4.3.2" checksum: 296a03dd29f227c60500d2da8c7f64991fecf1d8b456ce2b4adb8cec7363d9c08b5b03f1463673fc8cbfe54b538745588e7a13c736d2dd14a80c01a20f127f39 @@ -376,7 +376,7 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9, @babel/compat-data@npm:^7.23.2, @babel/compat-data@npm:^7.23.3, @babel/compat-data@npm:^7.23.5": +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.23.2, @babel/compat-data@npm:^7.23.3, @babel/compat-data@npm:^7.23.5": version: 7.23.5 resolution: "@babel/compat-data@npm:7.23.5" checksum: 081278ed46131a890ad566a59c61600a5f9557bd8ee5e535890c8548192532ea92590742fd74bd9db83d74c669ef8a04a7e1c85cdea27f960233e3b83c3a957c @@ -436,16 +436,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.12.0, @babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.6": - version: 7.22.15 - resolution: "@babel/helper-compilation-targets@npm:7.22.15" +"@babel/helper-compilation-targets@npm:^7.12.0, @babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/helper-compilation-targets@npm:7.23.6" dependencies: - "@babel/compat-data": "npm:^7.22.9" - "@babel/helper-validator-option": "npm:^7.22.15" - browserslist: "npm:^4.21.9" + "@babel/compat-data": "npm:^7.23.5" + "@babel/helper-validator-option": "npm:^7.23.5" + browserslist: "npm:^4.22.2" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 45b9286861296e890f674a3abb199efea14a962a27d9b8adeb44970a9fd5c54e73a9e342e8414d2851cf4f98d5994537352fbce7b05ade32e9849bbd327f9ff1 + checksum: ba38506d11185f48b79abf439462ece271d3eead1673dd8814519c8c903c708523428806f05f2ec5efd0c56e4e278698fac967e5a4b5ee842c32415da54bc6fa languageName: node linkType: hard @@ -678,12 +678,12 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.11.5, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.15, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.3, @babel/parser@npm:^7.21.4, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.3, @babel/parser@npm:^7.4.5, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.7.0, @babel/parser@npm:^7.9.6": - version: 7.23.5 - resolution: "@babel/parser@npm:7.23.5" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.11.5, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.4, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.5, @babel/parser@npm:^7.4.5, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.7.0, @babel/parser@npm:^7.9.6": + version: 7.23.6 + resolution: "@babel/parser@npm:7.23.6" bin: parser: ./bin/babel-parser.js - checksum: 3356aa90d7bafb4e2c7310e7c2c3d443c4be4db74913f088d3d577a1eb914ea4188e05fd50a47ce907a27b755c4400c4e3cbeee73dbeb37761f6ca85954f5a20 + checksum: 6f76cd5ccae1fa9bcab3525b0865c6222e9c1d22f87abc69f28c5c7b2c8816a13361f5bd06bddbd5faf903f7320a8feba02545c981468acec45d12a03db7755e languageName: node linkType: hard @@ -1289,14 +1289,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.22.15, @babel/plugin-transform-for-of@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-for-of@npm:7.23.3" +"@babel/plugin-transform-for-of@npm:^7.22.15, @babel/plugin-transform-for-of@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/plugin-transform-for-of@npm:7.23.6" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8a36202cfee312ba80e509c7c2131e6773524e572b4dc64a8ee95bd912634fdeb5ea91c6c7747ee30e03562d0f0d333f88ed7dbb929b36b60b8d74189189e12f + checksum: 46681b6ab10f3ca2d961f50d4096b62ab5d551e1adad84e64be1ee23e72eb2f26a1e30e617e853c74f1349fffe4af68d33921a128543b6f24b6d46c09a3e2aec languageName: node linkType: hard @@ -1568,18 +1569,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-react-display-name@npm:7.22.5" +"@babel/plugin-transform-react-display-name@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-react-display-name@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 41e0167ecd8e5281e427556146b1d3bee8652bcd0664be013f16ffeeb4d61b7ab0b1e59bcc2c923774f0d265f78012628d5277880f758f3675893226f9be012e + checksum: 3aed142af7bd1aed1df2bdad91ed33ba1cdd5c3c67ce6eafba821ff72f129162a197ffb55f1eb1775af276abd5545934489a8257fef6c6665ddf253a4f39a939 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.16.7, @babel/plugin-transform-react-jsx-development@npm:^7.22.5": +"@babel/plugin-transform-react-jsx-development@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-react-jsx-development@npm:7.22.5" dependencies: @@ -1612,7 +1613,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.14.9, @babel/plugin-transform-react-jsx@npm:^7.22.15, @babel/plugin-transform-react-jsx@npm:^7.22.5": +"@babel/plugin-transform-react-jsx@npm:^7.22.15, @babel/plugin-transform-react-jsx@npm:^7.22.5": version: 7.23.4 resolution: "@babel/plugin-transform-react-jsx@npm:7.23.4" dependencies: @@ -1627,15 +1628,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-pure-annotations@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.22.5" +"@babel/plugin-transform-react-pure-annotations@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.23.3" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.22.5" "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 18db2e2346d79ebe4a3f85f51fa7757a63a09bc6da7f339e6ce9e7534de68b5165fe7d49ac363dee6ba3f81eb904d44bf9c13653331805f9b236a1d9fec7e018 + checksum: 76287adeab656fb7f39243e5ab6a8c60069cf69fffeebd1566457d56cb2f966366a23bd755d3e369f4d0437459e3b76243df370caa7d7d2287a8560b66c53ca2 languageName: node linkType: hard @@ -1679,8 +1680,8 @@ __metadata: linkType: hard "@babel/plugin-transform-runtime@npm:^7.13.9, @babel/plugin-transform-runtime@npm:^7.23.2": - version: 7.23.4 - resolution: "@babel/plugin-transform-runtime@npm:7.23.4" + version: 7.23.6 + resolution: "@babel/plugin-transform-runtime@npm:7.23.6" dependencies: "@babel/helper-module-imports": "npm:^7.22.15" "@babel/helper-plugin-utils": "npm:^7.22.5" @@ -1690,7 +1691,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6ac29012550cdd10b65ec43fef0c7f43904ec458c43d597f627d8f52807413e57ea94e3986dbace576d734e67c2d09be5e43e77c72567d18f8c4ac5e19844625 + checksum: 94a7ee92f073df53fd8bebf9ed391a95553716077da1c6c3a57f10f042358c938495d55e6b09b4b50544c01f03560c4770c17698e1c24817a15d3668e8231249 languageName: node linkType: hard @@ -1912,11 +1913,11 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.16.5, @babel/preset-env@npm:^7.23.2": - version: 7.23.5 - resolution: "@babel/preset-env@npm:7.23.5" + version: 7.23.6 + resolution: "@babel/preset-env@npm:7.23.6" dependencies: "@babel/compat-data": "npm:^7.23.5" - "@babel/helper-compilation-targets": "npm:^7.22.15" + "@babel/helper-compilation-targets": "npm:^7.23.6" "@babel/helper-plugin-utils": "npm:^7.22.5" "@babel/helper-validator-option": "npm:^7.23.5" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.23.3" @@ -1956,7 +1957,7 @@ __metadata: "@babel/plugin-transform-dynamic-import": "npm:^7.23.4" "@babel/plugin-transform-exponentiation-operator": "npm:^7.23.3" "@babel/plugin-transform-export-namespace-from": "npm:^7.23.4" - "@babel/plugin-transform-for-of": "npm:^7.23.3" + "@babel/plugin-transform-for-of": "npm:^7.23.6" "@babel/plugin-transform-function-name": "npm:^7.23.3" "@babel/plugin-transform-json-strings": "npm:^7.23.4" "@babel/plugin-transform-literals": "npm:^7.23.3" @@ -1997,7 +1998,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2a0e1274dec045186e131c6433659b75492583290e8d41633c616f6bff829cb2e4b2f9a57f556283a54db3bd6aa697911e56a36f607911a29b731c445a5b5a06 + checksum: 5b24d179af52f082d04b9b98cc4777e37bf31a97cef5a91d8917e996dbd75f2f743c88c40f80744cb8529355bb674619d150c0260c32d834aa4067e21d0c8962 languageName: node linkType: hard @@ -2028,18 +2029,18 @@ __metadata: linkType: hard "@babel/preset-react@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/preset-react@npm:7.22.15" + version: 7.23.3 + resolution: "@babel/preset-react@npm:7.23.3" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" "@babel/helper-validator-option": "npm:^7.22.15" - "@babel/plugin-transform-react-display-name": "npm:^7.22.5" + "@babel/plugin-transform-react-display-name": "npm:^7.23.3" "@babel/plugin-transform-react-jsx": "npm:^7.22.15" "@babel/plugin-transform-react-jsx-development": "npm:^7.22.5" - "@babel/plugin-transform-react-pure-annotations": "npm:^7.22.5" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 80940aa494292b7f689d902b76828cb3ab4eaf4e6421107f23388b6ea7316ab25ccd817b766fde5c40787fd92f1cba1f660190bfd71965c902e49b42c9e290c2 + checksum: cecb2493e09fd4ffa5effcef1d06e968386b1bfe077a99834f7e8ef249208274fca62fe5a6b3986ef1c1c3900b2eb409adb528ae1b73dba31397b16f9262e83c languageName: node linkType: hard @@ -2118,11 +2119,11 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.23.5 - resolution: "@babel/runtime@npm:7.23.5" + version: 7.23.6 + resolution: "@babel/runtime@npm:7.23.6" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: ca679cc91bb7e424bc2db87bb58cc3b06ade916b9adb21fbbdc43e54cdaacb3eea201ceba2a0464b11d2eb65b9fe6a6ffcf4d7521fa52994f19be96f1af14788 + checksum: d886954e985ef8e421222f7a2848884d96a752e0020d3078b920dd104e672fdf23bcc6f51a44313a048796319f1ac9d09c2c88ec8cbb4e1f09174bcd3335b9ff languageName: node linkType: hard @@ -2165,13 +2166,13 @@ __metadata: linkType: hard "@babel/types@npm:^7.0.0, @babel/types@npm:^7.11.5, @babel/types@npm:^7.18.9, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.4, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.6.1, @babel/types@npm:^7.7.0, @babel/types@npm:^7.7.2, @babel/types@npm:^7.8.3, @babel/types@npm:^7.9.6": - version: 7.23.5 - resolution: "@babel/types@npm:7.23.5" + version: 7.23.6 + resolution: "@babel/types@npm:7.23.6" dependencies: "@babel/helper-string-parser": "npm:^7.23.4" "@babel/helper-validator-identifier": "npm:^7.22.20" to-fast-properties: "npm:^2.0.0" - checksum: 7dd5e2f59828ed046ad0b06b039df2524a8b728d204affb4fc08da2502b9dd3140b1356b5166515d229dc811539a8b70dcd4bc507e06d62a89f4091a38d0b0fb + checksum: 42cefce8a68bd09bb5828b4764aa5586c53c60128ac2ac012e23858e1c179347a4aac9c66fc577994fbf57595227611c5ec8270bf0cfc94ff033bbfac0550b70 languageName: node linkType: hard @@ -2189,13 +2190,13 @@ __metadata: languageName: node linkType: hard -"@chromaui/addon-visual-tests@npm:^0.0.114": - version: 0.0.114 - resolution: "@chromaui/addon-visual-tests@npm:0.0.114" +"@chromaui/addon-visual-tests@npm:^0.0.124": + version: 0.0.124 + resolution: "@chromaui/addon-visual-tests@npm:0.0.124" dependencies: "@storybook/design-system": "npm:^7.15.15" "@urql/exchange-auth": "npm:^2.1.6" - chromatic: "npm:^7.2.3" + chromatic: "npm:^9.0.0" date-fns: "npm:^2.30.0" filesize: "npm:^10.0.12" jsonfile: "npm:^6.1.0" @@ -2220,7 +2221,7 @@ __metadata: optional: true react-dom: optional: true - checksum: 786858de1712c2b807f2622da42176fe8f2ac9e05bd26afba662fabe179f78033d7dd9e23d71615554c92129b94314cf48fff977069008a15c033500261b7307 + checksum: d4ff22ca45c87f31e5799ed57e540c4669c917c099fe7284b945d2c49faccd4aec9c6d981dc33380c4c9b44e6e10942fdc0cdc29da63eb75346491da2ec346d8 languageName: node linkType: hard @@ -3694,72 +3695,72 @@ __metadata: languageName: node linkType: hard -"@next/env@npm:14.0.3": - version: 14.0.3 - resolution: "@next/env@npm:14.0.3" - checksum: 8688367c22461a075b5406463d16c284cf58e6861418e974fbd5901721da73402988340f8dd72d8e2e41e32ae0b7f24f91bd49029ee6e63424361587165febc5 +"@next/env@npm:14.0.4": + version: 14.0.4 + resolution: "@next/env@npm:14.0.4" + checksum: 59b893d30aea0556379a24f6e4eac830677feb149bd8416b72383ea2600ce194fa22a79b2dd86e0b295c4a8f0702e461f48edaff1ac9173eddef42a4cce7fd98 languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:14.0.3": - version: 14.0.3 - resolution: "@next/swc-darwin-arm64@npm:14.0.3" +"@next/swc-darwin-arm64@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-darwin-arm64@npm:14.0.4" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:14.0.3": - version: 14.0.3 - resolution: "@next/swc-darwin-x64@npm:14.0.3" +"@next/swc-darwin-x64@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-darwin-x64@npm:14.0.4" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:14.0.3": - version: 14.0.3 - resolution: "@next/swc-linux-arm64-gnu@npm:14.0.3" +"@next/swc-linux-arm64-gnu@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-linux-arm64-gnu@npm:14.0.4" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:14.0.3": - version: 14.0.3 - resolution: "@next/swc-linux-arm64-musl@npm:14.0.3" +"@next/swc-linux-arm64-musl@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-linux-arm64-musl@npm:14.0.4" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:14.0.3": - version: 14.0.3 - resolution: "@next/swc-linux-x64-gnu@npm:14.0.3" +"@next/swc-linux-x64-gnu@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-linux-x64-gnu@npm:14.0.4" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:14.0.3": - version: 14.0.3 - resolution: "@next/swc-linux-x64-musl@npm:14.0.3" +"@next/swc-linux-x64-musl@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-linux-x64-musl@npm:14.0.4" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:14.0.3": - version: 14.0.3 - resolution: "@next/swc-win32-arm64-msvc@npm:14.0.3" +"@next/swc-win32-arm64-msvc@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-win32-arm64-msvc@npm:14.0.4" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@next/swc-win32-ia32-msvc@npm:14.0.3": - version: 14.0.3 - resolution: "@next/swc-win32-ia32-msvc@npm:14.0.3" +"@next/swc-win32-ia32-msvc@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-win32-ia32-msvc@npm:14.0.4" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:14.0.3": - version: 14.0.3 - resolution: "@next/swc-win32-x64-msvc@npm:14.0.3" +"@next/swc-win32-x64-msvc@npm:14.0.4": + version: 14.0.4 + resolution: "@next/swc-win32-x64-msvc@npm:14.0.4" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -4288,28 +4289,28 @@ __metadata: linkType: hard "@preact/preset-vite@npm:^2.0.0": - version: 2.5.0 - resolution: "@preact/preset-vite@npm:2.5.0" + version: 2.7.0 + resolution: "@preact/preset-vite@npm:2.7.0" dependencies: - "@babel/plugin-transform-react-jsx": "npm:^7.14.9" - "@babel/plugin-transform-react-jsx-development": "npm:^7.16.7" - "@prefresh/vite": "npm:^2.2.8" + "@babel/plugin-transform-react-jsx": "npm:^7.22.15" + "@babel/plugin-transform-react-jsx-development": "npm:^7.22.5" + "@prefresh/vite": "npm:^2.4.1" "@rollup/pluginutils": "npm:^4.1.1" babel-plugin-transform-hook-names: "npm:^1.0.2" - debug: "npm:^4.3.1" - kolorist: "npm:^1.2.10" - resolve: "npm:^1.20.0" + debug: "npm:^4.3.4" + kolorist: "npm:^1.8.0" + resolve: "npm:^1.22.8" peerDependencies: "@babel/core": 7.x - vite: 2.x || 3.x || 4.x - checksum: 109f2a64717357f76685cd45ec1f709c2ba83e88a8dc485b39dec8cb1178eda765fe929b47d83690cbee1fa6181209f79ba4f7cbec15bcaa1cbb45730af8946a + vite: 2.x || 3.x || 4.x || 5.x + checksum: 95a5a87d804d9f33d98f7c8db93fe27de0d626b2794e745734bcad7a7d89db5a3ad37712feb188f1857d834658de33167f524b3040e8cea48ef422da6a1e74db languageName: node linkType: hard -"@prefresh/babel-plugin@npm:0.5.0": - version: 0.5.0 - resolution: "@prefresh/babel-plugin@npm:0.5.0" - checksum: 71cbfb52f3f4e29c2cc6a3b7adee87ac7d9c074edfe2f87b3f90ab006123572fab6dd679aa125b8a94e4669578f172ef0b1732d0d6c2b2fc158d0c765a87b70f +"@prefresh/babel-plugin@npm:0.5.1": + version: 0.5.1 + resolution: "@prefresh/babel-plugin@npm:0.5.1" + checksum: f9153c210427adbddb4403502f8fa845f6207516de2d162f5d550683a87173dc3eaabc6be2bb4f1206b882cdd23339f2092567be8d09794a3d06a5626942b1e4 languageName: node linkType: hard @@ -4329,19 +4330,19 @@ __metadata: languageName: node linkType: hard -"@prefresh/vite@npm:^2.2.8": - version: 2.4.1 - resolution: "@prefresh/vite@npm:2.4.1" +"@prefresh/vite@npm:^2.4.1": + version: 2.4.4 + resolution: "@prefresh/vite@npm:2.4.4" dependencies: "@babel/core": "npm:^7.22.1" - "@prefresh/babel-plugin": "npm:0.5.0" + "@prefresh/babel-plugin": "npm:0.5.1" "@prefresh/core": "npm:^1.5.1" "@prefresh/utils": "npm:^1.2.0" "@rollup/pluginutils": "npm:^4.2.1" peerDependencies: preact: ^10.4.0 vite: ">=2.0.0" - checksum: 939b4667ed83acfff6a879c8bff78d028b85c74f9e1cde656cf344768b888f6ba6b9927ee5e5efeecfc877fc6e6088c4c252e3f476604aecedaaf83cdfef7c45 + checksum: 31c3fcdcfbfd31921d41f01ca027515d4411f4169c2d3810578bf87b61609d155a1a410c977f098839982adb8da2d88674382cc4a5e55b6fe249a59be60a2483 languageName: node linkType: hard @@ -4534,18 +4535,18 @@ __metadata: linkType: hard "@rollup/pluginutils@npm:^5.0.2": - version: 5.0.4 - resolution: "@rollup/pluginutils@npm:5.0.4" + version: 5.1.0 + resolution: "@rollup/pluginutils@npm:5.1.0" dependencies: "@types/estree": "npm:^1.0.0" estree-walker: "npm:^2.0.2" picomatch: "npm:^2.3.1" peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - checksum: 4114d0dbc22623d33ee38885e90afada4d96fae92e9645693fe438f6313832377ffb6b2809d90e96cc269339a54e2c0c46a739f621d9041050b0b751020f726b + checksum: c7bed15711f942d6fdd3470fef4105b73991f99a478605e13d41888963330a6f9e32be37e6ddb13f012bc7673ff5e54f06f59fd47109436c1c513986a8a7612d languageName: node linkType: hard @@ -4772,8 +4773,8 @@ __metadata: linkType: soft "@storybook/addon-designs@npm:^7.0.4": - version: 7.0.5 - resolution: "@storybook/addon-designs@npm:7.0.5" + version: 7.0.7 + resolution: "@storybook/addon-designs@npm:7.0.7" dependencies: "@figspec/react": "npm:^1.0.0" peerDependencies: @@ -4790,7 +4791,7 @@ __metadata: optional: true react-dom: optional: true - checksum: 01bb51d51c141f644bf1b9a163130acc55f800f0baa2cdbe8bbff6a4e0d323f8c1f5a32448a4aac2b2e05b68cb3ab0eb37c78accc26d37c0876195e0f1217c78 + checksum: 650cb4254a2e12b5c80cc999fb9048efc6ce9bf0d9a29b78a5b5e4fc1e9a67d0b1e5f58ee3fa14780efcb3c896967017d56b11dde989ea1931db409e3ca534f1 languageName: node linkType: hard @@ -6379,7 +6380,7 @@ __metadata: "@babel/preset-react": "npm:^7.22.15" "@babel/preset-typescript": "npm:^7.23.2" "@babel/runtime": "npm:^7.23.2" - "@chromaui/addon-visual-tests": "npm:^0.0.114" + "@chromaui/addon-visual-tests": "npm:^0.0.124" "@emotion/jest": "npm:^11.10.0" "@jest/globals": "npm:^29.3.1" "@nx/workspace": "npm:17.0.2" @@ -6935,8 +6936,8 @@ __metadata: linkType: hard "@sveltejs/vite-plugin-svelte@npm:^2.4.2": - version: 2.4.6 - resolution: "@sveltejs/vite-plugin-svelte@npm:2.4.6" + version: 2.5.3 + resolution: "@sveltejs/vite-plugin-svelte@npm:2.5.3" dependencies: "@sveltejs/vite-plugin-svelte-inspector": "npm:^1.0.4" debug: "npm:^4.3.4" @@ -6946,9 +6947,16 @@ __metadata: svelte-hmr: "npm:^0.15.3" vitefu: "npm:^0.2.4" peerDependencies: - svelte: ^3.54.0 || ^4.0.0 + svelte: ^3.54.0 || ^4.0.0 || ^5.0.0-next.0 vite: ^4.0.0 - checksum: de7d844bf5fc12aa4caf352f5825d58f6747eef68301a492128ea6756c3c193f1d1e1f75975abd4fdfb50f5a4ff45016a94f40c29e1b0121095c63f6bc10e219 + checksum: 613a4ad18a946ddee7b82cae0d892040a9459a5ac5137cbaa91a4b7b67d504409b5dbc02d268136a740b09e42531b7516f80a0f687ca4fe2b0d99e6e483c5d06 + languageName: node + linkType: hard + +"@swc/core-darwin-arm64@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-darwin-arm64@npm:1.3.100" + conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -6959,10 +6967,10 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.91": - version: 1.3.91 - resolution: "@swc/core-darwin-arm64@npm:1.3.91" - conditions: os=darwin & cpu=arm64 +"@swc/core-darwin-x64@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-darwin-x64@npm:1.3.100" + conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -6973,13 +6981,6 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.91": - version: 1.3.91 - resolution: "@swc/core-darwin-x64@npm:1.3.91" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@swc/core-linux-arm-gnueabihf@npm:1.3.82": version: 1.3.82 resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.82" @@ -6987,10 +6988,10 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.91": - version: 1.3.91 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.91" - conditions: os=linux & cpu=arm +"@swc/core-linux-arm64-gnu@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.100" + conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard @@ -7001,10 +7002,10 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.91": - version: 1.3.91 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.91" - conditions: os=linux & cpu=arm64 & libc=glibc +"@swc/core-linux-arm64-musl@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.100" + conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard @@ -7015,10 +7016,10 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.91": - version: 1.3.91 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.91" - conditions: os=linux & cpu=arm64 & libc=musl +"@swc/core-linux-x64-gnu@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.100" + conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard @@ -7029,10 +7030,10 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.91": - version: 1.3.91 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.91" - conditions: os=linux & cpu=x64 & libc=glibc +"@swc/core-linux-x64-musl@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-linux-x64-musl@npm:1.3.100" + conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard @@ -7043,10 +7044,10 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.91": - version: 1.3.91 - resolution: "@swc/core-linux-x64-musl@npm:1.3.91" - conditions: os=linux & cpu=x64 & libc=musl +"@swc/core-win32-arm64-msvc@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.100" + conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -7057,10 +7058,10 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.91": - version: 1.3.91 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.91" - conditions: os=win32 & cpu=arm64 +"@swc/core-win32-ia32-msvc@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.100" + conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -7071,10 +7072,10 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.91": - version: 1.3.91 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.91" - conditions: os=win32 & cpu=ia32 +"@swc/core-win32-x64-msvc@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.100" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -7085,13 +7086,6 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.91": - version: 1.3.91 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.91" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@swc/core@npm:1.3.82": version: 1.3.82 resolution: "@swc/core@npm:1.3.82" @@ -7138,19 +7132,18 @@ __metadata: linkType: hard "@swc/core@npm:^1.3.82": - version: 1.3.91 - resolution: "@swc/core@npm:1.3.91" - dependencies: - "@swc/core-darwin-arm64": "npm:1.3.91" - "@swc/core-darwin-x64": "npm:1.3.91" - "@swc/core-linux-arm-gnueabihf": "npm:1.3.91" - "@swc/core-linux-arm64-gnu": "npm:1.3.91" - "@swc/core-linux-arm64-musl": "npm:1.3.91" - "@swc/core-linux-x64-gnu": "npm:1.3.91" - "@swc/core-linux-x64-musl": "npm:1.3.91" - "@swc/core-win32-arm64-msvc": "npm:1.3.91" - "@swc/core-win32-ia32-msvc": "npm:1.3.91" - "@swc/core-win32-x64-msvc": "npm:1.3.91" + version: 1.3.100 + resolution: "@swc/core@npm:1.3.100" + dependencies: + "@swc/core-darwin-arm64": "npm:1.3.100" + "@swc/core-darwin-x64": "npm:1.3.100" + "@swc/core-linux-arm64-gnu": "npm:1.3.100" + "@swc/core-linux-arm64-musl": "npm:1.3.100" + "@swc/core-linux-x64-gnu": "npm:1.3.100" + "@swc/core-linux-x64-musl": "npm:1.3.100" + "@swc/core-win32-arm64-msvc": "npm:1.3.100" + "@swc/core-win32-ia32-msvc": "npm:1.3.100" + "@swc/core-win32-x64-msvc": "npm:1.3.100" "@swc/counter": "npm:^0.1.1" "@swc/types": "npm:^0.1.5" peerDependencies: @@ -7160,8 +7153,6 @@ __metadata: optional: true "@swc/core-darwin-x64": optional: true - "@swc/core-linux-arm-gnueabihf": - optional: true "@swc/core-linux-arm64-gnu": optional: true "@swc/core-linux-arm64-musl": @@ -7179,7 +7170,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 1b2b2fd400d476a073d69aa4a7eba754f9388c2d72e123a5fb942291c65e5c6a186302c6daafdb68121be999c604de8f01b8ff58126614e0a4e7ca5af6c9cfc7 + checksum: d6e873a7c627765991b18bd8d1b0ce1f1d9cf08c451fe78dbbf28dda14d4301cec2689f6bd85e604847d4a20226fd79c272796fef4f28feaca81a20c0f62e8e9 languageName: node linkType: hard @@ -7277,10 +7268,10 @@ __metadata: linkType: hard "@testing-library/jest-dom@npm:^6.1.2, @testing-library/jest-dom@npm:^6.1.3": - version: 6.1.3 - resolution: "@testing-library/jest-dom@npm:6.1.3" + version: 6.1.5 + resolution: "@testing-library/jest-dom@npm:6.1.5" dependencies: - "@adobe/css-tools": "npm:^4.3.0" + "@adobe/css-tools": "npm:^4.3.1" "@babel/runtime": "npm:^7.9.2" aria-query: "npm:^5.0.0" chalk: "npm:^3.0.0" @@ -7302,7 +7293,7 @@ __metadata: optional: true vitest: optional: true - checksum: 544e01939d3c14a3d44ae2e2bb9fe2a0cb5a9e4992ca2728f41188fb9fb2d56e25f1a2e1c12000be2a94d8da36cb220b24020e1b5c5c4c4bede9058a0d80583d + checksum: f3643a56fcd970b5c7e8fd10faf3c4817d8ab0e74fb1198d726643bdc5ac675ceaac3b0068c5b4fbad254470e8f98ed50028741de875a29ceaa2f854570979c9 languageName: node linkType: hard @@ -7427,15 +7418,15 @@ __metadata: linkType: hard "@types/babel__core@npm:^7, @types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.1.7, @types/babel__core@npm:^7.18.0": - version: 7.20.3 - resolution: "@types/babel__core@npm:7.20.3" + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" dependencies: "@babel/parser": "npm:^7.20.7" "@babel/types": "npm:^7.20.7" "@types/babel__generator": "npm:*" "@types/babel__template": "npm:*" "@types/babel__traverse": "npm:*" - checksum: 5b5f9de4df7f995c2f06f3fdad39b58bc30121d1f2daceb97dd423c9b5dcbd5c464959338824e0dbee0c758bf55c4e9fe46fafd13bd29c1834afad04f291c588 + checksum: bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff languageName: node linkType: hard @@ -7449,16 +7440,16 @@ __metadata: linkType: hard "@types/babel__plugin-transform-runtime@npm:^7": - version: 7.9.4 - resolution: "@types/babel__plugin-transform-runtime@npm:7.9.4" - checksum: efbcbae29f5401733ef1ac70dd5c7c3347cf4ce8d6b886ff57cfef331d29754b5436654ab7a360b1576d9672614b624f4b4081c92222559f6d3b461d3efd7f7c + version: 7.9.5 + resolution: "@types/babel__plugin-transform-runtime@npm:7.9.5" + checksum: 119d8f88188c63eb21bf150d294991d3470e6aa90dc8ec9f634197760af8acc981564e29af9087bfa8ad713b5b5419cae03047cd225fccb9977bb97adf25a871 languageName: node linkType: hard "@types/babel__preset-env@npm:^7": - version: 7.9.4 - resolution: "@types/babel__preset-env@npm:7.9.4" - checksum: 13a0a6800c24070009728aedef26dfa084029f1ea83ec894e127a5def38cce70f2c56515af6fee5e42034362ba2732d264c3804db35f9c90e7f2f89b3bf66a1d + version: 7.9.6 + resolution: "@types/babel__preset-env@npm:7.9.6" + checksum: 639bcf58094530eb8509b302de9c42fc1a9e44e236bcbfd218e987aba7a2c15052c3a1cac7ca7f260255e74beb3b489ff877b9870f8587394457cd3aa9f64934 languageName: node linkType: hard @@ -7513,18 +7504,18 @@ __metadata: linkType: hard "@types/chai@npm:^4": - version: 4.3.6 - resolution: "@types/chai@npm:4.3.6" - checksum: 388af382b11453a69808800479dcaff0323a0d1e15df1619175ebd55b294d716d560058f560ed55434e8846af46f017d7d78544822571f6322d3fac6d5f8a29d + version: 4.3.11 + resolution: "@types/chai@npm:4.3.11" + checksum: 0c216ac4a19bfbf8318bb104d32e50704ee2ffc4b538b976c4326e6638fee121462402caa570662227a2a218810388aadb14bdbd3d3d474ec300b00695db448a languageName: node linkType: hard "@types/color-convert@npm:^2.0.0": - version: 2.0.1 - resolution: "@types/color-convert@npm:2.0.1" + version: 2.0.3 + resolution: "@types/color-convert@npm:2.0.3" dependencies: "@types/color-name": "npm:*" - checksum: 53eed9d08ee8211e881cf30e5950f32202825f4233bf0411bdeacc2908f7b64b79b5c1dd4ed9748c9deeb4334dccd37d415758736863900cd1e63dac18c62b7e + checksum: a5870547660f426cddd76b54e942703e29c3b43fc26b1ba567e10b9707d144b7d8863e0af7affd9c3391815c06582571f43835c71ede270a6c58949155d18b77 languageName: node linkType: hard @@ -7536,11 +7527,11 @@ __metadata: linkType: hard "@types/compression@npm:^1.7.0": - version: 1.7.3 - resolution: "@types/compression@npm:1.7.3" + version: 1.7.5 + resolution: "@types/compression@npm:1.7.5" dependencies: "@types/express": "npm:*" - checksum: c6f7353ddb97193692bf31aad15fb27fd730081643f347d897b0451cd54ab2d2fce1973f1eed40548be1dde79d61f12966d35129e9cfd6392f4f78e8b09d0153 + checksum: 3818f3d10cede38a835b40b80c341eae162aef1691f2e8f81178a77dbc109f04234cf760b6066eaa06ecbb1da143433c00db2fd9999198b76cd5a193e1d09675 languageName: node linkType: hard @@ -7580,11 +7571,11 @@ __metadata: linkType: hard "@types/cross-spawn@npm:^6.0.2": - version: 6.0.3 - resolution: "@types/cross-spawn@npm:6.0.3" + version: 6.0.6 + resolution: "@types/cross-spawn@npm:6.0.6" dependencies: "@types/node": "npm:*" - checksum: a8de3fed3e9cacf8ee50e49139ef40b3fd03ee3c135140bdfc1536c00c38bd26c435be885c5facc97404be2e17b7c088fa588b43d6e974bab20cdb0e53ec6c9c + checksum: e3d476bb6b3a54a8934a97fe6ee4bd13e2e5eb29073929a4be76a52466602ffaea420b20774ffe8503f9fa24f3ae34817e95e7f625689fb0d1c10404f5b2889c languageName: node linkType: hard @@ -7598,9 +7589,9 @@ __metadata: linkType: hard "@types/detect-port@npm:^1.3.0": - version: 1.3.3 - resolution: "@types/detect-port@npm:1.3.3" - checksum: 27c8000e3d41fd1158e2213b31c90b63852299ed66e4604b028a7146519530ab129b8ff867db02b06a32f61e7764f8d5aff0c44c5f543ce2b4b035e5968b62e1 + version: 1.3.5 + resolution: "@types/detect-port@npm:1.3.5" + checksum: d8dd9d0e643106a2263f530b24ffdc3409d9391c50fc5e404018ba3633947aa3777db7fb094aeb0f49a13cc998aae8889747ad9edaa02b13a2de2385f37106ef languageName: node linkType: hard @@ -7611,17 +7602,17 @@ __metadata: languageName: node linkType: hard -"@types/doctrine@npm:^0.0.8": - version: 0.0.8 - resolution: "@types/doctrine@npm:0.0.8" - checksum: ca4cab4a94526ec3579c3f10a027298028d34b4c092e4b6791afb37a5f6899208ee1e91bc9542541f31d6d3ba3d1a70408deaa1f105c22c86d23e3a87c59a43c +"@types/doctrine@npm:^0.0.9": + version: 0.0.9 + resolution: "@types/doctrine@npm:0.0.9" + checksum: cdaca493f13c321cf0cacd1973efc0ae74569633145d9e6fc1128f32217a6968c33bea1f858275239fe90c98f3be57ec8f452b416a9ff48b8e8c1098b20fa51c languageName: node linkType: hard "@types/ejs@npm:^3.1.1": - version: 3.1.3 - resolution: "@types/ejs@npm:3.1.3" - checksum: 8366861c80749a0231f58a258f1fc9ab43992e6b74d157d1fd199f273f2f7d9f016f64d61a6d899a77d86d49c2a4a569215deda899dcf2dbfef85e12d26b9715 + version: 3.1.5 + resolution: "@types/ejs@npm:3.1.5" + checksum: 13d994cf0323d7e0ad33b9384914ccd3b4cd8bf282eced3649b1621b66ee7c784ac2d120a9d7b1f43d6f873518248fb8c3221b06a649b847860b9c2389a0b0ed languageName: node linkType: hard @@ -7695,14 +7686,14 @@ __metadata: linkType: hard "@types/express@npm:*, @types/express@npm:^4.17.11, @types/express@npm:^4.17.13, @types/express@npm:^4.7.0": - version: 4.17.18 - resolution: "@types/express@npm:4.17.18" + version: 4.17.21 + resolution: "@types/express@npm:4.17.21" dependencies: "@types/body-parser": "npm:*" "@types/express-serve-static-core": "npm:^4.17.33" "@types/qs": "npm:*" "@types/serve-static": "npm:*" - checksum: 6babf7bce6abdd45138f7eac058c8705dbd3a2857208c8c78d863fcd8b3b212c6569fba1f748137e5743287f82dfecf9bc4d78d31d290afff2d37700a0cdb6fe + checksum: 12e562c4571da50c7d239e117e688dc434db1bac8be55613294762f84fd77fbd0658ccd553c7d3ab02408f385bc93980992369dd30e2ecd2c68c358e6af8fabf languageName: node linkType: hard @@ -7714,12 +7705,12 @@ __metadata: linkType: hard "@types/fs-extra@npm:^11.0.1": - version: 11.0.2 - resolution: "@types/fs-extra@npm:11.0.2" + version: 11.0.4 + resolution: "@types/fs-extra@npm:11.0.4" dependencies: "@types/jsonfile": "npm:*" "@types/node": "npm:*" - checksum: 8ab94988a3376169e3daf0a546b5312039c19a7f1fb9c5a171f7602c9398155a90c0cef81ab95273e4c8c5962ab4ec280f0a1ba8e874bab2f26ca94b282c14a3 + checksum: 9e34f9b24ea464f3c0b18c3f8a82aefc36dc524cc720fc2b886e5465abc66486ff4e439ea3fb2c0acebf91f6d3f74e514f9983b1f02d4243706bdbb7511796ad languageName: node linkType: hard @@ -7820,11 +7811,11 @@ __metadata: linkType: hard "@types/ip@npm:^1.1.0": - version: 1.1.1 - resolution: "@types/ip@npm:1.1.1" + version: 1.1.3 + resolution: "@types/ip@npm:1.1.3" dependencies: "@types/node": "npm:*" - checksum: cabb35bfb4255805e282f8b4b26c0cdca04a0d05016fe5c0a676aabadd1065c461bff5fdf4fca01041c7589cca10202865b1e6b02e505e569928b139353d7dfc + checksum: af576e33830196be01b71c48ad5f83380a1c51d62f394a5601e8c2a5b8b31cf6dc8fe71ac39c38d806bcf1d6f1c5c8205c129eca6b6d168c0df7ab3722df23b9 languageName: node linkType: hard @@ -7854,11 +7845,11 @@ __metadata: linkType: hard "@types/jest-specific-snapshot@npm:^0.5.6": - version: 0.5.7 - resolution: "@types/jest-specific-snapshot@npm:0.5.7" + version: 0.5.9 + resolution: "@types/jest-specific-snapshot@npm:0.5.9" dependencies: "@types/jest": "npm:*" - checksum: ad18f3c6e55a533f9d9b04ae99dfdae6e6d0b5c936f348b5280325ced1c35ccf94ce629a71c3116785bb041d0192c22630d38ed30f13849fe9310935e6224fb8 + checksum: b987c7951532aa6399ef043468c2c4fae6345c1434261f03b2c501c91581f997569aafed56c67c6cc77ac7d907db003d05ae4314e6b43f6d137ea539d83484d5 languageName: node linkType: hard @@ -7883,9 +7874,9 @@ __metadata: linkType: hard "@types/js-yaml@npm:^4.0.5": - version: 4.0.6 - resolution: "@types/js-yaml@npm:4.0.6" - checksum: e2e3ccdde9979973ea0afc357e753ddcd1a586cfccfeafcf5c17ab1ea3314c73faf7555d0af4da237c0c32c29cd4bc0f6a659a5e5085fe3f1fdc94d20fb19683 + version: 4.0.9 + resolution: "@types/js-yaml@npm:4.0.9" + checksum: 24de857aa8d61526bbfbbaa383aa538283ad17363fcd5bb5148e2c7f604547db36646440e739d78241ed008702a8920665d1add5618687b6743858fae00da211 languageName: node linkType: hard @@ -7943,19 +7934,19 @@ __metadata: linkType: hard "@types/loader-utils@npm:^2.0.5": - version: 2.0.5 - resolution: "@types/loader-utils@npm:2.0.5" + version: 2.0.6 + resolution: "@types/loader-utils@npm:2.0.6" dependencies: "@types/node": "npm:*" "@types/webpack": "npm:^4" - checksum: cea54ca7c1b220ddaf281dd5420bea52ceef3150e6fe0708c4a5793a1ac61c478355178c23479eb84c1d2667235156dc2b13dbc377646ed08055f3d552354e4f + checksum: df178981861ef09f0618eae4aa865b81ed3f2c4ab1359711fe6077236f57dee31fb94f1de9bd156d0a3d252eb95da01c424f9fa822aeaf7e3057bc082bb4bda7 languageName: node linkType: hard "@types/lodash@npm:^4.14.167": - version: 4.14.199 - resolution: "@types/lodash@npm:4.14.199" - checksum: a7168a0a2a7c9e8801aa95f92b02f9d664ee938a5186d73f77a3a8447f475bbadedc1f7f746ffd2530ae34069d232bf25f4f4414077f0d81c71489e34e59173e + version: 4.14.202 + resolution: "@types/lodash@npm:4.14.202" + checksum: 6064d43c8f454170841bd67c8266cc9069d9e570a72ca63f06bceb484cb4a3ee60c9c1f305c1b9e3a87826049fd41124b8ef265c4dd08b00f6766609c7fe9973 languageName: node linkType: hard @@ -8004,11 +7995,11 @@ __metadata: linkType: hard "@types/mock-fs@npm:^4.13.1": - version: 4.13.2 - resolution: "@types/mock-fs@npm:4.13.2" + version: 4.13.4 + resolution: "@types/mock-fs@npm:4.13.4" dependencies: "@types/node": "npm:*" - checksum: c589d8ba674e9d2279c6321841ee5b4e9ba3138a8790cbe2a61ea1da1e9d254188ef9f1a2f66539b225aaebcd56f746551f4723de24afc0c430d9e7c68344a7b + checksum: 687c8e36d91031529924fd89011b7a87167ea33a1b92a9d845f0feb1a5157f168412c62ee308e57b9a71fd938197b4c71ca1784eb44e8a7cbdd816011ffd7f65 languageName: node linkType: hard @@ -8020,12 +8011,12 @@ __metadata: linkType: hard "@types/node-fetch@npm:^2.5.7, @types/node-fetch@npm:^2.6.4": - version: 2.6.6 - resolution: "@types/node-fetch@npm:2.6.6" + version: 2.6.9 + resolution: "@types/node-fetch@npm:2.6.9" dependencies: "@types/node": "npm:*" form-data: "npm:^4.0.0" - checksum: fce52a0b65f4cb9e5059c9b3250682c8f0f0c2ce1d1a18b5bbc61b5fbf5f320b76d42b4dfa5c0567fe0704bdf0c0397527008efcb0749859aaaff8c51b6ed6c1 + checksum: b15b6d518ea4dd4a21cf328e9df0a88b2e5b76f3455ddfeb9063a3b97087c50b15ab195a869dadbbeb09d08dcc915557fb6a4f72b4fe79ee42e215fce3d9b0db languageName: node linkType: hard @@ -8039,9 +8030,11 @@ __metadata: linkType: hard "@types/node@npm:^18.0.0": - version: 18.18.4 - resolution: "@types/node@npm:18.18.4" - checksum: 17891f8b8fd107813eaea0dce58d2008173f3c90df4f5998da3d01d6b225e9908922156ac83240b0230d3813f1a29b5f7e065a2aa993285af062e3a3779f88dd + version: 18.19.3 + resolution: "@types/node@npm:18.19.3" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 3ed943d06e9dff70a3da793f794f1192cd93b0ababdb9f07425a05680f17cfce649cbc46734265f6fbe52fd9f277496d3a4da26c013f1193a0345f2420ea6cd0 languageName: node linkType: hard @@ -8053,9 +8046,11 @@ __metadata: linkType: hard "@types/npmlog@npm:^4.1.2": - version: 4.1.4 - resolution: "@types/npmlog@npm:4.1.4" - checksum: 5670c38db51f2c4a5da05657920d7597bf9da00615920b42a001fde9011f05ab1e8ec8cbc671abb47915028e3e0ace5c3d981c23684c202a00bf518f16ece01d + version: 4.1.6 + resolution: "@types/npmlog@npm:4.1.6" + dependencies: + "@types/node": "npm:*" + checksum: 432bfb14b29a383e095e099b2ddff4266051b43bc6c7ea242d10194acde2f1181a1e967bbb543f07979dd77743ead1954abac1128ec78cc2b86a5f7ea841ddcb languageName: node linkType: hard @@ -8067,9 +8062,9 @@ __metadata: linkType: hard "@types/picomatch@npm:^2.3.0": - version: 2.3.1 - resolution: "@types/picomatch@npm:2.3.1" - checksum: 6ab42daf80d315495586bc7f276698395c47e28479cbc79c88ff14c81fd1fb38a76dee9c609dfe591036986b923198f1dab438865ce3583f1d380cac09870b3f + version: 2.3.3 + resolution: "@types/picomatch@npm:2.3.3" + checksum: 5ad7f891eb3e16e8eb1f51615f0b755bc44ac5dff5a1e2513229f307f72e226c917c6b9a829a97134cedbec727036f885890a55b1975b6e3f381b6545b962c4d languageName: node linkType: hard @@ -8088,9 +8083,9 @@ __metadata: linkType: hard "@types/pretty-hrtime@npm:^1.0.0": - version: 1.0.1 - resolution: "@types/pretty-hrtime@npm:1.0.1" - checksum: e990110a3626e987319092c5149d5ea244785b83fbbd8e62605714ec1fa4317a3524ae0b6381cdc2ca92619d9a451b3fe9ff4085c42826f5398e3380d3031bff + version: 1.0.3 + resolution: "@types/pretty-hrtime@npm:1.0.3" + checksum: e4c22475c588be982b398dee9ac0b05b21078bc26581819290a4901c5b269bcaa04cae0e61e012d412e811b0897c9dab316db064208914df2f0ed0960fc5306b languageName: node linkType: hard @@ -8102,12 +8097,12 @@ __metadata: linkType: hard "@types/prompts@npm:^2.0.9": - version: 2.4.5 - resolution: "@types/prompts@npm:2.4.5" + version: 2.4.9 + resolution: "@types/prompts@npm:2.4.9" dependencies: "@types/node": "npm:*" kleur: "npm:^3.0.3" - checksum: a2a3e802508db79e4c6bfcab09ddb37e93279152fd127a7f4a8c1e683ee6f5429ce86f70c58eb94b76b19d98e4b6ca53bbb0b375d47b0b8c4ad4ecf178227258 + checksum: 22fe0da6807681c85e88ba283184f4be4c8a95c744ea12a638865c98c4e0c22e7f733542f6b0f1fbca02245cdc3fe84feacf9c9adf4ddd8bc98a337fd679d8d2 languageName: node linkType: hard @@ -8126,9 +8121,9 @@ __metadata: linkType: hard "@types/qs@npm:*, @types/qs@npm:^6, @types/qs@npm:^6.9.5": - version: 6.9.8 - resolution: "@types/qs@npm:6.9.8" - checksum: 336358c279818ecedc0b4f9b29fd5052ff6e05dba3f10bad4534a4624819408d0b4710a4cdf8b58dff948dbdb1ca95a00e237189505ef1abfce0e6341eb18022 + version: 6.9.10 + resolution: "@types/qs@npm:6.9.10" + checksum: 6be12e5f062d1b41eb037d59bf9cb65bc9410cedd5e6da832dfd7c8e2b3f4c91e81c9b90b51811140770e5052c6c4e8361181bd9437ddcd4515dc128b7c00353 languageName: node linkType: hard @@ -8167,22 +8162,22 @@ __metadata: linkType: hard "@types/react-transition-group@npm:^4": - version: 4.4.9 - resolution: "@types/react-transition-group@npm:4.4.9" + version: 4.4.10 + resolution: "@types/react-transition-group@npm:4.4.10" dependencies: "@types/react": "npm:*" - checksum: 279cd319202f7ec24ecad174dffd19fd161250bc438bf3c62951f467093e5664a0c895b185976bf45f55b68ec901e520924216eb8abafe934b66f55337319ff5 + checksum: 3eb9bca143abc21eb781aa5cb1bded0c9335689d515bf0513fb8e63217b7a8122c6a323ecd5644a06938727e1f467ee061d8df1c93b68825a80ff1b47ab777a2 languageName: node linkType: hard "@types/react@npm:*, @types/react@npm:>=16, @types/react@npm:^18.0.37": - version: 18.2.39 - resolution: "@types/react@npm:18.2.39" + version: 18.2.43 + resolution: "@types/react@npm:18.2.43" dependencies: "@types/prop-types": "npm:*" "@types/scheduler": "npm:*" csstype: "npm:^3.0.2" - checksum: e91a5419d7615ab4fcaa7cb3ad2bd372093676e86c082748ab36ac394d3ed560070482d092a5488f74d6b1d913369e4dabf6eb287debed4d70cd3eb7dc135542 + checksum: 10477a50fbd3c0cc5b8a2ade679f442717f68fb27c8460b2aa1d3256cd18c48f742bbe5b9ee37a8c4c5f832ffa37b3a23c09fd96dd880a8e3182d8929c05e803 languageName: node linkType: hard @@ -8227,9 +8222,9 @@ __metadata: linkType: hard "@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4": - version: 7.5.3 - resolution: "@types/semver@npm:7.5.3" - checksum: 1dedcf5f50a5a345e817fdf1273a14d0c57de80eb1d47bf3f17563062be53a2c99b78755a8c88c794a03757f9cd05da61b2849bf109e1b71e30fca895529c2b0 + version: 7.5.6 + resolution: "@types/semver@npm:7.5.6" + checksum: 196dc32db5f68cbcde2e6a42bb4aa5cbb100fa2b7bd9c8c82faaaf3e03fbe063e205dbb4f03c7cdf53da2edb70a0d34c9f2e601b54281b377eb8dc1743226acd languageName: node linkType: hard @@ -8253,13 +8248,13 @@ __metadata: linkType: hard "@types/serve-static@npm:*, @types/serve-static@npm:^1.13.10, @types/serve-static@npm:^1.13.8": - version: 1.15.3 - resolution: "@types/serve-static@npm:1.15.3" + version: 1.15.5 + resolution: "@types/serve-static@npm:1.15.5" dependencies: "@types/http-errors": "npm:*" "@types/mime": "npm:*" "@types/node": "npm:*" - checksum: 0aaaf8fc1c0c8f96a4786928d5d79b0fff2f31e8c3b571c84cd2711129456045a9c02fa76054fb6c76f5770e2f6dbbc3b4be008e9af68bd6ce8739cb6d66c89b + checksum: 811d1a2f7e74a872195e7a013bcd87a2fb1edf07eaedcb9dcfd20c1eb4bc56ad4ea0d52141c13192c91ccda7c8aeb8a530d8a7e60b9c27f5990d7e62e0fecb03 languageName: node linkType: hard @@ -8333,9 +8328,9 @@ __metadata: linkType: hard "@types/tmp@npm:^0.2.3": - version: 0.2.4 - resolution: "@types/tmp@npm:0.2.4" - checksum: 26e19913170193420eddbe5bf83e873ef82a1af002d0871659e0bcd2af41fcc29818bba2571784a452c73094e50a7db1f1a89a6399c103bb037a095cfe67e63d + version: 0.2.6 + resolution: "@types/tmp@npm:0.2.6" + checksum: a11bfa2cd8eaa6c5d62f62a3569192d7a2c28efdc5c17af0b0551db85816b2afc8156f3ca15ac76f0b142ae1403f04f44279871424233a1f3390b2e5fc828cd0 languageName: node linkType: hard @@ -8370,9 +8365,9 @@ __metadata: linkType: hard "@types/util-deprecate@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/util-deprecate@npm:1.0.0" - checksum: 3f5e23aad8c9427db0ca2ef0c5b05377c11f62ad5710d2b0daf75b55339d7b646007090d5d21f007bdcb32cc62f52d918f977129639686e1856248217bb73663 + version: 1.0.3 + resolution: "@types/util-deprecate@npm:1.0.3" + checksum: 901ae94b51c1a5a7e3c88afddf9396ba25c0d0f699ca89ea0e48f121d5880c3996e037f0c83465e8a75263a27bf29347e1a584d51152c637194614a2c15f7742 languageName: node linkType: hard @@ -8384,27 +8379,27 @@ __metadata: linkType: hard "@types/uuid@npm:^9.0.1": - version: 9.0.4 - resolution: "@types/uuid@npm:9.0.4" - checksum: 3f713a67a56af20ecdfcbc31f29f7182a8aea51f1120d75daa76bb346973e014ae875c27cdd455bd0812a498330abad4ecbc1b65e1b4c507bb897fcda130f079 + version: 9.0.7 + resolution: "@types/uuid@npm:9.0.7" + checksum: b329ebd4f9d1d8e08d4f2cc211be4922d70d1149f73d5772630e4a3acfb5170c6d37b3d7a39a0412f1a56e86e8a844c7f297c798b082f90380608bf766688787 languageName: node linkType: hard "@types/webpack-env@npm:^1.16.0, @types/webpack-env@npm:^1.18.0": - version: 1.18.2 - resolution: "@types/webpack-env@npm:1.18.2" - checksum: 62a7d7e98fa462cde425c1bf9e70a84f61c522f0171a8eee493d3c26df8b0e7deff233e430c0be6bc654dded0c33f657f47d000f7e797522182817c8565d5a80 + version: 1.18.4 + resolution: "@types/webpack-env@npm:1.18.4" + checksum: 3fa77dbff0ed71685404576b0a1cf74587567fe2ee1cfd11d56d6eefcab7a61e4c9ead0eced264e289d2cf0fc74296dbd55ed6c95774fe0fd6264d156c5a59f0 languageName: node linkType: hard "@types/webpack-hot-middleware@npm:^2.25.6": - version: 2.25.7 - resolution: "@types/webpack-hot-middleware@npm:2.25.7" + version: 2.25.9 + resolution: "@types/webpack-hot-middleware@npm:2.25.9" dependencies: "@types/connect": "npm:*" tapable: "npm:^2.2.0" webpack: "npm:^5" - checksum: 5f33f415fe1eb5334aea422b42a85ae45cc1d6fc69078a7b1c58879a0bf757172c232c9c8253d90c554f1378492cbf7f4fa40b390b50892cc13b6f77e733b869 + checksum: 612d234149a2a04422650ba7ab886a699d052b18103d78384a2dc589f93b7fa6fda6046a516eede4d1c7aaeb04402cc6fd4ced17295fb6edb496d958e64c4dfd languageName: node linkType: hard @@ -8420,11 +8415,11 @@ __metadata: linkType: hard "@types/webpack-virtual-modules@npm:^0.1.1": - version: 0.1.2 - resolution: "@types/webpack-virtual-modules@npm:0.1.2" + version: 0.1.3 + resolution: "@types/webpack-virtual-modules@npm:0.1.3" dependencies: "@types/webpack": "npm:^4" - checksum: ad3a17f798aa2bb449140f13e251952f5fe5bf8313ced93d3eae7fb82184d82985eb18a27bfae2bd2385051d8affc675d117079f8402d9645bc4376d2a73d991 + checksum: 3ead19e20df409433de7f5244d3c581ba050c691fe0aee0014fac4d9307366791e07c1db5c8beee0bd5010d4e06fd9b600dc9efc27e0aaf7d8daa9ec0714abf6 languageName: node linkType: hard @@ -8443,11 +8438,11 @@ __metadata: linkType: hard "@types/ws@npm:^8, @types/ws@npm:^8.5.5": - version: 8.5.6 - resolution: "@types/ws@npm:8.5.6" + version: 8.5.10 + resolution: "@types/ws@npm:8.5.10" dependencies: "@types/node": "npm:*" - checksum: 9050eb44c23caba404f106c9ab5210aae0c5cc85b5a7ed0116d0ee1c5b4e499325cffe406b6bc71ee2d4f456e9498037d95a984a06a841a64ef58a6dd79731f4 + checksum: e9af279b984c4a04ab53295a40aa95c3e9685f04888df5c6920860d1dd073fcc57c7bd33578a04b285b2c655a0b52258d34bee0a20569dca8defb8393e1e5d29 languageName: node linkType: hard @@ -8662,12 +8657,12 @@ __metadata: linkType: hard "@vitejs/plugin-vue@npm:^4.0.0": - version: 4.4.0 - resolution: "@vitejs/plugin-vue@npm:4.4.0" + version: 4.5.2 + resolution: "@vitejs/plugin-vue@npm:4.5.2" peerDependencies: - vite: ^4.0.0 + vite: ^4.0.0 || ^5.0.0 vue: ^3.2.25 - checksum: a430fbc504e2d14848b94866d52c8d5044ec216b1bf9304f53e3d3f3045da634db9c986e8ed2b0605fcc94e19fe67dc9c7e10971bd5aab444ca4167a71cd197d + checksum: dd024b9ee2eda3174e197bda2b42df30b594d1a7f50d20b4b0de01c5a130bd99b84452e8a8d597ade50f89106025346a56f7abbf63c560e82fe97223589d2514 languageName: node linkType: hard @@ -8773,27 +8768,15 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-core@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/compiler-core@npm:3.3.4" - dependencies: - "@babel/parser": "npm:^7.21.3" - "@vue/shared": "npm:3.3.4" - estree-walker: "npm:^2.0.2" - source-map-js: "npm:^1.0.2" - checksum: 941dded05d656c26f6d142fda6a8b2557b2b9918e4755f88a660fee941ae04b800c69900cfe12c2c2ee045c7d9248b0fdc36398ca938395a2107b366f7f062e0 - languageName: node - linkType: hard - -"@vue/compiler-core@npm:3.3.9, @vue/compiler-core@npm:^3.3.4": - version: 3.3.9 - resolution: "@vue/compiler-core@npm:3.3.9" +"@vue/compiler-core@npm:3.3.11, @vue/compiler-core@npm:^3.3.4": + version: 3.3.11 + resolution: "@vue/compiler-core@npm:3.3.11" dependencies: - "@babel/parser": "npm:^7.23.3" - "@vue/shared": "npm:3.3.9" + "@babel/parser": "npm:^7.23.5" + "@vue/shared": "npm:3.3.11" estree-walker: "npm:^2.0.2" source-map-js: "npm:^1.0.2" - checksum: b7114c299f765a6df27c9e3cfdd3372644d941aece10518207b4b402778f7be6180da7532f5dc2ae1627e569f81067d27b112787e195692cb5faee3fad254192 + checksum: 576aa8075bd9f4e91e54fdc9fe2d66941a3c81e12c59e1473c2596f57eb5b8fa7327e94d557d7d5da331a8577f9347990ebd807ebd3b28b2684451c23de7f15d languageName: node linkType: hard @@ -8807,23 +8790,13 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-dom@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/compiler-dom@npm:3.3.4" +"@vue/compiler-dom@npm:3.3.11, @vue/compiler-dom@npm:^3.2.0, @vue/compiler-dom@npm:^3.3.0": + version: 3.3.11 + resolution: "@vue/compiler-dom@npm:3.3.11" dependencies: - "@vue/compiler-core": "npm:3.3.4" - "@vue/shared": "npm:3.3.4" - checksum: 4f9f0fca076dbc799e4d3d6cca5e1fdba8da9b09b496c754c3d096d5e7ee7003f99f22e51fe541ade14bc2cf1ff821f6e76d9fc15ac5bb3e0d333810acd6976e - languageName: node - linkType: hard - -"@vue/compiler-dom@npm:3.3.9, @vue/compiler-dom@npm:^3.2.0, @vue/compiler-dom@npm:^3.3.0": - version: 3.3.9 - resolution: "@vue/compiler-dom@npm:3.3.9" - dependencies: - "@vue/compiler-core": "npm:3.3.9" - "@vue/shared": "npm:3.3.9" - checksum: cc7b731400ddcbd2f7ffc5a64e5de6af42f1c647d178f7a48d63579c5e5cf2a3f39acafeefada6bd82cfa4af6724bd7363faef0522eb2a4c2dec8304e1b36c50 + "@vue/compiler-core": "npm:3.3.11" + "@vue/shared": "npm:3.3.11" + checksum: 1f57289fc6c2e8ea9da65631601f1b329e4b46917d8e05aaa0b3f93e657d7440355f60c2116577276f3447d2b4bb7adebed451a95e7647614ab946319d7e142d languageName: node linkType: hard @@ -8853,39 +8826,21 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-sfc@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/compiler-sfc@npm:3.3.4" +"@vue/compiler-sfc@npm:3.3.11, @vue/compiler-sfc@npm:^3.2.0, @vue/compiler-sfc@npm:^3.2.33": + version: 3.3.11 + resolution: "@vue/compiler-sfc@npm:3.3.11" dependencies: - "@babel/parser": "npm:^7.20.15" - "@vue/compiler-core": "npm:3.3.4" - "@vue/compiler-dom": "npm:3.3.4" - "@vue/compiler-ssr": "npm:3.3.4" - "@vue/reactivity-transform": "npm:3.3.4" - "@vue/shared": "npm:3.3.4" - estree-walker: "npm:^2.0.2" - magic-string: "npm:^0.30.0" - postcss: "npm:^8.1.10" - source-map-js: "npm:^1.0.2" - checksum: 21e76ff9f12156d91f97b34001708ccfe1017b44f7217b6b25f0acd5762a5bc013782f69f7b7a50eb0c15b8bc395ddf76f23ca51ff20ceac273fcd600576f697 - languageName: node - linkType: hard - -"@vue/compiler-sfc@npm:^3.2.0, @vue/compiler-sfc@npm:^3.2.33": - version: 3.3.9 - resolution: "@vue/compiler-sfc@npm:3.3.9" - dependencies: - "@babel/parser": "npm:^7.23.3" - "@vue/compiler-core": "npm:3.3.9" - "@vue/compiler-dom": "npm:3.3.9" - "@vue/compiler-ssr": "npm:3.3.9" - "@vue/reactivity-transform": "npm:3.3.9" - "@vue/shared": "npm:3.3.9" + "@babel/parser": "npm:^7.23.5" + "@vue/compiler-core": "npm:3.3.11" + "@vue/compiler-dom": "npm:3.3.11" + "@vue/compiler-ssr": "npm:3.3.11" + "@vue/reactivity-transform": "npm:3.3.11" + "@vue/shared": "npm:3.3.11" estree-walker: "npm:^2.0.2" magic-string: "npm:^0.30.5" - postcss: "npm:^8.4.31" + postcss: "npm:^8.4.32" source-map-js: "npm:^1.0.2" - checksum: a4f346c285268c1b30e5f837f78d0fef995e9bf553c2806d5be62aa66cc12ec6d44db5066433f14c9183f22f0310eeb9f5e872e865eb84638accd0ff7e3c8c76 + checksum: ffd9ef3bc71628d53e95c4ed6a33730962fe519cfdbe784b7ac5ae4090f59207577a8591fcb8671ee1fd57859c57147c519268db590f470a747c9cc9b465b138 languageName: node linkType: hard @@ -8899,23 +8854,13 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-ssr@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/compiler-ssr@npm:3.3.4" +"@vue/compiler-ssr@npm:3.3.11": + version: 3.3.11 + resolution: "@vue/compiler-ssr@npm:3.3.11" dependencies: - "@vue/compiler-dom": "npm:3.3.4" - "@vue/shared": "npm:3.3.4" - checksum: b4c103b21618cefca6ff7a870f6a52576a021fc9a34ce2f826492e5a3a729b74e28d6cfe87b6db72d5f741d2b7e2dce7772d264115d9a3e5222954ccc24a8492 - languageName: node - linkType: hard - -"@vue/compiler-ssr@npm:3.3.9": - version: 3.3.9 - resolution: "@vue/compiler-ssr@npm:3.3.9" - dependencies: - "@vue/compiler-dom": "npm:3.3.9" - "@vue/shared": "npm:3.3.9" - checksum: 119b67a3c2a739842f9a4b4b0385986549262586ce4d9eb8bb5d308ace80f7f3a854ef302982bfd3951dc359779b25758a6e53ddaf9e2b1c95b50cd3a7e9ae58 + "@vue/compiler-dom": "npm:3.3.11" + "@vue/shared": "npm:3.3.11" + checksum: 79380e310cdeea792fc369ab9204819a7b61e5765707760d534762013b95180dc9d23cd41b398cf127f9430f10ee030e4154faf27e67cf05737a4566fec003c4 languageName: node linkType: hard @@ -8940,29 +8885,16 @@ __metadata: languageName: node linkType: hard -"@vue/reactivity-transform@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/reactivity-transform@npm:3.3.4" - dependencies: - "@babel/parser": "npm:^7.20.15" - "@vue/compiler-core": "npm:3.3.4" - "@vue/shared": "npm:3.3.4" - estree-walker: "npm:^2.0.2" - magic-string: "npm:^0.30.0" - checksum: a8e25f66e272b21b38523c361171bd5fa4f0d4787c5be09b47cc7ef3911c511544cea58dd3cebea83783700431bc870e239cc66dff8bb379f52b3709a3afb046 - languageName: node - linkType: hard - -"@vue/reactivity-transform@npm:3.3.9": - version: 3.3.9 - resolution: "@vue/reactivity-transform@npm:3.3.9" +"@vue/reactivity-transform@npm:3.3.11": + version: 3.3.11 + resolution: "@vue/reactivity-transform@npm:3.3.11" dependencies: - "@babel/parser": "npm:^7.23.3" - "@vue/compiler-core": "npm:3.3.9" - "@vue/shared": "npm:3.3.9" + "@babel/parser": "npm:^7.23.5" + "@vue/compiler-core": "npm:3.3.11" + "@vue/shared": "npm:3.3.11" estree-walker: "npm:^2.0.2" magic-string: "npm:^0.30.5" - checksum: 43053f09229f1994179491a15bdd13515601074e640781e5419007ee32c68060f0fb13e7c60ee533af91dd7da0b38442bf736fa74bf5597b1181174c11c2642d + checksum: 146629504aadd79980be64c7d4b8358a1dd0ef4f4f42cbcde6b1e6dff2b7a849a3f6ab50be1216e636d53d14889830cfa329a2a14711849a263af09a81d6ccd9 languageName: node linkType: hard @@ -8975,12 +8907,12 @@ __metadata: languageName: node linkType: hard -"@vue/reactivity@npm:3.3.4, @vue/reactivity@npm:^3.3.0": - version: 3.3.4 - resolution: "@vue/reactivity@npm:3.3.4" +"@vue/reactivity@npm:3.3.11, @vue/reactivity@npm:^3.3.0": + version: 3.3.11 + resolution: "@vue/reactivity@npm:3.3.11" dependencies: - "@vue/shared": "npm:3.3.4" - checksum: d6d0f7ab03f2d1bf688fe5ba96bbf9b3473151b30f293c22a77589f5ce6f438cb32cd8c89ab9c36fb0f8c83fd312a9df5c69cb1fb6dbba9bfead11aad1d99529 + "@vue/shared": "npm:3.3.11" + checksum: 3897d5fb1130f92fe17b99b1edca96c03ce4e0b28b10945d9cfcdfac589c9ad9623ab8bac06837c34ca6916613b77d596839e224f0e43bf5a05fdff1f01b499a languageName: node linkType: hard @@ -8994,13 +8926,13 @@ __metadata: languageName: node linkType: hard -"@vue/runtime-core@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/runtime-core@npm:3.3.4" +"@vue/runtime-core@npm:3.3.11": + version: 3.3.11 + resolution: "@vue/runtime-core@npm:3.3.11" dependencies: - "@vue/reactivity": "npm:3.3.4" - "@vue/shared": "npm:3.3.4" - checksum: 1ef9d5adc7e1bdf08809bc64d6215b8bbb10ddcefa726203ff235046e991d2df5d731f843717f2195a86db8a665f7d3686b3d76c3bb63500beb38de20397ca41 + "@vue/reactivity": "npm:3.3.11" + "@vue/shared": "npm:3.3.11" + checksum: c4befb9fd12c9fd34bd0b10e67a3cf48af0d6d6d288e29f529aa1262322cee4f18250b5ac9e9ff613f49b4cf1383e2018ae767fafd91ed389577ff0a688865b6 languageName: node linkType: hard @@ -9015,26 +8947,26 @@ __metadata: languageName: node linkType: hard -"@vue/runtime-dom@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/runtime-dom@npm:3.3.4" +"@vue/runtime-dom@npm:3.3.11": + version: 3.3.11 + resolution: "@vue/runtime-dom@npm:3.3.11" dependencies: - "@vue/runtime-core": "npm:3.3.4" - "@vue/shared": "npm:3.3.4" - csstype: "npm:^3.1.1" - checksum: 02bbaa587cec0c0b0158c08914043373d7dfc153f0eccd977ecbe924858d625adb0aabb2dce34646ebe810a5417309d926f266631a61d66ba5c7687de21ec02a + "@vue/runtime-core": "npm:3.3.11" + "@vue/shared": "npm:3.3.11" + csstype: "npm:^3.1.2" + checksum: 13bfe4a2f3a829cc40bf142af5bc7018a8b19a12f3741de92ceb732635301cdf450cb5bf70cfc8f7e7922c364ea2d7ae5498fbdafe40e5a967860d37ffb47afc languageName: node linkType: hard -"@vue/server-renderer@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/server-renderer@npm:3.3.4" +"@vue/server-renderer@npm:3.3.11": + version: 3.3.11 + resolution: "@vue/server-renderer@npm:3.3.11" dependencies: - "@vue/compiler-ssr": "npm:3.3.4" - "@vue/shared": "npm:3.3.4" + "@vue/compiler-ssr": "npm:3.3.11" + "@vue/shared": "npm:3.3.11" peerDependencies: - vue: 3.3.4 - checksum: 0c6b6689efa113908390644df2766492d64a71d63884d8dcf49d9b1cec2d9a33348ea2d4398892619d0ddad3419d2c8f1d61f9bdd7dde3776cc803a4c9438b59 + vue: 3.3.11 + checksum: 0450d3b4b26f702e4c71fc13e1a5c189b7c6c4c0b15293219267b7527ebf17ed56acbb881321896ccabbf02697efd7059530a9171935014d55816978ceb315a6 languageName: node linkType: hard @@ -9045,17 +8977,10 @@ __metadata: languageName: node linkType: hard -"@vue/shared@npm:3.3.4": - version: 3.3.4 - resolution: "@vue/shared@npm:3.3.4" - checksum: 01a337004476988a576e1681eed219031db6d8671b60cbf46f75ea55e9fa1e01f5cdf550f380fe4045e037c0ac837faed6961420cd03f6f69036518fff110bb9 - languageName: node - linkType: hard - -"@vue/shared@npm:3.3.9, @vue/shared@npm:^3.3.0": - version: 3.3.9 - resolution: "@vue/shared@npm:3.3.9" - checksum: abf10852baf4009e838c5c12893a67e4dbb4369ec6be2892ce6294a4115d2087ecd619783bbafe048d154da48dd28763fc6c53114ab490ced45e573b2d69dbc9 +"@vue/shared@npm:3.3.11, @vue/shared@npm:^3.3.0": + version: 3.3.11 + resolution: "@vue/shared@npm:3.3.11" + checksum: 164b904ed6c5a6e9b0d4c6ac38a214770943d5b1196e8af7193f7f9f099706ffd7627e40c95a9b4de430ff7d3523a713c9236ef6e8ca48dd6865606efb7208f5 languageName: node linkType: hard @@ -9416,12 +9341,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.0.0, acorn@npm:^8.1.0, acorn@npm:^8.10.0, acorn@npm:^8.4.1, acorn@npm:^8.6.0, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.10.0 - resolution: "acorn@npm:8.10.0" +"acorn@npm:^8.0.0, acorn@npm:^8.1.0, acorn@npm:^8.10.0, acorn@npm:^8.11.2, acorn@npm:^8.4.1, acorn@npm:^8.6.0, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.11.2 + resolution: "acorn@npm:8.11.2" bin: acorn: bin/acorn - checksum: deaeebfbea6e40f6c0e1070e9b0e16e76ba484de54cbd735914d1d41d19169a450de8630b7a3a0c4e271a3b0c0b075a3427ad1a40d8a69f8747c0e8cb02ee3e2 + checksum: a3ed76c761b75ec54b1ec3068fb7f113a182e95aea7f322f65098c2958d232e3d211cb6dac35ff9c647024b63714bc528a26d54a925d1fef2c25585b4c8e4017 languageName: node linkType: hard @@ -9817,7 +9742,7 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.6": +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.7": version: 3.1.7 resolution: "array-includes@npm:3.1.7" dependencies: @@ -9860,7 +9785,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.findlastindex@npm:^1.2.2": +"array.prototype.findlastindex@npm:^1.2.3": version: 1.2.3 resolution: "array.prototype.findlastindex@npm:1.2.3" dependencies: @@ -9873,7 +9798,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.flat@npm:^1.3.1": +"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": version: 1.3.2 resolution: "array.prototype.flat@npm:1.3.2" dependencies: @@ -9885,7 +9810,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.flatmap@npm:^1.3.1": +"array.prototype.flatmap@npm:^1.3.1, array.prototype.flatmap@npm:^1.3.2": version: 1.3.2 resolution: "array.prototype.flatmap@npm:1.3.2" dependencies: @@ -10140,17 +10065,7 @@ __metadata: languageName: node linkType: hard -"axios@npm:^0.27.2": - version: 0.27.2 - resolution: "axios@npm:0.27.2" - dependencies: - follow-redirects: "npm:^1.14.9" - form-data: "npm:^4.0.0" - checksum: 76d673d2a90629944b44d6f345f01e58e9174690f635115d5ffd4aca495d99bcd8f95c590d5ccb473513f5ebc1d1a6e8934580d0c57cdd0498c3a101313ef771 - languageName: node - linkType: hard - -"axios@npm:^1.5.1": +"axios@npm:^1.5.1, axios@npm:^1.6.1": version: 1.6.2 resolution: "axios@npm:1.6.2" dependencies: @@ -11105,7 +11020,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.14.5, browserslist@npm:^4.21.10, browserslist@npm:^4.21.5, browserslist@npm:^4.21.9, browserslist@npm:^4.22.1": +"browserslist@npm:^4.14.5, browserslist@npm:^4.21.10, browserslist@npm:^4.21.5, browserslist@npm:^4.22.1, browserslist@npm:^4.22.2": version: 4.22.2 resolution: "browserslist@npm:4.22.2" dependencies: @@ -11633,14 +11548,14 @@ __metadata: languageName: node linkType: hard -"chromatic@npm:^7.2.3": - version: 7.6.0 - resolution: "chromatic@npm:7.6.0" +"chromatic@npm:^9.0.0": + version: 9.1.0 + resolution: "chromatic@npm:9.1.0" bin: chroma: dist/bin.js chromatic: dist/bin.js chromatic-cli: dist/bin.js - checksum: 5ed93689daea8ad22fe3a81e7238357933063905cf5f3acb5a2ec54dbcb5f9ae18c0c66b8bc2d7ed0c909144d9620864f97db70427d10f46de6c7960f6612b2b + checksum: 27d0ff5ef993024301f31d137e9774b051de908d48dcd461c33b51c92e5e7b57cd062eaddafcd02f1c2a98cfe5d5ef26b7fcdf77b76df94e357171074a23b950 languageName: node linkType: hard @@ -11997,7 +11912,7 @@ __metadata: languageName: node linkType: hard -"colorette@npm:^2.0.10, colorette@npm:^2.0.19, colorette@npm:^2.0.20": +"colorette@npm:^2.0.10, colorette@npm:^2.0.20": version: 2.0.20 resolution: "colorette@npm:2.0.20" checksum: e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 @@ -12671,10 +12586,10 @@ __metadata: languageName: node linkType: hard -"csstype@npm:^3.0.2, csstype@npm:^3.1.1": - version: 3.1.2 - resolution: "csstype@npm:3.1.2" - checksum: 32c038af259897c807ac738d9eab16b3d86747c72b09d5c740978e06f067f9b7b1737e1b75e407c7ab1fe1543dc95f20e202b4786aeb1b8d3bdf5d5ce655e6c6 +"csstype@npm:^3.0.2, csstype@npm:^3.1.2": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 languageName: node linkType: hard @@ -12686,8 +12601,8 @@ __metadata: linkType: hard "danger@npm:^11.2.6": - version: 11.3.0 - resolution: "danger@npm:11.3.0" + version: 11.3.1 + resolution: "danger@npm:11.3.1" dependencies: "@gitbeaker/core": "npm:^35.8.1" "@gitbeaker/node": "npm:^35.8.1" @@ -12737,7 +12652,7 @@ __metadata: danger-process: distribution/commands/danger-process.js danger-reset-status: distribution/commands/danger-reset-status.js danger-runner: distribution/commands/danger-runner.js - checksum: 568a6c2bdbef663c9d1fca36651939b39bf7a158867bdf955054bdc0f16533658aaf258ab9bc1c1bf517609b6eabe776e3d24a0364903a5a38bf67d8d690b252 + checksum: 0a2a7655817200fb3488645787268842ba6c8fadbf6fa8c3e6d13718564a6f915ef1f70020686b9b8b94a050fb80eaeb8b6abf0f8525162ddd739da5ad51d432 languageName: node linkType: hard @@ -12784,7 +12699,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:~4.3.1, debug@npm:~4.3.2": +"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:~4.3.1, debug@npm:~4.3.2": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -13965,11 +13880,11 @@ __metadata: linkType: hard "envinfo@npm:^7.7.3": - version: 7.10.0 - resolution: "envinfo@npm:7.10.0" + version: 7.11.0 + resolution: "envinfo@npm:7.11.0" bin: envinfo: dist/cli.js - checksum: ebc7792fbedca72bc829913abe0c2a3384b883903012f97b56085afd4e83d26f7dd0652403fedd99cd3e1c93d4fb0706f5d2c3dc06ac6a1eda348280a06a9dcf + checksum: 4415b9c1ca32cdf92ce126136b9965eeac2efd6ab7e5278c06e8f86d048edad87ef4084710313a6d938ef9bc084ab17e1caee16339d731d230f3e2650f3aaf4d languageName: node linkType: hard @@ -14378,7 +14293,7 @@ __metadata: languageName: node linkType: hard -"eslint-import-resolver-node@npm:^0.3.7": +"eslint-import-resolver-node@npm:^0.3.9": version: 0.3.9 resolution: "eslint-import-resolver-node@npm:0.3.9" dependencies: @@ -14441,29 +14356,29 @@ __metadata: linkType: hard "eslint-plugin-import@npm:^2.23.4, eslint-plugin-import@npm:^2.26.0": - version: 2.28.1 - resolution: "eslint-plugin-import@npm:2.28.1" + version: 2.29.0 + resolution: "eslint-plugin-import@npm:2.29.0" dependencies: - array-includes: "npm:^3.1.6" - array.prototype.findlastindex: "npm:^1.2.2" - array.prototype.flat: "npm:^1.3.1" - array.prototype.flatmap: "npm:^1.3.1" + array-includes: "npm:^3.1.7" + array.prototype.findlastindex: "npm:^1.2.3" + array.prototype.flat: "npm:^1.3.2" + array.prototype.flatmap: "npm:^1.3.2" debug: "npm:^3.2.7" doctrine: "npm:^2.1.0" - eslint-import-resolver-node: "npm:^0.3.7" + eslint-import-resolver-node: "npm:^0.3.9" eslint-module-utils: "npm:^2.8.0" - has: "npm:^1.0.3" - is-core-module: "npm:^2.13.0" + hasown: "npm:^2.0.0" + is-core-module: "npm:^2.13.1" is-glob: "npm:^4.0.3" minimatch: "npm:^3.1.2" - object.fromentries: "npm:^2.0.6" - object.groupby: "npm:^1.0.0" - object.values: "npm:^1.1.6" + object.fromentries: "npm:^2.0.7" + object.groupby: "npm:^1.0.1" + object.values: "npm:^1.1.7" semver: "npm:^6.3.1" tsconfig-paths: "npm:^3.14.2" peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 5a29554d56f26d2bfb4d4f20b99aad6664c64812ef9655d5b3f089bbf70f340a34dabbe0b8ffa38bd9f1eabf828200acc5a56634842ddb83dd1e4ba01ad6d38d + checksum: 761a4e1fbc2cd318e62350bed4c448f8b11ed83091d6bb7776f096556363a09debd9922b39fd2714c895edc9aaea82e08e684eb632283f880c58a91e4bae6733 languageName: node linkType: hard @@ -15587,7 +15502,7 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.14.9, follow-redirects@npm:^1.15.0": +"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.0, follow-redirects@npm:^1.15.0": version: 1.15.3 resolution: "follow-redirects@npm:1.15.3" peerDependenciesMeta: @@ -16075,9 +15990,9 @@ __metadata: linkType: hard "get-npm-tarball-url@npm:^2.0.3": - version: 2.0.3 - resolution: "get-npm-tarball-url@npm:2.0.3" - checksum: fdf7a830d2602dd3d86285f412c9b2984ffe6ce854e1854e9548ea2b2f09f663b83791a31703552f8c72266d67c72e94c70f8d50a886fe5179d2f07a383660d8 + version: 2.1.0 + resolution: "get-npm-tarball-url@npm:2.1.0" + checksum: af779fa5b9c89a3deaf9640630a23368f5ba6a028a1179872aaf581a59485fb2c2c6bd9b94670de228cfc5f23600c89a01e594879085f7fb4dddf820a63105b8 languageName: node linkType: hard @@ -16154,19 +16069,19 @@ __metadata: linkType: hard "giget@npm:^1.0.0": - version: 1.1.2 - resolution: "giget@npm:1.1.2" + version: 1.1.3 + resolution: "giget@npm:1.1.3" dependencies: - colorette: "npm:^2.0.19" + colorette: "npm:^2.0.20" defu: "npm:^6.1.2" - https-proxy-agent: "npm:^5.0.1" + https-proxy-agent: "npm:^7.0.2" mri: "npm:^1.2.0" - node-fetch-native: "npm:^1.0.2" - pathe: "npm:^1.1.0" - tar: "npm:^6.1.13" + node-fetch-native: "npm:^1.4.0" + pathe: "npm:^1.1.1" + tar: "npm:^6.2.0" bin: giget: dist/cli.mjs - checksum: fc76d1042df3027c468f74320f7333ce3f99a84b7cd701683cffc386a35c53699a5c32b816b635f3cdf12956c3e85df4592ffbb31f01b8da6a8d943521c9e2e4 + checksum: 7f3d3628f4c488ab543e2edcd93b6899b2486a0afc2caab748ad65714d631f5cdfc9cf00404ed21b390c070cf5214037dffb593cd667c54b97adc6a1c657cdf9 languageName: node linkType: hard @@ -16457,7 +16372,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.3, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -16909,8 +16824,8 @@ __metadata: linkType: hard "html-webpack-plugin@npm:^5.5.0": - version: 5.5.3 - resolution: "html-webpack-plugin@npm:5.5.3" + version: 5.5.4 + resolution: "html-webpack-plugin@npm:5.5.4" dependencies: "@types/html-minifier-terser": "npm:^6.0.0" html-minifier-terser: "npm:^6.0.2" @@ -16919,7 +16834,7 @@ __metadata: tapable: "npm:^2.0.0" peerDependencies: webpack: ^5.20.0 - checksum: 7ba0d0f87d08f5c4c51f821842d736ec1762940bc39798932528adaec1e9cca8f52944987b88789007f5706d15110edbdfa30df445d61c6628b02ebe163c4f42 + checksum: fd7b9882a7b44b78711d3489fd571308372a915924c2e619ad8a08d9100a17ae8899a3d3bb1934c326d45bf942330a693206088ba80f292dd6574d9e33c67a43 languageName: node linkType: hard @@ -17121,7 +17036,7 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:7.0.2, https-proxy-agent@npm:^7.0.1": +"https-proxy-agent@npm:7.0.2, https-proxy-agent@npm:^7.0.1, https-proxy-agent@npm:^7.0.2": version: 7.0.2 resolution: "https-proxy-agent@npm:7.0.2" dependencies: @@ -17610,12 +17525,12 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": - version: 2.13.0 - resolution: "is-core-module@npm:2.13.0" +"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": + version: 2.13.1 + resolution: "is-core-module@npm:2.13.1" dependencies: - has: "npm:^1.0.3" - checksum: a8e7f46f8cefd7c9f6f5d54f3dbf1c40bf79467b6612d6023421ec6ea7e8e4c22593b3963ff7a3f770db07bc19fccbe7987a550a8bc1a4d6ec4115db5e4c5dca + hasown: "npm:^2.0.0" + checksum: 2cba9903aaa52718f11c4896dabc189bab980870aae86a62dc0d5cedb546896770ee946fb14c84b7adf0735f5eaea4277243f1b95f5cefa90054f92fbcac2518 languageName: node linkType: hard @@ -18610,8 +18525,8 @@ __metadata: linkType: hard "jest-preset-angular@npm:^13.0.1": - version: 13.1.2 - resolution: "jest-preset-angular@npm:13.1.2" + version: 13.1.4 + resolution: "jest-preset-angular@npm:13.1.4" dependencies: bs-logger: "npm:^0.2.6" esbuild: "npm:>=0.13.8" @@ -18621,16 +18536,16 @@ __metadata: pretty-format: "npm:^29.0.0" ts-jest: "npm:^29.0.0" peerDependencies: - "@angular-devkit/build-angular": ">=13.0.0 <17.0.0" - "@angular/compiler-cli": ">=13.0.0 <17.0.0" - "@angular/core": ">=13.0.0 <17.0.0" - "@angular/platform-browser-dynamic": ">=13.0.0 <17.0.0" + "@angular-devkit/build-angular": ">=13.0.0 <18.0.0" + "@angular/compiler-cli": ">=13.0.0 <18.0.0" + "@angular/core": ">=13.0.0 <18.0.0" + "@angular/platform-browser-dynamic": ">=13.0.0 <18.0.0" jest: ^29.0.0 typescript: ">=4.4" dependenciesMeta: esbuild: optional: true - checksum: be7efa5cca7c63d8c6df3d835eef4eff730e6f2f783cb1517e9c0060a9fc9d3d57aa2892d0704dab7226ecc80956717c98af8e6d0b8a2415dee07e88c72e34bf + checksum: a609deb98237505dfd9d81b8c41c385acd7a13af76609bb417144c4258cb2be2da7e87a46d74bfea36086fdfaa9a6b21a661452bbd9fb0a5552f514710e350fb languageName: node linkType: hard @@ -18894,16 +18809,16 @@ __metadata: languageName: node linkType: hard -"joi@npm:^17.7.0": - version: 17.10.2 - resolution: "joi@npm:17.10.2" +"joi@npm:^17.11.0": + version: 17.11.0 + resolution: "joi@npm:17.11.0" dependencies: "@hapi/hoek": "npm:^9.0.0" "@hapi/topo": "npm:^5.0.0" "@sideway/address": "npm:^4.1.3" "@sideway/formula": "npm:^3.0.1" "@sideway/pinpoint": "npm:^2.0.0" - checksum: 5999a68f38a24de0b98850e137bbf4134e6dd8de29faa5893d7836f3e3aeb76ed5b2dd4daf836b87d2681aa9dfb6a5531c586d4d361dca9721d9ad0567be6b48 + checksum: c41c86fe772828b88fbdbcaef2e41235ccbb107c22523a377f9a2fd39829f203213f37a352589f49d9a9b38bf1c645846defede8b81d8c1f3123117c1a600010 languageName: node linkType: hard @@ -19397,7 +19312,7 @@ __metadata: languageName: node linkType: hard -"kolorist@npm:^1.2.10": +"kolorist@npm:^1.8.0": version: 1.8.0 resolution: "kolorist@npm:1.8.0" checksum: 73075db44a692bf6c34a649f3b4b3aea4993b84f6b754cbf7a8577e7c7db44c0bad87752bd23b0ce533f49de2244ce2ce03b7b1b667a85ae170a94782cc50f9b @@ -21244,7 +21159,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.7": +"minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 @@ -21508,12 +21423,12 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.6": - version: 3.3.6 - resolution: "nanoid@npm:3.3.6" +"nanoid@npm:^3.3.6, nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" bin: nanoid: bin/nanoid.cjs - checksum: 606b355960d0fcbe3d27924c4c52ef7d47d3b57208808ece73279420d91469b01ec1dce10fae512b6d4a8c5a5432b352b228336a8b2202a6ea68e67fa348e2ee + checksum: e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 languageName: node linkType: hard @@ -21594,22 +21509,23 @@ __metadata: linkType: hard "next@npm:^14.0.2": - version: 14.0.3 - resolution: "next@npm:14.0.3" - dependencies: - "@next/env": "npm:14.0.3" - "@next/swc-darwin-arm64": "npm:14.0.3" - "@next/swc-darwin-x64": "npm:14.0.3" - "@next/swc-linux-arm64-gnu": "npm:14.0.3" - "@next/swc-linux-arm64-musl": "npm:14.0.3" - "@next/swc-linux-x64-gnu": "npm:14.0.3" - "@next/swc-linux-x64-musl": "npm:14.0.3" - "@next/swc-win32-arm64-msvc": "npm:14.0.3" - "@next/swc-win32-ia32-msvc": "npm:14.0.3" - "@next/swc-win32-x64-msvc": "npm:14.0.3" + version: 14.0.4 + resolution: "next@npm:14.0.4" + dependencies: + "@next/env": "npm:14.0.4" + "@next/swc-darwin-arm64": "npm:14.0.4" + "@next/swc-darwin-x64": "npm:14.0.4" + "@next/swc-linux-arm64-gnu": "npm:14.0.4" + "@next/swc-linux-arm64-musl": "npm:14.0.4" + "@next/swc-linux-x64-gnu": "npm:14.0.4" + "@next/swc-linux-x64-musl": "npm:14.0.4" + "@next/swc-win32-arm64-msvc": "npm:14.0.4" + "@next/swc-win32-ia32-msvc": "npm:14.0.4" + "@next/swc-win32-x64-msvc": "npm:14.0.4" "@swc/helpers": "npm:0.5.2" busboy: "npm:1.6.0" caniuse-lite: "npm:^1.0.30001406" + graceful-fs: "npm:^4.2.11" postcss: "npm:8.4.31" styled-jsx: "npm:5.1.1" watchpack: "npm:2.4.0" @@ -21644,7 +21560,7 @@ __metadata: optional: true bin: next: dist/bin/next - checksum: 73aa3d5dd7b65b53ef68fa7723a7a98536482a69ae2d56e7b335194168f00b2851397bbdfe490b53dba2c70dfb8ad0150035fab4c762d6bc331e884487c4ff07 + checksum: e6c829fd473d8c3605b2b62d15e1bf41e9d90cf59a2c213b4adeadff2846999bc9a653ffef18f6aa13cc9f5d6de02469c222acf5a4184901a4690a4504bd468f languageName: node linkType: hard @@ -21733,10 +21649,10 @@ __metadata: languageName: node linkType: hard -"node-fetch-native@npm:^1.0.2": - version: 1.4.0 - resolution: "node-fetch-native@npm:1.4.0" - checksum: 2ced63b4b4cef8d05e004c5489614811ae836ae17a07e548af7a29fb22c5ea2512ea24423720f1ac9b47787d701044321d4921e3da4fe8dbcc882a8f67a1d218 +"node-fetch-native@npm:^1.4.0": + version: 1.4.1 + resolution: "node-fetch-native@npm:1.4.1" + checksum: ab298a42ebf3b1b6c6a8cbc53d8ba703895f55171ed743b0828c2a87d461642d8053143864915a69d41cc01013db86406da105fff6c0a05a00d8caf5c279549c languageName: node linkType: hard @@ -22283,7 +22199,7 @@ __metadata: languageName: node linkType: hard -"object.fromentries@npm:^2.0.6": +"object.fromentries@npm:^2.0.6, object.fromentries@npm:^2.0.7": version: 2.0.7 resolution: "object.fromentries@npm:2.0.7" dependencies: @@ -22294,7 +22210,7 @@ __metadata: languageName: node linkType: hard -"object.groupby@npm:^1.0.0": +"object.groupby@npm:^1.0.1": version: 1.0.1 resolution: "object.groupby@npm:1.0.1" dependencies: @@ -22325,7 +22241,7 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.1.6": +"object.values@npm:^1.1.6, object.values@npm:^1.1.7": version: 1.1.7 resolution: "object.values@npm:1.1.7" dependencies: @@ -23024,7 +22940,7 @@ __metadata: languageName: node linkType: hard -"pathe@npm:^1.1.0": +"pathe@npm:^1.1.1": version: 1.1.1 resolution: "pathe@npm:1.1.1" checksum: 3ae5a0529c3415d91c3ac9133f52cffea54a0dd46892fe059f4b80faf36fd207957d4594bdc87043b65d0761b1e5728f81f46bafff3b5302da4e2e48889b8c0e @@ -23459,7 +23375,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.31, postcss@npm:^8.1.10, postcss@npm:^8.2.14, postcss@npm:^8.4.21, postcss@npm:^8.4.23, postcss@npm:^8.4.27, postcss@npm:^8.4.31": +"postcss@npm:8.4.31": version: 8.4.31 resolution: "postcss@npm:8.4.31" dependencies: @@ -23480,10 +23396,21 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.2.14, postcss@npm:^8.4.21, postcss@npm:^8.4.23, postcss@npm:^8.4.27, postcss@npm:^8.4.32": + version: 8.4.32 + resolution: "postcss@npm:8.4.32" + dependencies: + nanoid: "npm:^3.3.7" + picocolors: "npm:^1.0.0" + source-map-js: "npm:^1.0.2" + checksum: 39308a9195fa34d4dbdd7b58a896cff0c7809f84f7a4ac1b95b68ca86c9138a395addff33075668ed3983d41b90aac05754c445237a9365eb1c3a5602ebd03ad + languageName: node + linkType: hard + "preact@npm:^10.5.13": - version: 10.18.1 - resolution: "preact@npm:10.18.1" - checksum: b157c46d5dbece48cf0f31b0e24d27c989ea019e77730427b4c7549953da7de015b34f13f93d0034966f033738ec582829da918c28d084bbb31d59f320f56aa0 + version: 10.19.3 + resolution: "preact@npm:10.19.3" + checksum: 251b237cc6fc8c39e4dc6cd65df1964b9622ec6005ccdaa57ea43171ba3e1e0f1e3386bbade370b2ce26ea480ceb73ea36b40e635e35e017e2d8614a233e1bed languageName: node linkType: hard @@ -24182,20 +24109,20 @@ __metadata: linkType: hard "react-docgen@npm:^7.0.0": - version: 7.0.0 - resolution: "react-docgen@npm:7.0.0" + version: 7.0.1 + resolution: "react-docgen@npm:7.0.1" dependencies: "@babel/core": "npm:^7.18.9" "@babel/traverse": "npm:^7.18.9" "@babel/types": "npm:^7.18.9" "@types/babel__core": "npm:^7.18.0" "@types/babel__traverse": "npm:^7.18.0" - "@types/doctrine": "npm:^0.0.8" + "@types/doctrine": "npm:^0.0.9" "@types/resolve": "npm:^1.20.2" doctrine: "npm:^3.0.0" resolve: "npm:^1.22.1" strip-indent: "npm:^4.0.0" - checksum: 79678d01644e6519450f847c77fa554a7a80ae3a5ff81b1482d1458caa064cf3be88597051375ba7a90921980feb8586378e1560146d64c41d0e569465315575 + checksum: 870c1193211f14497bf7a96137f96840dc058842ca75ff7251d91e88c3c71d7a41d5f1a124cc1b53bfbf1f2b6b58bfccc4dd6e22592814a5155d3894953274be languageName: node linkType: hard @@ -25325,7 +25252,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:1.22.8, resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.13.1, resolve@npm:^1.14.2, resolve@npm:^1.15.1, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4, resolve@npm:^1.4.0": +"resolve@npm:1.22.8, resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.13.1, resolve@npm:^1.14.2, resolve@npm:^1.15.1, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4, resolve@npm:^1.22.8, resolve@npm:^1.4.0": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -25351,7 +25278,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A1.22.8#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.12.0#optional!builtin, resolve@patch:resolve@npm%3A^1.13.1#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.15.1#optional!builtin, resolve@patch:resolve@npm%3A^1.17.0#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A^1.4.0#optional!builtin": +"resolve@patch:resolve@npm%3A1.22.8#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.12.0#optional!builtin, resolve@patch:resolve@npm%3A^1.13.1#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.15.1#optional!builtin, resolve@patch:resolve@npm%3A^1.17.0#optional!builtin, resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin, resolve@patch:resolve@npm%3A^1.4.0#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -25562,7 +25489,7 @@ __metadata: languageName: node linkType: hard -"rxjs@npm:7.8.1, rxjs@npm:^7.8.0, rxjs@npm:^7.8.1": +"rxjs@npm:7.8.1, rxjs@npm:^7.8.1": version: 7.8.1 resolution: "rxjs@npm:7.8.1" dependencies: @@ -26503,7 +26430,7 @@ __metadata: languageName: node linkType: hard -"source-map@npm:0.7.4, source-map@npm:^0.7.3": +"source-map@npm:0.7.4, source-map@npm:^0.7.3, source-map@npm:^0.7.4": version: 0.7.4 resolution: "source-map@npm:0.7.4" checksum: dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc @@ -27276,8 +27203,8 @@ __metadata: linkType: hard "svelte@npm:^4.0.0": - version: 4.2.1 - resolution: "svelte@npm:4.2.1" + version: 4.2.8 + resolution: "svelte@npm:4.2.8" dependencies: "@ampproject/remapping": "npm:^2.2.1" "@jridgewell/sourcemap-codec": "npm:^1.4.15" @@ -27290,15 +27217,15 @@ __metadata: estree-walker: "npm:^3.0.3" is-reference: "npm:^3.0.1" locate-character: "npm:^3.0.0" - magic-string: "npm:^0.30.0" + magic-string: "npm:^0.30.4" periscopic: "npm:^3.1.0" - checksum: 5262dfceb99809a7ed01addc684351ac297dc2967b49dc99563af646c113c33a1535fe6ea5b9af4c6986880b6803ac0ca4fecb15a65bb18b641929c400d5dead + checksum: 13673a6211cc38224398f4bda8e0ba93edfb1338aa4f28f614a31ac31b152479038761cfc57f1668554f5ab70effcd8023dcf549d75e7b2a7ae703d213b7e9da languageName: node linkType: hard "svelte@npm:^5.0.0-next.15, svelte@npm:^5.0.0-next.16": - version: 5.0.0-next.19 - resolution: "svelte@npm:5.0.0-next.19" + version: 5.0.0-next.22 + resolution: "svelte@npm:5.0.0-next.22" dependencies: "@ampproject/remapping": "npm:^2.2.1" "@jridgewell/sourcemap-codec": "npm:^1.4.15" @@ -27312,7 +27239,7 @@ __metadata: locate-character: "npm:^3.0.0" magic-string: "npm:^0.30.4" zimmerframe: "npm:^1.1.0" - checksum: 2efc415d3a51cd9094349aa0295e728ea74e10bad17dedd167b1fae64de8ee5d46cbd27b5cfb152e4af641e1326e233dfeb918d8fa0541f65cf149b85d00419a + checksum: 121c0ffe925f3393581742a970d58588ac642f15d17062af16f46b4729064d48214ee158261fbcdff78b6ee143f4da361d3e696507c8c7c31580e2040e366539 languageName: node linkType: hard @@ -27432,7 +27359,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.1.13, tar@npm:^6.1.2": +"tar@npm:^6.1.11, tar@npm:^6.1.2, tar@npm:^6.2.0": version: 6.2.0 resolution: "tar@npm:6.2.0" dependencies: @@ -27704,9 +27631,9 @@ __metadata: linkType: hard "tocbot@npm:^4.20.1": - version: 4.21.1 - resolution: "tocbot@npm:4.21.1" - checksum: 9a3efd1e7555281872102d54bc8c683b030d341bb2d94b5e6b0fd9dea7545648ae20d5fc887c3943e073471276ad330e720b08a622cf0bf758ee668bc860f5b5 + version: 4.23.0 + resolution: "tocbot@npm:4.23.0" + checksum: e112c569913600b98a451fc114ba293c7365e529b6b22c34a4ba244a22a359d79aaafb0c752022b1c9a6e2d04692e436700c0b95d534da9ee31c0f310e96761b languageName: node linkType: hard @@ -27859,17 +27786,18 @@ __metadata: linkType: hard "ts-loader@npm:^9.2.8": - version: 9.4.4 - resolution: "ts-loader@npm:9.4.4" + version: 9.5.1 + resolution: "ts-loader@npm:9.5.1" dependencies: chalk: "npm:^4.1.0" enhanced-resolve: "npm:^5.0.0" micromatch: "npm:^4.0.0" semver: "npm:^7.3.4" + source-map: "npm:^0.7.4" peerDependencies: typescript: "*" webpack: ^5.0.0 - checksum: 11dba0651d7177eba9af38c43c79a28898ffcdfe7e73079fe48716dd93ca6634d3140dbbbc3ac34907be564be2429f0299ebdc7b58ce09482fad54333ccf611c + checksum: 7dc1e3e5d3d032b6ef27836032f02c57077dfbcdf5817cbbc16b7b8609e7ed1d0ec157a03eaac07960161d8ad4a9e030c4d6722fe33540cf6ee75156c7f9c33d languageName: node linkType: hard @@ -27881,8 +27809,8 @@ __metadata: linkType: hard "ts-node@npm:^10.9.1": - version: 10.9.1 - resolution: "ts-node@npm:10.9.1" + version: 10.9.2 + resolution: "ts-node@npm:10.9.2" dependencies: "@cspotcode/source-map-support": "npm:^0.8.0" "@tsconfig/node10": "npm:^1.0.7" @@ -27914,7 +27842,7 @@ __metadata: ts-node-script: dist/bin-script.js ts-node-transpile-only: dist/bin-transpile.js ts-script: dist/bin-script-deprecated.js - checksum: 95187932fb83f3901e22546bd2feeac7d2feb4f412f42ac3a595f049a23e8dcf70516dffb51866391228ea2dbcfaea039e250fb2bb334d48a86ab2b6aea0ae2d + checksum: 5f29938489f96982a25ba650b64218e83a3357d76f7bede80195c65ab44ad279c8357264639b7abdd5d7e75fc269a83daa0e9c62fd8637a3def67254ecc9ddc2 languageName: node linkType: hard @@ -28145,12 +28073,12 @@ __metadata: linkType: hard "typescript@npm:^5.0.3, typescript@npm:^5.3.2": - version: 5.3.2 - resolution: "typescript@npm:5.3.2" + version: 5.3.3 + resolution: "typescript@npm:5.3.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: d7dbe1fbe19039e36a65468ea64b5d338c976550394ba576b7af9c68ed40c0bc5d12ecce390e4b94b287a09a71bd3229f19c2d5680611f35b7c53a3898791159 + checksum: e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f languageName: node linkType: hard @@ -28165,12 +28093,12 @@ __metadata: linkType: hard "typescript@patch:typescript@npm%3A^5.0.3#optional!builtin, typescript@patch:typescript@npm%3A^5.3.2#optional!builtin": - version: 5.3.2 - resolution: "typescript@patch:typescript@npm%3A5.3.2#optional!builtin::version=5.3.2&hash=29ae49" + version: 5.3.3 + resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin::version=5.3.3&hash=29ae49" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: c81b9bd20c6dbe90fa43e876c586021447f2b47baede9fa542b1f56715835c043e23b2eaf19c42c067cc6f5ae512bd9a9be28a67b3a1d9807f8c9cfb1269875e + checksum: e22df47df9b2b2f2617b8bf511a29aea3d177f9f7a0756818230a76b01cbd7da988bf55f9463aaa1a4c1ff90b80f8dc5676460d4e9dfc010572cbba59b822b0c languageName: node linkType: hard @@ -28589,14 +28517,14 @@ __metadata: linkType: hard "unplugin@npm:^1.3.1": - version: 1.5.0 - resolution: "unplugin@npm:1.5.0" + version: 1.5.1 + resolution: "unplugin@npm:1.5.1" dependencies: - acorn: "npm:^8.10.0" + acorn: "npm:^8.11.2" chokidar: "npm:^3.5.3" webpack-sources: "npm:^3.2.3" - webpack-virtual-modules: "npm:^0.5.0" - checksum: 2f79a7bf6b428a6aac80bf21852ed83cafead0ae3ed8866db1dca1cd4489f3b50c95874275e9a9b0f10c2e3c4892bfe0431c70d13635775c4c620a6a3f9eae37 + webpack-virtual-modules: "npm:^0.6.0" + checksum: 08cee7d100de3b8697d33eaa32405d821d0f51600640ce79e26f4258ddedcd9ac4c022f0453d6d978e9f75fd939ba9553440827987b2b03078f7087f4bef7c96 languageName: node linkType: hard @@ -28975,7 +28903,7 @@ __metadata: languageName: node linkType: hard -"vite@npm:4.5.0, vite@npm:^4.0.0, vite@npm:^4.0.4": +"vite@npm:4.5.0": version: 4.5.0 resolution: "vite@npm:4.5.0" dependencies: @@ -29015,6 +28943,46 @@ __metadata: languageName: node linkType: hard +"vite@npm:^4.0.0, vite@npm:^4.0.4": + version: 4.5.1 + resolution: "vite@npm:4.5.1" + dependencies: + esbuild: "npm:^0.18.10" + fsevents: "npm:~2.3.2" + postcss: "npm:^8.4.27" + rollup: "npm:^3.27.1" + peerDependencies: + "@types/node": ">= 14" + less: "*" + lightningcss: ^1.21.0 + sass: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 352a94b13f793e4bcbc424d680a32507343223eeda8917fde0f23c1fa1ba3db7c806dade8461ca5cfb270154ddb8895a219fdd4384519fe9b8e46d1cf491a890 + languageName: node + linkType: hard + "vitefu@npm:^0.2.4": version: 0.2.4 resolution: "vitefu@npm:0.2.4" @@ -29184,15 +29152,20 @@ __metadata: linkType: hard "vue@npm:^3.2.33, vue@npm:^3.2.47": - version: 3.3.4 - resolution: "vue@npm:3.3.4" + version: 3.3.11 + resolution: "vue@npm:3.3.11" dependencies: - "@vue/compiler-dom": "npm:3.3.4" - "@vue/compiler-sfc": "npm:3.3.4" - "@vue/runtime-dom": "npm:3.3.4" - "@vue/server-renderer": "npm:3.3.4" - "@vue/shared": "npm:3.3.4" - checksum: cc1a3ae13bd66a84ed6c45af33f8045ec551ac44bdd44ad5b25b08ef34d1737c3d43584d84ac19108f58602b5ba8f2483eee65d51760715589ff118b0c14d6df + "@vue/compiler-dom": "npm:3.3.11" + "@vue/compiler-sfc": "npm:3.3.11" + "@vue/runtime-dom": "npm:3.3.11" + "@vue/server-renderer": "npm:3.3.11" + "@vue/shared": "npm:3.3.11" + peerDependencies: + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 9d1aa569d185107c0ca8c6f13d18eeead99b378324fc2fbaeec5eee1d355d48f089c94977b50a4cea042ba2a84707b295621de32b6499491042f9106c3f7be91 languageName: node linkType: hard @@ -29206,17 +29179,17 @@ __metadata: linkType: hard "wait-on@npm:^7.0.1": - version: 7.0.1 - resolution: "wait-on@npm:7.0.1" + version: 7.2.0 + resolution: "wait-on@npm:7.2.0" dependencies: - axios: "npm:^0.27.2" - joi: "npm:^17.7.0" + axios: "npm:^1.6.1" + joi: "npm:^17.11.0" lodash: "npm:^4.17.21" - minimist: "npm:^1.2.7" - rxjs: "npm:^7.8.0" + minimist: "npm:^1.2.8" + rxjs: "npm:^7.8.1" bin: wait-on: bin/wait-on - checksum: 2a9c56d26dac573e6bfd36e85d99f072021c23dc2c0faab900a411460b58e16982b96b018d9168c366040f56196314fa46f3d79ef19e3dc38f55824d5035f2ec + checksum: 1eff2189b3e4b0975889f3e480c75ca2a0d4275072779a6329e7cae8b729620594aa044509ddd89967de6ab2162169501b67b8d9562c16cac517837ffce17337 languageName: node linkType: hard @@ -29476,6 +29449,13 @@ __metadata: languageName: node linkType: hard +"webpack-virtual-modules@npm:^0.6.0": + version: 0.6.1 + resolution: "webpack-virtual-modules@npm:0.6.1" + checksum: 696bdc1acf3806374bdeb4b9b9856b79ee70b31e92f325dfab9b8c8c7e14bb6ddffa9f895a214770c4fb8fea45a21f34ca64310f74e877292a90f4a9966c9c2f + languageName: node + linkType: hard + "webpack@npm:5, webpack@npm:5.89.0, webpack@npm:^5, webpack@npm:^5.65.0": version: 5.89.0 resolution: "webpack@npm:5.89.0" @@ -29826,8 +29806,8 @@ __metadata: linkType: hard "ws@npm:^8.11.0, ws@npm:^8.13.0, ws@npm:^8.2.3": - version: 8.14.2 - resolution: "ws@npm:8.14.2" + version: 8.15.0 + resolution: "ws@npm:8.15.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -29836,7 +29816,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 35b4c2da048b8015c797fd14bcb5a5766216ce65c8a5965616a5440ca7b6c3681ee3cbd0ea0c184a59975556e9d58f2002abf8485a14d11d3371770811050a16 + checksum: b778a405b2589ffbf549323e2f404f1f72e372a049d332d2f0b1f33057e9fbb14a05aa474cb156e4584b418cd95edf4297c0ca5263d6519e8009064bf8e0b80d languageName: node linkType: hard @@ -29970,9 +29950,9 @@ __metadata: linkType: hard "yaml@npm:^2.0.0, yaml@npm:^2.3.1": - version: 2.3.2 - resolution: "yaml@npm:2.3.2" - checksum: c2aac464015f037911c5b819475e81e52119e5495e3d43fe7cb82b5a84d59d66a86049dc85d8e90658636c1c04dde177ae196818deaf76c1bda4d34209d5c087 + version: 2.3.4 + resolution: "yaml@npm:2.3.4" + checksum: cf03b68f8fef5e8516b0f0b54edaf2459f1648317fc6210391cf606d247e678b449382f4bd01f77392538429e306c7cba8ff46ff6b37cac4de9a76aff33bd9e1 languageName: node linkType: hard From 90e95bdcd68e23251b6f8e2a942263f328205cf3 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 12 Dec 2023 10:22:45 +0100 Subject: [PATCH 22/64] cleanup --- scripts/yarn.lock | 847 ++++++++++++++++++++++------------------------ 1 file changed, 403 insertions(+), 444 deletions(-) diff --git a/scripts/yarn.lock b/scripts/yarn.lock index d08afd195ba0..5c1ca8fd7235 100644 --- a/scripts/yarn.lock +++ b/scripts/yarn.lock @@ -33,9 +33,9 @@ __metadata: linkType: hard "@adobe/css-tools@npm:^4.0.1": - version: 4.3.1 - resolution: "@adobe/css-tools@npm:4.3.1" - checksum: 05672719b544cc0c21ae3ed0eb6349bf458e9d09457578eeeb07cf0f696469ac6417e9c9be1b129e5d6a18098a061c1db55b2275591760ef30a79822436fcbfa + version: 4.3.2 + resolution: "@adobe/css-tools@npm:4.3.2" + checksum: 296a03dd29f227c60500d2da8c7f64991fecf1d8b456ce2b4adb8cec7363d9c08b5b03f1463673fc8cbfe54b538745588e7a13c736d2dd14a80c01a20f127f39 languageName: node linkType: hard @@ -49,55 +49,55 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/code-frame@npm:7.23.4" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/code-frame@npm:7.23.5" dependencies: "@babel/highlight": "npm:^7.23.4" chalk: "npm:^2.4.2" - checksum: 2ef6f5e10004c4e8b755961b68570db0ea556ccb17a37c13a7f1fed1f4e273aed6c1ae1fcb86abb991620d8be083e1472a7ea5429f05bc342de54c027b07ea83 + checksum: a10e843595ddd9f97faa99917414813c06214f4d9205294013e20c70fbdf4f943760da37dec1d998bf3e6fc20fa2918a47c0e987a7e458663feb7698063ad7c6 languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9, @babel/compat-data@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/compat-data@npm:7.23.3" - checksum: c6af331753c34ee8a5678bc94404320826cb56b1dda3efc1311ec8fb0774e78225132f3c1acc988440ace667f14a838e297a822692b95758aa63da406e1f97a1 +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.23.3, @babel/compat-data@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/compat-data@npm:7.23.5" + checksum: 081278ed46131a890ad566a59c61600a5f9557bd8ee5e535890c8548192532ea92590742fd74bd9db83d74c669ef8a04a7e1c85cdea27f960233e3b83c3a957c languageName: node linkType: hard "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.2": - version: 7.23.3 - resolution: "@babel/core@npm:7.23.3" + version: 7.23.6 + resolution: "@babel/core@npm:7.23.6" dependencies: "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.22.13" - "@babel/generator": "npm:^7.23.3" - "@babel/helper-compilation-targets": "npm:^7.22.15" + "@babel/code-frame": "npm:^7.23.5" + "@babel/generator": "npm:^7.23.6" + "@babel/helper-compilation-targets": "npm:^7.23.6" "@babel/helper-module-transforms": "npm:^7.23.3" - "@babel/helpers": "npm:^7.23.2" - "@babel/parser": "npm:^7.23.3" + "@babel/helpers": "npm:^7.23.6" + "@babel/parser": "npm:^7.23.6" "@babel/template": "npm:^7.22.15" - "@babel/traverse": "npm:^7.23.3" - "@babel/types": "npm:^7.23.3" + "@babel/traverse": "npm:^7.23.6" + "@babel/types": "npm:^7.23.6" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 08d43b749e24052d12713a7fb1f0c0d1275d4fb056d00846faeb8da79ecf6d0ba91a11b6afec407b8b0f9388d00e2c2f485f282bef0ade4d6d0a17de191a4287 + checksum: a02bae7d916029b70706dc301535e1b31e5d216f55d4ee6f64a15825c6b69ee2c14c52a213d1497ec414e925ed4e9d897d41fb0d75df9fea28ed2c0008790e31 languageName: node linkType: hard -"@babel/generator@npm:^7.23.3, @babel/generator@npm:^7.23.4, @babel/generator@npm:^7.7.2": - version: 7.23.4 - resolution: "@babel/generator@npm:7.23.4" +"@babel/generator@npm:^7.23.6, @babel/generator@npm:^7.7.2": + version: 7.23.6 + resolution: "@babel/generator@npm:7.23.6" dependencies: - "@babel/types": "npm:^7.23.4" + "@babel/types": "npm:^7.23.6" "@jridgewell/gen-mapping": "npm:^0.3.2" "@jridgewell/trace-mapping": "npm:^0.3.17" jsesc: "npm:^2.5.1" - checksum: 79b87ef49c4af1b4356b2fcab80ed92dfcad7927c3d6d89c4f749fd947768de3ec129467fb8eee0fe53cf8fc38b4d34d44487f714a9c23bee981c9cba3a670e4 + checksum: 53540e905cd10db05d9aee0a5304e36927f455ce66f95d1253bb8a179f286b88fa7062ea0db354c566fe27f8bb96567566084ffd259f8feaae1de5eccc8afbda languageName: node linkType: hard @@ -119,35 +119,35 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.6": - version: 7.22.15 - resolution: "@babel/helper-compilation-targets@npm:7.22.15" +"@babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/helper-compilation-targets@npm:7.23.6" dependencies: - "@babel/compat-data": "npm:^7.22.9" - "@babel/helper-validator-option": "npm:^7.22.15" - browserslist: "npm:^4.21.9" + "@babel/compat-data": "npm:^7.23.5" + "@babel/helper-validator-option": "npm:^7.23.5" + browserslist: "npm:^4.22.2" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 45b9286861296e890f674a3abb199efea14a962a27d9b8adeb44970a9fd5c54e73a9e342e8414d2851cf4f98d5994537352fbce7b05ade32e9849bbd327f9ff1 + checksum: ba38506d11185f48b79abf439462ece271d3eead1673dd8814519c8c903c708523428806f05f2ec5efd0c56e4e278698fac967e5a4b5ee842c32415da54bc6fa languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/helper-create-class-features-plugin@npm:7.22.15" +"@babel/helper-create-class-features-plugin@npm:^7.22.15, @babel/helper-create-class-features-plugin@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/helper-create-class-features-plugin@npm:7.23.6" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-environment-visitor": "npm:^7.22.5" - "@babel/helper-function-name": "npm:^7.22.5" - "@babel/helper-member-expression-to-functions": "npm:^7.22.15" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-member-expression-to-functions": "npm:^7.23.0" "@babel/helper-optimise-call-expression": "npm:^7.22.5" - "@babel/helper-replace-supers": "npm:^7.22.9" + "@babel/helper-replace-supers": "npm:^7.22.20" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" "@babel/helper-split-export-declaration": "npm:^7.22.6" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 2ae5759fe8845fda99b34f2ba6cd0794fc860213d14c93a87aa9180960252bce621157a79c373b7fbb423b25a55fb0e20eae0d5f8e4ad5ef22dc70e7c2af3805 + checksum: 4b923a63b757bf030839263b9609d4fc1f9858a701c173a6a15d0fc135a71847c842faddfd8af8eb324d2379725ba0d9a3d004d48ea7aac2c973cea36627707e languageName: node linkType: hard @@ -164,9 +164,9 @@ __metadata: languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.4.3": - version: 0.4.3 - resolution: "@babel/helper-define-polyfill-provider@npm:0.4.3" +"@babel/helper-define-polyfill-provider@npm:^0.4.4": + version: 0.4.4 + resolution: "@babel/helper-define-polyfill-provider@npm:0.4.4" dependencies: "@babel/helper-compilation-targets": "npm:^7.22.6" "@babel/helper-plugin-utils": "npm:^7.22.5" @@ -175,11 +175,11 @@ __metadata: resolve: "npm:^1.14.2" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 0007035157e0d32ee9cb4ca319b89d6f3705523383efe52a59eb3d4dfa2ed08c5147e49c10a6e6d69c15221d89c76c8e5875475d6710fb44a5c37b8e69388e40 + checksum: 60126f5f719b9e2114df62e3bf3ac0797b71d8dc733db60192eb169b004fde72ee309fa5848c5fdfe98b8e8863c46f55e16da5aa8a4e420b4d2670cd0c5dd708 languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.22.20, @babel/helper-environment-visitor@npm:^7.22.5": +"@babel/helper-environment-visitor@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-environment-visitor@npm:7.22.20" checksum: e762c2d8f5d423af89bd7ae9abe35bd4836d2eb401af868a63bbb63220c513c783e25ef001019418560b3fdc6d9a6fb67e6c0b650bcdeb3a2ac44b5c3d2bdd94 @@ -205,7 +205,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.22.15": +"@babel/helper-member-expression-to-functions@npm:^7.22.15, @babel/helper-member-expression-to-functions@npm:^7.23.0": version: 7.23.0 resolution: "@babel/helper-member-expression-to-functions@npm:7.23.0" dependencies: @@ -267,7 +267,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.22.20, @babel/helper-replace-supers@npm:^7.22.9": +"@babel/helper-replace-supers@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-replace-supers@npm:7.22.20" dependencies: @@ -321,10 +321,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/helper-validator-option@npm:7.22.15" - checksum: e9661bf80ba18e2dd978217b350fb07298e57ac417f4f1ab9fa011505e20e4857f2c3b4b538473516a9dc03af5ce3a831e5ed973311c28326f4c330b6be981c2 +"@babel/helper-validator-option@npm:^7.22.15, @babel/helper-validator-option@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/helper-validator-option@npm:7.23.5" + checksum: af45d5c0defb292ba6fd38979e8f13d7da63f9623d8ab9ededc394f67eb45857d2601278d151ae9affb6e03d5d608485806cd45af08b4468a0515cf506510e94 languageName: node linkType: hard @@ -339,14 +339,14 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.23.2": - version: 7.23.4 - resolution: "@babel/helpers@npm:7.23.4" +"@babel/helpers@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/helpers@npm:7.23.6" dependencies: "@babel/template": "npm:^7.22.15" - "@babel/traverse": "npm:^7.23.4" - "@babel/types": "npm:^7.23.4" - checksum: 6bb552b3de530f5eaae99f5410826b5877bae38ccd95cb5809c9a0cef99bcdb9f5db373309c1cf873f5d68927993515323985bac0ff1b811f2437f2e3ae994b8 + "@babel/traverse": "npm:^7.23.6" + "@babel/types": "npm:^7.23.6" + checksum: df1cf6607676ad36f52f652ec03536f2732d70aef5e76dba5c964e34d49f3c2d3dcf9fb3740db359f53071d74b64606a833d5ba156f79f437f71bfe06e2e7e19 languageName: node linkType: hard @@ -361,12 +361,12 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.3, @babel/parser@npm:^7.23.4, @babel/parser@npm:^7.7.0": - version: 7.23.4 - resolution: "@babel/parser@npm:7.23.4" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.6, @babel/parser@npm:^7.7.0": + version: 7.23.6 + resolution: "@babel/parser@npm:7.23.6" bin: parser: ./bin/babel-parser.js - checksum: 9115cd9c5855a6c7a8dd246938b1316dc1014ad36e01240c1e94ada63218ca39aa63d953d1bff8074a2737933448bc50736eb3da52ffc5c11a256c66d0accc2b + checksum: 6f76cd5ccae1fa9bcab3525b0865c6222e9c1d22f87abc69f28c5c7b2c8816a13361f5bd06bddbd5faf903f7320a8feba02545c981468acec45d12a03db7755e languageName: node linkType: hard @@ -407,17 +407,18 @@ __metadata: linkType: hard "@babel/plugin-proposal-decorators@npm:^7.23.2": - version: 7.23.3 - resolution: "@babel/plugin-proposal-decorators@npm:7.23.3" + version: 7.23.6 + resolution: "@babel/plugin-proposal-decorators@npm:7.23.6" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.22.15" + "@babel/helper-create-class-features-plugin": "npm:^7.23.6" "@babel/helper-plugin-utils": "npm:^7.22.5" "@babel/helper-replace-supers": "npm:^7.22.20" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" "@babel/helper-split-export-declaration": "npm:^7.22.6" "@babel/plugin-syntax-decorators": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b32d0e197d7abbb84f78ab361f7cb6ce8b5f90e5a04bf3afb8d43b51653c3f47b0e9ba8d02a643de7390c408d3842e4017446b8cc8e8319695c92568646ba7ef + checksum: 3ab6126ca4d463e3070ebbff734a00750776e475c69cabd35f25bbb6e5b7b355fa63f863c73e18f2ba9104f8acc728bdd4dbc1bacb88160714e0632287ccb5f4 languageName: node linkType: hard @@ -684,7 +685,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.23.3": +"@babel/plugin-transform-async-generator-functions@npm:^7.23.4": version: 7.23.4 resolution: "@babel/plugin-transform-async-generator-functions@npm:7.23.4" dependencies: @@ -722,7 +723,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.23.3": +"@babel/plugin-transform-block-scoping@npm:^7.23.4": version: 7.23.4 resolution: "@babel/plugin-transform-block-scoping@npm:7.23.4" dependencies: @@ -745,7 +746,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.23.3": +"@babel/plugin-transform-class-static-block@npm:^7.23.4": version: 7.23.4 resolution: "@babel/plugin-transform-class-static-block@npm:7.23.4" dependencies: @@ -758,9 +759,9 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-classes@npm:7.23.3" +"@babel/plugin-transform-classes@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/plugin-transform-classes@npm:7.23.5" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.22.5" "@babel/helper-compilation-targets": "npm:^7.22.15" @@ -773,7 +774,7 @@ __metadata: globals: "npm:^11.1.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 88bfd332db0ba5cbfb8557a2ba5a7185151aebc9cfe3035b014aa6d795556acbe672bb8c78da3c9fd1d23f55a333d14b5daa127ef037f5ced5198b6d79a146d6 + checksum: 07988f52b4893151887d1ea6ff79e5fe834078c5731bd09babd5659edbbae21ea4e2de326a02443a63fd776b4c945da6177f07875b56fe66e0b7899e830a9e92 languageName: node linkType: hard @@ -823,7 +824,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-dynamic-import@npm:^7.23.3": +"@babel/plugin-transform-dynamic-import@npm:^7.23.4": version: 7.23.4 resolution: "@babel/plugin-transform-dynamic-import@npm:7.23.4" dependencies: @@ -847,7 +848,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-export-namespace-from@npm:^7.23.3": +"@babel/plugin-transform-export-namespace-from@npm:^7.23.4": version: 7.23.4 resolution: "@babel/plugin-transform-export-namespace-from@npm:7.23.4" dependencies: @@ -859,14 +860,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-for-of@npm:7.23.3" +"@babel/plugin-transform-for-of@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/plugin-transform-for-of@npm:7.23.6" dependencies: "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8a36202cfee312ba80e509c7c2131e6773524e572b4dc64a8ee95bd912634fdeb5ea91c6c7747ee30e03562d0f0d333f88ed7dbb929b36b60b8d74189189e12f + checksum: 46681b6ab10f3ca2d961f50d4096b62ab5d551e1adad84e64be1ee23e72eb2f26a1e30e617e853c74f1349fffe4af68d33921a128543b6f24b6d46c09a3e2aec languageName: node linkType: hard @@ -883,7 +885,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-json-strings@npm:^7.23.3": +"@babel/plugin-transform-json-strings@npm:^7.23.4": version: 7.23.4 resolution: "@babel/plugin-transform-json-strings@npm:7.23.4" dependencies: @@ -906,7 +908,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.23.3": +"@babel/plugin-transform-logical-assignment-operators@npm:^7.23.4": version: 7.23.4 resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.23.4" dependencies: @@ -1003,7 +1005,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.23.3": +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.23.4": version: 7.23.4 resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.23.4" dependencies: @@ -1015,7 +1017,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.23.3": +"@babel/plugin-transform-numeric-separator@npm:^7.23.4": version: 7.23.4 resolution: "@babel/plugin-transform-numeric-separator@npm:7.23.4" dependencies: @@ -1027,7 +1029,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.23.3": +"@babel/plugin-transform-object-rest-spread@npm:^7.23.4": version: 7.23.4 resolution: "@babel/plugin-transform-object-rest-spread@npm:7.23.4" dependencies: @@ -1054,7 +1056,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.23.3": +"@babel/plugin-transform-optional-catch-binding@npm:^7.23.4": version: 7.23.4 resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.23.4" dependencies: @@ -1066,7 +1068,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.23.3": +"@babel/plugin-transform-optional-chaining@npm:^7.23.3, @babel/plugin-transform-optional-chaining@npm:^7.23.4": version: 7.23.4 resolution: "@babel/plugin-transform-optional-chaining@npm:7.23.4" dependencies: @@ -1102,7 +1104,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.23.3": +"@babel/plugin-transform-private-property-in-object@npm:^7.23.4": version: 7.23.4 resolution: "@babel/plugin-transform-private-property-in-object@npm:7.23.4" dependencies: @@ -1256,16 +1258,16 @@ __metadata: linkType: hard "@babel/plugin-transform-typescript@npm:^7.23.3": - version: 7.23.4 - resolution: "@babel/plugin-transform-typescript@npm:7.23.4" + version: 7.23.6 + resolution: "@babel/plugin-transform-typescript@npm:7.23.6" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-create-class-features-plugin": "npm:^7.22.15" + "@babel/helper-create-class-features-plugin": "npm:^7.23.6" "@babel/helper-plugin-utils": "npm:^7.22.5" "@babel/plugin-syntax-typescript": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 657294f8e0d59fc2b765a230cd1635a575c2dee33aba45e8fc0fbe6ef86ffae007f8c9ca41665ac9629f49a922caf844d14b9a7990dddd2f64aee969d6fb14a4 + checksum: e08f7a981fe157e32031070b92cd77030018b002d063e4be3711ffb7ec04539478b240d8967a4748abb56eccc0ba376f094f30711ef6a028b2a89d15d6ddc01f languageName: node linkType: hard @@ -1317,13 +1319,13 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.23.2": - version: 7.23.3 - resolution: "@babel/preset-env@npm:7.23.3" + version: 7.23.6 + resolution: "@babel/preset-env@npm:7.23.6" dependencies: - "@babel/compat-data": "npm:^7.23.3" - "@babel/helper-compilation-targets": "npm:^7.22.15" + "@babel/compat-data": "npm:^7.23.5" + "@babel/helper-compilation-targets": "npm:^7.23.6" "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-validator-option": "npm:^7.22.15" + "@babel/helper-validator-option": "npm:^7.23.5" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.23.3" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.23.3" "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.23.3" @@ -1347,25 +1349,25 @@ __metadata: "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" "@babel/plugin-transform-arrow-functions": "npm:^7.23.3" - "@babel/plugin-transform-async-generator-functions": "npm:^7.23.3" + "@babel/plugin-transform-async-generator-functions": "npm:^7.23.4" "@babel/plugin-transform-async-to-generator": "npm:^7.23.3" "@babel/plugin-transform-block-scoped-functions": "npm:^7.23.3" - "@babel/plugin-transform-block-scoping": "npm:^7.23.3" + "@babel/plugin-transform-block-scoping": "npm:^7.23.4" "@babel/plugin-transform-class-properties": "npm:^7.23.3" - "@babel/plugin-transform-class-static-block": "npm:^7.23.3" - "@babel/plugin-transform-classes": "npm:^7.23.3" + "@babel/plugin-transform-class-static-block": "npm:^7.23.4" + "@babel/plugin-transform-classes": "npm:^7.23.5" "@babel/plugin-transform-computed-properties": "npm:^7.23.3" "@babel/plugin-transform-destructuring": "npm:^7.23.3" "@babel/plugin-transform-dotall-regex": "npm:^7.23.3" "@babel/plugin-transform-duplicate-keys": "npm:^7.23.3" - "@babel/plugin-transform-dynamic-import": "npm:^7.23.3" + "@babel/plugin-transform-dynamic-import": "npm:^7.23.4" "@babel/plugin-transform-exponentiation-operator": "npm:^7.23.3" - "@babel/plugin-transform-export-namespace-from": "npm:^7.23.3" - "@babel/plugin-transform-for-of": "npm:^7.23.3" + "@babel/plugin-transform-export-namespace-from": "npm:^7.23.4" + "@babel/plugin-transform-for-of": "npm:^7.23.6" "@babel/plugin-transform-function-name": "npm:^7.23.3" - "@babel/plugin-transform-json-strings": "npm:^7.23.3" + "@babel/plugin-transform-json-strings": "npm:^7.23.4" "@babel/plugin-transform-literals": "npm:^7.23.3" - "@babel/plugin-transform-logical-assignment-operators": "npm:^7.23.3" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.23.4" "@babel/plugin-transform-member-expression-literals": "npm:^7.23.3" "@babel/plugin-transform-modules-amd": "npm:^7.23.3" "@babel/plugin-transform-modules-commonjs": "npm:^7.23.3" @@ -1373,15 +1375,15 @@ __metadata: "@babel/plugin-transform-modules-umd": "npm:^7.23.3" "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.22.5" "@babel/plugin-transform-new-target": "npm:^7.23.3" - "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.23.3" - "@babel/plugin-transform-numeric-separator": "npm:^7.23.3" - "@babel/plugin-transform-object-rest-spread": "npm:^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.23.4" + "@babel/plugin-transform-numeric-separator": "npm:^7.23.4" + "@babel/plugin-transform-object-rest-spread": "npm:^7.23.4" "@babel/plugin-transform-object-super": "npm:^7.23.3" - "@babel/plugin-transform-optional-catch-binding": "npm:^7.23.3" - "@babel/plugin-transform-optional-chaining": "npm:^7.23.3" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.23.4" + "@babel/plugin-transform-optional-chaining": "npm:^7.23.4" "@babel/plugin-transform-parameters": "npm:^7.23.3" "@babel/plugin-transform-private-methods": "npm:^7.23.3" - "@babel/plugin-transform-private-property-in-object": "npm:^7.23.3" + "@babel/plugin-transform-private-property-in-object": "npm:^7.23.4" "@babel/plugin-transform-property-literals": "npm:^7.23.3" "@babel/plugin-transform-regenerator": "npm:^7.23.3" "@babel/plugin-transform-reserved-words": "npm:^7.23.3" @@ -1402,7 +1404,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 36b02a86817ab5474bb74a8d62a110723b0b05904a52ddc5627cf89457525b8d5ac0739b8e435a6ae12ef8b90cd5fc191169898c3dc2ac9d2c84026b02f2580a + checksum: 5b24d179af52f082d04b9b98cc4777e37bf31a97cef5a91d8917e996dbd75f2f743c88c40f80744cb8529355bb674619d150c0260c32d834aa4067e21d0c8962 languageName: node linkType: hard @@ -1458,11 +1460,11 @@ __metadata: linkType: hard "@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": - version: 7.23.4 - resolution: "@babel/runtime@npm:7.23.4" + version: 7.23.6 + resolution: "@babel/runtime@npm:7.23.6" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: db2bf183cd0119599b903ca51ca0aeea8e0ab478a16be1aae10dd90473ed614159d3e5adfdd8f8f3d840402428ce0d90b5c01aae95da9e45a2dd83e02d85ca27 + checksum: d886954e985ef8e421222f7a2848884d96a752e0020d3078b920dd104e672fdf23bcc6f51a44313a048796319f1ac9d09c2c88ec8cbb4e1f09174bcd3335b9ff languageName: node linkType: hard @@ -1477,32 +1479,32 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.23.3, @babel/traverse@npm:^7.23.4, @babel/traverse@npm:^7.7.0": - version: 7.23.4 - resolution: "@babel/traverse@npm:7.23.4" +"@babel/traverse@npm:^7.23.6, @babel/traverse@npm:^7.7.0": + version: 7.23.6 + resolution: "@babel/traverse@npm:7.23.6" dependencies: - "@babel/code-frame": "npm:^7.23.4" - "@babel/generator": "npm:^7.23.4" + "@babel/code-frame": "npm:^7.23.5" + "@babel/generator": "npm:^7.23.6" "@babel/helper-environment-visitor": "npm:^7.22.20" "@babel/helper-function-name": "npm:^7.23.0" "@babel/helper-hoist-variables": "npm:^7.22.5" "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/parser": "npm:^7.23.4" - "@babel/types": "npm:^7.23.4" - debug: "npm:^4.1.0" + "@babel/parser": "npm:^7.23.6" + "@babel/types": "npm:^7.23.6" + debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: a423d2b90934efe4ed423d67d91d6aa33ad035d6a175420fa9715376720584b4e7a7002be4bf55b085b7e675b7aba8c615e01560d6d9c47341427e1fe8039c68 + checksum: 5b4ebb94a00a7e1daf111e4b0b45a7998d5b7598637a14e75e855e88cc1b702789e09a958726b5d599a003be1e9032dbdfde4b88ea6061332228738950d5582d languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.3, @babel/types@npm:^7.23.4, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.7.0, @babel/types@npm:^7.8.3": - version: 7.23.4 - resolution: "@babel/types@npm:7.23.4" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.23.6, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.7.0, @babel/types@npm:^7.8.3": + version: 7.23.6 + resolution: "@babel/types@npm:7.23.6" dependencies: "@babel/helper-string-parser": "npm:^7.23.4" "@babel/helper-validator-identifier": "npm:^7.22.20" to-fast-properties: "npm:^2.0.0" - checksum: 231954418e0d052a8e69c9d84dde31baffd91d38d99624d18f160e14aa32b094b9e3e91c9c065ea88ea80c6e1589b17bb8b843b950c20c112f32c17482f7cf1f + checksum: 42cefce8a68bd09bb5828b4764aa5586c53c60128ac2ac012e23858e1c179347a4aac9c66fc577994fbf57595227611c5ec8270bf0cfc94ff033bbfac0550b70 languageName: node linkType: hard @@ -1513,6 +1515,32 @@ __metadata: languageName: node linkType: hard +"@cypress/request@npm:3.0.1": + version: 3.0.1 + resolution: "@cypress/request@npm:3.0.1" + dependencies: + aws-sign2: "npm:~0.7.0" + aws4: "npm:^1.8.0" + caseless: "npm:~0.12.0" + combined-stream: "npm:~1.0.6" + extend: "npm:~3.0.2" + forever-agent: "npm:~0.6.1" + form-data: "npm:~2.3.2" + http-signature: "npm:~1.3.6" + is-typedarray: "npm:~1.0.0" + isstream: "npm:~0.1.2" + json-stringify-safe: "npm:~5.0.1" + mime-types: "npm:~2.1.19" + performance-now: "npm:^2.1.0" + qs: "npm:6.10.4" + safe-buffer: "npm:^5.1.2" + tough-cookie: "npm:^4.1.3" + tunnel-agent: "npm:^0.6.0" + uuid: "npm:^8.3.2" + checksum: 8eb92a665e6549e2533f5169431addcaad0307f51a8c7f3b6b169eb79b4d673373784a527590a47b0a2905ad5f601b24ab2d1b31d184243235aba470ffc9c1f7 + languageName: node + linkType: hard + "@emotion/css-prettifier@npm:^1.1.3": version: 1.1.3 resolution: "@emotion/css-prettifier@npm:1.1.3" @@ -1723,9 +1751,9 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.1.3": - version: 2.1.3 - resolution: "@eslint/eslintrc@npm:2.1.3" +"@eslint/eslintrc@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" dependencies: ajv: "npm:^6.12.4" debug: "npm:^4.3.2" @@ -1736,14 +1764,14 @@ __metadata: js-yaml: "npm:^4.1.0" minimatch: "npm:^3.1.2" strip-json-comments: "npm:^3.1.1" - checksum: f4103f4346126292eb15581c5a1d12bef03410fd3719dedbdb92e1f7031d46a5a2d60de8566790445d5d4b70b75ba050876799a11f5fff8265a91ee3fa77dab0 + checksum: 32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 languageName: node linkType: hard -"@eslint/js@npm:8.54.0": - version: 8.54.0 - resolution: "@eslint/js@npm:8.54.0" - checksum: d61fb4a0be6af2d8cb290121c329697664a75d6255a29926d5454fb02aeb02b87112f67fdf218d10abac42f90c570ac366126751baefc5405d0e017ed0c946c5 +"@eslint/js@npm:8.55.0": + version: 8.55.0 + resolution: "@eslint/js@npm:8.55.0" + checksum: 88ab9fc57a651becd2b32ec40a3958db27fae133b1ae77bebd733aa5bbd00a92f325bb02f20ad680d31c731fa49b22f060a4777dd52eb3e27da013d940bd978d languageName: node linkType: hard @@ -2609,7 +2637,7 @@ __metadata: languageName: node linkType: hard -"@octokit/openapi-types@npm:^19.0.2": +"@octokit/openapi-types@npm:^19.1.0": version: 19.1.0 resolution: "@octokit/openapi-types@npm:19.1.0" checksum: ae8081f52b797b91a12d4f6cddc475699c9d34b06645b337adc77d30b583d8fe8506597a45c42f8f1a96bfb2a9d092cee257d8a65d718bfeed23a0d153448eea @@ -2756,11 +2784,11 @@ __metadata: linkType: hard "@octokit/types@npm:^12.0.0": - version: 12.3.0 - resolution: "@octokit/types@npm:12.3.0" + version: 12.4.0 + resolution: "@octokit/types@npm:12.4.0" dependencies: - "@octokit/openapi-types": "npm:^19.0.2" - checksum: 083f33d8df492ef4029b94b1b5ac5ac422bc5787fe6c086d4738007f207e2b8fa523a1397ecc902d808ba235ec7bf7e38f4659cae177d40002e43eadf3b6f3d8 + "@octokit/openapi-types": "npm:^19.1.0" + checksum: b52b3fd8af307a1868846991f8376548a790814b20639dee1110271a768c0489081970df893ca2230f6285066003230d22f5877eeac90418971a475c79808241 languageName: node linkType: hard @@ -3127,82 +3155,82 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.99": - version: 1.3.99 - resolution: "@swc/core-darwin-arm64@npm:1.3.99" +"@swc/core-darwin-arm64@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-darwin-arm64@npm:1.3.100" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.99": - version: 1.3.99 - resolution: "@swc/core-darwin-x64@npm:1.3.99" +"@swc/core-darwin-x64@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-darwin-x64@npm:1.3.100" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.99": - version: 1.3.99 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.99" +"@swc/core-linux-arm64-gnu@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.100" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.99": - version: 1.3.99 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.99" +"@swc/core-linux-arm64-musl@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.100" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.99": - version: 1.3.99 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.99" +"@swc/core-linux-x64-gnu@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.100" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.99": - version: 1.3.99 - resolution: "@swc/core-linux-x64-musl@npm:1.3.99" +"@swc/core-linux-x64-musl@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-linux-x64-musl@npm:1.3.100" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.99": - version: 1.3.99 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.99" +"@swc/core-win32-arm64-msvc@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.100" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.99": - version: 1.3.99 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.99" +"@swc/core-win32-ia32-msvc@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.100" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.99": - version: 1.3.99 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.99" +"@swc/core-win32-x64-msvc@npm:1.3.100": + version: 1.3.100 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.100" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.95": - version: 1.3.99 - resolution: "@swc/core@npm:1.3.99" - dependencies: - "@swc/core-darwin-arm64": "npm:1.3.99" - "@swc/core-darwin-x64": "npm:1.3.99" - "@swc/core-linux-arm64-gnu": "npm:1.3.99" - "@swc/core-linux-arm64-musl": "npm:1.3.99" - "@swc/core-linux-x64-gnu": "npm:1.3.99" - "@swc/core-linux-x64-musl": "npm:1.3.99" - "@swc/core-win32-arm64-msvc": "npm:1.3.99" - "@swc/core-win32-ia32-msvc": "npm:1.3.99" - "@swc/core-win32-x64-msvc": "npm:1.3.99" + version: 1.3.100 + resolution: "@swc/core@npm:1.3.100" + dependencies: + "@swc/core-darwin-arm64": "npm:1.3.100" + "@swc/core-darwin-x64": "npm:1.3.100" + "@swc/core-linux-arm64-gnu": "npm:1.3.100" + "@swc/core-linux-arm64-musl": "npm:1.3.100" + "@swc/core-linux-x64-gnu": "npm:1.3.100" + "@swc/core-linux-x64-musl": "npm:1.3.100" + "@swc/core-win32-arm64-msvc": "npm:1.3.100" + "@swc/core-win32-ia32-msvc": "npm:1.3.100" + "@swc/core-win32-x64-msvc": "npm:1.3.100" "@swc/counter": "npm:^0.1.1" "@swc/types": "npm:^0.1.5" peerDependencies: @@ -3229,7 +3257,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: ff009b70e74f4f66deba7d8967196d32f374e94c8f4e44b077ff082f5adafd1268caed739040153bb79ca27114d0cca8795bce4af6fa986d645a3ff9acf24e4b + checksum: d6e873a7c627765991b18bd8d1b0ce1f1d9cf08c451fe78dbbf28dda14d4301cec2689f6bd85e604847d4a20226fd79c272796fef4f28feaca81a20c0f62e8e9 languageName: node linkType: hard @@ -3599,12 +3627,12 @@ __metadata: linkType: hard "@types/jest@npm:*, @types/jest@npm:^29.5.5": - version: 29.5.10 - resolution: "@types/jest@npm:29.5.10" + version: 29.5.11 + resolution: "@types/jest@npm:29.5.11" dependencies: expect: "npm:^29.0.0" pretty-format: "npm:^29.0.0" - checksum: b46171d59d12a5f69bbe710f65eaf59a8073337c6b4a67dff8158575caec53f1c61f8a7d645b34d6ac3c4ea398acd30f0c5d1c4a131c0c918798019264a3397d + checksum: 524a3394845214581278bf4d75055927261fbeac7e1a89cd621bd0636da37d265fe0a85eac58b5778758faad1cbd7c7c361dfc190c78ebde03a91cce33463261 languageName: node linkType: hard @@ -3716,20 +3744,20 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:>= 8": - version: 20.10.0 - resolution: "@types/node@npm:20.10.0" + version: 20.10.4 + resolution: "@types/node@npm:20.10.4" dependencies: undici-types: "npm:~5.26.4" - checksum: f379e57d9d28cb5f3d8eab943de0c54a0ca2f95ee356e1fe2a1a4fa718b740103ae522c50ce107cffd52c3642ef3244cfc55bf5369081dd6c48369c8587b21ae + checksum: 2c8b70cba731eb2ae3ae046daa74903bfcbb0e7b9196da767e5895054f6d252296ae7a04fb1dbbcb53bb004c4c658c05eaea2731bc9e2dd9e08f7e88d672f563 languageName: node linkType: hard "@types/node@npm:^18.0.0": - version: 18.18.13 - resolution: "@types/node@npm:18.18.13" + version: 18.19.3 + resolution: "@types/node@npm:18.19.3" dependencies: undici-types: "npm:~5.26.4" - checksum: 5f1840f26b4c00e6b4945be678644a46e6689ef10d9d7795d587b76059045b99a14ca6075264296e6e91d73e098fe83df9580881278d9a6ce394b368d9c76700 + checksum: 3ed943d06e9dff70a3da793f794f1192cd93b0ababdb9f07425a05680f17cfce649cbc46734265f6fbe52fd9f277496d3a4da26c013f1193a0345f2420ea6cd0 languageName: node linkType: hard @@ -3801,13 +3829,13 @@ __metadata: linkType: hard "@types/react@npm:*, @types/react@npm:^18.0.37": - version: 18.2.39 - resolution: "@types/react@npm:18.2.39" + version: 18.2.43 + resolution: "@types/react@npm:18.2.43" dependencies: "@types/prop-types": "npm:*" "@types/scheduler": "npm:*" csstype: "npm:^3.0.2" - checksum: e91a5419d7615ab4fcaa7cb3ad2bd372093676e86c082748ab36ac394d3ed560070482d092a5488f74d6b1d913369e4dabf6eb287debed4d70cd3eb7dc135542 + checksum: 10477a50fbd3c0cc5b8a2ade679f442717f68fb27c8460b2aa1d3256cd18c48f742bbe5b9ee37a8c4c5f832ffa37b3a23c09fd96dd880a8e3182d8929c05e803 languageName: node linkType: hard @@ -4105,24 +4133,24 @@ __metadata: languageName: node linkType: hard -"@verdaccio/config@npm:7.0.0-next.3": - version: 7.0.0-next.3 - resolution: "@verdaccio/config@npm:7.0.0-next.3" +"@verdaccio/config@npm:7.0.0-next.4": + version: 7.0.0-next.4 + resolution: "@verdaccio/config@npm:7.0.0-next.4" dependencies: - "@verdaccio/core": "npm:7.0.0-next.3" - "@verdaccio/utils": "npm:7.0.0-next.3" + "@verdaccio/core": "npm:7.0.0-next.4" + "@verdaccio/utils": "npm:7.0.0-next.4" debug: "npm:4.3.4" js-yaml: "npm:4.1.0" lodash: "npm:4.17.21" minimatch: "npm:7.4.6" yup: "npm:0.32.11" - checksum: 935e7a504007e34c414e503f047c9d7f5a0cb1023e099385a0848baf53de202066aa72bf6e32488c44387c6869283db231f6a270ab59cd4b37c254ddbc3bf9ad + checksum: b2349c5bbbfff80ff661b5712b4f8e16989dd5a13fa2a8aedc3ce3f0ee5e515eea36d603f353f687002126c1a913a8beba270625df06d58ef693f7d05c4403b5 languageName: node linkType: hard -"@verdaccio/core@npm:7.0.0-next.3": - version: 7.0.0-next.3 - resolution: "@verdaccio/core@npm:7.0.0-next.3" +"@verdaccio/core@npm:7.0.0-next.4": + version: 7.0.0-next.4 + resolution: "@verdaccio/core@npm:7.0.0-next.4" dependencies: ajv: "npm:8.12.0" core-js: "npm:3.30.2" @@ -4130,7 +4158,7 @@ __metadata: http-status-codes: "npm:2.2.0" process-warning: "npm:1.0.0" semver: "npm:7.5.4" - checksum: ebf901912ad035fbf2b2aae304224191dc26f1991f52cd64d454ba39128406ff025518058c42e64a322c580eed3dfcf5f013becb45c6be367b49f7e6f0f109f8 + checksum: b80ffd3d36f3cd24de78a7a7d48556298eda250e49d5809a82dd87c107efa64475f7a1c8afb9d1f90dbff72a37ab336d2ff8780b5d4acdbe20a7735c995c6c96 languageName: node linkType: hard @@ -4168,25 +4196,25 @@ __metadata: languageName: node linkType: hard -"@verdaccio/logger-7@npm:7.0.0-next.3": - version: 7.0.0-next.3 - resolution: "@verdaccio/logger-7@npm:7.0.0-next.3" +"@verdaccio/logger-7@npm:7.0.0-next.4": + version: 7.0.0-next.4 + resolution: "@verdaccio/logger-7@npm:7.0.0-next.4" dependencies: - "@verdaccio/logger-commons": "npm:7.0.0-next.3" + "@verdaccio/logger-commons": "npm:7.0.0-next.4" pino: "npm:7.11.0" - checksum: 3fc8479f907083a4f684818aa11f005ef1de9d3c08096fa5dfc45f3e7a73a5eae2c74ed82b7c9c5d390a29b5489427a7ce645ceb66c0ffcccb6fe10fe15216c9 + checksum: 334cd1e55719997ef448804798d74e5b28563488bb88b6526afe3bb5d3a89b844e78f9eb500512753496cb965f7fbcd2a79ec29e93e5693b2db2291f47a6f489 languageName: node linkType: hard -"@verdaccio/logger-commons@npm:7.0.0-next.3": - version: 7.0.0-next.3 - resolution: "@verdaccio/logger-commons@npm:7.0.0-next.3" +"@verdaccio/logger-commons@npm:7.0.0-next.4": + version: 7.0.0-next.4 + resolution: "@verdaccio/logger-commons@npm:7.0.0-next.4" dependencies: - "@verdaccio/core": "npm:7.0.0-next.3" + "@verdaccio/core": "npm:7.0.0-next.4" "@verdaccio/logger-prettify": "npm:7.0.0-next.1" colorette: "npm:2.0.20" debug: "npm:4.3.4" - checksum: b5f21c77f374ad5cdbd28479e8353f9401809ce24b166adee6f53724607a76d75de92957a6b426ad0b81173ab999c4b31de54e8b9ba1b92b42c1cd480e820d41 + checksum: b11dde0c5cfe5f4f40fb8d20816f3a57fbb0c395b9aee9067a54b508242ebd4da29506332a0d06aa7d0f5f8b8e77aefd3bc63151d3777cbc3122d54d906ff0f0 languageName: node linkType: hard @@ -4203,21 +4231,21 @@ __metadata: languageName: node linkType: hard -"@verdaccio/middleware@npm:7.0.0-next.3": - version: 7.0.0-next.3 - resolution: "@verdaccio/middleware@npm:7.0.0-next.3" +"@verdaccio/middleware@npm:7.0.0-next.4": + version: 7.0.0-next.4 + resolution: "@verdaccio/middleware@npm:7.0.0-next.4" dependencies: - "@verdaccio/config": "npm:7.0.0-next.3" - "@verdaccio/core": "npm:7.0.0-next.3" - "@verdaccio/url": "npm:12.0.0-next.3" - "@verdaccio/utils": "npm:7.0.0-next.3" + "@verdaccio/config": "npm:7.0.0-next.4" + "@verdaccio/core": "npm:7.0.0-next.4" + "@verdaccio/url": "npm:12.0.0-next.4" + "@verdaccio/utils": "npm:7.0.0-next.4" debug: "npm:4.3.4" express: "npm:4.18.2" express-rate-limit: "npm:5.5.1" lodash: "npm:4.17.21" lru-cache: "npm:7.18.3" mime: "npm:2.6.0" - checksum: d4a3f3ff06bff7d8e9fecd5ec3ec0b13d59d450055639dbb82548dd5e13d29d44d7ea4cad864cf275632f267a23ea69776c871aa539e81ff47686073b8b84901 + checksum: 8a9d926df27e07f3def0a03250cbbb4b2dc992b6420c597282c3af4a3bfba0576d6551cf77f0253b052ee2b8dedc7357dba710ecff40a24638f18c95d4fd5df7 languageName: node linkType: hard @@ -4228,14 +4256,14 @@ __metadata: languageName: node linkType: hard -"@verdaccio/signature@npm:7.0.0-next.1": - version: 7.0.0-next.1 - resolution: "@verdaccio/signature@npm:7.0.0-next.1" +"@verdaccio/signature@npm:7.0.0-next.2": + version: 7.0.0-next.2 + resolution: "@verdaccio/signature@npm:7.0.0-next.2" dependencies: debug: "npm:4.3.4" jsonwebtoken: "npm:9.0.2" lodash: "npm:4.17.21" - checksum: 6cf1629e7b69a84244175f4b7a89a98c84e1c8565f3dfbe871d24bf8d643a761e6e22823a3ce223f8f5ae06b0117d7236e5c3ba6cfc273c2fc857b8fe44a3679 + checksum: b4ad509db63bb1fe0054b6e1e3f9107466ca443535834ff86473a64c8c32a6c39b6051cebf9720d1d4055d49c52b29afb786f7e19919b1be17acb8f256585977 languageName: node linkType: hard @@ -4246,16 +4274,16 @@ __metadata: languageName: node linkType: hard -"@verdaccio/tarball@npm:12.0.0-next.3": - version: 12.0.0-next.3 - resolution: "@verdaccio/tarball@npm:12.0.0-next.3" +"@verdaccio/tarball@npm:12.0.0-next.4": + version: 12.0.0-next.4 + resolution: "@verdaccio/tarball@npm:12.0.0-next.4" dependencies: - "@verdaccio/core": "npm:7.0.0-next.3" - "@verdaccio/url": "npm:12.0.0-next.3" - "@verdaccio/utils": "npm:7.0.0-next.3" + "@verdaccio/core": "npm:7.0.0-next.4" + "@verdaccio/url": "npm:12.0.0-next.4" + "@verdaccio/utils": "npm:7.0.0-next.4" debug: "npm:4.3.4" lodash: "npm:4.17.21" - checksum: 4351cd2e6037158a03f6dad0fa874d306571e531981bbe3f43b4101ee19d4fd395291706dae6e8ce6fcea6ef452cf5cfb82b2da40444e214bb00fda52adab39c + checksum: c6b9dc273a2e770f70eb99db2b9a397b50e3fd378abe97be716c3edfec5168af33c41cd037582af37a738854c63800e9dc3a9141cec2b2bda4f700820994148b languageName: node linkType: hard @@ -4266,34 +4294,34 @@ __metadata: languageName: node linkType: hard -"@verdaccio/ui-theme@npm:7.0.0-next.3": - version: 7.0.0-next.3 - resolution: "@verdaccio/ui-theme@npm:7.0.0-next.3" - checksum: c593e72cff099d22fc3f69d0befa279f6c5477e3ad724c365d46a2eea7dc64675cb613791e909378e43fce1927e3cf2b2b567e9ef880d16eb015c422b0b6a81a +"@verdaccio/ui-theme@npm:7.0.0-next.4": + version: 7.0.0-next.4 + resolution: "@verdaccio/ui-theme@npm:7.0.0-next.4" + checksum: 4e15189c4bb92ccdc4facc8d82d1db959523cd4aabc2c2b6e4d070660c8fc8cfcb6a205a45ccc3e12d1ea062b056c95413d14a2325812c6b6065736527efa305 languageName: node linkType: hard -"@verdaccio/url@npm:12.0.0-next.3": - version: 12.0.0-next.3 - resolution: "@verdaccio/url@npm:12.0.0-next.3" +"@verdaccio/url@npm:12.0.0-next.4": + version: 12.0.0-next.4 + resolution: "@verdaccio/url@npm:12.0.0-next.4" dependencies: - "@verdaccio/core": "npm:7.0.0-next.3" + "@verdaccio/core": "npm:7.0.0-next.4" debug: "npm:4.3.4" lodash: "npm:4.17.21" validator: "npm:13.9.0" - checksum: af226f14ab34cf71ec64ea6ec8d3fc1bb1b437819864184f655fb4b1e77d4159c7012aeacd32a26b3b86db201ec263d43e9f04b9464eeedd9f6ca8926298a2f8 + checksum: e0676d8299d2289a7bf4232488cab7f00f8b714cc2f165ae95653973ac843f586423bc4b0cf9f25ab152340961e36222d8130128d3a720c923cc494a83c33b02 languageName: node linkType: hard -"@verdaccio/utils@npm:7.0.0-next.3": - version: 7.0.0-next.3 - resolution: "@verdaccio/utils@npm:7.0.0-next.3" +"@verdaccio/utils@npm:7.0.0-next.4": + version: 7.0.0-next.4 + resolution: "@verdaccio/utils@npm:7.0.0-next.4" dependencies: - "@verdaccio/core": "npm:7.0.0-next.3" + "@verdaccio/core": "npm:7.0.0-next.4" lodash: "npm:4.17.21" minimatch: "npm:7.4.6" semver: "npm:7.5.4" - checksum: 377f635722801515e2f86db91691a0ed86fd618b70b33d638a736a4a1d0a1e242b6e24f03ad4bc0f005a138d519b2dcbdb6c6946d40553130749dcc8788abc11 + checksum: 8709ce9eb8220916e59f25c8f457099f8a70728b227354f6109800df84d1c2d3d4374386408d415093f8adbdabd97a94e7a60fbac95d5cced728064abc06ff9c languageName: node linkType: hard @@ -4415,9 +4443,9 @@ __metadata: linkType: hard "acorn-walk@npm:^8.0.2": - version: 8.3.0 - resolution: "acorn-walk@npm:8.3.0" - checksum: 24346e595f507b6e704a60d35f3c5e1aa9891d4fb6a3fc3d856503ab718cc26cabb5e3e1ff0ff8da6ec03d60a8226ebdb602805a94f970e7f797ea3b8b09437f + version: 8.3.1 + resolution: "acorn-walk@npm:8.3.1" + checksum: a23d2f7c6b6cad617f4c77f14dfeb062a239208d61753e9ba808d916c550add92b39535467d2e6028280761ac4f5a904cc9df21530b84d3f834e3edef74ddde5 languageName: node linkType: hard @@ -4520,7 +4548,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.12.3, ajv@npm:^6.12.4": +"ajv@npm:^6.12.4": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -4897,6 +4925,13 @@ __metadata: languageName: node linkType: hard +"async@npm:3.2.5, async@npm:^3.2.3": + version: 3.2.5 + resolution: "async@npm:3.2.5" + checksum: 1408287b26c6db67d45cb346e34892cee555b8b59e6c68e6f8c3e495cad5ca13b4f218180e871f3c2ca30df4ab52693b66f2f6ff43644760cab0b2198bda79c1 + languageName: node + linkType: hard + "async@npm:^2.6.4": version: 2.6.4 resolution: "async@npm:2.6.4" @@ -4906,13 +4941,6 @@ __metadata: languageName: node linkType: hard -"async@npm:^3.2.3": - version: 3.2.5 - resolution: "async@npm:3.2.5" - checksum: 1408287b26c6db67d45cb346e34892cee555b8b59e6c68e6f8c3e495cad5ca13b4f218180e871f3c2ca30df4ab52693b66f2f6ff43644760cab0b2198bda79c1 - languageName: node - linkType: hard - "asynciterator.prototype@npm:^1.0.0": version: 1.0.0 resolution: "asynciterator.prototype@npm:1.0.0" @@ -5056,38 +5084,38 @@ __metadata: linkType: hard "babel-plugin-polyfill-corejs2@npm:^0.4.6": - version: 0.4.6 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.6" + version: 0.4.7 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.7" dependencies: "@babel/compat-data": "npm:^7.22.6" - "@babel/helper-define-polyfill-provider": "npm:^0.4.3" + "@babel/helper-define-polyfill-provider": "npm:^0.4.4" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 64a98811f343492aa6970ab253760194e389c0417e5b830522f944009c1f0c78e1251975fd1b9869cd48cc4623111b20a3389cf6732a1d10ba0d19de6fa5114f + checksum: f80f7284ec72c63e7dd751e0bdf25e9978df195a79e0887470603bfdea13ee518d62573cf360bb1bc01b80819e54915dd5edce9cff14c52d0af5f984aa3d36a3 languageName: node linkType: hard "babel-plugin-polyfill-corejs3@npm:^0.8.5": - version: 0.8.6 - resolution: "babel-plugin-polyfill-corejs3@npm:0.8.6" + version: 0.8.7 + resolution: "babel-plugin-polyfill-corejs3@npm:0.8.7" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.4.3" + "@babel/helper-define-polyfill-provider": "npm:^0.4.4" core-js-compat: "npm:^3.33.1" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 97d974c1dfbefdf27866e21a1ac757f6ab1626379b544d6f8ddb05f7bfa02173f8347b6140295b0f770394549f9321775d3048e466a9a02b99b88ad5f0346858 + checksum: 094e40f4ab9f131408202063964d63740609fd4fdb70a5b6332b371761921b540ffbcee7a434c0199b8317dfb2ba4675eef674867215fd3b85e24054607c1501 languageName: node linkType: hard "babel-plugin-polyfill-regenerator@npm:^0.5.3": - version: 0.5.3 - resolution: "babel-plugin-polyfill-regenerator@npm:0.5.3" + version: 0.5.4 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.4" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.4.3" + "@babel/helper-define-polyfill-provider": "npm:^0.4.4" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: cc32313b9ebbf1d7bedc33524a861136b9e5d3b6e9be317ac360a1c2a59ae5ed1b465a6c68b2715cdefb089780ddfb0c11f4a148e49827a947beee76e43da598 + checksum: 0b903f5fe2f8c487b4260935dfe60bd9a95bcaee7ae63958f063045093b16d4e8288c232199d411261300aa21f6b106a3cb83c42cc996de013b337f5825a79fe languageName: node linkType: hard @@ -5313,17 +5341,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.21.9, browserslist@npm:^4.22.1": - version: 4.22.1 - resolution: "browserslist@npm:4.22.1" +"browserslist@npm:^4.22.2": + version: 4.22.2 + resolution: "browserslist@npm:4.22.2" dependencies: - caniuse-lite: "npm:^1.0.30001541" - electron-to-chromium: "npm:^1.4.535" - node-releases: "npm:^2.0.13" + caniuse-lite: "npm:^1.0.30001565" + electron-to-chromium: "npm:^1.4.601" + node-releases: "npm:^2.0.14" update-browserslist-db: "npm:^1.0.13" bin: browserslist: cli.js - checksum: 6810f2d63f171d0b7b8d38cf091708e00cb31525501810a507839607839320d66e657293b0aa3d7f051ecbc025cb07390a90c037682c1d05d12604991e41050b + checksum: 2a331aab90503130043ca41dd5d281fa1e89d5e076d07a2d75e76bf4d693bd56e73d5abcd8c4f39119da6328d450578c216cf1cd5c99b82d8a90a2ae6271b465 languageName: node linkType: hard @@ -5540,10 +5568,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001541": - version: 1.0.30001565 - resolution: "caniuse-lite@npm:1.0.30001565" - checksum: b400e0364651a700e39d59449ca6c65b26e2caceecc4b93ae54a01ed1f62d2a7e1333b1dc640d95fbe620ffa5be38fe4dbacd880cd7a1f42fc72bb8de9a2d0c9 +"caniuse-lite@npm:^1.0.30001565": + version: 1.0.30001568 + resolution: "caniuse-lite@npm:1.0.30001568" + checksum: 13f01e5a2481134bd61cf565ce9fecbd8e107902927a0dcf534230a92191a81f1715792170f5f39719c767c3a96aa6df9917a8d5601f15bbd5e4041a8cfecc99 languageName: node linkType: hard @@ -6020,11 +6048,11 @@ __metadata: linkType: hard "core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.33.1": - version: 3.33.3 - resolution: "core-js-compat@npm:3.33.3" + version: 3.34.0 + resolution: "core-js-compat@npm:3.34.0" dependencies: - browserslist: "npm:^4.22.1" - checksum: 779997ac791b7f7d01f21312c7b83fff2babb1f632d21fd6cfd8e9c737442475bcb660fade7e1cd7642b5c9593685bc2188089bf86b31d671e8e05e28ee30e58 + browserslist: "npm:^4.22.2" + checksum: d2a46d977aa331df9e9d7372f309841403d6f158dbcf5bf7e358ea547bd5ccc93f9447e93d66b74eb4b19c647874e794511238c40cee495716a5f8a74a605ac1 languageName: node linkType: hard @@ -6036,9 +6064,9 @@ __metadata: linkType: hard "core-js@npm:^3.8.2": - version: 3.33.3 - resolution: "core-js@npm:3.33.3" - checksum: 08abdc9470c8228b9d09f61e62ab312738681202c4c34e9638889125b304b235f34c4fe22e9d41c20906ac0fcc807dca57c5ff7d6b90021bf64e8fe23461d9ab + version: 3.34.0 + resolution: "core-js@npm:3.34.0" + checksum: 408a77898abe03bf3e5dec2a451c36f4745081cca9022f8bdf9b817d57bb6d3a534d555f47a4b95e1daa5e21dbc79122eac2402e25720d425f5925127e55dcd8 languageName: node linkType: hard @@ -6177,9 +6205,9 @@ __metadata: linkType: hard "csstype@npm:^3.0.2": - version: 3.1.2 - resolution: "csstype@npm:3.1.2" - checksum: 32c038af259897c807ac738d9eab16b3d86747c72b09d5c740978e06f067f9b7b1737e1b75e407c7ab1fe1543dc95f20e202b4786aeb1b8d3bdf5d5ce655e6c6 + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 languageName: node linkType: hard @@ -6191,8 +6219,8 @@ __metadata: linkType: hard "danger@npm:^11.2.6": - version: 11.3.0 - resolution: "danger@npm:11.3.0" + version: 11.3.1 + resolution: "danger@npm:11.3.1" dependencies: "@gitbeaker/core": "npm:^35.8.1" "@gitbeaker/node": "npm:^35.8.1" @@ -6242,7 +6270,7 @@ __metadata: danger-process: distribution/commands/danger-process.js danger-reset-status: distribution/commands/danger-reset-status.js danger-runner: distribution/commands/danger-runner.js - checksum: 568a6c2bdbef663c9d1fca36651939b39bf7a158867bdf955054bdc0f16533658aaf258ab9bc1c1bf517609b6eabe776e3d24a0364903a5a38bf67d8d690b252 + checksum: 0a2a7655817200fb3488645787268842ba6c8fadbf6fa8c3e6d13718564a6f915ef1f70020686b9b8b94a050fb80eaeb8b6abf0f8525162ddd739da5ad51d432 languageName: node linkType: hard @@ -6498,7 +6526,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -6893,10 +6921,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.535": - version: 1.4.595 - resolution: "electron-to-chromium@npm:1.4.595" - checksum: 4383430e18d4c4d1fd8876d286f00ddf107831b7ed6bae76d25cb4418c04940aec55f142f167c389c3e7270430402e234689901efd2431c384a9164a35b1c178 +"electron-to-chromium@npm:^1.4.601": + version: 1.4.610 + resolution: "electron-to-chromium@npm:1.4.610" + checksum: b2f228a62fadb05057885f584f43558738cd547eade5b1ee819491a8420faf3711bdc7ce9bad7b1beb9c7e2ea9f9ffed690b07272cf58fb6e07ddaec1bbee8b8 languageName: node linkType: hard @@ -7017,12 +7045,12 @@ __metadata: languageName: node linkType: hard -"envinfo@npm:7.10.0": - version: 7.10.0 - resolution: "envinfo@npm:7.10.0" +"envinfo@npm:7.11.0": + version: 7.11.0 + resolution: "envinfo@npm:7.11.0" bin: envinfo: dist/cli.js - checksum: ebc7792fbedca72bc829913abe0c2a3384b883903012f97b56085afd4e83d26f7dd0652403fedd99cd3e1c93d4fb0706f5d2c3dc06ac6a1eda348280a06a9dcf + checksum: 4415b9c1ca32cdf92ce126136b9965eeac2efd6ab7e5278c06e8f86d048edad87ef4084710313a6d938ef9bc084ab17e1caee16339d731d230f3e2650f3aaf4d languageName: node linkType: hard @@ -7603,13 +7631,13 @@ __metadata: linkType: hard "eslint@npm:^8.28.0": - version: 8.54.0 - resolution: "eslint@npm:8.54.0" + version: 8.55.0 + resolution: "eslint@npm:8.55.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^2.1.3" - "@eslint/js": "npm:8.54.0" + "@eslint/eslintrc": "npm:^2.1.4" + "@eslint/js": "npm:8.55.0" "@humanwhocodes/config-array": "npm:^0.11.13" "@humanwhocodes/module-importer": "npm:^1.0.1" "@nodelib/fs.walk": "npm:^1.2.8" @@ -7646,7 +7674,7 @@ __metadata: text-table: "npm:^0.2.0" bin: eslint: bin/eslint.js - checksum: 4f205f832bdbd0218cde374b067791f4f76d7abe8de86b2dc849c273899051126d912ebf71531ee49b8eeaa22cad77febdc8f2876698dc2a76e84a8cb976af22 + checksum: d28c0b60f19bb7d355cb8393e77b018c8f548dba3f820b799c89bb2e0c436ee26084e700c5e57e1e97e7972ec93065277849141b82e7b0c0d02c2dc1e553a2a1 languageName: node linkType: hard @@ -8713,11 +8741,11 @@ __metadata: linkType: hard "globals@npm:^13.19.0": - version: 13.23.0 - resolution: "globals@npm:13.23.0" + version: 13.24.0 + resolution: "globals@npm:13.24.0" dependencies: type-fest: "npm:^0.20.2" - checksum: fc05e184b3be59bffa2580f28551a12a758c3a18df4be91444202982c76f13f52821ad54ffaf7d3f2a4d2498fdf54aeaca8d4540fd9e860a9edb09d34ef4c507 + checksum: d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd languageName: node linkType: hard @@ -8902,23 +8930,6 @@ __metadata: languageName: node linkType: hard -"har-schema@npm:^2.0.0": - version: 2.0.0 - resolution: "har-schema@npm:2.0.0" - checksum: 3856cb76152658e0002b9c2b45b4360bb26b3e832c823caed8fcf39a01096030bf09fa5685c0f7b0f2cb3ecba6e9dce17edaf28b64a423d6201092e6be56e592 - languageName: node - linkType: hard - -"har-validator@npm:~5.1.3": - version: 5.1.5 - resolution: "har-validator@npm:5.1.5" - dependencies: - ajv: "npm:^6.12.3" - har-schema: "npm:^2.0.0" - checksum: f1d606eb1021839e3a905be5ef7cca81c2256a6be0748efb8fefc14312214f9e6c15d7f2eaf37514104071207d84f627b68bb9f6178703da4e06fbd1a0649a5e - languageName: node - linkType: hard - "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" @@ -9148,14 +9159,14 @@ __metadata: languageName: node linkType: hard -"http-signature@npm:~1.2.0": - version: 1.2.0 - resolution: "http-signature@npm:1.2.0" +"http-signature@npm:~1.3.6": + version: 1.3.6 + resolution: "http-signature@npm:1.3.6" dependencies: assert-plus: "npm:^1.0.0" - jsprim: "npm:^1.2.2" - sshpk: "npm:^1.7.0" - checksum: 582f7af7f354429e1fb19b3bbb9d35520843c69bb30a25b88ca3c5c2c10715f20ae7924e20cffbed220b1d3a726ef4fe8ccc48568d5744db87be9a79887d6733 + jsprim: "npm:^2.0.2" + sshpk: "npm:^1.14.1" + checksum: f8d15d8c91a5a80805530e2f401a3f83ed55162058651d86ad00df294b159a54e001b5d00e04983f7542a55865aee02d2d83d68c8499137ff2bc142553d8dfc2 languageName: node linkType: hard @@ -10871,15 +10882,15 @@ __metadata: languageName: node linkType: hard -"jsprim@npm:^1.2.2": - version: 1.4.2 - resolution: "jsprim@npm:1.4.2" +"jsprim@npm:^2.0.2": + version: 2.0.2 + resolution: "jsprim@npm:2.0.2" dependencies: assert-plus: "npm:1.0.0" extsprintf: "npm:1.3.0" json-schema: "npm:0.4.0" verror: "npm:1.10.0" - checksum: 5e4bca99e90727c2040eb4c2190d0ef1fe51798ed5714e87b841d304526190d960f9772acc7108fa1416b61e1122bcd60e4460c91793dce0835df5852aab55af + checksum: 677be2d41df536c92c6d0114a492ef197084018cfbb1a3e10b1fa1aad889564b2e3a7baa6af7949cc2d73678f42368b0be165a26bd4e4de6883a30dd6a24e98d languageName: node linkType: hard @@ -12432,10 +12443,10 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.13": - version: 2.0.13 - resolution: "node-releases@npm:2.0.13" - checksum: 2fb44bf70fc949d27f3a48a7fd1a9d1d603ddad4ccd091f26b3fb8b1da976605d919330d7388ccd55ca2ade0dc8b2e12841ba19ef249c8bb29bf82532d401af7 +"node-releases@npm:^2.0.14": + version: 2.0.14 + resolution: "node-releases@npm:2.0.14" + checksum: 199fc93773ae70ec9969bc6d5ac5b2bbd6eb986ed1907d751f411fef3ede0e4bfdb45ceb43711f8078bea237b6036db8b1bf208f6ff2b70c7d615afd157f3ab9 languageName: node linkType: hard @@ -12646,13 +12657,6 @@ __metadata: languageName: node linkType: hard -"oauth-sign@npm:~0.9.0": - version: 0.9.0 - resolution: "oauth-sign@npm:0.9.0" - checksum: fc92a516f6ddbb2699089a2748b04f55c47b6ead55a77cd3a2cbbce5f7af86164cb9425f9ae19acfd066f1ad7d3a96a67b8928c6ea946426f6d6c29e448497c2 - languageName: node - linkType: hard - "object-assign@npm:^4, object-assign@npm:^4.0.1, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" @@ -12685,14 +12689,14 @@ __metadata: linkType: hard "object.assign@npm:^4.1.2, object.assign@npm:^4.1.4": - version: 4.1.4 - resolution: "object.assign@npm:4.1.4" + version: 4.1.5 + resolution: "object.assign@npm:4.1.5" dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" has-symbols: "npm:^1.0.3" object-keys: "npm:^1.1.1" - checksum: 2f286118c023e557757620e647b02e7c88d3d417e0c568fca0820de8ec9cca68928304854d5b03e99763eddad6e78a6716e2930f7e6372e4b9b843f3fd3056f3 + checksum: 60108e1fa2706f22554a4648299b0955236c62b3685c52abf4988d14fffb0e7731e00aa8c6448397e3eb63d087dcc124a9f21e1980f36d0b2667f3c18bacd469 languageName: node linkType: hard @@ -13600,7 +13604,7 @@ __metadata: languageName: node linkType: hard -"psl@npm:^1.1.28, psl@npm:^1.1.33": +"psl@npm:^1.1.33": version: 1.9.0 resolution: "psl@npm:1.9.0" checksum: 6a3f805fdab9442f44de4ba23880c4eba26b20c8e8e0830eff1cb31007f6825dace61d17203c58bfe36946842140c97a1ba7f67bc63ca2d88a7ee052b65d97ab @@ -13631,6 +13635,15 @@ __metadata: languageName: node linkType: hard +"qs@npm:6.10.4": + version: 6.10.4 + resolution: "qs@npm:6.10.4" + dependencies: + side-channel: "npm:^1.0.4" + checksum: 7a8c9d77968aeccb769aedd7e047c0e0109dad0cfa57cab1ad906f4069fd58f361b80abd2de5854ba9a09b4c5d06d6a2c82108766f1f1527572fe6130deaa471 + languageName: node + linkType: hard + "qs@npm:6.11.0": version: 6.11.0 resolution: "qs@npm:6.11.0" @@ -13649,13 +13662,6 @@ __metadata: languageName: node linkType: hard -"qs@npm:~6.5.2": - version: 6.5.3 - resolution: "qs@npm:6.5.3" - checksum: 6631d4f2fa9d315e480662646745a4aa3a708817fbffe2cbdacec8ab9be130f92740c66191770fe9b704bc5fa9c1cc1f6596f55ad132fef7bd3ad1582f199eb0 - languageName: node - linkType: hard - "query-string@npm:^7.0.0": version: 7.1.3 resolution: "query-string@npm:7.1.3" @@ -14548,34 +14554,6 @@ __metadata: languageName: node linkType: hard -"request@npm:2.88.2": - version: 2.88.2 - resolution: "request@npm:2.88.2" - dependencies: - aws-sign2: "npm:~0.7.0" - aws4: "npm:^1.8.0" - caseless: "npm:~0.12.0" - combined-stream: "npm:~1.0.6" - extend: "npm:~3.0.2" - forever-agent: "npm:~0.6.1" - form-data: "npm:~2.3.2" - har-validator: "npm:~5.1.3" - http-signature: "npm:~1.2.0" - is-typedarray: "npm:~1.0.0" - isstream: "npm:~0.1.2" - json-stringify-safe: "npm:~5.0.1" - mime-types: "npm:~2.1.19" - oauth-sign: "npm:~0.9.0" - performance-now: "npm:^2.1.0" - qs: "npm:~6.5.2" - safe-buffer: "npm:^5.1.2" - tough-cookie: "npm:~2.5.0" - tunnel-agent: "npm:^0.6.0" - uuid: "npm:^3.3.2" - checksum: 0ec66e7af1391e51ad231de3b1c6c6aef3ebd0a238aa50d4191c7a792dcdb14920eea8d570c702dc5682f276fe569d176f9b8ebc6031a3cf4a630a691a431a63 - languageName: node - linkType: hard - "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -15363,7 +15341,7 @@ __metadata: languageName: node linkType: hard -"sshpk@npm:^1.7.0": +"sshpk@npm:^1.14.1": version: 1.18.0 resolution: "sshpk@npm:1.18.0" dependencies: @@ -16013,7 +15991,7 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.1.2": +"tough-cookie@npm:^4.1.2, tough-cookie@npm:^4.1.3": version: 4.1.3 resolution: "tough-cookie@npm:4.1.3" dependencies: @@ -16025,16 +16003,6 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:~2.5.0": - version: 2.5.0 - resolution: "tough-cookie@npm:2.5.0" - dependencies: - psl: "npm:^1.1.28" - punycode: "npm:^2.1.1" - checksum: e1cadfb24d40d64ca16de05fa8192bc097b66aeeb2704199b055ff12f450e4f30c927ce250f53d01f39baad18e1c11d66f65e545c5c6269de4c366fafa4c0543 - languageName: node - linkType: hard - "tr46@npm:^1.0.1": version: 1.0.1 resolution: "tr46@npm:1.0.1" @@ -16412,11 +16380,11 @@ __metadata: linkType: hard "undici@npm:^5.25.4": - version: 5.28.1 - resolution: "undici@npm:5.28.1" + version: 5.28.2 + resolution: "undici@npm:5.28.2" dependencies: "@fastify/busboy": "npm:^2.0.0" - checksum: d7421957f829cb1e8188d1e136454cb0ab30a275213c9831bcbaec5aa15191fe8b094472d7d0d35f62a0cc50aba430ec7193d1e87ded01616a24ef8f673d42f0 + checksum: 34385ad9b3ba85309972ee3c1b426dcd19b94a5a6aa9c54499b5f48436c0ecc13a9b1e756a7c6a953eaefa9f4263890625ece5f2719fd774b0852204f5e4d5f9 languageName: node linkType: hard @@ -16939,15 +16907,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^3.3.2": - version: 3.4.0 - resolution: "uuid@npm:3.4.0" - bin: - uuid: ./bin/uuid - checksum: 1c13950df865c4f506ebfe0a24023571fa80edf2e62364297a537c80af09c618299797bbf2dbac6b1f8ae5ad182ba474b89db61e0e85839683991f7e08795347 - languageName: node - linkType: hard - "uuid@npm:^8.0.0, uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" @@ -17029,16 +16988,16 @@ __metadata: languageName: node linkType: hard -"verdaccio-audit@npm:12.0.0-next.3": - version: 12.0.0-next.3 - resolution: "verdaccio-audit@npm:12.0.0-next.3" +"verdaccio-audit@npm:12.0.0-next.4": + version: 12.0.0-next.4 + resolution: "verdaccio-audit@npm:12.0.0-next.4" dependencies: - "@verdaccio/config": "npm:7.0.0-next.3" - "@verdaccio/core": "npm:7.0.0-next.3" + "@verdaccio/config": "npm:7.0.0-next.4" + "@verdaccio/core": "npm:7.0.0-next.4" express: "npm:4.18.2" https-proxy-agent: "npm:5.0.1" node-fetch: "npm:cjs" - checksum: 1fe3a12433ad072a854d23960829916e53eccd15dc5870f32e7ae0fcb1933afec13c32f90c96ed7a15a779f85d0796028eb6b2867671ee84bff2aff4a5c1195b + checksum: 46959af86e7449efbc43e8a3382a21aca16b614f4e75b294e01a03470bd569d9cb87a22d1256fa0f191df2defd488fa04a0aabb8a77d554c9b50e401aea0f05f languageName: node linkType: hard @@ -17051,11 +17010,11 @@ __metadata: languageName: node linkType: hard -"verdaccio-htpasswd@npm:12.0.0-next.3": - version: 12.0.0-next.3 - resolution: "verdaccio-htpasswd@npm:12.0.0-next.3" +"verdaccio-htpasswd@npm:12.0.0-next.4": + version: 12.0.0-next.4 + resolution: "verdaccio-htpasswd@npm:12.0.0-next.4" dependencies: - "@verdaccio/core": "npm:7.0.0-next.3" + "@verdaccio/core": "npm:7.0.0-next.4" "@verdaccio/file-locking": "npm:12.0.0-next.1" apache-md5: "npm:1.1.8" bcryptjs: "npm:2.4.3" @@ -17063,34 +17022,35 @@ __metadata: debug: "npm:4.3.4" http-errors: "npm:2.0.0" unix-crypt-td-js: "npm:1.1.4" - checksum: 8c6886412abd4368e22dd536c7090a5f298b5cf50d2c853baf3732399fbd7134e9cfbb9bfe4efccae19fcafbe26af4388a10845a7c34d84f6f6bb9a9abd47eb3 + checksum: 4c495f779a42d8377a1f4a73e6330ae8852e4a9c620b2ad95de34f5c7f5500414b1389d487e69c00446367a995ccae81a1b93a52d3edc0ea75e1cf78dba7fc0f languageName: node linkType: hard "verdaccio@npm:^5.19.1": - version: 5.27.0 - resolution: "verdaccio@npm:5.27.0" + version: 5.29.0 + resolution: "verdaccio@npm:5.29.0" dependencies: - "@verdaccio/config": "npm:7.0.0-next.3" - "@verdaccio/core": "npm:7.0.0-next.3" + "@cypress/request": "npm:3.0.1" + "@verdaccio/config": "npm:7.0.0-next.4" + "@verdaccio/core": "npm:7.0.0-next.4" "@verdaccio/local-storage": "npm:10.3.3" - "@verdaccio/logger-7": "npm:7.0.0-next.3" - "@verdaccio/middleware": "npm:7.0.0-next.3" + "@verdaccio/logger-7": "npm:7.0.0-next.4" + "@verdaccio/middleware": "npm:7.0.0-next.4" "@verdaccio/search": "npm:7.0.0-next.2" - "@verdaccio/signature": "npm:7.0.0-next.1" + "@verdaccio/signature": "npm:7.0.0-next.2" "@verdaccio/streams": "npm:10.2.1" - "@verdaccio/tarball": "npm:12.0.0-next.3" - "@verdaccio/ui-theme": "npm:7.0.0-next.3" - "@verdaccio/url": "npm:12.0.0-next.3" - "@verdaccio/utils": "npm:7.0.0-next.3" + "@verdaccio/tarball": "npm:12.0.0-next.4" + "@verdaccio/ui-theme": "npm:7.0.0-next.4" + "@verdaccio/url": "npm:12.0.0-next.4" + "@verdaccio/utils": "npm:7.0.0-next.4" JSONStream: "npm:1.3.5" - async: "npm:3.2.4" + async: "npm:3.2.5" clipanion: "npm:3.2.1" compression: "npm:1.7.4" cookies: "npm:0.8.0" cors: "npm:2.8.5" debug: "npm:^4.3.4" - envinfo: "npm:7.10.0" + envinfo: "npm:7.11.0" express: "npm:4.18.2" express-rate-limit: "npm:5.5.1" fast-safe-stringify: "npm:2.1.1" @@ -17104,14 +17064,13 @@ __metadata: mkdirp: "npm:1.0.4" mv: "npm:2.1.1" pkginfo: "npm:0.4.1" - request: "npm:2.88.2" semver: "npm:7.5.4" validator: "npm:13.11.0" - verdaccio-audit: "npm:12.0.0-next.3" - verdaccio-htpasswd: "npm:12.0.0-next.3" + verdaccio-audit: "npm:12.0.0-next.4" + verdaccio-htpasswd: "npm:12.0.0-next.4" bin: verdaccio: bin/verdaccio - checksum: e6d867b84f280aa2a5a11a28054c4a885a6d308dc9f2492044431b3db02e3d7351a559fd0ab7d59bf413212a5d284353f208529e975ec978f82c61fc2961a730 + checksum: 03cb7f6b4c996342187fdb8bcd17e5f3e08b0e9b3f82c400c8404a38d1cf43158144e4f1d42dfad340cb2a5ea604ec6e4128892f2579afe1eff3a595e5b7857b languageName: node linkType: hard @@ -17614,8 +17573,8 @@ __metadata: linkType: hard "ws@npm:^8.11.0": - version: 8.14.2 - resolution: "ws@npm:8.14.2" + version: 8.15.0 + resolution: "ws@npm:8.15.0" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -17624,7 +17583,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 35b4c2da048b8015c797fd14bcb5a5766216ce65c8a5965616a5440ca7b6c3681ee3cbd0ea0c184a59975556e9d58f2002abf8485a14d11d3371770811050a16 + checksum: b778a405b2589ffbf549323e2f404f1f72e372a049d332d2f0b1f33057e9fbb14a05aa474cb156e4584b418cd95edf4297c0ca5263d6519e8009064bf8e0b80d languageName: node linkType: hard From 5d65a35dd259ec7e7f62fee5d599e5c8e9b2fc37 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 12 Dec 2023 11:52:36 +0100 Subject: [PATCH 23/64] fixes --- code/lib/theming/package.json | 10 ++++----- code/lib/theming/src/index.ts | 12 +++++++++- code/package.json | 2 +- code/ui/blocks/src/components/Title.tsx | 3 +-- .../src/components/form/input/input.tsx | 16 ++++++-------- .../src/components/typography/elements/DL.tsx | 3 +-- .../src/components/typography/elements/OL.tsx | 8 ++++--- .../src/components/typography/elements/UL.tsx | 6 ++--- .../src/components/typography/lib/common.tsx | 6 ++--- code/yarn.lock | 22 +++++++++---------- 10 files changed, 48 insertions(+), 40 deletions(-) diff --git a/code/lib/theming/package.json b/code/lib/theming/package.json index 1d3e9f76a650..5b80d0565fa6 100644 --- a/code/lib/theming/package.json +++ b/code/lib/theming/package.json @@ -49,16 +49,16 @@ "prep": "node --loader ../../../scripts/node_modules/esbuild-register/loader.js -r ../../../scripts/node_modules/esbuild-register/register.js ../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", "@storybook/client-logger": "workspace:*", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, "devDependencies": { - "@emotion/cache": "^11.10.7", - "@emotion/is-prop-valid": "^1.2.0", - "@emotion/react": "^11.10.4", - "@emotion/styled": "^11.10.4", + "@emotion/cache": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", "@types/fs-extra": "^11.0.1", "@types/node": "^18.0.0", "deep-object-diff": "^1.1.0", diff --git a/code/lib/theming/src/index.ts b/code/lib/theming/src/index.ts index 9fd7bec25143..fe048aa0f2dd 100644 --- a/code/lib/theming/src/index.ts +++ b/code/lib/theming/src/index.ts @@ -1,6 +1,9 @@ // eslint-disable-next-line @typescript-eslint/triple-slash-reference /// -// eslint-disable-next-line @typescript-eslint/triple-slash-reference + +import type { FunctionInterpolation, Interpolation } from '@emotion/react'; +import type { StorybookTheme } from './types'; + /// export { default as styled } from '@emotion/styled'; @@ -20,6 +23,13 @@ export { } from '@emotion/react'; export type { CSSObject, Keyframes } from '@emotion/react'; +type FunctionInterpolationEnhanced = FunctionInterpolation; +type InterpolationEnhanced = Interpolation; +export type { + FunctionInterpolationEnhanced as FunctionInterpolation, + InterpolationEnhanced as Interpolation, +}; + export * from './base'; export * from './types'; diff --git a/code/package.json b/code/package.json index 8b27aee34008..c35975028305 100644 --- a/code/package.json +++ b/code/package.json @@ -96,7 +96,7 @@ "@babel/preset-react": "^7.22.15", "@babel/preset-typescript": "^7.23.2", "@babel/runtime": "^7.23.2", - "@emotion/jest": "^11.10.0", + "@emotion/jest": "^11.11.0", "@jest/globals": "^29.3.1", "@nx/workspace": "17.0.2", "@playwright/test": "1.36.0", diff --git a/code/ui/blocks/src/components/Title.tsx b/code/ui/blocks/src/components/Title.tsx index 39a276159941..4a1e45aad1c6 100644 --- a/code/ui/blocks/src/components/Title.tsx +++ b/code/ui/blocks/src/components/Title.tsx @@ -1,10 +1,9 @@ -import type { Theme } from '@storybook/theming'; import { styled } from '@storybook/theming'; import { withReset } from '@storybook/components'; const breakpoint = 600; -export const Title = styled.h1(withReset, ({ theme }: { theme: Theme }) => ({ +export const Title = styled.h1(withReset, ({ theme }) => ({ color: theme.color.defaultText, fontSize: theme.typography.size.m3, fontWeight: theme.typography.weight.bold, diff --git a/code/ui/components/src/components/form/input/input.tsx b/code/ui/components/src/components/form/input/input.tsx index 15f647c7cdb2..c4897ea79311 100644 --- a/code/ui/components/src/components/form/input/input.tsx +++ b/code/ui/components/src/components/form/input/input.tsx @@ -1,6 +1,6 @@ import type { HTMLProps, SelectHTMLAttributes } from 'react'; import React, { forwardRef } from 'react'; -import type { Theme, CSSObject } from '@storybook/theming'; +import type { CSSObject, FunctionInterpolation } from '@storybook/theming'; import { styled } from '@storybook/theming'; import type { TextareaAutosizeProps } from 'react-textarea-autosize'; @@ -19,8 +19,8 @@ const styleResets: CSSObject = { position: 'relative', }; -const styles = ({ theme }: { theme: Theme }): CSSObject => ({ - ...styleResets, +const styles: FunctionInterpolation = ({ theme }) => ({ + ...(styleResets as any), transition: 'box-shadow 200ms ease-out, opacity 200ms ease-out', color: theme.input.color || 'inherit', @@ -58,7 +58,7 @@ export type Sizes = '100%' | 'flex' | 'auto'; export type Alignments = 'end' | 'center' | 'start'; export type ValidationStates = 'valid' | 'error' | 'warn'; -const sizes = ({ size }: { size?: Sizes }): CSSObject => { +const sizes: FunctionInterpolation<{ size?: Sizes }> = ({ size }) => { switch (size) { case '100%': { return { width: '100%' }; @@ -72,14 +72,12 @@ const sizes = ({ size }: { size?: Sizes }): CSSObject => { } } }; -const alignment = ({ - align, -}: { +const alignment: FunctionInterpolation<{ size?: Sizes; align?: Alignments; valid?: ValidationStates; height?: number; -}): CSSObject => { +}> = ({ align }) => { switch (align) { case 'end': { return { textAlign: 'right' }; @@ -93,7 +91,7 @@ const alignment = ({ } } }; -const validation = ({ valid, theme }: { valid: ValidationStates; theme: Theme }): CSSObject => { +const validation: FunctionInterpolation<{ valid: ValidationStates }> = ({ valid, theme }) => { switch (valid) { case 'valid': { return { boxShadow: `${theme.color.positive} 0 0 0 1px inset !important` }; diff --git a/code/ui/components/src/components/typography/elements/DL.tsx b/code/ui/components/src/components/typography/elements/DL.tsx index 07c40986d641..138ca41bdfe3 100644 --- a/code/ui/components/src/components/typography/elements/DL.tsx +++ b/code/ui/components/src/components/typography/elements/DL.tsx @@ -1,8 +1,7 @@ import { styled } from '@storybook/theming'; import { withReset, withMargin } from '../lib/common'; -export const DL = styled.dl(withReset, { - ...withMargin, +export const DL = styled.dl(withReset, withMargin, { padding: 0, '& dt': { fontSize: '14px', diff --git a/code/ui/components/src/components/typography/elements/OL.tsx b/code/ui/components/src/components/typography/elements/OL.tsx index 7f2da5b57082..e1e0ec7ce462 100644 --- a/code/ui/components/src/components/typography/elements/OL.tsx +++ b/code/ui/components/src/components/typography/elements/OL.tsx @@ -1,8 +1,8 @@ import { styled } from '@storybook/theming'; -import type { CSSObject } from '@storybook/theming'; +import type { Interpolation } from '@storybook/theming'; import { withReset, withMargin } from '../lib/common'; -const listCommon: CSSObject = { +const listCommon: Interpolation = { paddingLeft: 30, '& :first-of-type': { marginTop: 0, @@ -12,4 +12,6 @@ const listCommon: CSSObject = { }, }; -export const OL = styled.ol(withReset, withMargin, { ...listCommon, listStyle: 'decimal' }); +export const OL = styled.ol(withReset, withMargin, listCommon, { + listStyle: 'decimal', +}); diff --git a/code/ui/components/src/components/typography/elements/UL.tsx b/code/ui/components/src/components/typography/elements/UL.tsx index 9d4e72622a92..08ff3150f1de 100644 --- a/code/ui/components/src/components/typography/elements/UL.tsx +++ b/code/ui/components/src/components/typography/elements/UL.tsx @@ -1,8 +1,8 @@ import { styled } from '@storybook/theming'; -import type { CSSObject } from '@storybook/theming'; +import type { Interpolation } from '@storybook/theming'; import { withReset, withMargin } from '../lib/common'; -const listCommon: CSSObject = { +const listCommon: Interpolation = { paddingLeft: 30, '& :first-of-type': { marginTop: 0, @@ -12,4 +12,4 @@ const listCommon: CSSObject = { }, }; -export const UL = styled.ul(withReset, withMargin, { ...listCommon, listStyle: 'disc' }); +export const UL = styled.ul(withReset, withMargin, listCommon, { listStyle: 'disc' }); diff --git a/code/ui/components/src/components/typography/lib/common.tsx b/code/ui/components/src/components/typography/lib/common.tsx index dcd6f9adc573..75741ec5d21e 100644 --- a/code/ui/components/src/components/typography/lib/common.tsx +++ b/code/ui/components/src/components/typography/lib/common.tsx @@ -1,7 +1,7 @@ import { transparentize } from 'polished'; -import type { CSSObject, Theme } from '@storybook/theming'; +import type { CSSObject, FunctionInterpolation, Theme } from '@storybook/theming'; -export const headerCommon = ({ theme }: { theme: Theme }): CSSObject => ({ +export const headerCommon: FunctionInterpolation = ({ theme }) => ({ margin: '20px 0 8px', padding: 0, cursor: 'text', @@ -39,7 +39,7 @@ export const codeCommon = ({ theme }: { theme: Theme }): CSSObject => ({ backgroundColor: theme.base === 'light' ? theme.color.lighter : theme.color.border, }); -export const withReset = ({ theme }: { theme: Theme }): CSSObject => ({ +export const withReset: FunctionInterpolation = ({ theme }) => ({ fontFamily: theme.typography.fonts.base, fontSize: theme.typography.size.s3, margin: 0, diff --git a/code/yarn.lock b/code/yarn.lock index a771dd142ac8..c711feb04772 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -2367,7 +2367,7 @@ __metadata: languageName: node linkType: hard -"@emotion/cache@npm:^11.10.7, @emotion/cache@npm:^11.11.0": +"@emotion/cache@npm:^11.11.0": version: 11.11.0 resolution: "@emotion/cache@npm:11.11.0" dependencies: @@ -2397,7 +2397,7 @@ __metadata: languageName: node linkType: hard -"@emotion/is-prop-valid@npm:^1.2.0, @emotion/is-prop-valid@npm:^1.2.1": +"@emotion/is-prop-valid@npm:^1.2.1": version: 1.2.1 resolution: "@emotion/is-prop-valid@npm:1.2.1" dependencies: @@ -2406,7 +2406,7 @@ __metadata: languageName: node linkType: hard -"@emotion/jest@npm:^11.10.0": +"@emotion/jest@npm:^11.11.0": version: 11.11.0 resolution: "@emotion/jest@npm:11.11.0" dependencies: @@ -2434,7 +2434,7 @@ __metadata: languageName: node linkType: hard -"@emotion/react@npm:^11.10.4": +"@emotion/react@npm:^11.11.1": version: 11.11.1 resolution: "@emotion/react@npm:11.11.1" dependencies: @@ -2475,7 +2475,7 @@ __metadata: languageName: node linkType: hard -"@emotion/styled@npm:^11.10.4": +"@emotion/styled@npm:^11.11.0": version: 11.11.0 resolution: "@emotion/styled@npm:11.11.0" dependencies: @@ -6381,7 +6381,7 @@ __metadata: "@babel/preset-typescript": "npm:^7.23.2" "@babel/runtime": "npm:^7.23.2" "@chromaui/addon-visual-tests": "npm:^0.0.124" - "@emotion/jest": "npm:^11.10.0" + "@emotion/jest": "npm:^11.11.0" "@jest/globals": "npm:^29.3.1" "@nx/workspace": "npm:17.0.2" "@playwright/test": "npm:1.36.0" @@ -6761,11 +6761,11 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/theming@workspace:lib/theming" dependencies: - "@emotion/cache": "npm:^11.10.7" - "@emotion/is-prop-valid": "npm:^1.2.0" - "@emotion/react": "npm:^11.10.4" - "@emotion/styled": "npm:^11.10.4" - "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.0" + "@emotion/cache": "npm:^11.11.0" + "@emotion/is-prop-valid": "npm:^1.2.1" + "@emotion/react": "npm:^11.11.1" + "@emotion/styled": "npm:^11.11.0" + "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.1" "@storybook/client-logger": "workspace:*" "@storybook/global": "npm:^5.0.0" "@types/fs-extra": "npm:^11.0.1" From 2ee9a7200786662afadd3e16fba0fe57e22cd180 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Mon, 11 Dec 2023 14:20:47 +0100 Subject: [PATCH 24/64] Fix Angular sandbox generation --- .../template/stories/component-play.stories.ts | 4 +++- scripts/tasks/sandbox-parts.ts | 10 +++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/code/lib/preview-api/template/stories/component-play.stories.ts b/code/lib/preview-api/template/stories/component-play.stories.ts index f238e7b34f3f..d4c6ed300abe 100644 --- a/code/lib/preview-api/template/stories/component-play.stories.ts +++ b/code/lib/preview-api/template/stories/component-play.stories.ts @@ -6,7 +6,9 @@ import { expect } from '@storybook/jest'; export default { component: globalThis.Components.Pre, play: async ({ canvasElement, name }: PlayFunctionContext) => { - await expect(JSON.parse(within(canvasElement).getByTestId('pre').innerText)).toEqual({ + await expect( + JSON.parse(within(canvasElement as HTMLPreElement).getByTestId('pre').innerText) + ).toEqual({ name, }); }, diff --git a/scripts/tasks/sandbox-parts.ts b/scripts/tasks/sandbox-parts.ts index d35edced9abc..cfd874a00afe 100644 --- a/scripts/tasks/sandbox-parts.ts +++ b/scripts/tasks/sandbox-parts.ts @@ -611,7 +611,7 @@ async function prepareAngularSandbox(cwd: string, templateName: string) { // Set tsConfig compilerOptions - const tsConfigPath = join(cwd, 'tsconfig.json'); + const tsConfigPath = join(cwd, '.storybook', 'tsconfig.json'); const tsConfigContent = readFileSync(tsConfigPath, { encoding: 'utf-8' }); // This does not preserve comments, but that shouldn't be an issue for sandboxes const tsConfigJson = JSON5.parse(tsConfigContent); @@ -620,6 +620,14 @@ async function prepareAngularSandbox(cwd: string, templateName: string) { tsConfigJson.compilerOptions.noPropertyAccessFromIndexSignature = false; tsConfigJson.compilerOptions.jsx = 'react'; tsConfigJson.compilerOptions.skipLibCheck = true; + tsConfigJson.compilerOptions.noImplicitAny = false; + tsConfigJson.compilerOptions.strict = false; + tsConfigJson.include = [ + ...tsConfigJson.include, + '../template-stories/**/*.stories.ts', + // This is necessary since template stories depend on globalThis.components, which Typescript can't look up automatically + '../src/stories/**/*', + ]; if (templateName === 'Angular CLI (Version 15)') { tsConfigJson.compilerOptions.paths = { From c44d4ee8bd3a32c0ac1cda50705803600729a2e7 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 12 Dec 2023 12:26:56 +0100 Subject: [PATCH 25/64] fixes --- .../stories_nextjs-default-ts/Navigation.stories.tsx | 2 ++ code/ui/blocks/src/components/ArgsTable/ArgJsDoc.tsx | 3 ++- code/ui/blocks/src/components/ArgsTable/ArgRow.tsx | 5 +++-- code/ui/blocks/src/controls/options/Select.tsx | 4 +--- code/ui/components/src/components/typography/elements/LI.tsx | 3 ++- code/ui/components/src/components/typography/elements/P.tsx | 3 ++- code/ui/components/src/components/typography/lib/common.tsx | 4 ++-- 7 files changed, 14 insertions(+), 10 deletions(-) diff --git a/code/frameworks/nextjs/template/stories_nextjs-default-ts/Navigation.stories.tsx b/code/frameworks/nextjs/template/stories_nextjs-default-ts/Navigation.stories.tsx index 8bb209bd9d45..d9f2a3dc361f 100644 --- a/code/frameworks/nextjs/template/stories_nextjs-default-ts/Navigation.stories.tsx +++ b/code/frameworks/nextjs/template/stories_nextjs-default-ts/Navigation.stories.tsx @@ -24,6 +24,7 @@ function Component() { name: 'Prefetch', }, { + // @ts-expect-error (a legacy nextjs api?) cb: () => router.push('/push-html', { forceOptimisticNavigation: true }), name: 'Push HTML', }, @@ -32,6 +33,7 @@ function Component() { name: 'Refresh', }, { + // @ts-expect-error (a legacy nextjs api?) cb: () => router.replace('/replaced-html', { forceOptimisticNavigation: true }), name: 'Replace', }, diff --git a/code/ui/blocks/src/components/ArgsTable/ArgJsDoc.tsx b/code/ui/blocks/src/components/ArgsTable/ArgJsDoc.tsx index b40b30306c2d..76bac5490d0c 100644 --- a/code/ui/blocks/src/components/ArgsTable/ArgJsDoc.tsx +++ b/code/ui/blocks/src/components/ArgsTable/ArgJsDoc.tsx @@ -1,5 +1,6 @@ import type { FC } from 'react'; import React from 'react'; +import type { CSSObject } from '@storybook/theming'; import { styled } from '@storybook/theming'; import { codeCommon } from '@storybook/components'; import type { JsDocTags } from './types'; @@ -53,7 +54,7 @@ export const Table = styled.table(({ theme }) => ({ border: 'none', }, - code: codeCommon({ theme }), + code: codeCommon({ theme }) as CSSObject, div: { span: { diff --git a/code/ui/blocks/src/components/ArgsTable/ArgRow.tsx b/code/ui/blocks/src/components/ArgsTable/ArgRow.tsx index d6f02f4dc2a7..d6e2c73ad905 100644 --- a/code/ui/blocks/src/components/ArgsTable/ArgRow.tsx +++ b/code/ui/blocks/src/components/ArgsTable/ArgRow.tsx @@ -2,6 +2,7 @@ import type { FC } from 'react'; import React, { useState } from 'react'; import Markdown from 'markdown-to-jsx'; import { transparentize } from 'polished'; +import type { CSSObject } from '@storybook/theming'; import { styled } from '@storybook/theming'; import { codeCommon } from '@storybook/components'; import type { ArgType, Args, TableAnnotation } from './types'; @@ -39,10 +40,10 @@ const Description = styled.div(({ theme }) => ({ }, code: { - ...codeCommon({ theme }), + ...(codeCommon({ theme }) as CSSObject), fontSize: 12, fontFamily: theme.typography.fonts.mono, - }, + } as CSSObject, '& code': { margin: 0, diff --git a/code/ui/blocks/src/controls/options/Select.tsx b/code/ui/blocks/src/controls/options/Select.tsx index b05d58a4a3a7..e2f9835a7c47 100644 --- a/code/ui/blocks/src/controls/options/Select.tsx +++ b/code/ui/blocks/src/controls/options/Select.tsx @@ -23,9 +23,7 @@ const styleResets: CSSObject = { position: 'relative', }; -const OptionsSelect = styled.select(({ theme }) => ({ - ...styleResets, - +const OptionsSelect = styled.select(styleResets, ({ theme }) => ({ boxSizing: 'border-box', position: 'relative', padding: '6px 10px', diff --git a/code/ui/components/src/components/typography/elements/LI.tsx b/code/ui/components/src/components/typography/elements/LI.tsx index a44704043248..4dc7090bc6e9 100644 --- a/code/ui/components/src/components/typography/elements/LI.tsx +++ b/code/ui/components/src/components/typography/elements/LI.tsx @@ -1,3 +1,4 @@ +import type { CSSObject } from '@storybook/theming'; import { styled } from '@storybook/theming'; import { withReset, codeCommon } from '../lib/common'; @@ -12,5 +13,5 @@ export const LI = styled.li(withReset, ({ theme }) => ({ marginTop: '.25em', marginBottom: 0, }, - '& code': codeCommon({ theme }), + '& code': codeCommon({ theme }) as CSSObject, })); diff --git a/code/ui/components/src/components/typography/elements/P.tsx b/code/ui/components/src/components/typography/elements/P.tsx index f6e4ab723114..86624fbe1ce9 100644 --- a/code/ui/components/src/components/typography/elements/P.tsx +++ b/code/ui/components/src/components/typography/elements/P.tsx @@ -1,3 +1,4 @@ +import type { CSSObject } from '@storybook/theming'; import { styled } from '@storybook/theming'; import { withReset, withMargin, codeCommon } from '../lib/common'; @@ -5,5 +6,5 @@ export const P = styled.p(withReset, withMargin, ({ theme }) => ({ fontSize: theme.typography.size.s2, lineHeight: '24px', color: theme.color.defaultText, - '& code': codeCommon({ theme }), + '& code': codeCommon({ theme }) as CSSObject, })); diff --git a/code/ui/components/src/components/typography/lib/common.tsx b/code/ui/components/src/components/typography/lib/common.tsx index 75741ec5d21e..6f7bf0158929 100644 --- a/code/ui/components/src/components/typography/lib/common.tsx +++ b/code/ui/components/src/components/typography/lib/common.tsx @@ -1,5 +1,5 @@ import { transparentize } from 'polished'; -import type { CSSObject, FunctionInterpolation, Theme } from '@storybook/theming'; +import type { CSSObject, FunctionInterpolation } from '@storybook/theming'; export const headerCommon: FunctionInterpolation = ({ theme }) => ({ margin: '20px 0 8px', @@ -19,7 +19,7 @@ export const headerCommon: FunctionInterpolation = ({ theme }) => ({ }, }); -export const codeCommon = ({ theme }: { theme: Theme }): CSSObject => ({ +export const codeCommon: FunctionInterpolation = ({ theme }) => ({ lineHeight: 1, margin: '0 2px', padding: '3px 5px', From c49a84161826a4baae2a533652c13404906f12c8 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Tue, 12 Dec 2023 13:01:19 +0100 Subject: [PATCH 26/64] fix react-dom-shim --- code/lib/react-dom-shim/src/preset.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/react-dom-shim/src/preset.ts b/code/lib/react-dom-shim/src/preset.ts index 1bf82c34df3e..611afe6b2811 100644 --- a/code/lib/react-dom-shim/src/preset.ts +++ b/code/lib/react-dom-shim/src/preset.ts @@ -24,7 +24,7 @@ const getIsReactVersion18 = async (options: Options) => { export const webpackFinal = async (config: any, options: Options) => { const isReactVersion18 = await getIsReactVersion18(options); - if (!isReactVersion18) { + if (isReactVersion18) { return config; } From 6c92162f8b47f4cca764dd4b57f9fa2b6e9a98eb Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 12 Dec 2023 14:13:39 +0100 Subject: [PATCH 27/64] remove the add-react automigration, do not add react as dep --- .../src/automigrate/fixes/add-react.test.ts | 66 ----------------- .../cli/src/automigrate/fixes/add-react.ts | 72 ------------------- code/lib/cli/src/automigrate/fixes/index.ts | 2 - code/lib/cli/src/generators/baseGenerator.ts | 9 --- 4 files changed, 149 deletions(-) delete mode 100644 code/lib/cli/src/automigrate/fixes/add-react.test.ts delete mode 100644 code/lib/cli/src/automigrate/fixes/add-react.ts diff --git a/code/lib/cli/src/automigrate/fixes/add-react.test.ts b/code/lib/cli/src/automigrate/fixes/add-react.test.ts deleted file mode 100644 index 9b7103625de7..000000000000 --- a/code/lib/cli/src/automigrate/fixes/add-react.test.ts +++ /dev/null @@ -1,66 +0,0 @@ -import type { StorybookConfigRaw } from '@storybook/types'; -import type { JsPackageManager, PackageJson } from '../../js-package-manager'; -import { addReact } from './add-react'; - -const checkAddReact = async (packageJson: PackageJson) => { - const packageManager = { - retrievePackageJson: async () => ({ dependencies: {}, devDependencies: {}, ...packageJson }), - } as JsPackageManager; - - return addReact.check({ - packageManager, - mainConfig: {} as StorybookConfigRaw, - storybookVersion: '7.0.0', - }); -}; - -describe('addReact fix', () => { - it('should no-op when not using docs or essentials', async () => { - await expect(checkAddReact({ dependencies: {} })).resolves.toBeFalsy(); - }); - - it('should no-op when react/react-dom are already installed', async () => { - await expect( - checkAddReact({ - dependencies: { react: '*' }, - devDependencies: { '@storybook/addon-docs': '*', 'react-dom': '*' }, - }) - ).resolves.toBeFalsy(); - }); - - it('should add react when it is missing', async () => { - await expect( - checkAddReact({ - dependencies: {}, - devDependencies: { '@storybook/addon-docs': '*', 'react-dom': '*' }, - }) - ).resolves.toMatchInlineSnapshot(` - Object { - "additionalDependencies": Array [ - "react", - ], - "dependents": Array [ - "@storybook/addon-docs", - ], - } - `); - }); - - it('should add reac-dom when it is missing', async () => { - await expect( - checkAddReact({ - dependencies: {}, - devDependencies: { '@storybook/addon-essentials': '*', react: '*' }, - }) - ).resolves.toMatchInlineSnapshot(` - Object { - "additionalDependencies": Array [ - "react-dom", - ], - "dependents": Array [ - "@storybook/addon-essentials", - ], - } - `); - }); -}); diff --git a/code/lib/cli/src/automigrate/fixes/add-react.ts b/code/lib/cli/src/automigrate/fixes/add-react.ts deleted file mode 100644 index 25ad88df2571..000000000000 --- a/code/lib/cli/src/automigrate/fixes/add-react.ts +++ /dev/null @@ -1,72 +0,0 @@ -import chalk from 'chalk'; -import { dedent } from 'ts-dedent'; -import type { Fix } from '../types'; - -interface AddReactOptions { - dependents: string[]; - additionalDependencies: string[]; -} - -/** - * is the user missing a dependency on react? - */ -export const addReact: Fix = { - id: 'addReact', - - async check({ packageManager }) { - const packageJson = await packageManager.retrievePackageJson(); - const installedDependencies = new Set( - Object.keys({ ...packageJson.dependencies, ...packageJson.devDependencies }) - ); - - const dependents = ['@storybook/addon-essentials', '@storybook/addon-docs'].filter((pkg) => - installedDependencies.has(pkg) - ); - const additionalDependencies = []; - if (dependents.length > 0) { - if (!installedDependencies.has('react')) { - // we add these here because they are required by addon-essentials > addon-docs - additionalDependencies.push('react'); - } - if (!installedDependencies.has('react-dom')) { - // we add these here because they are required by addon-essentials > addon-docs - additionalDependencies.push('react-dom'); - } - } - - if (additionalDependencies.length > 0) { - return { dependents, additionalDependencies }; - } - return null; - }, - - prompt({ dependents, additionalDependencies }) { - const dependentsFormatted = dependents.map((pkg) => chalk.cyan(pkg)).join(' & '); - const additionalDependenciesFormatted = additionalDependencies - .map((pkg) => `- ${chalk.cyan(pkg)}`) - .join('\n'); - - return dedent` - We've detected that you're using ${dependentsFormatted}. - - Starting in Storybook 7, we now require these peer dependencies to render docs: - - ${additionalDependenciesFormatted} - - We can add these for you automatically as dev dependencies. - - More info: ${chalk.yellow( - 'https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#react-peer-dependencies-required' - )} - `; - }, - - async run({ packageManager, result: { additionalDependencies }, dryRun }) { - if (!dryRun) { - await packageManager.addDependencies( - { installAsDevDependencies: true }, - additionalDependencies - ); - } - }, -}; diff --git a/code/lib/cli/src/automigrate/fixes/index.ts b/code/lib/cli/src/automigrate/fixes/index.ts index 2f71a11255f6..bd33074805d8 100644 --- a/code/lib/cli/src/automigrate/fixes/index.ts +++ b/code/lib/cli/src/automigrate/fixes/index.ts @@ -12,7 +12,6 @@ import { newFrameworks } from './new-frameworks'; import { removedGlobalClientAPIs } from './remove-global-client-apis'; import { mdx1to2 } from './mdx-1-to-2'; import { autodocsTrue } from './autodocs-true'; -import { addReact } from './add-react'; import { nodeJsRequirement } from './nodejs-requirement'; import { missingBabelRc } from './missing-babelrc'; import { angularBuilders } from './angular-builders'; @@ -38,7 +37,6 @@ export const allFixes: Fix[] = [ mdx1to2, mdxgfm, autodocsTrue, - addReact, missingBabelRc, angularBuildersMultiproject, angularBuilders, diff --git a/code/lib/cli/src/generators/baseGenerator.ts b/code/lib/cli/src/generators/baseGenerator.ts index 43fbbe9c3a67..70daf5764dd7 100644 --- a/code/lib/cli/src/generators/baseGenerator.ts +++ b/code/lib/cli/src/generators/baseGenerator.ts @@ -282,15 +282,6 @@ export async function baseGenerator( Object.keys({ ...packageJson.dependencies, ...packageJson.devDependencies }) ); - if (!installedDependencies.has('react')) { - // we add these here because they are required by addon-essentials > addon-docs - addonPackages.push('react'); - } - if (!installedDependencies.has('react-dom')) { - // we add these here because they are required by addon-essentials > addon-docs - addonPackages.push('react-dom'); - } - // TODO: We need to start supporting this at some point if (type === 'renderer') { throw new Error( From d2d27c40c502219cf4bcdc30cb41ca5912b29ad1 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Tue, 12 Dec 2023 15:43:10 +0100 Subject: [PATCH 28/64] add sandbox for react16 --- code/lib/cli/src/sandbox-templates.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/code/lib/cli/src/sandbox-templates.ts b/code/lib/cli/src/sandbox-templates.ts index f2d4950bf2d1..7e3867d107e7 100644 --- a/code/lib/cli/src/sandbox-templates.ts +++ b/code/lib/cli/src/sandbox-templates.ts @@ -519,6 +519,19 @@ const internalTemplates = { }, skipTasks: ['bench'], }, + 'internal/react16-webpack': { + name: 'React 16 (Webpack | TypeScript)', + script: + 'yarn create webpack5-react {{beforeDir}} --version-react=16 --version-react-dom=16 --version-@types/react=16 --version-@types/react-dom=16', + expected: { + framework: '@storybook/react-webpack5', + renderer: '@storybook/react', + builder: '@storybook/builder-webpack5', + }, + skipTasks: ['e2e-tests-dev', 'bench'], + isInternal: true, + inDevelopment: true, + }, 'internal/server-webpack5': { name: 'Server Webpack5', script: 'yarn init -y && echo "module.exports = {}" > webpack.config.js', From 441ccac4c199110e7dd2fab012652974a2748f31 Mon Sep 17 00:00:00 2001 From: Bodo Graumann Date: Tue, 12 Dec 2023 15:43:31 +0100 Subject: [PATCH 29/64] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c7618ce35fee..ae9125750200 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,7 +25,7 @@ If you run `yarn start` and encounter the following error, try rerunning `yarn s ```sh > NX ENOENT: no such file or directory, open 'storybook/code/node_modules/nx/package.json' ``` -If you are a Storybook contributor and still experience issues, it is recommended that you verify your local Storybook instance for any unintentional local changes and left-overs. To do this, you can use the following command: +If you are a Storybook contributor and still experience issues, it is recommended that you verify your local Storybook instance for any unintentional local changes. To do this, you can use the following command: ```sh git clean -dx --dry-run From b6af032b43c558546cf6b0d73b1d8209916ea8a0 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Wed, 13 Dec 2023 10:26:55 +0100 Subject: [PATCH 30/64] fix linting --- code/ui/blocks/src/components/ColorPalette.tsx | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/code/ui/blocks/src/components/ColorPalette.tsx b/code/ui/blocks/src/components/ColorPalette.tsx index c545669654d3..98b171d0b05f 100644 --- a/code/ui/blocks/src/components/ColorPalette.tsx +++ b/code/ui/blocks/src/components/ColorPalette.tsx @@ -168,6 +168,7 @@ function renderSwatchSpecimen(colors: Colors) { const swatchElements = []; const labelElements = []; + // eslint-disable-next-line no-restricted-syntax, guard-for-in for (const colorKey in colors) { const colorValue = colors[colorKey]; swatchElements.push(renderSwatch(colorValue, swatchElements.length)); @@ -176,12 +177,8 @@ function renderSwatchSpecimen(colors: Colors) { return ( - - {swatchElements} - - - {labelElements} - + {swatchElements} + {labelElements} ); } From 171493e7a20982200cd3555594f6063a1cbd98cd Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 13 Dec 2023 13:35:44 +0100 Subject: [PATCH 31/64] add e2e test for resolved react version --- .../template/stories/docs2/ResolvedReact.mdx | 13 ++++++++++++ .../stories/docs2/ResolvedReactVersion.tsx | 15 ++++++++++++++ code/e2e-tests/addon-docs.spec.ts | 18 +++++++++++++++++ code/e2e-tests/util.ts | 20 +++++++++++++++++++ 4 files changed, 66 insertions(+) create mode 100644 code/addons/docs/template/stories/docs2/ResolvedReact.mdx create mode 100644 code/addons/docs/template/stories/docs2/ResolvedReactVersion.tsx diff --git a/code/addons/docs/template/stories/docs2/ResolvedReact.mdx b/code/addons/docs/template/stories/docs2/ResolvedReact.mdx new file mode 100644 index 000000000000..7a5f04ab6bc8 --- /dev/null +++ b/code/addons/docs/template/stories/docs2/ResolvedReact.mdx @@ -0,0 +1,13 @@ +import { version as reactVersion } from 'react'; +import { version as reactDomVersion } from 'react-dom'; +import { ResolvedReactVersion } from './ResolvedReactVersion'; + +## In MDX + +react: {reactVersion} + +react-dom: {reactDomVersion} + +## In `ResolvedReactVersion` component + + diff --git a/code/addons/docs/template/stories/docs2/ResolvedReactVersion.tsx b/code/addons/docs/template/stories/docs2/ResolvedReactVersion.tsx new file mode 100644 index 000000000000..6e094c1e64d0 --- /dev/null +++ b/code/addons/docs/template/stories/docs2/ResolvedReactVersion.tsx @@ -0,0 +1,15 @@ +import React, { version as reactVersion } from 'react'; +import { version as reactDomVersion } from 'react-dom'; + +export const ResolvedReactVersion = () => { + return ( + <> +

+ react: {reactVersion} +

+

+ react-dom: {reactDomVersion} +

+ + ); +}; diff --git a/code/e2e-tests/addon-docs.spec.ts b/code/e2e-tests/addon-docs.spec.ts index 7edd143360ab..af617b9ba4ff 100644 --- a/code/e2e-tests/addon-docs.spec.ts +++ b/code/e2e-tests/addon-docs.spec.ts @@ -186,4 +186,22 @@ test.describe('addon-docs', () => { await expect(stories.nth(1)).toHaveText('Basic'); await expect(stories.last()).toHaveText('Another'); }); + + test('should resolve react to the correct version', async ({ page }) => { + const sbPage = new SbPage(page); + await sbPage.navigateToUnattachedDocs('addons/docs/docs2', 'ResolvedReact'); + const root = sbPage.previewRoot(); + + const expectedReactVersion = templateName.includes('react16') ? /^16/ : /^18/; + + const mdxReactVersion = await root.getByTestId('mdx-react'); + const mdxReactDomVersion = await root.getByTestId('mdx-react-dom'); + const componentReactVersion = await root.getByTestId('component-react'); + const componentReactDomVersion = await root.getByTestId('component-react-dom'); + + await expect(mdxReactVersion).toHaveText(expectedReactVersion); + await expect(mdxReactDomVersion).toHaveText(expectedReactVersion); + await expect(componentReactVersion).toHaveText(expectedReactVersion); + await expect(componentReactDomVersion).toHaveText(expectedReactVersion); + }); }); diff --git a/code/e2e-tests/util.ts b/code/e2e-tests/util.ts index e0c45c1ae336..64f7a6bb43f6 100644 --- a/code/e2e-tests/util.ts +++ b/code/e2e-tests/util.ts @@ -61,6 +61,26 @@ export class SbPage { await this.previewRoot(); } + async navigateToUnattachedDocs(title: string, name = 'docs') { + await this.openComponent(title); + + const titleId = toId(title); + const storyId = toId(name); + const storyLinkId = `#${titleId}-${storyId}--docs`; + await this.page.waitForSelector(storyLinkId); + const storyLink = this.page.locator('*', { has: this.page.locator(`> ${storyLinkId}`) }); + await storyLink.click({ force: true }); + + await this.page.waitForURL((url) => + url.search.includes(`path=/docs/${titleId}-${storyId}--docs`) + ); + + const selected = await storyLink.getAttribute('data-selected'); + await expect(selected).toBe('true'); + + await this.previewRoot(); + } + async waitUntilLoaded() { // make sure we start every test with clean state – to avoid possible flakyness await this.page.context().addInitScript(() => { From ba924cb70e135a5d2ec288f48a8bd701153da055 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Wed, 13 Dec 2023 14:11:46 +0100 Subject: [PATCH 32/64] add prompt-only automigrate --- .../fixes/prompt-remove-react.test.ts | 158 ++++++++++++++++++ .../automigrate/fixes/prompt-remove-react.ts | 133 +++++++++++++++ 2 files changed, 291 insertions(+) create mode 100644 code/lib/cli/src/automigrate/fixes/prompt-remove-react.test.ts create mode 100644 code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts diff --git a/code/lib/cli/src/automigrate/fixes/prompt-remove-react.test.ts b/code/lib/cli/src/automigrate/fixes/prompt-remove-react.test.ts new file mode 100644 index 000000000000..ba38d93fe2ac --- /dev/null +++ b/code/lib/cli/src/automigrate/fixes/prompt-remove-react.test.ts @@ -0,0 +1,158 @@ +import type { StorybookConfig } from '@storybook/types'; +import { glob } from 'glob'; +import { removeReactDependency } from './prompt-remove-react'; +import type { JsPackageManager } from '../../js-package-manager'; + +const check = async ({ + packageManagerContent, + main: mainConfig, + storybookVersion = '8.0.0', +}: { + packageManagerContent: Pick< + Partial>>, + 'dependencies' | 'devDependencies' | 'peerDependencies' + >; + main: Partial & Record; + storybookVersion?: string; +}) => { + const packageManager = { + retrievePackageJson: async () => packageManagerContent, + } as JsPackageManager; + + return removeReactDependency.check({ + packageManager, + configDir: '', + mainConfig: mainConfig as any, + storybookVersion, + }); +}; + +jest.mock('glob', () => ({ glob: jest.fn(() => []) })); + +describe('early exits', () => { + test('cancel if storybookVersion < 8', async () => { + await expect( + check({ + packageManagerContent: { + dependencies: { react: '16.0.0' }, + }, + main: { + stories: [], + framework: '@storybook/vue-vite', + }, + storybookVersion: '7.0.0', + }) + ).resolves.toBeFalsy(); + }); + + test('cancel if no react deps', async () => { + await expect( + check({ + packageManagerContent: {}, + main: { + stories: [], + framework: '@storybook/vue-vite', + }, + }) + ).resolves.toBeFalsy(); + }); + + test('cancel if react renderer', async () => { + await expect( + check({ + packageManagerContent: { + dependencies: { react: '16.0.0' }, + }, + main: { + stories: [], + framework: '@storybook/react-vite', + }, + }) + ).resolves.toBeFalsy(); + + await expect( + check({ + packageManagerContent: { + dependencies: { react: '16.0.0' }, + }, + main: { + stories: [], + framework: '@storybook/nextjs', + }, + }) + ).resolves.toBeFalsy(); + + await expect( + check({ + packageManagerContent: { + dependencies: { react: '16.0.0' }, + }, + main: { + stories: [], + framework: { name: '@storybook/react-webpack5' }, + }, + }) + ).resolves.toBeFalsy(); + }); +}); + +describe('prompts', () => { + test('simple', async () => { + await expect( + check({ + packageManagerContent: { + dependencies: { react: '16.0.0' }, + }, + main: { + stories: ['*.stories.ts'], + addons: [], + framework: '@storybook/vue-vite', + }, + }) + ).resolves.toEqual({ hasDocs: false, hasEssentials: false, hasMDX: false }); + }); + test('detects addon docs', async () => { + await expect( + check({ + packageManagerContent: { + dependencies: { react: '16.0.0' }, + }, + main: { + stories: ['*.stories.ts'], + addons: ['@storybook/addon-docs'], + framework: '@storybook/vue-vite', + }, + }) + ).resolves.toEqual({ hasDocs: true, hasEssentials: false, hasMDX: false }); + }); + test('detects addon essentials', async () => { + await expect( + check({ + packageManagerContent: { + dependencies: { react: '16.0.0' }, + }, + main: { + stories: ['*.stories.ts'], + addons: ['@storybook/addon-docs', '@storybook/addon-essentials'], + framework: '@storybook/vue-vite', + }, + }) + ).resolves.toEqual({ hasDocs: true, hasEssentials: true, hasMDX: false }); + }); + test('detects MDX usage', async () => { + // @ts-expect-error (jest mocked) + glob.mockImplementationOnce(() => ['*.stories.mdx']); + await expect( + check({ + packageManagerContent: { + dependencies: { react: '16.0.0' }, + }, + main: { + stories: ['*.stories.ts'], + addons: ['@storybook/addon-docs', '@storybook/addon-essentials'], + framework: '@storybook/vue-vite', + }, + }) + ).resolves.toEqual({ hasDocs: true, hasEssentials: true, hasMDX: true }); + }); +}); diff --git a/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts b/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts new file mode 100644 index 000000000000..14f3c5afe215 --- /dev/null +++ b/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts @@ -0,0 +1,133 @@ +import dedent from 'ts-dedent'; +import semver from 'semver'; +import type { StoriesEntry } from 'lib/types/src'; +import { commonGlobOptions, normalizeStories } from '@storybook/core-common'; +import { isAbsolute, join, relative } from 'path'; +import slash from 'slash'; +import { glob } from 'glob'; +import { getFrameworkPackageName } from '../helpers/mainConfigFile'; +import type { Fix } from '../types'; + +interface Options { + hasMDX: boolean; + hasEssentials: boolean; + hasDocs: boolean; +} + +async function detectMDXEntries(entries: StoriesEntry[], configDir: string): Promise { + const list = normalizeStories(entries, { + configDir, + workingDir: configDir, + // defaultFilesPattern: '**/*.@(stories.@(js|jsx|mjs|ts|tsx))', + }); + const result = ( + await Promise.all( + list.map(async ({ directory, files, titlePrefix }) => { + const pattern = join(directory, files); + const absolutePattern = isAbsolute(pattern) ? pattern : join(configDir, pattern); + const absoluteDirectory = isAbsolute(directory) ? directory : join(configDir, directory); + + return { + files: ( + await glob(slash(absolutePattern), { + ...commonGlobOptions(absolutePattern), + follow: true, + }) + ).map((f) => relative(absoluteDirectory, f)), + directory, + titlePrefix, + }; + }) + ) + ).reduce((acc, { files }, i) => { + const filteredEntries = files.filter((s) => !s.endsWith('.mdx')); + if (filteredEntries.length < files.length) { + return true; + } + return acc; + }, false); + return result; +} + +export const removeReactDependency: Fix = { + id: 'remove-react-dependency', + + async check({ packageManager, mainConfig, storybookVersion, configDir }) { + let hasMDX = false; + let hasEssentials = false; + let hasDocs = false; + + // when the user is using the react renderer, we should not prompt them to remove react + const frameworkPackageName = getFrameworkPackageName(mainConfig); + if (frameworkPackageName?.includes('react') || frameworkPackageName?.includes('nextjs')) { + return null; + } + + // if the user has no dependency on react, we can skip this fix + const packageJson = await packageManager.retrievePackageJson(); + if ( + !packageJson?.dependencies?.['react'] && + !packageJson?.peerDependencies?.['react'] && + !packageJson?.devDependencies?.['react'] + ) { + return null; + } + + // do not prompt to remove react for older versions of storybook + if (!semver.gte(storybookVersion, '8.0.0')) { + return null; + } + + const { addons } = mainConfig; + hasEssentials = !!( + addons && + addons.find((addon) => + typeof addon === 'string' + ? addon.endsWith('@storybook/addon-essentials') + : addon.name.endsWith('@storybook/addon-essentials') + ) + ); + hasDocs = !!( + addons && + addons.find((addon) => + typeof addon === 'string' + ? addon.endsWith('@storybook/addon-docs') + : addon.name.endsWith('@storybook/addon-docs') + ) + ); + + hasMDX = !!(await detectMDXEntries(mainConfig.stories, configDir || process.cwd())); + + return { + hasMDX, + hasEssentials, + hasDocs, + }; + }, + prompt({ hasMDX, hasDocs, hasEssentials }) { + const addons = [hasEssentials ? 'essentials' : '', hasDocs ? 'docs' : ''].filter(Boolean); + const addonReasonText = + addons.length > 0 ? `, because you are using ${addons.join(' and ')}` : ''; + + const start = dedent` + We detected that your project has a dependency for "react" that it might not need. + Nothing breaks by having it, you can safely ignore this message, if you wish. + + Storybook asked you to add "react" as a direct dependency in the past${addonReasonText}. + However, since version 8.0, Storybook no longer requires you to provide "react" as a dependency. + `; + + if (hasMDX) { + const mdxSuggestion = dedent` + As you are using '.mdx'-files, it might be reasonable to keep the dependency. + `; + return [start, mdxSuggestion].join('\n\n'); + } + + const removalSuggestion = dedent` + We suggest you manually remove the dependency from your project. + We cannot do this automatically, removing it might break your project, so it should be done manually with care. + `; + return [start, removalSuggestion].join('\n\n'); + }, +}; From c590019e08a00bd9df8319b8e5681686b01a1e84 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 13 Dec 2023 14:11:59 +0100 Subject: [PATCH 33/64] fix react-dom-shim in vite too --- code/lib/react-dom-shim/src/preset.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/lib/react-dom-shim/src/preset.ts b/code/lib/react-dom-shim/src/preset.ts index 611afe6b2811..63b2889ba93b 100644 --- a/code/lib/react-dom-shim/src/preset.ts +++ b/code/lib/react-dom-shim/src/preset.ts @@ -18,7 +18,6 @@ const getIsReactVersion18 = async (options: Options) => { const reactDom = resolvedReact.reactDom || dirname(require.resolve('react-dom/package.json')); const { version } = JSON.parse(await readFile(join(reactDom, 'package.json'), 'utf-8')); - return version.startsWith('18') || version.startsWith('0.0.0'); }; @@ -42,7 +41,7 @@ export const webpackFinal = async (config: any, options: Options) => { export const viteFinal = async (config: any, options: Options) => { const isReactVersion18 = await getIsReactVersion18(options); - if (!isReactVersion18) { + if (isReactVersion18) { return config; } From dab5b6352047fb9672a967efac2c6d3a3ae872c3 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 13 Dec 2023 14:13:08 +0100 Subject: [PATCH 34/64] add react alias to beginning of array --- code/addons/docs/src/preset.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/addons/docs/src/preset.ts b/code/addons/docs/src/preset.ts index 5d4e50ec4849..cf3cf4c0a030 100644 --- a/code/addons/docs/src/preset.ts +++ b/code/addons/docs/src/preset.ts @@ -246,7 +246,10 @@ export const viteFinal = async (config: any, options: Options) => { }), }; - plugins.push(mdxPlugin(options), reactAliasPlugin); + // add alias plugin early to ensure any other plugins that also add the aliases will override this + // eg. the preact vite plugin adds its own aliases + plugins.unshift(reactAliasPlugin); + plugins.push(mdxPlugin(options)); return config; }; From dab576dbcbc26bf66113d741b11eaa065b4eee51 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 13 Dec 2023 14:46:00 +0100 Subject: [PATCH 35/64] react alias plugin enforce pre --- code/addons/docs/src/preset.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/code/addons/docs/src/preset.ts b/code/addons/docs/src/preset.ts index cf3cf4c0a030..de10b683efa6 100644 --- a/code/addons/docs/src/preset.ts +++ b/code/addons/docs/src/preset.ts @@ -235,6 +235,7 @@ export const viteFinal = async (config: any, options: Options) => { const reactAliasPlugin = { name: 'storybook:react-alias', + enforce: 'pre', config: () => ({ resolve: { // TODO: does this work if pre-existing alias is an array? From f81a3971d33376e6a21d4d2b3e6ee0b6bd44cd81 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 13 Dec 2023 14:46:23 +0100 Subject: [PATCH 36/64] fix ResolvedReactVersion tsx --- .../docs2/{ResolvedReactVersion.tsx => ResolvedReactVersion.jsx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename code/addons/docs/template/stories/docs2/{ResolvedReactVersion.tsx => ResolvedReactVersion.jsx} (100%) diff --git a/code/addons/docs/template/stories/docs2/ResolvedReactVersion.tsx b/code/addons/docs/template/stories/docs2/ResolvedReactVersion.jsx similarity index 100% rename from code/addons/docs/template/stories/docs2/ResolvedReactVersion.tsx rename to code/addons/docs/template/stories/docs2/ResolvedReactVersion.jsx From e289b59c842f55e92f8f1f4c50d8196eb02cd061 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Wed, 13 Dec 2023 15:18:37 +0100 Subject: [PATCH 37/64] mention both react & react-dom --- code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts b/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts index 14f3c5afe215..c472d800e2ea 100644 --- a/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts +++ b/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts @@ -125,7 +125,7 @@ export const removeReactDependency: Fix = { } const removalSuggestion = dedent` - We suggest you manually remove the dependency from your project. + We suggest you manually remove the "react" and "react-dom" dependencies from your project's package.json. We cannot do this automatically, removing it might break your project, so it should be done manually with care. `; return [start, removalSuggestion].join('\n\n'); From 15e365eb71967a03cceee3d3e35ce42ae257d8ad Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Wed, 13 Dec 2023 15:31:34 +0100 Subject: [PATCH 38/64] Build: Remove preact-webpack5 sandboxes --- .circleci/config.yml | 20 ++++++++++---------- code/lib/cli/src/sandbox-templates.ts | 24 ------------------------ 2 files changed, 10 insertions(+), 34 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index d6ef4a750913..ae9183fdf07f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -652,19 +652,19 @@ workflows: requires: - unit-tests - create-sandboxes: - parallelism: 20 + parallelism: 19 requires: - build - build-sandboxes: - parallelism: 20 + parallelism: 19 requires: - create-sandboxes - chromatic-sandboxes: - parallelism: 17 + parallelism: 16 requires: - build-sandboxes - e2e-production: - parallelism: 15 + parallelism: 14 requires: - build-sandboxes - e2e-dev: @@ -672,7 +672,7 @@ workflows: requires: - create-sandboxes - test-runner-production: - parallelism: 15 + parallelism: 14 requires: - build-sandboxes - bench: @@ -706,22 +706,22 @@ workflows: requires: - build - create-sandboxes: - parallelism: 33 + parallelism: 31 requires: - build # - smoke-test-sandboxes: # disabled for now # requires: # - create-sandboxes - build-sandboxes: - parallelism: 33 + parallelism: 31 requires: - create-sandboxes - chromatic-sandboxes: - parallelism: 30 + parallelism: 28 requires: - build-sandboxes - e2e-production: - parallelism: 28 + parallelism: 26 requires: - build-sandboxes - e2e-dev: @@ -729,7 +729,7 @@ workflows: requires: - create-sandboxes - test-runner-production: - parallelism: 28 + parallelism: 26 requires: - build-sandboxes diff --git a/code/lib/cli/src/sandbox-templates.ts b/code/lib/cli/src/sandbox-templates.ts index f2d4950bf2d1..491c26ace8cc 100644 --- a/code/lib/cli/src/sandbox-templates.ts +++ b/code/lib/cli/src/sandbox-templates.ts @@ -416,28 +416,6 @@ const baseTemplates = { // Remove smoke-test from the list once https://github.com/storybookjs/storybook/issues/19351 is fixed. skipTasks: ['smoke-test', 'e2e-tests-dev', 'bench'], }, - 'preact-webpack5/default-js': { - name: 'Preact CLI Latest (Webpack | JavaScript)', - script: - 'npx preact-cli create default {{beforeDir}} --name preact-app --yarn --no-install && cd {{beforeDir}} && echo "module.exports = {}" > webpack.config.js', - expected: { - framework: '@storybook/preact-webpack5', - renderer: '@storybook/preact', - builder: '@storybook/builder-webpack5', - }, - skipTasks: ['e2e-tests-dev', 'bench'], - }, - 'preact-webpack5/default-ts': { - name: 'Preact CLI Latest (Webpack | TypeScript)', - script: - 'npx preact-cli create typescript {{beforeDir}} --name preact-app --yarn --no-install && cd {{beforeDir}} && echo "module.exports = {}" > webpack.config.js', - expected: { - framework: '@storybook/preact-webpack5', - renderer: '@storybook/preact', - builder: '@storybook/builder-webpack5', - }, - skipTasks: ['e2e-tests-dev', 'bench'], - }, 'preact-vite/default-js': { name: 'Preact Latest (Vite | JavaScript)', script: 'npm create vite --yes {{beforeDir}} -- --template preact', @@ -618,7 +596,6 @@ export const merged: TemplateKey[] = [ 'react-webpack/18-ts', 'react-webpack/17-ts', 'angular-cli/15-ts', - 'preact-webpack5/default-ts', 'preact-vite/default-ts', 'html-webpack/default', 'html-vite/default-ts', @@ -638,7 +615,6 @@ export const daily: TemplateKey[] = [ 'nextjs/default-js', 'nextjs/prerelease', 'qwik-vite/default-ts', - 'preact-webpack5/default-js', 'preact-vite/default-js', 'html-vite/default-js', ]; From 86ad08aee8b0b22ea5e66845a19a20d1ff440cd9 Mon Sep 17 00:00:00 2001 From: Vijay Singh Date: Wed, 13 Dec 2023 21:26:27 +0100 Subject: [PATCH 39/64] Docs: Fixed Typo in documentation template Removed unused imports from Documentation Template --- docs/snippets/common/storybook-mdx-template-with-prop.mdx.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/snippets/common/storybook-mdx-template-with-prop.mdx.mdx b/docs/snippets/common/storybook-mdx-template-with-prop.mdx.mdx index 009ecd7eab78..d4cf4b108780 100644 --- a/docs/snippets/common/storybook-mdx-template-with-prop.mdx.mdx +++ b/docs/snippets/common/storybook-mdx-template-with-prop.mdx.mdx @@ -1,7 +1,7 @@ ```mdx {/* DocumentationTemplate.mdx */} -import { Meta, Title, Subtitle, Description, Primary, Controls, Stories } from '@storybook/blocks'; +import { Meta, Title, Primary, Controls, Stories } from '@storybook/blocks'; {/* * 👇 The isTemplate property is required to tell Storybook that this is a template From d0979bc948627d782281a34c6bea352780db03ac Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Wed, 13 Dec 2023 22:50:23 +0100 Subject: [PATCH 40/64] fix e2e test asserting react 17 --- code/e2e-tests/addon-docs.spec.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/e2e-tests/addon-docs.spec.ts b/code/e2e-tests/addon-docs.spec.ts index af617b9ba4ff..2355a61488cf 100644 --- a/code/e2e-tests/addon-docs.spec.ts +++ b/code/e2e-tests/addon-docs.spec.ts @@ -192,7 +192,12 @@ test.describe('addon-docs', () => { await sbPage.navigateToUnattachedDocs('addons/docs/docs2', 'ResolvedReact'); const root = sbPage.previewRoot(); - const expectedReactVersion = templateName.includes('react16') ? /^16/ : /^18/; + let expectedReactVersion = /^18/; + if (templateName.includes('preact')) { + expectedReactVersion = /^17/; + } else if (templateName.includes('react16')) { + expectedReactVersion = /^16/; + } const mdxReactVersion = await root.getByTestId('mdx-react'); const mdxReactDomVersion = await root.getByTestId('mdx-react-dom'); From 6ea2365560ebe808f2b396ab152ef0666b7cc780 Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Thu, 14 Dec 2023 11:24:49 +0100 Subject: [PATCH 41/64] don't attempt to resolve @mdx-js/react outside of addon-docs --- code/lib/core-server/src/presets/common-preset.ts | 1 - code/renderers/react/src/preset.ts | 1 - 2 files changed, 2 deletions(-) diff --git a/code/lib/core-server/src/presets/common-preset.ts b/code/lib/core-server/src/presets/common-preset.ts index 5f738a2e9f8f..815b9cb72417 100644 --- a/code/lib/core-server/src/presets/common-preset.ts +++ b/code/lib/core-server/src/presets/common-preset.ts @@ -357,7 +357,6 @@ export const resolvedReact = async (existing: any) => { ...existing, react: dirname(require.resolve('react/package.json')), reactDom: dirname(require.resolve('react-dom/package.json')), - mdx: dirname(require.resolve('@mdx-js/react/package.json')), }; } catch (e) { return existing; diff --git a/code/renderers/react/src/preset.ts b/code/renderers/react/src/preset.ts index 71c83c497663..e9a5ac13ebf7 100644 --- a/code/renderers/react/src/preset.ts +++ b/code/renderers/react/src/preset.ts @@ -36,7 +36,6 @@ export const resolvedReact = async (existing: any) => { ...existing, react: dirname(require.resolve('react/package.json')), reactDom: dirname(require.resolve('react-dom/package.json')), - mdx: dirname(require.resolve('@mdx-js/react/package.json')), }; } catch (e) { return existing; From 99a1b78ade740f39d1821c47d7edb75b6f654ff9 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 14 Dec 2023 12:26:52 +0100 Subject: [PATCH 42/64] fix --- code/e2e-tests/addon-docs.spec.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/e2e-tests/addon-docs.spec.ts b/code/e2e-tests/addon-docs.spec.ts index 2355a61488cf..fce9785adf04 100644 --- a/code/e2e-tests/addon-docs.spec.ts +++ b/code/e2e-tests/addon-docs.spec.ts @@ -193,7 +193,11 @@ test.describe('addon-docs', () => { const root = sbPage.previewRoot(); let expectedReactVersion = /^18/; - if (templateName.includes('preact')) { + if ( + templateName.includes('preact') || + templateName.includes('react-webpack/17') || + templateName.includes('react-vite/17') + ) { expectedReactVersion = /^17/; } else if (templateName.includes('react16')) { expectedReactVersion = /^16/; From 678f66971b2d285353b0fda89cc3b28b353a89b3 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 14 Dec 2023 12:31:19 +0100 Subject: [PATCH 43/64] Update code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts Co-authored-by: Jeppe Reinhold --- code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts b/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts index c472d800e2ea..39c6297e05df 100644 --- a/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts +++ b/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts @@ -125,8 +125,8 @@ export const removeReactDependency: Fix = { } const removalSuggestion = dedent` - We suggest you manually remove the "react" and "react-dom" dependencies from your project's package.json. - We cannot do this automatically, removing it might break your project, so it should be done manually with care. + If you know you are not using React outside of Storybook, it should be safe to remove the "react" and "react-dom" dependencies from your project's package.json. + Storybook cannot do this automatically as removing it might break your project, so it should be done manually with care. `; return [start, removalSuggestion].join('\n\n'); }, From b217193b008a03a1c0aa013b373ca4990b1bcb24 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 14 Dec 2023 12:32:22 +0100 Subject: [PATCH 44/64] Update code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts Co-authored-by: Jeppe Reinhold --- code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts b/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts index 39c6297e05df..4422eb116a75 100644 --- a/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts +++ b/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts @@ -115,6 +115,7 @@ export const removeReactDependency: Fix = { Storybook asked you to add "react" as a direct dependency in the past${addonReasonText}. However, since version 8.0, Storybook no longer requires you to provide "react" as a dependency. + Some community addons might still wrongfully list "react" and "react-dom" as required peer dependencies, but since Storybook 7.6 it should not be needed in the majority of cases. `; if (hasMDX) { From fb06d36eee1552d63a5f41ae0f133e552a8c05ac Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 14 Dec 2023 12:41:29 +0100 Subject: [PATCH 45/64] simplify --- .../fixes/prompt-remove-react.test.ts | 8 +- .../automigrate/fixes/prompt-remove-react.ts | 102 ++---------------- 2 files changed, 11 insertions(+), 99 deletions(-) diff --git a/code/lib/cli/src/automigrate/fixes/prompt-remove-react.test.ts b/code/lib/cli/src/automigrate/fixes/prompt-remove-react.test.ts index ba38d93fe2ac..a8cd0068a4ee 100644 --- a/code/lib/cli/src/automigrate/fixes/prompt-remove-react.test.ts +++ b/code/lib/cli/src/automigrate/fixes/prompt-remove-react.test.ts @@ -109,7 +109,7 @@ describe('prompts', () => { framework: '@storybook/vue-vite', }, }) - ).resolves.toEqual({ hasDocs: false, hasEssentials: false, hasMDX: false }); + ).resolves.toEqual(true); }); test('detects addon docs', async () => { await expect( @@ -123,7 +123,7 @@ describe('prompts', () => { framework: '@storybook/vue-vite', }, }) - ).resolves.toEqual({ hasDocs: true, hasEssentials: false, hasMDX: false }); + ).resolves.toEqual(true); }); test('detects addon essentials', async () => { await expect( @@ -137,7 +137,7 @@ describe('prompts', () => { framework: '@storybook/vue-vite', }, }) - ).resolves.toEqual({ hasDocs: true, hasEssentials: true, hasMDX: false }); + ).resolves.toEqual(true); }); test('detects MDX usage', async () => { // @ts-expect-error (jest mocked) @@ -153,6 +153,6 @@ describe('prompts', () => { framework: '@storybook/vue-vite', }, }) - ).resolves.toEqual({ hasDocs: true, hasEssentials: true, hasMDX: true }); + ).resolves.toEqual(true); }); }); diff --git a/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts b/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts index 4422eb116a75..aa86a4126a29 100644 --- a/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts +++ b/code/lib/cli/src/automigrate/fixes/prompt-remove-react.ts @@ -1,62 +1,12 @@ import dedent from 'ts-dedent'; import semver from 'semver'; -import type { StoriesEntry } from 'lib/types/src'; -import { commonGlobOptions, normalizeStories } from '@storybook/core-common'; -import { isAbsolute, join, relative } from 'path'; -import slash from 'slash'; -import { glob } from 'glob'; import { getFrameworkPackageName } from '../helpers/mainConfigFile'; import type { Fix } from '../types'; -interface Options { - hasMDX: boolean; - hasEssentials: boolean; - hasDocs: boolean; -} - -async function detectMDXEntries(entries: StoriesEntry[], configDir: string): Promise { - const list = normalizeStories(entries, { - configDir, - workingDir: configDir, - // defaultFilesPattern: '**/*.@(stories.@(js|jsx|mjs|ts|tsx))', - }); - const result = ( - await Promise.all( - list.map(async ({ directory, files, titlePrefix }) => { - const pattern = join(directory, files); - const absolutePattern = isAbsolute(pattern) ? pattern : join(configDir, pattern); - const absoluteDirectory = isAbsolute(directory) ? directory : join(configDir, directory); - - return { - files: ( - await glob(slash(absolutePattern), { - ...commonGlobOptions(absolutePattern), - follow: true, - }) - ).map((f) => relative(absoluteDirectory, f)), - directory, - titlePrefix, - }; - }) - ) - ).reduce((acc, { files }, i) => { - const filteredEntries = files.filter((s) => !s.endsWith('.mdx')); - if (filteredEntries.length < files.length) { - return true; - } - return acc; - }, false); - return result; -} - -export const removeReactDependency: Fix = { +export const removeReactDependency: Fix<{}> = { id: 'remove-react-dependency', - async check({ packageManager, mainConfig, storybookVersion, configDir }) { - let hasMDX = false; - let hasEssentials = false; - let hasDocs = false; - + async check({ packageManager, mainConfig, storybookVersion }) { // when the user is using the react renderer, we should not prompt them to remove react const frameworkPackageName = getFrameworkPackageName(mainConfig); if (frameworkPackageName?.includes('react') || frameworkPackageName?.includes('nextjs')) { @@ -78,57 +28,19 @@ export const removeReactDependency: Fix = { return null; } - const { addons } = mainConfig; - hasEssentials = !!( - addons && - addons.find((addon) => - typeof addon === 'string' - ? addon.endsWith('@storybook/addon-essentials') - : addon.name.endsWith('@storybook/addon-essentials') - ) - ); - hasDocs = !!( - addons && - addons.find((addon) => - typeof addon === 'string' - ? addon.endsWith('@storybook/addon-docs') - : addon.name.endsWith('@storybook/addon-docs') - ) - ); - - hasMDX = !!(await detectMDXEntries(mainConfig.stories, configDir || process.cwd())); - - return { - hasMDX, - hasEssentials, - hasDocs, - }; + return true; }, - prompt({ hasMDX, hasDocs, hasEssentials }) { - const addons = [hasEssentials ? 'essentials' : '', hasDocs ? 'docs' : ''].filter(Boolean); - const addonReasonText = - addons.length > 0 ? `, because you are using ${addons.join(' and ')}` : ''; - - const start = dedent` + prompt() { + return dedent` We detected that your project has a dependency for "react" that it might not need. Nothing breaks by having it, you can safely ignore this message, if you wish. - Storybook asked you to add "react" as a direct dependency in the past${addonReasonText}. + Storybook asked you to add "react" as a direct dependency in the past. However, since version 8.0, Storybook no longer requires you to provide "react" as a dependency. Some community addons might still wrongfully list "react" and "react-dom" as required peer dependencies, but since Storybook 7.6 it should not be needed in the majority of cases. - `; - - if (hasMDX) { - const mdxSuggestion = dedent` - As you are using '.mdx'-files, it might be reasonable to keep the dependency. - `; - return [start, mdxSuggestion].join('\n\n'); - } - - const removalSuggestion = dedent` + If you know you are not using React outside of Storybook, it should be safe to remove the "react" and "react-dom" dependencies from your project's package.json. Storybook cannot do this automatically as removing it might break your project, so it should be done manually with care. `; - return [start, removalSuggestion].join('\n\n'); }, }; From aeec36d99442bd9614021e211202d15ac7c36a74 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 14 Dec 2023 13:32:29 +0100 Subject: [PATCH 46/64] add to daily --- code/lib/cli/src/sandbox-templates.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/code/lib/cli/src/sandbox-templates.ts b/code/lib/cli/src/sandbox-templates.ts index 7e3867d107e7..715073b01c98 100644 --- a/code/lib/cli/src/sandbox-templates.ts +++ b/code/lib/cli/src/sandbox-templates.ts @@ -654,6 +654,7 @@ export const daily: TemplateKey[] = [ 'preact-webpack5/default-js', 'preact-vite/default-js', 'html-vite/default-js', + 'internal/react16-webpack', ]; export const templatesByCadence = { normal, merged, daily }; From 2131586aee05c78e16c5d606f55160745c50a0de Mon Sep 17 00:00:00 2001 From: jonniebigodes Date: Thu, 14 Dec 2023 19:49:13 +0000 Subject: [PATCH 47/64] Docs: Remove documentation only components and MDX files --- docs/configure/frameworks-feature-support.md | 102 ++++++- .../auto-generated-controls/angular.mdx | 68 ----- .../auto-generated-controls/ember.mdx | 29 -- .../auto-generated-controls/fallback.mdx | 3 - .../auto-generated-controls/react.mdx | 14 - .../auto-generated-controls/vue.mdx | 11 - .../web-components.mdx | 20 -- docs/essentials/controls.md | 276 ++++++++++++++---- docs/get-started/install.md | 237 ++++++++++++++- .../installation-command-section/solid.mdx | 15 - .../installation-problems/angular.mdx | 45 --- .../installation-problems/ember.mdx | 23 -- .../installation-problems/html.mdx | 9 - .../installation-problems/preact.mdx | 13 - .../installation-problems/qwik.mdx | 11 - .../installation-problems/react.mdx | 23 -- .../installation-problems/solid.mdx | 11 - .../installation-problems/svelte.mdx | 25 -- .../get-started/installation-problems/vue.mdx | 19 -- .../installation-problems/web-components.mdx | 9 - .../angular-project-compodoc-config.json.mdx | 50 ++++ .../angular/compodoc-install.npm.js.mdx | 3 + .../angular/compodoc-install.pnpm.js.mdx | 3 + .../angular/compodoc-install.yarn.js.mdx | 3 + .../storybook-preview-compodoc-config.ts.mdx | 24 ++ ...-command-custom-package-manager.npx.js.mdx | 3 + ...command-custom-package-manager.pnpm.js.mdx | 3 + ...command-custom-package-manager.yarn.js.mdx | 3 + .../init-command-manual-framework.npx.js.mdx | 3 + .../init-command-manual-framework.pnpm.js.mdx | 3 + .../init-command-manual-framework.yarn.js.mdx | 3 + ...story-default-export-with-component.js.mdx | 7 + .../ember/storybook-ember-cli-build.js.mdx | 17 ++ .../storybook-preview-custom-metadata.js.mdx | 19 ++ ...story-default-export-with-component.js.mdx | 9 + .../main-config-csf-addon-register.js.mdx | 13 + .../main-config-csf-addon-register.ts.mdx | 17 ++ .../svelte-csf-addon-install.npm.js.mdx | 3 + .../svelte-csf-addon-install.pnpm.js.mdx | 3 + .../svelte-csf-addon-install.yarn.js.mdx | 3 + ...story-default-export-with-component.ts.mdx | 11 + ...component-story-custom-args-complex.js.mdx | 42 +++ ...component-story-custom-args-complex.ts.mdx | 47 +++ ...book-preview-custom-elements-config.js.mdx | 19 ++ ...book-preview-custom-elements-config.ts.mdx | 24 ++ docs/writing-stories/index.md | 1 + 46 files changed, 882 insertions(+), 417 deletions(-) delete mode 100644 docs/essentials/auto-generated-controls/angular.mdx delete mode 100644 docs/essentials/auto-generated-controls/ember.mdx delete mode 100644 docs/essentials/auto-generated-controls/fallback.mdx delete mode 100644 docs/essentials/auto-generated-controls/react.mdx delete mode 100644 docs/essentials/auto-generated-controls/vue.mdx delete mode 100644 docs/essentials/auto-generated-controls/web-components.mdx delete mode 100644 docs/get-started/installation-command-section/solid.mdx delete mode 100644 docs/get-started/installation-problems/angular.mdx delete mode 100644 docs/get-started/installation-problems/ember.mdx delete mode 100644 docs/get-started/installation-problems/html.mdx delete mode 100644 docs/get-started/installation-problems/preact.mdx delete mode 100644 docs/get-started/installation-problems/qwik.mdx delete mode 100644 docs/get-started/installation-problems/react.mdx delete mode 100644 docs/get-started/installation-problems/solid.mdx delete mode 100644 docs/get-started/installation-problems/svelte.mdx delete mode 100644 docs/get-started/installation-problems/vue.mdx delete mode 100644 docs/get-started/installation-problems/web-components.mdx create mode 100644 docs/snippets/angular/angular-project-compodoc-config.json.mdx create mode 100644 docs/snippets/angular/compodoc-install.npm.js.mdx create mode 100644 docs/snippets/angular/compodoc-install.pnpm.js.mdx create mode 100644 docs/snippets/angular/compodoc-install.yarn.js.mdx create mode 100644 docs/snippets/angular/storybook-preview-compodoc-config.ts.mdx create mode 100644 docs/snippets/common/init-command-custom-package-manager.npx.js.mdx create mode 100644 docs/snippets/common/init-command-custom-package-manager.pnpm.js.mdx create mode 100644 docs/snippets/common/init-command-custom-package-manager.yarn.js.mdx create mode 100644 docs/snippets/common/init-command-manual-framework.npx.js.mdx create mode 100644 docs/snippets/common/init-command-manual-framework.pnpm.js.mdx create mode 100644 docs/snippets/common/init-command-manual-framework.yarn.js.mdx create mode 100644 docs/snippets/ember/button-story-default-export-with-component.js.mdx create mode 100644 docs/snippets/ember/storybook-ember-cli-build.js.mdx create mode 100644 docs/snippets/ember/storybook-preview-custom-metadata.js.mdx create mode 100644 docs/snippets/preact/button-story-default-export-with-component.js.mdx create mode 100644 docs/snippets/svelte/main-config-csf-addon-register.js.mdx create mode 100644 docs/snippets/svelte/main-config-csf-addon-register.ts.mdx create mode 100644 docs/snippets/svelte/svelte-csf-addon-install.npm.js.mdx create mode 100644 docs/snippets/svelte/svelte-csf-addon-install.pnpm.js.mdx create mode 100644 docs/snippets/svelte/svelte-csf-addon-install.yarn.js.mdx create mode 100644 docs/snippets/web-components/button-story-default-export-with-component.ts.mdx create mode 100644 docs/snippets/web-components/component-story-custom-args-complex.js.mdx create mode 100644 docs/snippets/web-components/component-story-custom-args-complex.ts.mdx create mode 100644 docs/snippets/web-components/storybook-preview-custom-elements-config.js.mdx create mode 100644 docs/snippets/web-components/storybook-preview-custom-elements-config.ts.mdx diff --git a/docs/configure/frameworks-feature-support.md b/docs/configure/frameworks-feature-support.md index 8b1ae823ed3d..306ee9e94160 100644 --- a/docs/configure/frameworks-feature-support.md +++ b/docs/configure/frameworks-feature-support.md @@ -10,10 +10,108 @@ Below is a comprehensive table of what’s supported in which framework integrat Core frameworks have dedicated maintainers or contributors who are responsible for maintaining the integration. As such, you can use most Storybook features in these frameworks. - +| | React | Vue | Angular | Web Components | +| ----------------------------------------------------------------------------------------- | ----- | --- | ------- | -------------- | +| **Essentials** | | | | | +| [Actions](../essentials/actions.md) | ✅ | ✅ | ✅ | ✅ | +| [Backgrounds](../essentials/backgrounds.md) | ✅ | ✅ | ✅ | ✅ | +| [Docs](../writing-docs/index.md) | ✅ | ✅ | ✅ | ✅ | +| [Viewport](../essentials/viewport.md) | ✅ | ✅ | ✅ | ✅ | +| [Controls](../essentials/controls.md) | ✅ | ✅ | ✅ | ✅ | +| [Measure](../essentials/measure-and-outline.md#measure-addon) | ✅ | ✅ | ✅ | ✅ | +| [Outline](../essentials/measure-and-outline.md#outline-addon) | ✅ | ✅ | ✅ | ✅ | +| **Addons** | | | | | +| [A11y](../writing-tests/accessibility-testing.md) | ✅ | ✅ | ✅ | ✅ | +| [Interactions](../writing-tests/interaction-testing.md) | ✅ | ✅ | ✅ | ✅ | +| [Test runner](../writing-tests/test-runner.md) | ✅ | ✅ | ✅ | ✅ | +| [Test coverage](../writing-tests/test-coverage.md) | ✅ | ✅ | ✅ | ✅ | +| [CSS resources](https://github.com/storybookjs/addon-cssresources) | ✅ | ✅ | ✅ | ✅ | +| [Design assets](https://github.com/storybookjs/addon-design-assets) | ✅ | ✅ | ✅ | ✅ | +| [Events](https://github.com/storybookjs/addon-events) | ✅ | ✅ | ✅ | ✅ | +| [Google analytics](https://github.com/storybookjs/addon-google-analytics) | ✅ | ✅ | ✅ | ✅ | +| [GraphQL](https://github.com/storybookjs/addon-graphql) | ✅ | | ✅ | | +| [Jest](https://github.com/storybookjs/storybook/tree/next/code/addons/jest) | ✅ | ✅ | ✅ | ✅ | +| [Links](https://github.com/storybookjs/storybook/tree/next/code/addons/links) | ✅ | ✅ | ✅ | ✅ | +| [Queryparams](https://github.com/storybookjs/addon-queryparams) | ✅ | ✅ | ✅ | ✅ | +| [Storysource](https://github.com/storybookjs/storybook/tree/next/code/addons/storysource) | ✅ | ✅ | ✅ | ✅ | +| **Docs** | | | | | +| [CSF Stories](../api/csf.md) | ✅ | ✅ | ✅ | ✅ | +| [Autodocs](../writing-docs/autodocs.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - ArgTypes](../api/doc-block-argtypes.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Canvas](../api/doc-block-canvas.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - ColorPalette](../api/doc-block-colorpalette.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Controls](../api/doc-block-controls.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Description](../api/doc-block-description.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - IconGallery](../api/doc-block-icongallery.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Markdown](../api/doc-block-markdown.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Meta](../api/doc-block-meta.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Primary](../api/doc-block-primary.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Source](../api/doc-block-source.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Story](../api/doc-block-story.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Stories](../api/doc-block-stories.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Subtitle](../api/doc-block-subtitle.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Title](../api/doc-block-title.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Typeset](../api/doc-block-typeset.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Unstyled](../api/doc-block-unstyled.md) | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - UseOf](../api/doc-block-useof.md) | ✅ | ✅ | ✅ | ✅ | +| Inline stories | ✅ | ✅ | ✅ | ✅ | ## Community frameworks Community frameworks have fewer contributors which means they may not be as up to date as core frameworks. If you use one of these frameworks for your job, please consider contributing to its integration with Storybook. - +| | Ember | HTML | Svelte | Preact | Qwik | SolidJS | +| ----------------------------------------------------------------------------------------- | ----- | ---- | ------ | ------ | ---- | ------- | +| **Essentials** | | | | | | | +| [Actions](../essentials/actions.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Backgrounds](../essentials/backgrounds.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Docs](../writing-docs/index.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Viewport](../essentials/viewport.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Controls](../essentials/controls.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Measure](../essentials/measure-and-outline.md#measure-addon) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Outline](../essentials/measure-and-outline.md#outline-addon) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| **Addons** | | | | | | | +| [A11y](../writing-tests/accessibility-testing.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Interactions](../writing-tests/interaction-testing.md) | | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Test runner](../writing-tests/test-runner.md) | | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Test coverage](../writing-tests/test-coverage.md) | | ✅ | ✅ | ✅ | ✅ | ✅ | +| [CSS resources](https://github.com/storybookjs/addon-cssresources) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Design assets](https://github.com/storybookjs/addon-design-assets) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Events](https://github.com/storybookjs/addon-events) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Google analytics](https://github.com/storybookjs/addon-google-analytics) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [GraphQL](https://github.com/storybookjs/addon-graphql) | | | | | | | +| [Jest](https://github.com/storybookjs/storybook/tree/next/code/addons/jest) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Links](https://github.com/storybookjs/storybook/tree/next/code/addons/links) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Queryparams](https://github.com/storybookjs/addon-queryparams) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Storysource](https://github.com/storybookjs/storybook/tree/next/code/addons/storysource) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| **Docs** | | | | | | | +| [CSF Stories](../api/csf.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Autodocs](../writing-docs/autodocs.md) | | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - ArgTypes](../api/doc-block-argtypes.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Canvas](../api/doc-block-canvas.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - ColorPalette](../api/doc-block-colorpalette.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Controls](../api/doc-block-controls.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Description](../api/doc-block-description.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - IconGallery](../api/doc-block-icongallery.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Markdown](../api/doc-block-markdown.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Meta](../api/doc-block-meta.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Primary](../api/doc-block-primary.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Source](../api/doc-block-source.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Story](../api/doc-block-story.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Stories](../api/doc-block-stories.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Subtitle](../api/doc-block-subtitle.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Title](../api/doc-block-title.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Typeset](../api/doc-block-typeset.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - Unstyled](../api/doc-block-unstyled.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [Doc Blocks - UseOf](../api/doc-block-useof.md) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| Inline stories | | ✅ | ✅ | | | | + +## Deprecated + +To align the Storybook ecosystem with the current state of frontend development, the following features and addons are now deprecated, no longer maintained, and will be removed in future versions of Storybook + +| Feature | Status | +| -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Knobs](https://github.com/storybookjs/addon-knobs) | The Knobs addon was officially deprecated with the release of Storybook 6.3 and is no longer actively maintained. We recommend using the [controls](../essentials/controls.md) instead. | +| [Storyshots](../writing-tests/snapshot-testing.md) | The Storyshots addon was officially deprecated with the release of Storybook 7.6 and is no longer actively maintained. See the [migration guide](../writing-tests/storyshots-migration-guide.md) for the available alternatives. | +| [`StoriesOf`](https://github.com/storybookjs/storybook/blob/next/code/lib/preview-api/docs/storiesOf.md) | The `storiesOf` API was officially deprecated with the release of Storybook 7.5 and is no longer actively maintained. We recommend using the [CSF API](../api/csf.md) instead for writing stories.
See the [migration guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#storystorev6-and-storiesof-is-deprecated) for more information. | diff --git a/docs/essentials/auto-generated-controls/angular.mdx b/docs/essentials/auto-generated-controls/angular.mdx deleted file mode 100644 index 22417afdbb66..000000000000 --- a/docs/essentials/auto-generated-controls/angular.mdx +++ /dev/null @@ -1,68 +0,0 @@ -To use auto-detected controls with Angular, you must fill in the `component` field in your story metadata: - -```ts -import { Button } from './button.component'; - -export default { - component: Button, -}; -``` - -Storybook uses this to auto-generate the `ArgTypes` for your component using [Compodoc](https://compodoc.app/). It supports `inputs`, `outputs`, `properties`, `methods`, `view/content child/children` as first class prop types. - -## Automatic Compodoc setup - -During `sb init`, you will be asked, whether you want to setup Compodoc for your project. Just answer the question with Yes. Compodoc is then ready to use! - -## Manual Compodoc setup - -You'll need to register Compodoc's `documentation.json` file in `.storybook/preview.ts`: - -```js -import { setCompodocJson } from '@storybook/addon-docs/angular'; -import docJson from '../documentation.json'; - -setCompodocJson(docJson); -``` - -Finally, to set up compodoc, you'll first need to install Compodoc: - -```sh -yarn add -D @compodoc/compodoc -``` - -Then you'll need to configure Compodoc to generate a `documentation.json` file. Adding the following snippet to your `projects..architect.` in the `angular.json` creates a metadata file `./documentation.json` each time you run storybook: - -```jsonc -// angular.json -{ - "projects": { - "your-project": { - "architect": { - "storybook": { - ..., - "compodoc": true, - "compodocArgs": [ - "-e", - "json", - "-d", - "." // the root folder of your project - ], - }, - "build-storybook": { - ..., - "compodoc": true, - "compodocArgs": [ - "-e", - "json", - "-d", - "." // the root folder of your project - ], - } - } - } - } -} -``` - -Unfortunately, it's not currently possible to update this dynamically as you edit your components, but [there's an open issue](https://github.com/storybookjs/storybook/issues/8672) to support this with improvements to Compodoc. diff --git a/docs/essentials/auto-generated-controls/ember.mdx b/docs/essentials/auto-generated-controls/ember.mdx deleted file mode 100644 index 1696095183a9..000000000000 --- a/docs/essentials/auto-generated-controls/ember.mdx +++ /dev/null @@ -1,29 +0,0 @@ -Storybook for Ember relies on [@storybook/ember-cli-storybook addon](https://github.com/storybookjs/ember-cli-storybook), to extract documentation comments from your component source files. If you're using Storybook with Ember, you should already have this addon installed, and you will just need to enable it by adding the following config block in your `ember-cli-build.js` file: - -```js -let app = new EmberApp(defaults, { - '@storybook/ember-cli-storybook': { - enableAddonDocsIntegration: true, - }, -}); -``` - -Now, running the ember-cli server will generate a JSON documentation file at `/dist/storybook-docgen/index.json`. Since generation of this file is tied into the ember-cli build, it will get regenerated every time component files are saved. For details on documenting your components, check out the examples in the addon that powers the generation [ember-cli-addon-docs-yuidoc](https://github.com/ember-learn/ember-cli-addon-docs-yuidoc#documenting-components). - -Storybook uses this file to auto-generate the `ArgTypes` for your component based on docgen information created by [ember-cli-addon-docs-yuidoc](https://github.com/ember-learn/ember-cli-addon-docs-yuidoc#documenting-components). - -You'll need to register that in `.storybook/preview.js`: - -```js -import { setJSONDoc } from '@storybook/addon-docs/ember'; -import docJson from '../dist/storybook-docgen/index.json'; -setJSONDoc(docJson); -``` - -Finally, to use auto-detected controls with Ember, you must fill in the `component` field in your story metadata: - -```ts -export default { - component: 'button', // name of your button component from docgen-json file (index.js) -}; -``` diff --git a/docs/essentials/auto-generated-controls/fallback.mdx b/docs/essentials/auto-generated-controls/fallback.mdx deleted file mode 100644 index 9842a53b859d..000000000000 --- a/docs/essentials/auto-generated-controls/fallback.mdx +++ /dev/null @@ -1,3 +0,0 @@ -Controls argument autodetection doesn't currently work with your framework. - -To use Controls, you'll need to [define the `ArgTypes` manually](#fully-custom-args) diff --git a/docs/essentials/auto-generated-controls/react.mdx b/docs/essentials/auto-generated-controls/react.mdx deleted file mode 100644 index 29bb07ede5c1..000000000000 --- a/docs/essentials/auto-generated-controls/react.mdx +++ /dev/null @@ -1,14 +0,0 @@ -To use auto-detected controls with React, you must fill in the `component` field in your story metadata: - -```js -// Button.stories.js|jsx|mjs|ts|tsx - -import { Button } from './Button'; - -export default { - component: Button, -}; -``` - - -Storybook uses this to auto-generate the `ArgTypes` for your component based on either `PropTypes` (using [`react-docgen`](https://github.com/reactjs/react-docgen)) or `TypeScript` types (using [`react-docgen-typescript`](https://github.com/styleguidist/react-docgen-typescript)). diff --git a/docs/essentials/auto-generated-controls/vue.mdx b/docs/essentials/auto-generated-controls/vue.mdx deleted file mode 100644 index 740ea7bec825..000000000000 --- a/docs/essentials/auto-generated-controls/vue.mdx +++ /dev/null @@ -1,11 +0,0 @@ -To use auto-detected controls with Vue, you must fill in the `component` field in your story metadata: - -```js -import { Button } from './Button.vue'; - -export default { - component: Button, -}; -``` - -Storybook uses this to auto-generate the `ArgTypes` for your component using [`vue-docgen-api`](https://github.com/vue-styleguidist/vue-styleguidist/tree/dev/packages/vue-docgen-api). It supports `props`, `events`, and `slots` as first class prop types. diff --git a/docs/essentials/auto-generated-controls/web-components.mdx b/docs/essentials/auto-generated-controls/web-components.mdx deleted file mode 100644 index 473b67f07b21..000000000000 --- a/docs/essentials/auto-generated-controls/web-components.mdx +++ /dev/null @@ -1,20 +0,0 @@ -To use auto-detected controls with Web components, you must fill in the `component` field in your story metadata: - -```js -export default { - component: 'button', -}; -``` - -Storybook uses this to auto-generate the `ArgTypes` for your component using your [custom-elements.json](https://github.com/webcomponents/custom-elements-json) file. - -You'll need to register that in `.storybook/preview.js`: - -```js -import { setCustomElementsManifest } from '@storybook/web-components'; -import customElements from '../custom-elements.json'; - -setCustomElementsManifest(customElements); -``` - -You can generate a `custom-elements.json` using [@custom-elements-manifest/analyzer](https://github.com/open-wc/custom-elements-manifest). If you're using the pre-v1.0.0 version of `custom-elements.json` you can use either [web-component-analyzer](https://github.com/runem/web-component-analyzer). diff --git a/docs/essentials/controls.md b/docs/essentials/controls.md index efff7222f5bd..5d86420c4ab0 100644 --- a/docs/essentials/controls.md +++ b/docs/essentials/controls.md @@ -29,23 +29,83 @@ If you have stories in the older pre-Storybook 6 style, check the [args & contro ## Choosing the control type -By default, Storybook will choose a control for each arg based on the initial value of the arg. It works well with certain types of args, such as boolean values or free-text strings, but in other cases, you want a more restricted control. + + +By default, Storybook will choose a control for each arg based on its initial value. This will work well with specific arg types (e.g., `boolean` or `string`). To enable them, add the `component` annotation to the default export of your story file, and it will be used to infer the controls and auto-generate the matching [`argTypes`](../api/arg-types.md) for your component using [Compodoc](https://compodoc.app/) if you opt-in to use it, including first-class support for Angular's `inputs`, `outputs`, `properties`, `methods` and `view/content child/children`. + + + + + + + + + + + +By default, Storybook will choose a control for each arg based on its initial value. This will work well with specific arg types (e.g., `boolean` or `string`). To enable them, add the `component` annotation to the default export of your story file and it will be used to infer the controls and auto-generate the matching [`argTypes`](../api/arg-types.md) for your component using [`react-docgen`](https://github.com/reactjs/react-docgen) or [`react-docgen-typescript`](https://github.com/styleguidist/react-docgen-typescript) for TypeScript. + + + + + + + + + + + +By default, Storybook will choose a control for each arg based on its initial value. This will work well with specific arg types (e.g., `boolean` or `string`). To enable them, add the `component` annotation to the default export of your story file, and it will be used to infer the controls and auto-generate the matching [`argTypes`](../api/arg-types.md) for your component using [`vue-docgen-api`](https://github.com/vue-styleguidist/vue-styleguidist/tree/dev/packages/vue-docgen-api), including first-class support for Vue's `props`, `events`, and `slots`. - + + + + +By default, Storybook will choose a control for each arg based on its initial value. This will work well with specific arg types (e.g., `boolean` or `string`). To enable them, add the `component` annotation to the default export of your story file, and it will be used to infer the controls and auto-generate the matching [`argTypes`](../api/arg-types.md) for your component provided by the framework you've chosen to use. + + + + + + + +If you're using a framework that doesn't support this feature, you'll need to define the `argTypes` for your component [manually](#fully-custom-args). + + + + + For instance, suppose you have a `variant` arg on your story that should be `primary` or `secondary`: @@ -70,7 +130,7 @@ By default, Storybook will render a free text input for the `variant` arg: It works as long as you type a valid string into the auto-generated text control. Still, it's not the best UI for our scenario, given that the component only accepts `primary` or `secondary` as variants. Let’s replace it with Storybook’s radio component. -We can specify which controls get used by declaring a custom [argType](../api/arg-types.md) for the `variant` property. ArgTypes encode basic metadata for args, such as name, description, defaultValue for an arg. These get automatically filled in by Storybook Docs. +We can specify which controls get used by declaring a custom [argType](../api/arg-types.md) for the `variant` property. ArgTypes encode basic metadata for args, such as name, description, and defaultValue for an arg. These get automatically filled in by Storybook Docs. `ArgTypes` can also contain arbitrary annotations, which the user can override. Since `variant` is a property of the component, let's put that annotation on the default export. @@ -91,7 +151,7 @@ We can specify which controls get used by declaring a custom [argType](../api/ar -ArgTypes are a powerful feature that can be used to customize the controls for your stories. See the documentation about [customizing controls](#annotation) with `argTypes` annotation for more information. +ArgTypes are a powerful feature that can be used to customize the controls for your stories. For more information, see the documentation about [customizing controls](#annotation) with `argTypes` annotation. @@ -101,14 +161,14 @@ This replaces the input with a radio group for a more intuitive experience. ## Custom control type matchers -Controls can automatically be inferred from arg's name with [regex](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RegExp), but currently only for the color picker and date picker controls. If you've used the Storybook CLI to setup your project it should have automatically created the following defaults in `.storybook/preview.js`: +Controls can automatically be inferred from arg's name with [regex](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/RegExp), but currently only for the color picker and date picker controls. If you've used the Storybook CLI to setup your project, it should have automatically created the following defaults in `.storybook/preview.js`: | Control | Default regex | Description | | :-------: | :--------------------------------------: | :-------------------------------------------------------: | | **color** | /(background|color)$/i | Will display a color picker UI for the args that match it | | **date** | `/Date$/` | Will display a date picker UI for the args that match it | -If you haven't used the CLI to setup the configuration, or if you want to define your own patterns, use the `matchers` property in the `controls` parameter: +If you haven't used the CLI to set the configuration, or if you want to define your patterns, use the `matchers` property in the `controls` parameter: @@ -121,13 +181,13 @@ If you haven't used the CLI to setup the configuration, or if you want to define - + ## Fully custom args -Until now, we only used auto-generated controls based on the component we're writing stories for. If we are writing [complex stories](../writing-stories/stories-for-multiple-components.md), we may want to add controls for args that aren’t part of the component. For example, here's how you could use a `footer` arg to populate a child component: +Until now, we only used auto-generated controls based on the component for which we're writing stories. If we are writing [complex stories](../writing-stories/stories-for-multiple-components.md), we may want to add controls for args that aren’t part of the component. For example, here's how you could use a `footer` arg to populate a child component: @@ -189,7 +249,7 @@ One way to deal with this is to use primitive values (e.g., strings) as arg valu -Unless you need the flexibility of a function, an easier way to map primitives to complex values before rendering is to define a `mapping`, additionally, you can specify `control.labels` to configure custom labels for your checkbox, radio, or select input. +Unless you need the flexibility of a function, an easier way to map primitives to complex values before rendering is to define a `mapping`; additionally, you can specify `control.labels` to configure custom labels for your checkbox, radio, or select input. @@ -267,9 +327,9 @@ Numeric data types will default to a `number` control unless additional configur Controls supports the following configuration [parameters](../writing-stories/parameters.md), either globally or on a per-story basis: -## Show full documentation for each property +#### Show full documentation for each property -Since Controls is built on the same engine as Storybook Docs, it can also show property documentation alongside your controls using the expanded parameter (defaults to false). This means you embed a complete [`Controls`](../api/doc-block-controls.md) doc block in the controls panel. The description and default value rendering can be [customized](#fully-custom-args) in the same way as the doc block. +Since Controls is built on the same engine as Storybook Docs, it can also show property documentation alongside your controls using the expanded parameter (defaults to false). This means you embed a complete [`Controls`](../api/doc-block-controls.md) doc block in the controls panel. The description and default value rendering can be [customized](#fully-custom-args) like the doc block. To enable expanded mode globally, add the following to [`.storybook/preview.js`](../configure/index.md#configure-story-rendering): @@ -284,11 +344,11 @@ To enable expanded mode globally, add the following to [`.storybook/preview.js`] -And here's what the resulting UI looks like: +Here's what the resulting UI looks like: ![Controls addon expanded](./addon-controls-expanded.png) -### Specify initial preset color swatches +#### Specify initial preset color swatches For `color` controls, you can specify an array of `presetColors`, either on the `control` in `argTypes`, or as a parameter under the `controls` namespace: @@ -305,11 +365,75 @@ For `color` controls, you can specify an array of `presetColors`, either on the Color presets can be defined as an object with `color` and `title` or a simple CSS color string. These will then be available as swatches in the color picker. When you hover over the color swatch, you'll be able to see its title. It will default to the nearest CSS color name if none is specified. +#### Filtering controls + +In specific cases, you may be required to display only a limited number of controls in the controls panel or all except a particular set. + +To make this possible, you can use optional `include` and `exclude` configuration fields in the `controls` parameter, which you can define as an array of strings or a regular expression. + +Consider the following story snippets: + + + + + + + +#### Sorting controls + +By default, controls are unsorted and use whatever order the args data is processed in (`none`). Additionally, you can sort them alphabetically by the arg's name (`alpha`) or with the required args first (`requiredFirst`). + +Consider the following snippet to force required args first: + + + + + + + +#### Hide NoControls warning + +If you don't plan to handle the control args inside your story, you can remove the warning with: + + + + + + + ### Disable controls for specific properties Aside from the features already documented here, Controls can also be disabled for individual properties. -Suppose you want to disable Controls for a property called `foo` in a component's story. The following example illustrates how: +Suppose you want to turn off Controls for a property called `foo` in a component's story. The following example illustrates how: @@ -334,7 +458,7 @@ Resulting in the following change in Storybook UI: /> -The previous example also removed the prop documentation from the table. In some cases, this is fine. However, sometimes you might want to render the prop documentation, but without a control. The following example illustrates how: +The previous example also removed the prop documentation from the table. In some cases, this is fine. However, sometimes you might want to render the prop documentation without a control. The following example illustrates how: @@ -352,7 +476,7 @@ The previous example also removed the prop documentation from the table. In some -💡 As with other Storybook properties, such as [decorators](../writing-stories/decorators.md), you can apply the same pattern at a story level for more granular cases. +As with other Storybook properties, such as [decorators](../writing-stories/decorators.md), you can apply the same pattern at a story level for more granular cases. @@ -360,7 +484,7 @@ The previous example also removed the prop documentation from the table. In some In some cases, it's useful to be able to conditionally exclude a control based on the value of another control. Controls supports basic versions of these use cases with the `if`, which can take a simple query object to determine whether to include the control. -Consider a collection of "advanced" settings that are only visible when the user toggles an "advanced" toggle. +Consider a collection of "advanced" settings only visible when the user toggles an "advanced" toggle. @@ -410,66 +534,116 @@ It may also contain at most one of the following operators: If no operator is provided, that is equivalent to `{ truthy: true }`. -## Hide NoControls warning + + +## Troubleshooting + +### Controls are not automatically generated for my component -If you don't plan to handle the control args inside your Story, you can remove the warning with: +Out of the box, Storybook will try to infer the required argTypes and associated controls for your stories based on the component's definition and the initial value of the args. However, in some cases, this may not be enough, and you may need to provide additional information to Storybook. To solve this, you can opt-in to use [Compodoc](https://compodoc.app/), a documentation generator for Angular applications that can extract the metadata of your components and generate the required argTypes and controls for your stories. + +Run the following command to install the tooling. -## Filtering controls +Update your `angular.json` file to include the following configuration to include it in the Storybook's inbuilt builder configuration. -In specific cases, you may require to display only a limited number of controls in the controls panel, or all of them except a particular set. + -To make this possible, you can use optional `include` and `exclude` configuration fields in the `controls` parameter, which you can define as an array of strings, or as a regular expression. + -Consider the following story snippets: + + + +Finally, update your `.storybook/preview.ts` file to include the following configuration to import the metadata generated by Compodoc and use it to generate the controls and argTypes for your stories. + -## Sorting controls + -By default, controls are unsorted and use whatever order the args data is processed in (`none`). Additionally, you can sort them alphabetically by the arg's name (`alpha`) or with the required args first (`requiredFirst`). + -Consider the following snippet to force required args first: +## Troubleshooting + +### Controls are not automatically generated for my component + +Out of the box, Storybook will try to infer the required argTypes and associated controls for your stories based on the component's definition and the initial value of the args. However, in some cases, this may not be enough, and you may need to provide additional information to Storybook. To solve this, you can generate a [`custom-elements.json`](https://github.com/webcomponents/custom-elements-json) file with [`@custom-elements-manifest/analyzer`](https://github.com/open-wc/custom-elements-manifest) if you're using the `pre-v1.0.0` version of the elements file or [`@custom-elements-manifest/analyzer`](https://github.com/open-wc/custom-elements-manifest) for newer versions and configure it in your Storybook UI configuration file (i.e., `.storybook/preview.js|ts`) to enable it. + + + + + + +## Troubleshooting + +### Controls are not automatically generated for my component + +Out of the box, Storybook will try to infer the required argTypes and associated controls for your stories based on the metadata provided by the [`@storybook/ember-cli-storybook`](https://github.com/storybookjs/ember-cli-storybook) addon. However, in some cases, this may not be enough, and you may need to customize your project configuration to provide additional information to Storybook to generate the required argTypes and controls for your stories. + +Update your `ember-cli-build.js` configuration file to include the addon. + + + + + + + + +Restart your application to generate the metadata file (i.e., `storybook-docgen/index.json`) and update your `.storybook/preview.js` file to include it, which will be used to create the controls and argTypes for your stories. + + + + + + + + + + +Enabling this feature will generate a `storybook-docgen/index.json` automatically with each build. For more information on how the metadata is generated, refer to [documentation](https://github.com/storybookjs/storybook/tree/next/code/frameworks/ember) for the Ember framework. + + + + diff --git a/docs/get-started/install.md b/docs/get-started/install.md index 977a1e122c03..1ce934aab296 100644 --- a/docs/get-started/install.md +++ b/docs/get-started/install.md @@ -57,6 +57,12 @@ Storybook comes with a built-in development server featuring everything you need + + +Storybook collects completely anonymous data to help us improve user experience. Participation is optional, and you may [opt-out](../configure/telemetry.md#how-to-opt-out) if you'd not like to share any information. + + + ![Storybook welcome screen](./example-welcome.png) There are some noteworthy items here: @@ -66,36 +72,235 @@ There are some noteworthy items here: - A few example stories to get you started.
-

Troubleshooting

+

Troubleshooting

+ +#### Run Storybook with other package managers -Below are some of the most common installation issues and instructions on how to solve them. +The Storybook CLI includes support for the industry's popular package managers (e.g., [Yarn](https://yarnpkg.com/), [npm](https://www.npmjs.com/), and [pnpm](https://pnpm.io/)) automatically detecting the one you are using when you initialize Storybook. However, if you want to use a specific package manager as the default, add the `--package-manager` flag to the installation command. For example: - - +#### The CLI doesn't detect my framework + +If you're working with a custom environment set up or need set up Storybook manually, you can use the `--type` flag to specify the framework you need to use. Listed below are the supported frameworks and examples of how to use them: + +| Framework | Type | +| -------------- | ---------------- | +| Angular | `angular` | +| Ember | `ember` | +| HTML | `html` | +| Next.js | `nextjs` | +| Preact | `preact` | +| Qwik | `qwik` | +| React | `react` | +| Server | `server` | +| Solid | `solid` | +| Svelte | `svelte` | +| Vue 2 | `vue` | +| Vue 3 | `vue3` | +| Web Components | `web-components` | -Storybook collects completely anonymous data to help us improve user experience. Participation is optional, and you may [opt-out](../configure/telemetry.md#how-to-opt-out) if you'd not like to share any information. + + + + + + +#### Run Storybook with Webpack 4 + +If you previously installed Storybook in a project that uses Webpack 4, it will no longer work. This is because Storybook now uses Webpack 5 by default. To solve this issue, we recommend you upgrade your project to Webpack 5 and then run the following command to migrate your project to the latest version of Storybook: + + + + + + + + + +#### Storybook doesn't work with my Angular project using the Angular CLI + +Out of the box, adding Storybook to an Angular project using the Angular CLI requires you to run the installation command from the root of the project or, if you're working with a monorepo environment, from the directory where the Angular configuration file (i.e., `angular.json`) is located as it will be used to set up the builder configuration necessary to run Storybook. However, if you need, you can extend the builder configuration to customize Storybook's behavior. Listed below are the supported options: + +| Configuration element | Description | +| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `"browserTarget"` | Build target to be served using the following format.
`"example-project:builder:config"` | +| `"tsConfig"` | Location of the TypeScript configuration file, relative to the current workspace.
`"tsConfig": "./tsconfig.json"`. | +| `"port"` | Port used by Storybook.
`"port": 6006` | +| `"host"` | Set up a custom host for Storybook.
`"host": "http://my-custom-host"` | +| `"configDir"` | Storybook configuration directory location.
`"configDir": ".storybook"` | +| `"https"` | Starts Storybook with HTTPS enabled.
`"https": true`
Requires custom certificate information. | +| `"sslCa"` | Provides an SSL certificate authority.
`"sslCa": "your-custom-certificate-authority"`
Optional usage with `"https"` | +| `"sslCert"` | Provides an SSL certificate.
`"sslCert": "your-custom-certificate"`
Required for `https` | +| `"sslKey"` | Provides an SSL key to serve Storybook.
`"sslKey": "your-ssl-key"` | +| `"smokeTest"` | Exit Storybook after successful start.
`"smokeTest": true` | +| `"ci"` | Starts Storybook in CI mode (skips interactive prompts and will not open browser window).
`"ci": true` | +| `"quiet"` | Filters Storybook verbose build output.
`"quiet": true` | +| `"docs"` | Starts Storybook in [documentation mode](../writing-docs/build-documentation.md#preview-storybooks-documentation).
`"docs": true` | +| `"styles"` | Provide the location of the [application's styles](../configure/styling-and-css.md#importing-css-files) to be used with Storybook.
`"styles": ["src/styles.css", "src/styles.scss"]`
| +| `"stylePreprocessorOptions"` | Provides further customization for style preprocessors resolved to the workspace root.
`"stylePreprocessorOptions": { "includePaths": ["src/styles"] }` | + +
+ + + +#### The CLI doesn't support my Ember version + +The Ember framework relies on an auxiliary package named [`@storybook/ember-cli-storybook`](https://www.npmjs.com/package/@storybook/ember-cli-storybook) to help you set up Storybook in your project. During the installation process you might run into the following warning message in your terminal: + +```shell +The ember generate entity-name command requires an entity name to be specified. +For more details, use ember help. +``` + +It may be the case that you're using an outdated version of the package and you need to update it to the latest version to solve this issue. + + + + + +#### Writing native Svelte stories + +Storybook provides a Svelte addon maintained by the community, enabling you to write stories for your Svelte components using the template syntax. You'll need to take some additional steps to enable this feature. + +Run the following command to install the addon. + + + + + + + +Update your Storybook configuration file (i.e., `.storybook/main.js|ts`) to include it. + + + + + + + + + +The community actively maintains the Svelte CSF addon but still lacks some features currently available in the official Storybook Svelte framework support. For more information, see [addon's documentation](https://github.com/storybookjs/addon-svelte-csf). -If all else fails, try asking for [help](https://storybook.js.org/community#support) + + +### The installation process seems flaky and keeps failing + +If you're still running into some issues during the installation process, we encourage you to check out the following resources: + + + +- [Storybook's Angular README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular) for more information on how to set up Storybook in your Angular project. +- [Storybook's help documentation](https://storybook.js.org/community#support) to contact the community and ask for help. + + + + + +- [Storybook's Ember README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/ember) for more information on how to set up Storybook in your Ember project. +- [Storybook's help documentation](https://storybook.js.org/community#support) to contact the community and ask for help. + + + + + +- [Storybook's HTML Webpack README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/html-webpack5) for more information on how to set up Storybook in your HTML project with Webpack 5. +- [Storybook's HTML Vite README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/html-vite) for more information on how to set up Storybook in your HTML project with Vite. +- [Storybook's help documentation](https://storybook.js.org/community#support) to contact the community and ask for help. + + + + + +- [Storybook's Preact Webpack README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/preact-webpack5) for more information on how to set up Storybook in your Preact project with Webpack 5. +- [Storybook's Preact Vite README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/preact-vite) for more information on how to set up Storybook in your Preact project with Vite. +- [Storybook's help documentation](https://storybook.js.org/community#support) to contact the community and ask for help. + + + + + +- [Storybook's Qwik README](https://github.com/literalpie/storybook-framework-qwik) for more information on how to set up Storybook in your Qwik project. +- [Storybook's help documentation](https://storybook.js.org/community#support) to contact the community and ask for help. + + + + + +- [Storybook's React Webpack README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/react-webpack5) for more information on how to set up Storybook in your React project with Webpack 5. +- [Storybook's React Vite README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/react-vite) for more information on how to set up Storybook in your React project with Vite. +- [Storybook's help documentation](https://storybook.js.org/community#support) to contact the community and ask for help. + + + + + +- [Storybook's SolidJS README](https://github.com/storybookjs/solidjs) for more information on how to set up Storybook in your SolidJS project. +- [Storybook's help documentation](https://storybook.js.org/community#support) to contact the community and ask for help. + + + + + +- [Storybook's SvelteKit README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/sveltekit) for more information on how to set up Storybook in your SvelteKit project. +- [Storybook's Svelte Webpack README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/svelte-webpack5) for more information on how to set up Storybook in your Svelte project with Webpack 5. +- [Storybook's help documentation](https://storybook.js.org/community#support) to contact the community and ask for help. + + + + + +- [Storybook's Vue 2 Webpack README](https://github.com/storybookjs/storybook/tree/main/code/frameworks/vue-webpack5) for more information on how to set up Storybook in your Vue 2 project with Webpack 5. +- [Storybook's Vue 2 Vite README](https://github.com/storybookjs/storybook/tree/main/code/frameworks/vue-vite) for more information on how to set up Storybook in your Vue 2 project with Vite. +- [Storybook's Vue 3 Webpack README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/vue3-webpack5) for more information on how to set up Storybook in your Vue 3 project with Webpack 5. +- [Storybook's Vue 3 Vite README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/vue3-vite) for more information on how to set up Storybook in your Vue 3 project with Vite. +- [Storybook's help documentation](https://storybook.js.org/community#support) to contact the community and ask for help. + + + + + +- [Storybook's Web Components Webpack README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/web-components-webpack55) for more information on how to set up Storybook in your Web Components project with Webpack 5. +- [Storybook's Web Components Vite README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/web-components-vite) for more information on how to set up Storybook in your Web Components project with Vite. +- [Storybook's help documentation](https://storybook.js.org/community#support) to contact the community and ask for help. + +
diff --git a/docs/get-started/installation-command-section/solid.mdx b/docs/get-started/installation-command-section/solid.mdx deleted file mode 100644 index 41e5c040cc9d..000000000000 --- a/docs/get-started/installation-command-section/solid.mdx +++ /dev/null @@ -1,15 +0,0 @@ -Use the Storybook CLI to install it in a single command. Run this inside your _existing project’s_ root directory: - -- With npm: - -```shell -npx storybook init -``` - -- With pnpm: - -```shell -pnpm dlx storybook init -``` - -If you run into issues with the installation, check the [Troubleshooting section](#troubleshooting) below for guidance on how to solve it. diff --git a/docs/get-started/installation-problems/angular.mdx b/docs/get-started/installation-problems/angular.mdx deleted file mode 100644 index 96b96b440a7b..000000000000 --- a/docs/get-started/installation-problems/angular.mdx +++ /dev/null @@ -1,45 +0,0 @@ -- Add the `--type angular` flag to the installation command to set up Storybook manually: - - ```shell - npx storybook@latest init --type angular - ``` - -- Storybook's CLI provides support for [Yarn](https://yarnpkg.com/), [npm](https://www.npmjs.com/), and [pnpm](https://pnpm.io/) package managers. If you have Yarn installed in your environment but prefer to use another as your default package manager add the `--package-manager` flag to your installation command. For example: - - ```shell - npx storybook@latest init --package-manager=npm - ``` - -- Storybook supports Webpack 5 out of the box. If you're upgrading from a previous version, run the following command to enable it: - - ```shell - npx storybook@latest automigrate - ``` - - Check the [Migration Guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#automigrate) for more information on how to set up Webpack 5. - -- If you're using the custom Storybook builder, Storybook will not automatically open a browser window or tab. It's is a known issue that we plan to fix in future releases. - -- When adding Storybook to your Angular project, check if you're running the install command from the root directory. Or in a monorepo environment inside the directory where the `angular.json` file is located. - -- If you need further customization to the Storybook builder configuration, you can use the following table as a reference: - -| Configuration element | Description | -| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `"browserTarget"` | Build target to be served using the following format.
`"example-project:builder:config"` | -| `"tsConfig"` | Location of the TypeScript configuration file, relative to the current workspace.
`"tsConfig": "./tsconfig.json"`. | -| `"port"` | Port used by Storybook.
`"port": 6006` | -| `"host"` | Set up a custom host for Storybook.
`"host": "http://my-custom-host"` | -| `"configDir"` | Storybook configuration directory location.
`"configDir": ".storybook"` | -| `"https"` | Starts Storybook with HTTPS enabled.
`"https": true`
Requires custom certificate information. | -| `"sslCa"` | Provides an SSL certificate authority.
`"sslCa": "your-custom-certificate-authority"`
Optional usage with `"https"` | -| `"sslCert"` | Provides an SSL certificate.
`"sslCert": "your-custom-certificate"`
Required for `https` | -| `"sslKey"` | Provides an SSL key to serve Storybook.
`"sslKey": "your-ssl-key"` | -| `"smokeTest"` | Exit Storybook after successful start.
`"smokeTest": true` | -| `"ci"` | Starts Storybook in CI mode (skips interactive prompts and will not open browser window).
`"ci": true` | -| `"quiet"` | Filters Storybook verbose build output.
`"quiet": true` | -| `"docs"` | Starts Storybook in [documentation mode](../writing-docs/build-documentation.md#preview-storybooks-documentation).
`"docs": true` | -| `"styles"` | Provide the location of the [application's styles](../configure/styling-and-css.md#importing-css-files) to be used with Storybook.
`"styles": ["src/styles.css", "src/styles.scss"]`
| -| `"stylePreprocessorOptions"` | Provides further customization for style preprocessors resolved to the workspace root.
`"stylePreprocessorOptions": { "includePaths": ["src/styles"] }` | - -- For other installation issues, check the [Angular README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/angular) for additional instructions. diff --git a/docs/get-started/installation-problems/ember.mdx b/docs/get-started/installation-problems/ember.mdx deleted file mode 100644 index a396c27891bd..000000000000 --- a/docs/get-started/installation-problems/ember.mdx +++ /dev/null @@ -1,23 +0,0 @@ -- Add the `--type ember` flag to the installation command to set up Storybook manually: - - ```shell - npx storybook@latest init --type ember - ``` - -- During the install process, if you get the following warning message: - - ```shell - The ember generate entity-name command requires an entity name to be specified. - - For more details, use ember help. - ``` - -Update the [`@storybook/ember-cli-storybook`](https://www.npmjs.com/package/@storybook/ember-cli-storybook) package to the latest version to fix it. - -- Storybook's CLI provides support for [Yarn](https://yarnpkg.com/), [npm](https://www.npmjs.com/), and [pnpm](https://pnpm.io/) package managers. If you have Yarn installed in your environment but prefer to use another as your default package manager add the `--package-manager` flag to your installation command. For example: - - ```shell - npx storybook@latest init --package-manager=npm - ``` - -- For other installation issues, check the [Ember README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/ember) for additional instructions. diff --git a/docs/get-started/installation-problems/html.mdx b/docs/get-started/installation-problems/html.mdx deleted file mode 100644 index f43b72620b10..000000000000 --- a/docs/get-started/installation-problems/html.mdx +++ /dev/null @@ -1,9 +0,0 @@ -- Add the `--type html` flag to the installation command to set up Storybook manually: - - ```shell -npx storybook@latest init --type html - ``` - -- For other installation issues, check the React README files for additional instructions: - - [HTML with Webpack]( https://github.com/storybookjs/storybook/tree/next/code/frameworks/html-webpack5) - - [HTML with Vite](https://github.com/storybookjs/storybook/tree/next/code/frameworks/html-vite) diff --git a/docs/get-started/installation-problems/preact.mdx b/docs/get-started/installation-problems/preact.mdx deleted file mode 100644 index 24837b2c1ebd..000000000000 --- a/docs/get-started/installation-problems/preact.mdx +++ /dev/null @@ -1,13 +0,0 @@ -- Add the `--type preact` flag to the installation command to set up Storybook manually: - - ```shell - npx storybook@latest init --type preact - ``` - -- Storybook's CLI provides support for [Yarn](https://yarnpkg.com/), [npm](https://www.npmjs.com/), and [pnpm](https://pnpm.io/) package managers. If you have Yarn installed in your environment but prefer to use another as your default package manager add the `--package-manager` flag to your installation command. For example: - - ```shell - npx storybook@latest init --package-manager=npm - ``` - -- For other installation issues, check the [Preact README](https://github.com/storybookjs/storybook/tree/next/code/frameworks/preact-webpack5) for additional instructions. diff --git a/docs/get-started/installation-problems/qwik.mdx b/docs/get-started/installation-problems/qwik.mdx deleted file mode 100644 index c6bd50a043b4..000000000000 --- a/docs/get-started/installation-problems/qwik.mdx +++ /dev/null @@ -1,11 +0,0 @@ -- Add the `--type qwik` flag to the installation command to set up Storybook manually: - - ```shell - npx storybook@latest init --type qwik - ``` - -- Storybook's CLI provides support for [Yarn](https://yarnpkg.com/), [npm](https://www.npmjs.com/), and [pnpm](https://pnpm.io/) package managers. If you have Yarn installed in your environment but prefer to use another as your default package manager add the `--package-manager` flag to your installation command. For example: - - ```shell - npx storybook@latest init --package-manager=npm - ``` diff --git a/docs/get-started/installation-problems/react.mdx b/docs/get-started/installation-problems/react.mdx deleted file mode 100644 index 30b4643208c5..000000000000 --- a/docs/get-started/installation-problems/react.mdx +++ /dev/null @@ -1,23 +0,0 @@ -- Add the `--type react` flag to the installation command to set up Storybook manually: - - ```shell - npx storybook@latest init --type react - ``` - -- Storybook's CLI provides support for [Yarn](https://yarnpkg.com/), [npm](https://www.npmjs.com/), and [pnpm](https://pnpm.io/) package managers. If you have Yarn installed in your environment but prefer to use another as your default package manager add the `--package-manager` flag to your installation command. For example: - - ```shell - npx storybook@latest init --package-manager=npm - ``` - -- Storybook supports Webpack 5 out of the box. If you're upgrading from a previous version, run the following command to enable it: - - ```shell - npx storybook@latest automigrate - ``` - -Check the [Migration Guide](https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#cra5-upgrade) for more information on how to set up Webpack 5. - -- For other installation issues, check the React README files for additional instructions: - - [React with Webpack](https://github.com/storybookjs/storybook/tree/next/code/frameworks/react-webpack5) - - [React with Vite](https://github.com/storybookjs/storybook/tree/next/code/frameworks/react-vite) diff --git a/docs/get-started/installation-problems/solid.mdx b/docs/get-started/installation-problems/solid.mdx deleted file mode 100644 index 9308bb9b154a..000000000000 --- a/docs/get-started/installation-problems/solid.mdx +++ /dev/null @@ -1,11 +0,0 @@ -- Add the `--type solid` flag to the installation command to set up Storybook manually: - - ```shell - npx storybook init --type solid - ``` - -- Storybook's CLI provides support for [Yarn](https://yarnpkg.com/), [npm](https://www.npmjs.com/), and [pnpm](https://pnpm.io/) package managers. If you have Yarn installed in your environment but prefer to use another as your default package manager add the `--package-manager` flag to your installation command. For example: - - ```shell - npx storybook init --package-manager=npm - ``` diff --git a/docs/get-started/installation-problems/svelte.mdx b/docs/get-started/installation-problems/svelte.mdx deleted file mode 100644 index d0bfd5284d68..000000000000 --- a/docs/get-started/installation-problems/svelte.mdx +++ /dev/null @@ -1,25 +0,0 @@ -- Add the `--type svelte` flag to the installation command to set up Storybook manually: - - ```shell - npx storybook@latest init --type svelte - ``` - -- Storybook's CLI provides support for [Yarn](https://yarnpkg.com/), [npm](https://www.npmjs.com/), and [pnpm](https://pnpm.io/) package managers. If you have Yarn installed in your environment but prefer to use another as your default package manager add the `--package-manager` flag to your installation command. For example: - - ```shell - npx storybook@latest init --package-manager=npm - ``` - -### Svelte Native - -To enable support for Svelte Native story format you'll need to make the following changes your Storybook configuration: -- Add the [`@storybook/addon-svelte-csf`](https://storybook.js.org/addons/@storybook/addon-svelte-csf/) addon as development dependency. -- Enable the addon in your Storybook configuration file (e.g., `.storybook/main.js`). -- Disable on demand story loading configuration property (e.g., `storyStoreV7`) in your Storybook configuration file. -- For issues with Svelte Native Story Format, check the [Svelte Story Format addon repository](https://github.com/storybookjs/addon-svelte-csf) for instructions. - - -- For other installation issues, check the Svelte README files for additional instructions: - - [Svelte with Webpack](https://github.com/storybookjs/storybook/tree/next/code/frameworks/svelte-webpack5) - - [Svelte with Vite](https://github.com/storybookjs/storybook/tree/next/code/frameworks/svelte-vite) - - [SvelteKit](https://github.com/storybookjs/storybook/tree/next/code/frameworks/sveltekit) diff --git a/docs/get-started/installation-problems/vue.mdx b/docs/get-started/installation-problems/vue.mdx deleted file mode 100644 index 1268f226a36b..000000000000 --- a/docs/get-started/installation-problems/vue.mdx +++ /dev/null @@ -1,19 +0,0 @@ -- Add the `--type vue` (for Vue 2), or `--type vue3` (for Vue 3) flag to the installation command to set up Storybook manually: - - ```shell - # For Vue 2 projects - npx storybook@latest init --type vue - - # For Vue 3 projects - npx storybook@latest init --type vue3 - ``` - -- Storybook's CLI provides support for [Yarn](https://yarnpkg.com/), [npm](https://www.npmjs.com/), and [pnpm](https://pnpm.io/) package managers. If you have Yarn installed in your environment but prefer to use another as your default package manager add the `--package-manager` flag to your installation command. For example: - - ```shell - npx storybook@latest init --package-manager=npm - ``` - -- For other installation issues, check the Vue README files for additional instructions: - - [Vue 3 with Webpack](https://github.com/storybookjs/storybook/tree/next/code/frameworks/vue3-webpack5) - - [Vue 3 with Vite](https://github.com/storybookjs/storybook/tree/next/code/frameworks/vue3-vite) diff --git a/docs/get-started/installation-problems/web-components.mdx b/docs/get-started/installation-problems/web-components.mdx deleted file mode 100644 index 1a25db5eadec..000000000000 --- a/docs/get-started/installation-problems/web-components.mdx +++ /dev/null @@ -1,9 +0,0 @@ -- Add the `--type web_components` flag to the installation command to set up Storybook manually: - - ```shell - npx storybook@latest init --type web_components - ``` - -- For other installation issues, check the Web Components README files for additional instructions: - - [Web Components with Webpack](https://github.com/storybookjs/storybook/tree/next/code/frameworks/web-components-webpack5) - - [Web Components with Vite](https://github.com/storybookjs/storybook/tree/next/code/frameworks/web-components-vite) diff --git a/docs/snippets/angular/angular-project-compodoc-config.json.mdx b/docs/snippets/angular/angular-project-compodoc-config.json.mdx new file mode 100644 index 000000000000..dee483218f45 --- /dev/null +++ b/docs/snippets/angular/angular-project-compodoc-config.json.mdx @@ -0,0 +1,50 @@ +```jsonc +// angular.json + +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "your-project": { + "projectType": "application", + "schematics": {}, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "storybook": { + "builder": "@storybook/angular:start-storybook", + "options": { + "configDir": ".storybook", + "browserTarget": "your-project:build", + "compodoc": true, + "compodocArgs": [ + "-e", + "json", + "-d", + "." // Add this line to introspect the relevant files starting from the root directory of your project. + ], + "port": 6006 + } + }, + "build-storybook": { + "builder": "@storybook/angular:build-storybook", + "options": { + "configDir": ".storybook", + "browserTarget": "your-project:build", + "compodoc": true, + "compodocArgs": [ + "-e", + "json", + "-d", + "." // Add this line to introspect the relevant files starting from the root directory of your project. + ], + "outputDir": "storybook-static" + } + } + } + } + } +} +``` \ No newline at end of file diff --git a/docs/snippets/angular/compodoc-install.npm.js.mdx b/docs/snippets/angular/compodoc-install.npm.js.mdx new file mode 100644 index 000000000000..71e70d36adff --- /dev/null +++ b/docs/snippets/angular/compodoc-install.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +npm install @compodoc/compodoc --save-dev +``` \ No newline at end of file diff --git a/docs/snippets/angular/compodoc-install.pnpm.js.mdx b/docs/snippets/angular/compodoc-install.pnpm.js.mdx new file mode 100644 index 000000000000..2e20e20c93cd --- /dev/null +++ b/docs/snippets/angular/compodoc-install.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm add --save-dev @compodoc/compodo +``` \ No newline at end of file diff --git a/docs/snippets/angular/compodoc-install.yarn.js.mdx b/docs/snippets/angular/compodoc-install.yarn.js.mdx new file mode 100644 index 000000000000..1518a539392d --- /dev/null +++ b/docs/snippets/angular/compodoc-install.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn add --dev @compodoc/compodoc +``` \ No newline at end of file diff --git a/docs/snippets/angular/storybook-preview-compodoc-config.ts.mdx b/docs/snippets/angular/storybook-preview-compodoc-config.ts.mdx new file mode 100644 index 000000000000..d34f4d9e878a --- /dev/null +++ b/docs/snippets/angular/storybook-preview-compodoc-config.ts.mdx @@ -0,0 +1,24 @@ +```ts +// .storybook/preview.ts + +import type { Preview } from '@storybook/angular'; +import { setCompodocJson } from '@storybook/addon-docs/angular'; + +import docJson from '../documentation.json'; // The path to your generated json file from Compodoc contains all your documentation information. + +setCompodocJson(docJson); + +const preview: Preview = { + parameters: { + actions: { argTypesRegex: '^on[A-Z].*' }, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, + }, + }, +}; + +export default preview; +``` \ No newline at end of file diff --git a/docs/snippets/common/init-command-custom-package-manager.npx.js.mdx b/docs/snippets/common/init-command-custom-package-manager.npx.js.mdx new file mode 100644 index 000000000000..d78f82ce365a --- /dev/null +++ b/docs/snippets/common/init-command-custom-package-manager.npx.js.mdx @@ -0,0 +1,3 @@ +```shell +npx storybook@latest init --package-manager=npm +``` \ No newline at end of file diff --git a/docs/snippets/common/init-command-custom-package-manager.pnpm.js.mdx b/docs/snippets/common/init-command-custom-package-manager.pnpm.js.mdx new file mode 100644 index 000000000000..e2f5ddcac342 --- /dev/null +++ b/docs/snippets/common/init-command-custom-package-manager.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm dlx storybook@latest init --package-manager=npm +``` \ No newline at end of file diff --git a/docs/snippets/common/init-command-custom-package-manager.yarn.js.mdx b/docs/snippets/common/init-command-custom-package-manager.yarn.js.mdx new file mode 100644 index 000000000000..25754658b1d6 --- /dev/null +++ b/docs/snippets/common/init-command-custom-package-manager.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn dlx storybook@latest init --package-manager=npm +``` \ No newline at end of file diff --git a/docs/snippets/common/init-command-manual-framework.npx.js.mdx b/docs/snippets/common/init-command-manual-framework.npx.js.mdx new file mode 100644 index 000000000000..453f312fee6c --- /dev/null +++ b/docs/snippets/common/init-command-manual-framework.npx.js.mdx @@ -0,0 +1,3 @@ +```shell +npx storybook@latest init --type solid +``` \ No newline at end of file diff --git a/docs/snippets/common/init-command-manual-framework.pnpm.js.mdx b/docs/snippets/common/init-command-manual-framework.pnpm.js.mdx new file mode 100644 index 000000000000..978dc88c8947 --- /dev/null +++ b/docs/snippets/common/init-command-manual-framework.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm dlx storybook@latest init --type solid +``` \ No newline at end of file diff --git a/docs/snippets/common/init-command-manual-framework.yarn.js.mdx b/docs/snippets/common/init-command-manual-framework.yarn.js.mdx new file mode 100644 index 000000000000..b37ca58ba89a --- /dev/null +++ b/docs/snippets/common/init-command-manual-framework.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn dlx storybook@latest init --type solid +``` \ No newline at end of file diff --git a/docs/snippets/ember/button-story-default-export-with-component.js.mdx b/docs/snippets/ember/button-story-default-export-with-component.js.mdx new file mode 100644 index 000000000000..cccf2a7d8d65 --- /dev/null +++ b/docs/snippets/ember/button-story-default-export-with-component.js.mdx @@ -0,0 +1,7 @@ +```js +// Button.stories.js + +export default { + component: 'button', +}; +``` \ No newline at end of file diff --git a/docs/snippets/ember/storybook-ember-cli-build.js.mdx b/docs/snippets/ember/storybook-ember-cli-build.js.mdx new file mode 100644 index 000000000000..d193c72f06f0 --- /dev/null +++ b/docs/snippets/ember/storybook-ember-cli-build.js.mdx @@ -0,0 +1,17 @@ +```js +// ember-cli-build.js + +'use strict'; + +const EmberApp = require('ember-cli/lib/broccoli/ember-app'); + +module.exports = function (defaults) { + const app = new EmberApp(defaults, { + '@storybook/ember-cli-storybook': { + enableAddonDocsIntegration: true, + }, + }); + + return app.toTree(); +}; +``` \ No newline at end of file diff --git a/docs/snippets/ember/storybook-preview-custom-metadata.js.mdx b/docs/snippets/ember/storybook-preview-custom-metadata.js.mdx new file mode 100644 index 000000000000..b084ced9e335 --- /dev/null +++ b/docs/snippets/ember/storybook-preview-custom-metadata.js.mdx @@ -0,0 +1,19 @@ +```js +// .storybook/preview.js + +import { setJSONDoc } from '@storybook/addon-docs/ember'; + +import docJson from '../dist/storybook-docgen/index.json'; +setJSONDoc(docJson); + +export default { + parameters: { + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, + }, + }, +}; +``` \ No newline at end of file diff --git a/docs/snippets/preact/button-story-default-export-with-component.js.mdx b/docs/snippets/preact/button-story-default-export-with-component.js.mdx new file mode 100644 index 000000000000..b1e0cdabc5fb --- /dev/null +++ b/docs/snippets/preact/button-story-default-export-with-component.js.mdx @@ -0,0 +1,9 @@ +```js +// Button.stories.js|jsx + +import { Button } from './Button'; + +export default { + component: Button, +}; +``` \ No newline at end of file diff --git a/docs/snippets/svelte/main-config-csf-addon-register.js.mdx b/docs/snippets/svelte/main-config-csf-addon-register.js.mdx new file mode 100644 index 000000000000..ebe684a5288b --- /dev/null +++ b/docs/snippets/svelte/main-config-csf-addon-register.js.mdx @@ -0,0 +1,13 @@ +```js +// .storybook/main.js + +export default { + // Replace sveltekit with svelte-vite if you are not working with SvelteKit + framework: '@storybook/sveltekit', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx|svelte)'], + addons: [ + // Other Storybook addons + '@storybook/addon-svelte-csf', //👈 The Svelte CSF addon goes here + ], +}; +``` \ No newline at end of file diff --git a/docs/snippets/svelte/main-config-csf-addon-register.ts.mdx b/docs/snippets/svelte/main-config-csf-addon-register.ts.mdx new file mode 100644 index 000000000000..b193af82d1f8 --- /dev/null +++ b/docs/snippets/svelte/main-config-csf-addon-register.ts.mdx @@ -0,0 +1,17 @@ +```ts +// .storybook/main.ts + +// Replace sveltekit with svelte-vite if you are not working with SvelteKit +import type { StorybookConfig } from '@storybook/sveltekit'; + +const config: StorybookConfig = { + framework: '@storybook/sveltekit', + stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx|svelte)'], + addons: [ + // Other Storybook addons + '@storybook/addon-svelte-csf', //👈 The Svelte CSF addon goes here + ], +}; + +export default config; +``` \ No newline at end of file diff --git a/docs/snippets/svelte/svelte-csf-addon-install.npm.js.mdx b/docs/snippets/svelte/svelte-csf-addon-install.npm.js.mdx new file mode 100644 index 000000000000..7e660f25d275 --- /dev/null +++ b/docs/snippets/svelte/svelte-csf-addon-install.npm.js.mdx @@ -0,0 +1,3 @@ +```shell +npm install @storybook/addon-svelte-csf --save-dev +``` \ No newline at end of file diff --git a/docs/snippets/svelte/svelte-csf-addon-install.pnpm.js.mdx b/docs/snippets/svelte/svelte-csf-addon-install.pnpm.js.mdx new file mode 100644 index 000000000000..2f4179ecc6c1 --- /dev/null +++ b/docs/snippets/svelte/svelte-csf-addon-install.pnpm.js.mdx @@ -0,0 +1,3 @@ +```shell +pnpm add --save-dev @storybook/addon-svelte-csf +``` \ No newline at end of file diff --git a/docs/snippets/svelte/svelte-csf-addon-install.yarn.js.mdx b/docs/snippets/svelte/svelte-csf-addon-install.yarn.js.mdx new file mode 100644 index 000000000000..e06d8986a11b --- /dev/null +++ b/docs/snippets/svelte/svelte-csf-addon-install.yarn.js.mdx @@ -0,0 +1,3 @@ +```shell +yarn add --dev @storybook/addon-svelte-csf +``` \ No newline at end of file diff --git a/docs/snippets/web-components/button-story-default-export-with-component.ts.mdx b/docs/snippets/web-components/button-story-default-export-with-component.ts.mdx new file mode 100644 index 000000000000..fc186025fd30 --- /dev/null +++ b/docs/snippets/web-components/button-story-default-export-with-component.ts.mdx @@ -0,0 +1,11 @@ +```ts +// Button.stories.ts + +import type { Meta } from '@storybook/web-components'; + +export default { + component: 'demo-button', +}; + +export default meta; +``` \ No newline at end of file diff --git a/docs/snippets/web-components/component-story-custom-args-complex.js.mdx b/docs/snippets/web-components/component-story-custom-args-complex.js.mdx new file mode 100644 index 000000000000..b2553c2ddfda --- /dev/null +++ b/docs/snippets/web-components/component-story-custom-args-complex.js.mdx @@ -0,0 +1,42 @@ +```js +// Button.stories.js + +import { html } from 'lit'; + +export default { + component: 'custom-component', + //👇 Creates specific argTypes + argTypes: { + propertyA: { + options: ['Item One', 'Item Two', 'Item Three'], + control: { type: 'select' }, // Automatically inferred when 'options' is defined + }, + propertyB: { + options: ['Another Item One', 'Another Item Two', 'Another Item Three'], + }, + }, +}; + +const someFunction = (valuePropertyA, valuePropertyB) => { + // Do some logic here +}; + +export const ExampleStory = { + render: ({ propertyA, propertyB }) => { + //👇 Assigns the function result to a variable + const someFunctionResult = someFunction(propertyA, propertyB); + + return html` + + `; + }, + args: { + propertyA: 'Item One', + propertyB: 'Another Item One', + }, +}; +``` \ No newline at end of file diff --git a/docs/snippets/web-components/component-story-custom-args-complex.ts.mdx b/docs/snippets/web-components/component-story-custom-args-complex.ts.mdx new file mode 100644 index 000000000000..68cd1a765cfa --- /dev/null +++ b/docs/snippets/web-components/component-story-custom-args-complex.ts.mdx @@ -0,0 +1,47 @@ +```ts +// Button.stories.ts + +import type { Meta, StoryObj } from '@storybook/web-components'; + +import { html } from 'lit'; + +const meta: Meta = { + component: 'custom-component', + //👇 Creates specific argTypes with options + argTypes: { + propertyA: { + options: ['Item One', 'Item Two', 'Item Three'], + control: { type: 'select' }, // Automatically inferred when 'options' is defined + }, + propertyB: { + options: ['Another Item One', 'Another Item Two', 'Another Item Three'], + }, + }, +}; + +export default meta; +type Story = StoryObj; + +const someFunction = (valuePropertyA: any, valuePropertyB: any) => { + // Do some logic here +}; + +export const ExampleStory: Story = { + render: ({ propertyA, propertyB }) => { + //👇 Assigns the function result to a variable + const someFunctionResult = someFunction(propertyA, propertyB); + + return html` + + `; + }, + args: { + propertyA: 'Item One', + propertyB: 'Another Item One', + }, +}; +``` \ No newline at end of file diff --git a/docs/snippets/web-components/storybook-preview-custom-elements-config.js.mdx b/docs/snippets/web-components/storybook-preview-custom-elements-config.js.mdx new file mode 100644 index 000000000000..147737c08a5a --- /dev/null +++ b/docs/snippets/web-components/storybook-preview-custom-elements-config.js.mdx @@ -0,0 +1,19 @@ +```js +// .storybook/preview.js + +import { setCustomElementsManifest } from '@storybook/web-components'; +import customElements from '../custom-elements.json'; + +setCustomElementsManifest(customElements); + +export default { + parameters: { + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, + }, + }, +}; +``` \ No newline at end of file diff --git a/docs/snippets/web-components/storybook-preview-custom-elements-config.ts.mdx b/docs/snippets/web-components/storybook-preview-custom-elements-config.ts.mdx new file mode 100644 index 000000000000..30fb5e9baf52 --- /dev/null +++ b/docs/snippets/web-components/storybook-preview-custom-elements-config.ts.mdx @@ -0,0 +1,24 @@ +```ts +// .storybook/preview.ts + +import type { Preview } from '@storybook/web-components'; +import { setCustomElementsManifest } from '@storybook/web-components'; + +import customElements from '../custom-elements.json'; + +setCustomElementsManifest(customElements); + +const preview: Preview = { + parameters: { + actions: { argTypesRegex: '^on[A-Z].*' }, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/i, + }, + }, + }, +}; + +export default preview; +``` \ No newline at end of file diff --git a/docs/writing-stories/index.md b/docs/writing-stories/index.md index c938a3f60929..a270dd95b1e1 100644 --- a/docs/writing-stories/index.md +++ b/docs/writing-stories/index.md @@ -39,6 +39,7 @@ The _default_ export metadata controls how Storybook lists your stories and prov 'svelte/button-story-default-export-with-component.js.mdx', 'svelte/button-story-default-export-with-component.ts.mdx', 'web-components/button-story-default-export-with-component.js.mdx', + 'web-components/button-story-default-export-with-component.ts.mdx', 'html/button-story-default-export.js.mdx', 'html/button-story-default-export.ts.mdx', 'solid/button-story-default-export-with-component.js.mdx', From a742b5594e65b300d129979653e4f9588796306c Mon Sep 17 00:00:00 2001 From: jonniebigodes Date: Thu, 14 Dec 2023 20:07:14 +0000 Subject: [PATCH 48/64] Fix snippets --- docs/snippets/angular/angular-project-compodoc-config.json.mdx | 2 +- docs/snippets/angular/compodoc-install.npm.js.mdx | 2 +- docs/snippets/angular/compodoc-install.pnpm.js.mdx | 2 +- docs/snippets/angular/compodoc-install.yarn.js.mdx | 2 +- docs/snippets/angular/storybook-preview-compodoc-config.ts.mdx | 2 +- .../common/init-command-custom-package-manager.npx.js.mdx | 2 +- .../common/init-command-custom-package-manager.pnpm.js.mdx | 2 +- .../common/init-command-custom-package-manager.yarn.js.mdx | 2 +- docs/snippets/common/init-command-manual-framework.npx.js.mdx | 2 +- docs/snippets/common/init-command-manual-framework.pnpm.js.mdx | 2 +- docs/snippets/common/init-command-manual-framework.yarn.js.mdx | 2 +- .../ember/button-story-default-export-with-component.js.mdx | 2 +- docs/snippets/ember/storybook-ember-cli-build.js.mdx | 2 +- docs/snippets/ember/storybook-preview-custom-metadata.js.mdx | 2 +- .../preact/button-story-default-export-with-component.js.mdx | 2 +- docs/snippets/svelte/main-config-csf-addon-register.js.mdx | 2 +- docs/snippets/svelte/main-config-csf-addon-register.ts.mdx | 2 +- docs/snippets/svelte/svelte-csf-addon-install.npm.js.mdx | 2 +- docs/snippets/svelte/svelte-csf-addon-install.pnpm.js.mdx | 2 +- docs/snippets/svelte/svelte-csf-addon-install.yarn.js.mdx | 2 +- .../button-story-default-export-with-component.ts.mdx | 2 +- .../web-components/component-story-custom-args-complex.js.mdx | 2 +- .../web-components/component-story-custom-args-complex.ts.mdx | 2 +- .../storybook-preview-custom-elements-config.js.mdx | 2 +- .../storybook-preview-custom-elements-config.ts.mdx | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/snippets/angular/angular-project-compodoc-config.json.mdx b/docs/snippets/angular/angular-project-compodoc-config.json.mdx index dee483218f45..66d4130306ee 100644 --- a/docs/snippets/angular/angular-project-compodoc-config.json.mdx +++ b/docs/snippets/angular/angular-project-compodoc-config.json.mdx @@ -47,4 +47,4 @@ } } } -``` \ No newline at end of file +``` diff --git a/docs/snippets/angular/compodoc-install.npm.js.mdx b/docs/snippets/angular/compodoc-install.npm.js.mdx index 71e70d36adff..be943eda7dc2 100644 --- a/docs/snippets/angular/compodoc-install.npm.js.mdx +++ b/docs/snippets/angular/compodoc-install.npm.js.mdx @@ -1,3 +1,3 @@ ```shell npm install @compodoc/compodoc --save-dev -``` \ No newline at end of file +``` diff --git a/docs/snippets/angular/compodoc-install.pnpm.js.mdx b/docs/snippets/angular/compodoc-install.pnpm.js.mdx index 2e20e20c93cd..116346afd228 100644 --- a/docs/snippets/angular/compodoc-install.pnpm.js.mdx +++ b/docs/snippets/angular/compodoc-install.pnpm.js.mdx @@ -1,3 +1,3 @@ ```shell pnpm add --save-dev @compodoc/compodo -``` \ No newline at end of file +``` diff --git a/docs/snippets/angular/compodoc-install.yarn.js.mdx b/docs/snippets/angular/compodoc-install.yarn.js.mdx index 1518a539392d..8a6ee05f79b4 100644 --- a/docs/snippets/angular/compodoc-install.yarn.js.mdx +++ b/docs/snippets/angular/compodoc-install.yarn.js.mdx @@ -1,3 +1,3 @@ ```shell yarn add --dev @compodoc/compodoc -``` \ No newline at end of file +``` diff --git a/docs/snippets/angular/storybook-preview-compodoc-config.ts.mdx b/docs/snippets/angular/storybook-preview-compodoc-config.ts.mdx index d34f4d9e878a..658a8906b1e6 100644 --- a/docs/snippets/angular/storybook-preview-compodoc-config.ts.mdx +++ b/docs/snippets/angular/storybook-preview-compodoc-config.ts.mdx @@ -21,4 +21,4 @@ const preview: Preview = { }; export default preview; -``` \ No newline at end of file +``` diff --git a/docs/snippets/common/init-command-custom-package-manager.npx.js.mdx b/docs/snippets/common/init-command-custom-package-manager.npx.js.mdx index d78f82ce365a..e904617f28cb 100644 --- a/docs/snippets/common/init-command-custom-package-manager.npx.js.mdx +++ b/docs/snippets/common/init-command-custom-package-manager.npx.js.mdx @@ -1,3 +1,3 @@ ```shell npx storybook@latest init --package-manager=npm -``` \ No newline at end of file +``` diff --git a/docs/snippets/common/init-command-custom-package-manager.pnpm.js.mdx b/docs/snippets/common/init-command-custom-package-manager.pnpm.js.mdx index e2f5ddcac342..abd51d256e80 100644 --- a/docs/snippets/common/init-command-custom-package-manager.pnpm.js.mdx +++ b/docs/snippets/common/init-command-custom-package-manager.pnpm.js.mdx @@ -1,3 +1,3 @@ ```shell pnpm dlx storybook@latest init --package-manager=npm -``` \ No newline at end of file +``` diff --git a/docs/snippets/common/init-command-custom-package-manager.yarn.js.mdx b/docs/snippets/common/init-command-custom-package-manager.yarn.js.mdx index 25754658b1d6..d01bae571730 100644 --- a/docs/snippets/common/init-command-custom-package-manager.yarn.js.mdx +++ b/docs/snippets/common/init-command-custom-package-manager.yarn.js.mdx @@ -1,3 +1,3 @@ ```shell yarn dlx storybook@latest init --package-manager=npm -``` \ No newline at end of file +``` diff --git a/docs/snippets/common/init-command-manual-framework.npx.js.mdx b/docs/snippets/common/init-command-manual-framework.npx.js.mdx index 453f312fee6c..b0cbed167881 100644 --- a/docs/snippets/common/init-command-manual-framework.npx.js.mdx +++ b/docs/snippets/common/init-command-manual-framework.npx.js.mdx @@ -1,3 +1,3 @@ ```shell npx storybook@latest init --type solid -``` \ No newline at end of file +``` diff --git a/docs/snippets/common/init-command-manual-framework.pnpm.js.mdx b/docs/snippets/common/init-command-manual-framework.pnpm.js.mdx index 978dc88c8947..483487b08ded 100644 --- a/docs/snippets/common/init-command-manual-framework.pnpm.js.mdx +++ b/docs/snippets/common/init-command-manual-framework.pnpm.js.mdx @@ -1,3 +1,3 @@ ```shell pnpm dlx storybook@latest init --type solid -``` \ No newline at end of file +``` diff --git a/docs/snippets/common/init-command-manual-framework.yarn.js.mdx b/docs/snippets/common/init-command-manual-framework.yarn.js.mdx index b37ca58ba89a..b1152c869f0a 100644 --- a/docs/snippets/common/init-command-manual-framework.yarn.js.mdx +++ b/docs/snippets/common/init-command-manual-framework.yarn.js.mdx @@ -1,3 +1,3 @@ ```shell yarn dlx storybook@latest init --type solid -``` \ No newline at end of file +``` diff --git a/docs/snippets/ember/button-story-default-export-with-component.js.mdx b/docs/snippets/ember/button-story-default-export-with-component.js.mdx index cccf2a7d8d65..c1e6396ad3e1 100644 --- a/docs/snippets/ember/button-story-default-export-with-component.js.mdx +++ b/docs/snippets/ember/button-story-default-export-with-component.js.mdx @@ -4,4 +4,4 @@ export default { component: 'button', }; -``` \ No newline at end of file +``` diff --git a/docs/snippets/ember/storybook-ember-cli-build.js.mdx b/docs/snippets/ember/storybook-ember-cli-build.js.mdx index d193c72f06f0..426e63872b82 100644 --- a/docs/snippets/ember/storybook-ember-cli-build.js.mdx +++ b/docs/snippets/ember/storybook-ember-cli-build.js.mdx @@ -14,4 +14,4 @@ module.exports = function (defaults) { return app.toTree(); }; -``` \ No newline at end of file +``` diff --git a/docs/snippets/ember/storybook-preview-custom-metadata.js.mdx b/docs/snippets/ember/storybook-preview-custom-metadata.js.mdx index b084ced9e335..ec446d1559ab 100644 --- a/docs/snippets/ember/storybook-preview-custom-metadata.js.mdx +++ b/docs/snippets/ember/storybook-preview-custom-metadata.js.mdx @@ -16,4 +16,4 @@ export default { }, }, }; -``` \ No newline at end of file +``` diff --git a/docs/snippets/preact/button-story-default-export-with-component.js.mdx b/docs/snippets/preact/button-story-default-export-with-component.js.mdx index b1e0cdabc5fb..dfffb5de27e3 100644 --- a/docs/snippets/preact/button-story-default-export-with-component.js.mdx +++ b/docs/snippets/preact/button-story-default-export-with-component.js.mdx @@ -6,4 +6,4 @@ import { Button } from './Button'; export default { component: Button, }; -``` \ No newline at end of file +``` diff --git a/docs/snippets/svelte/main-config-csf-addon-register.js.mdx b/docs/snippets/svelte/main-config-csf-addon-register.js.mdx index ebe684a5288b..5559ac261ca1 100644 --- a/docs/snippets/svelte/main-config-csf-addon-register.js.mdx +++ b/docs/snippets/svelte/main-config-csf-addon-register.js.mdx @@ -10,4 +10,4 @@ export default { '@storybook/addon-svelte-csf', //👈 The Svelte CSF addon goes here ], }; -``` \ No newline at end of file +``` diff --git a/docs/snippets/svelte/main-config-csf-addon-register.ts.mdx b/docs/snippets/svelte/main-config-csf-addon-register.ts.mdx index b193af82d1f8..3221880ebb99 100644 --- a/docs/snippets/svelte/main-config-csf-addon-register.ts.mdx +++ b/docs/snippets/svelte/main-config-csf-addon-register.ts.mdx @@ -14,4 +14,4 @@ const config: StorybookConfig = { }; export default config; -``` \ No newline at end of file +``` diff --git a/docs/snippets/svelte/svelte-csf-addon-install.npm.js.mdx b/docs/snippets/svelte/svelte-csf-addon-install.npm.js.mdx index 7e660f25d275..574d63651863 100644 --- a/docs/snippets/svelte/svelte-csf-addon-install.npm.js.mdx +++ b/docs/snippets/svelte/svelte-csf-addon-install.npm.js.mdx @@ -1,3 +1,3 @@ ```shell npm install @storybook/addon-svelte-csf --save-dev -``` \ No newline at end of file +``` diff --git a/docs/snippets/svelte/svelte-csf-addon-install.pnpm.js.mdx b/docs/snippets/svelte/svelte-csf-addon-install.pnpm.js.mdx index 2f4179ecc6c1..4ff9be66f107 100644 --- a/docs/snippets/svelte/svelte-csf-addon-install.pnpm.js.mdx +++ b/docs/snippets/svelte/svelte-csf-addon-install.pnpm.js.mdx @@ -1,3 +1,3 @@ ```shell pnpm add --save-dev @storybook/addon-svelte-csf -``` \ No newline at end of file +``` diff --git a/docs/snippets/svelte/svelte-csf-addon-install.yarn.js.mdx b/docs/snippets/svelte/svelte-csf-addon-install.yarn.js.mdx index e06d8986a11b..5b3e6dff23f6 100644 --- a/docs/snippets/svelte/svelte-csf-addon-install.yarn.js.mdx +++ b/docs/snippets/svelte/svelte-csf-addon-install.yarn.js.mdx @@ -1,3 +1,3 @@ ```shell yarn add --dev @storybook/addon-svelte-csf -``` \ No newline at end of file +``` diff --git a/docs/snippets/web-components/button-story-default-export-with-component.ts.mdx b/docs/snippets/web-components/button-story-default-export-with-component.ts.mdx index fc186025fd30..805431b359c0 100644 --- a/docs/snippets/web-components/button-story-default-export-with-component.ts.mdx +++ b/docs/snippets/web-components/button-story-default-export-with-component.ts.mdx @@ -8,4 +8,4 @@ export default { }; export default meta; -``` \ No newline at end of file +``` diff --git a/docs/snippets/web-components/component-story-custom-args-complex.js.mdx b/docs/snippets/web-components/component-story-custom-args-complex.js.mdx index b2553c2ddfda..0bd0906b20ba 100644 --- a/docs/snippets/web-components/component-story-custom-args-complex.js.mdx +++ b/docs/snippets/web-components/component-story-custom-args-complex.js.mdx @@ -39,4 +39,4 @@ export const ExampleStory = { propertyB: 'Another Item One', }, }; -``` \ No newline at end of file +``` diff --git a/docs/snippets/web-components/component-story-custom-args-complex.ts.mdx b/docs/snippets/web-components/component-story-custom-args-complex.ts.mdx index 68cd1a765cfa..b772ef0301cc 100644 --- a/docs/snippets/web-components/component-story-custom-args-complex.ts.mdx +++ b/docs/snippets/web-components/component-story-custom-args-complex.ts.mdx @@ -44,4 +44,4 @@ export const ExampleStory: Story = { propertyB: 'Another Item One', }, }; -``` \ No newline at end of file +``` diff --git a/docs/snippets/web-components/storybook-preview-custom-elements-config.js.mdx b/docs/snippets/web-components/storybook-preview-custom-elements-config.js.mdx index 147737c08a5a..10b4d63d5c01 100644 --- a/docs/snippets/web-components/storybook-preview-custom-elements-config.js.mdx +++ b/docs/snippets/web-components/storybook-preview-custom-elements-config.js.mdx @@ -16,4 +16,4 @@ export default { }, }, }; -``` \ No newline at end of file +``` diff --git a/docs/snippets/web-components/storybook-preview-custom-elements-config.ts.mdx b/docs/snippets/web-components/storybook-preview-custom-elements-config.ts.mdx index 30fb5e9baf52..df8a1e374053 100644 --- a/docs/snippets/web-components/storybook-preview-custom-elements-config.ts.mdx +++ b/docs/snippets/web-components/storybook-preview-custom-elements-config.ts.mdx @@ -21,4 +21,4 @@ const preview: Preview = { }; export default preview; -``` \ No newline at end of file +``` From d96c62dc05a693ea99edc1f7dad8001507437b3f Mon Sep 17 00:00:00 2001 From: jonniebigodes Date: Thu, 14 Dec 2023 22:12:14 +0000 Subject: [PATCH 49/64] Docs: Fix Install troubleshooting heading --- docs/get-started/install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/get-started/install.md b/docs/get-started/install.md index 1ce934aab296..44b2cf7aad92 100644 --- a/docs/get-started/install.md +++ b/docs/get-started/install.md @@ -220,7 +220,7 @@ The community actively maintains the Svelte CSF addon but still lacks some featu
-### The installation process seems flaky and keeps failing +#### The installation process seems flaky and keeps failing If you're still running into some issues during the installation process, we encourage you to check out the following resources: From 01182e5094d567ca6dc408c7d349c5b179154b2e Mon Sep 17 00:00:00 2001 From: Jeppe Reinhold Date: Fri, 15 Dec 2023 09:44:35 +0100 Subject: [PATCH 50/64] cleanup --- code/addons/docs/src/preset.ts | 1 - code/builders/builder-vite/src/optimizeDeps.ts | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/code/addons/docs/src/preset.ts b/code/addons/docs/src/preset.ts index de10b683efa6..0877643bae9f 100644 --- a/code/addons/docs/src/preset.ts +++ b/code/addons/docs/src/preset.ts @@ -238,7 +238,6 @@ export const viteFinal = async (config: any, options: Options) => { enforce: 'pre', config: () => ({ resolve: { - // TODO: does this work if pre-existing alias is an array? alias: { react, 'react-dom': reactDom, diff --git a/code/builders/builder-vite/src/optimizeDeps.ts b/code/builders/builder-vite/src/optimizeDeps.ts index 725d625b1ecd..1972fde8e8e7 100644 --- a/code/builders/builder-vite/src/optimizeDeps.ts +++ b/code/builders/builder-vite/src/optimizeDeps.ts @@ -75,13 +75,13 @@ const INCLUDE_CANDIDATES = [ 'prettier/parser-typescript', 'prop-types', 'qs', - // 'react-dom', // TODO: de we really need to disable these? - // 'react-dom/client', + 'react-dom', + 'react-dom/client', 'react-fast-compare', 'react-is', 'react-textarea-autosize', - // 'react', - // 'react/jsx-runtime', + 'react', + 'react/jsx-runtime', 'refractor/core', 'refractor/lang/bash.js', 'refractor/lang/css.js', From 021bb5613e85041c2c8fa1f016603f53b206c41f Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 15 Dec 2023 10:06:17 +0100 Subject: [PATCH 51/64] embed `react-textarea-autosize` types --- code/ui/components/package.json | 7 +++---- .../src/components/form/input/input.tsx | 21 ++++++++++++++++++- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/code/ui/components/package.json b/code/ui/components/package.json index 1cab757ae8ed..e3c856d3e110 100644 --- a/code/ui/components/package.json +++ b/code/ui/components/package.json @@ -67,7 +67,6 @@ "@storybook/theming": "workspace:*", "@storybook/types": "workspace:*", "memoizerific": "^1.11.3", - "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" }, "devDependencies": { @@ -82,7 +81,8 @@ "react-syntax-highlighter": "^15.4.5", "react-textarea-autosize": "^8.3.0", "ts-dedent": "^2.0.0", - "typescript": "^5.3.2" + "typescript": "^5.3.2", + "use-resize-observer": "^9.1.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", @@ -94,8 +94,7 @@ "bundler": { "entries": [ "./src/index.ts" - ], - "platform": "neutral" + ] }, "gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17" } diff --git a/code/ui/components/src/components/form/input/input.tsx b/code/ui/components/src/components/form/input/input.tsx index 15f647c7cdb2..a8527b94d86d 100644 --- a/code/ui/components/src/components/form/input/input.tsx +++ b/code/ui/components/src/components/form/input/input.tsx @@ -3,9 +3,28 @@ import React, { forwardRef } from 'react'; import type { Theme, CSSObject } from '@storybook/theming'; import { styled } from '@storybook/theming'; -import type { TextareaAutosizeProps } from 'react-textarea-autosize'; import TextareaAutoResize from 'react-textarea-autosize'; +/** + * these types are copied from `react-textarea-autosize`. + * I copied them because of https://github.com/storybookjs/storybook/issues/18734 + * Maybe there's some bug in `tsup` or `react-textarea-autosize`? + */ +type TextareaPropsRaw = React.TextareaHTMLAttributes; +type Style = Omit, 'maxHeight' | 'minHeight'> & { + height?: number; +}; +type TextareaHeightChangeMeta = { + rowHeight: number; +}; +interface TextareaAutosizeProps extends Omit { + maxRows?: number; + minRows?: number; + onHeightChange?: (height: number, meta: TextareaHeightChangeMeta) => void; + cacheMeasurements?: boolean; + style?: Style; +} + const styleResets: CSSObject = { // resets appearance: 'none', From ed302ce4e7fa698a666b25731823500f16b8b34d Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 15 Dec 2023 12:45:10 +0100 Subject: [PATCH 52/64] export it --- code/ui/components/src/components/form/input/input.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/ui/components/src/components/form/input/input.tsx b/code/ui/components/src/components/form/input/input.tsx index a8527b94d86d..869a15cba2df 100644 --- a/code/ui/components/src/components/form/input/input.tsx +++ b/code/ui/components/src/components/form/input/input.tsx @@ -1,4 +1,4 @@ -import type { HTMLProps, SelectHTMLAttributes } from 'react'; +import type { FC, HTMLProps, SelectHTMLAttributes } from 'react'; import React, { forwardRef } from 'react'; import type { Theme, CSSObject } from '@storybook/theming'; import { styled } from '@storybook/theming'; @@ -17,7 +17,7 @@ type Style = Omit, 'maxHeight' | 'minHeig type TextareaHeightChangeMeta = { rowHeight: number; }; -interface TextareaAutosizeProps extends Omit { +export interface TextareaAutosizeProps extends Omit { maxRows?: number; minRows?: number; onHeightChange?: (height: number, meta: TextareaHeightChangeMeta) => void; @@ -209,7 +209,7 @@ type TextareaProps = Omit< valid?: ValidationStates; height?: number; }; -export const Textarea = Object.assign( +export const Textarea: FC = Object.assign( styled( forwardRef(function Textarea({ size, valid, align, ...props }, ref) { return ; From 37d3bf5123c752d59c8bfdb328b1407efad070d4 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 15 Dec 2023 12:58:57 +0100 Subject: [PATCH 53/64] fix --- code/ui/components/src/components/form/input/input.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ui/components/src/components/form/input/input.tsx b/code/ui/components/src/components/form/input/input.tsx index 869a15cba2df..7b761e49b148 100644 --- a/code/ui/components/src/components/form/input/input.tsx +++ b/code/ui/components/src/components/form/input/input.tsx @@ -208,7 +208,7 @@ type TextareaProps = Omit< align?: Alignments; valid?: ValidationStates; height?: number; -}; +} & React.RefAttributes; export const Textarea: FC = Object.assign( styled( forwardRef(function Textarea({ size, valid, align, ...props }, ref) { From ff88e04018031e3884976055a190765ffda3741a Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Fri, 15 Dec 2023 17:26:34 +0800 Subject: [PATCH 54/64] API: Remove stories.json support --- MIGRATION.md | 7 + code/lib/core-server/src/build-static.ts | 10 +- .../StoryIndexGenerator.deprecated.test.ts | 1485 ----------------- .../src/utils/StoryIndexGenerator.test.ts | 1 - .../src/utils/StoryIndexGenerator.ts | 31 +- .../utils/__tests__/index-extraction.test.ts | 1 - .../src/utils/getStoryIndexGenerator.ts | 1 - .../src/utils/stories-json.test.ts | 680 +------- .../lib/core-server/src/utils/stories-json.ts | 36 +- 9 files changed, 18 insertions(+), 2234 deletions(-) delete mode 100644 code/lib/core-server/src/utils/StoryIndexGenerator.deprecated.test.ts diff --git a/MIGRATION.md b/MIGRATION.md index 78f0a0c5779f..787e893df979 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -12,6 +12,7 @@ - [Icons is deprecated](#icons-is-deprecated) - [React-docgen component analysis by default](#react-docgen-component-analysis-by-default) - [Removed postinstall](#removed-postinstall) + - [Removed stories.json](#removed-storiesjson) - [Framework-specific changes](#framework-specific-changes) - [Angular: Drop support for Angular \< 15](#angular-drop-support-for-angular--15) - [Next.js: Drop support for version \< 13.5](#nextjs-drop-support-for-version--135) @@ -473,6 +474,12 @@ For more information see: https://storybook.js.org/docs/react/api/main-config-ty We removed the `@storybook/postinstall` package, which provided some utilities for addons to programmatically modify user configuration files on install. This package was years out of date, so this should be a non-disruptive change. If your addon used the package, you can view the old source code [here](https://github.com/storybookjs/storybook/tree/release-7-5/code/lib/postinstall) and adapt it into your addon. +#### Removed stories.json + +In addition to the built storybook, `storybook build` generates two files, `index.json` and `stories.json`, that list out the contents of the Storybook. `stories.json` is a legacy format and we included it for backwards compatibility. As of 8.0 we no longer build `stories.json` by default, and we will remove it completely in 9.0. + +In the meantime if you have code that relies on `stories.json`, you can find code that transforms the "v4" `index.json` to the "v3" `stories.json` format (and their respective TS types): https://github.com/storybookjs/storybook/blob/release-7-5/code/lib/core-server/src/utils/stories-json.ts#L71-L91 + ### Framework-specific changes #### Angular: Drop support for Angular \< 15 diff --git a/code/lib/core-server/src/build-static.ts b/code/lib/core-server/src/build-static.ts index 020b9060af6a..b85932ca246d 100644 --- a/code/lib/core-server/src/build-static.ts +++ b/code/lib/core-server/src/build-static.ts @@ -22,7 +22,7 @@ import { copyAllStaticFilesRelativeToMain, } from './utils/copy-all-static-files'; import { getBuilders } from './utils/get-builders'; -import { convertToIndexV3, extractStoriesJson } from './utils/stories-json'; +import { extractStoriesJson } from './utils/stories-json'; import { extractStorybookMetadata } from './utils/metadata'; import { StoryIndexGenerator } from './utils/StoryIndexGenerator'; import { summarizeIndex } from './utils/summarizeIndex'; @@ -172,19 +172,11 @@ export async function buildStaticStandalone(options: BuildStaticStandaloneOption storyIndexers: deprecatedStoryIndexers, indexers, docs: docsOptions, - storiesV2Compatibility: !features?.storyStoreV7, storyStoreV7: !!features?.storyStoreV7, build, }); initializedStoryIndexGenerator = generator.initialize().then(() => generator); - effects.push( - extractStoriesJson( - join(options.outputDir, 'stories.json'), - initializedStoryIndexGenerator as Promise, - convertToIndexV3 - ) - ); effects.push( extractStoriesJson( join(options.outputDir, 'index.json'), diff --git a/code/lib/core-server/src/utils/StoryIndexGenerator.deprecated.test.ts b/code/lib/core-server/src/utils/StoryIndexGenerator.deprecated.test.ts deleted file mode 100644 index 60d700bad62e..000000000000 --- a/code/lib/core-server/src/utils/StoryIndexGenerator.deprecated.test.ts +++ /dev/null @@ -1,1485 +0,0 @@ -/* eslint-disable @typescript-eslint/no-shadow */ -/// ; - -/** - * @jest-environment node - */ - -import path from 'path'; -import fs from 'fs-extra'; -import { normalizeStoriesEntry } from '@storybook/core-common'; -import type { NormalizedStoriesSpecifier, StoryIndexEntry } from '@storybook/types'; -import { loadCsf, getStorySortParameter } from '@storybook/csf-tools'; -import { toId } from '@storybook/csf'; -import { logger, once } from '@storybook/node-logger'; - -import type { StoryIndexGeneratorOptions } from './StoryIndexGenerator'; -import { StoryIndexGenerator } from './StoryIndexGenerator'; - -jest.mock('@storybook/csf-tools'); -jest.mock('@storybook/csf', () => { - const csf = jest.requireActual('@storybook/csf'); - return { - ...csf, - toId: jest.fn(csf.toId), - }; -}); - -jest.mock('@storybook/node-logger'); - -const toIdMock = toId as jest.Mock>; -const loadCsfMock = loadCsf as jest.Mock>; -const getStorySortParameterMock = getStorySortParameter as jest.Mock< - ReturnType ->; - -const csfIndexer = async (fileName: string, opts: any) => { - const code = (await fs.readFile(fileName, 'utf-8')).toString(); - return loadCsf(code, { ...opts, fileName }).parse(); -}; - -const storiesMdxIndexer = async (fileName: string, opts: any) => { - let code = (await fs.readFile(fileName, 'utf-8')).toString(); - const { compile } = await import('@storybook/mdx2-csf'); - code = await compile(code, {}); - return loadCsf(code, { ...opts, fileName }).parse(); -}; - -const options: StoryIndexGeneratorOptions = { - configDir: path.join(__dirname, '__mockdata__'), - workingDir: path.join(__dirname, '__mockdata__'), - storyIndexers: [ - { test: /\.stories\.mdx$/, indexer: storiesMdxIndexer }, - { test: /\.stories\.(m?js|ts)x?$/, indexer: csfIndexer }, - ], - indexers: [], - storiesV2Compatibility: false, - storyStoreV7: true, - docs: { defaultName: 'docs', autodocs: false }, -}; - -describe('StoryIndexGenerator with deprecated indexer API', () => { - beforeEach(() => { - const actual = jest.requireActual('@storybook/csf-tools'); - loadCsfMock.mockImplementation(actual.loadCsf); - jest.mocked(logger.warn).mockClear(); - jest.mocked(once.warn).mockClear(); - }); - describe('extraction', () => { - const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/A.stories.(ts|js|mjs|jsx)', - options - ); - const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/docs2/*.mdx', - options - ); - - describe('single file specifier', () => { - it('extracts stories from the right files', async () => { - const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/A.stories.js', - options - ); - - const generator = new StoryIndexGenerator([specifier], options); - await generator.initialize(); - - expect(await generator.getIndex()).toMatchInlineSnapshot(` - Object { - "entries": Object { - "a--story-one": Object { - "id": "a--story-one", - "importPath": "./src/A.stories.js", - "name": "Story One", - "tags": Array [ - "component-tag", - "story-tag", - "story", - ], - "title": "A", - "type": "story", - }, - }, - "v": 4, - } - `); - }); - }); - describe('non-recursive specifier', () => { - it('extracts stories from the right files', async () => { - const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/*/*.stories.(ts|js|mjs|jsx)', - options - ); - - const generator = new StoryIndexGenerator([specifier], options); - await generator.initialize(); - - expect(await generator.getIndex()).toMatchInlineSnapshot(` - Object { - "entries": Object { - "nested-button--story-one": Object { - "id": "nested-button--story-one", - "importPath": "./src/nested/Button.stories.ts", - "name": "Story One", - "tags": Array [ - "component-tag", - "story", - ], - "title": "nested/Button", - "type": "story", - }, - "second-nested-g--story-one": Object { - "id": "second-nested-g--story-one", - "importPath": "./src/second-nested/G.stories.ts", - "name": "Story One", - "tags": Array [ - "story", - ], - "title": "second-nested/G", - "type": "story", - }, - }, - "v": 4, - } - `); - }); - }); - describe('recursive specifier', () => { - it('extracts stories from the right files', async () => { - const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|mjs|jsx)', - options - ); - - const generator = new StoryIndexGenerator([specifier], options); - await generator.initialize(); - - expect(await generator.getIndex()).toMatchInlineSnapshot(` - Object { - "entries": Object { - "a--story-one": Object { - "id": "a--story-one", - "importPath": "./src/A.stories.js", - "name": "Story One", - "tags": Array [ - "component-tag", - "story-tag", - "story", - ], - "title": "A", - "type": "story", - }, - "b--story-one": Object { - "id": "b--story-one", - "importPath": "./src/B.stories.ts", - "name": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "B", - "type": "story", - }, - "d--story-one": Object { - "id": "d--story-one", - "importPath": "./src/D.stories.jsx", - "name": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "D", - "type": "story", - }, - "first-nested-deeply-f--story-one": Object { - "id": "first-nested-deeply-f--story-one", - "importPath": "./src/first-nested/deeply/F.stories.js", - "name": "Story One", - "tags": Array [ - "story", - ], - "title": "first-nested/deeply/F", - "type": "story", - }, - "h--story-one": Object { - "id": "h--story-one", - "importPath": "./src/H.stories.mjs", - "name": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "H", - "type": "story", - }, - "nested-button--story-one": Object { - "id": "nested-button--story-one", - "importPath": "./src/nested/Button.stories.ts", - "name": "Story One", - "tags": Array [ - "component-tag", - "story", - ], - "title": "nested/Button", - "type": "story", - }, - "second-nested-g--story-one": Object { - "id": "second-nested-g--story-one", - "importPath": "./src/second-nested/G.stories.ts", - "name": "Story One", - "tags": Array [ - "story", - ], - "title": "second-nested/G", - "type": "story", - }, - }, - "v": 4, - } - `); - }); - }); - - describe('mdx tagged components', () => { - it('adds docs entry with docs enabled', async () => { - const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/nested/Page.stories.mdx', - options - ); - - const generator = new StoryIndexGenerator([specifier], { - ...options, - }); - await generator.initialize(); - - expect(await generator.getIndex()).toMatchInlineSnapshot(` - Object { - "entries": Object { - "page--docs": Object { - "id": "page--docs", - "importPath": "./src/nested/Page.stories.mdx", - "name": "docs", - "storiesImports": Array [], - "tags": Array [ - "stories-mdx", - "docs", - ], - "title": "Page", - "type": "docs", - }, - "page--story-one": Object { - "id": "page--story-one", - "importPath": "./src/nested/Page.stories.mdx", - "name": "StoryOne", - "tags": Array [ - "stories-mdx", - "story", - ], - "title": "Page", - "type": "story", - }, - }, - "v": 4, - } - `); - }); - }); - - describe('autodocs', () => { - const autodocsOptions = { - ...options, - docs: { ...options.docs, autodocs: 'tag' as const }, - }; - it('generates an entry per CSF file with the autodocs tag', async () => { - const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|mjs|jsx)', - options - ); - - const generator = new StoryIndexGenerator([specifier], autodocsOptions); - await generator.initialize(); - - expect(await generator.getIndex()).toMatchInlineSnapshot(` - Object { - "entries": Object { - "a--story-one": Object { - "id": "a--story-one", - "importPath": "./src/A.stories.js", - "name": "Story One", - "tags": Array [ - "component-tag", - "story-tag", - "story", - ], - "title": "A", - "type": "story", - }, - "b--docs": Object { - "id": "b--docs", - "importPath": "./src/B.stories.ts", - "name": "docs", - "storiesImports": Array [], - "tags": Array [ - "autodocs", - "docs", - ], - "title": "B", - "type": "docs", - }, - "b--story-one": Object { - "id": "b--story-one", - "importPath": "./src/B.stories.ts", - "name": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "B", - "type": "story", - }, - "d--docs": Object { - "id": "d--docs", - "importPath": "./src/D.stories.jsx", - "name": "docs", - "storiesImports": Array [], - "tags": Array [ - "autodocs", - "docs", - ], - "title": "D", - "type": "docs", - }, - "d--story-one": Object { - "id": "d--story-one", - "importPath": "./src/D.stories.jsx", - "name": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "D", - "type": "story", - }, - "first-nested-deeply-f--story-one": Object { - "id": "first-nested-deeply-f--story-one", - "importPath": "./src/first-nested/deeply/F.stories.js", - "name": "Story One", - "tags": Array [ - "story", - ], - "title": "first-nested/deeply/F", - "type": "story", - }, - "h--docs": Object { - "id": "h--docs", - "importPath": "./src/H.stories.mjs", - "name": "docs", - "storiesImports": Array [], - "tags": Array [ - "autodocs", - "docs", - ], - "title": "H", - "type": "docs", - }, - "h--story-one": Object { - "id": "h--story-one", - "importPath": "./src/H.stories.mjs", - "name": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "H", - "type": "story", - }, - "nested-button--story-one": Object { - "id": "nested-button--story-one", - "importPath": "./src/nested/Button.stories.ts", - "name": "Story One", - "tags": Array [ - "component-tag", - "story", - ], - "title": "nested/Button", - "type": "story", - }, - "second-nested-g--story-one": Object { - "id": "second-nested-g--story-one", - "importPath": "./src/second-nested/G.stories.ts", - "name": "Story One", - "tags": Array [ - "story", - ], - "title": "second-nested/G", - "type": "story", - }, - }, - "v": 4, - } - `); - }); - - const autodocsTrueOptions = { - ...autodocsOptions, - docs: { - ...autodocsOptions.docs, - autodocs: true, - }, - }; - it('generates an entry for every CSF file when docsOptions.autodocs = true', async () => { - const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|mjs|jsx)', - options - ); - - const generator = new StoryIndexGenerator([specifier], autodocsTrueOptions); - await generator.initialize(); - - expect(Object.keys((await generator.getIndex()).entries)).toMatchInlineSnapshot(` - Array [ - "a--docs", - "a--story-one", - "b--docs", - "b--story-one", - "d--docs", - "d--story-one", - "h--docs", - "h--story-one", - "first-nested-deeply-f--docs", - "first-nested-deeply-f--story-one", - "nested-button--docs", - "nested-button--story-one", - "second-nested-g--docs", - "second-nested-g--story-one", - ] - `); - }); - - it('adds the autodocs tag to the autogenerated docs entries', async () => { - const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|mjs|jsx)', - options - ); - - const generator = new StoryIndexGenerator([specifier], autodocsTrueOptions); - await generator.initialize(); - - const index = await generator.getIndex(); - expect(index.entries['first-nested-deeply-f--docs'].tags).toEqual( - expect.arrayContaining(['autodocs']) - ); - }); - - it('throws an error if you attach a named MetaOf entry which clashes with a tagged autodocs entry', async () => { - const csfSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/B.stories.ts', - options - ); - - const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './errors/MetaOfClashingDefaultName.mdx', - options - ); - - const generator = new StoryIndexGenerator([csfSpecifier, docsSpecifier], autodocsOptions); - await generator.initialize(); - - await expect(generator.getIndex()).rejects.toThrowErrorMatchingInlineSnapshot( - `"Unable to index ./errors/MetaOfClashingDefaultName.mdx,./src/B.stories.ts"` - ); - }); - - it('throws an error if you attach a unnamed MetaOf entry with the same name as the CSF file that clashes with a tagged autodocs entry', async () => { - const csfSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/B.stories.ts', - options - ); - - const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './errors/B.mdx', - options - ); - - const generator = new StoryIndexGenerator([csfSpecifier, docsSpecifier], autodocsOptions); - await generator.initialize(); - - await expect(generator.getIndex()).rejects.toThrowErrorMatchingInlineSnapshot( - `"Unable to index ./errors/B.mdx,./src/B.stories.ts"` - ); - }); - - it('allows you to create a second unnamed MetaOf entry that does not clash with autodocs', async () => { - const csfSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/B.stories.ts', - options - ); - - const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './errors/MetaOfNoName.mdx', - options - ); - - const generator = new StoryIndexGenerator([csfSpecifier, docsSpecifier], autodocsOptions); - await generator.initialize(); - - expect(await generator.getIndex()).toMatchInlineSnapshot(` - Object { - "entries": Object { - "b--docs": Object { - "id": "b--docs", - "importPath": "./src/B.stories.ts", - "name": "docs", - "storiesImports": Array [], - "tags": Array [ - "autodocs", - "docs", - ], - "title": "B", - "type": "docs", - }, - "b--metaofnoname": Object { - "id": "b--metaofnoname", - "importPath": "./errors/MetaOfNoName.mdx", - "name": "MetaOfNoName", - "storiesImports": Array [ - "./src/B.stories.ts", - ], - "tags": Array [ - "attached-mdx", - "docs", - ], - "title": "B", - "type": "docs", - }, - "b--story-one": Object { - "id": "b--story-one", - "importPath": "./src/B.stories.ts", - "name": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "B", - "type": "story", - }, - }, - "v": 4, - } - `); - }); - it('allows you to create a second MetaOf entry with a different name to autodocs', async () => { - const csfSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/B.stories.ts', - options - ); - - const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './errors/MetaOfName.mdx', - options - ); - - const generator = new StoryIndexGenerator([csfSpecifier, docsSpecifier], autodocsOptions); - await generator.initialize(); - - expect(await generator.getIndex()).toMatchInlineSnapshot(` - Object { - "entries": Object { - "b--docs": Object { - "id": "b--docs", - "importPath": "./src/B.stories.ts", - "name": "docs", - "storiesImports": Array [], - "tags": Array [ - "autodocs", - "docs", - ], - "title": "B", - "type": "docs", - }, - "b--name": Object { - "id": "b--name", - "importPath": "./errors/MetaOfName.mdx", - "name": "name", - "storiesImports": Array [ - "./src/B.stories.ts", - ], - "tags": Array [ - "attached-mdx", - "docs", - ], - "title": "B", - "type": "docs", - }, - "b--story-one": Object { - "id": "b--story-one", - "importPath": "./src/B.stories.ts", - "name": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "B", - "type": "story", - }, - }, - "v": 4, - } - `); - }); - - it('allows you to override autodocs with MetaOf if it is automatic', async () => { - const csfSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/A.stories.js', - options - ); - - const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './errors/A.mdx', - options - ); - - const generator = new StoryIndexGenerator( - [csfSpecifier, docsSpecifier], - autodocsTrueOptions - ); - await generator.initialize(); - - expect(await generator.getIndex()).toMatchInlineSnapshot(` - Object { - "entries": Object { - "a--docs": Object { - "id": "a--docs", - "importPath": "./errors/A.mdx", - "name": "docs", - "storiesImports": Array [ - "./src/A.stories.js", - ], - "tags": Array [ - "attached-mdx", - "docs", - ], - "title": "A", - "type": "docs", - }, - "a--story-one": Object { - "id": "a--story-one", - "importPath": "./src/A.stories.js", - "name": "Story One", - "tags": Array [ - "component-tag", - "story-tag", - "story", - ], - "title": "A", - "type": "story", - }, - }, - "v": 4, - } - `); - }); - - it('generates a combined entry if there are two stories files for the same title', async () => { - const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './duplicate/*.stories.(ts|js|mjs|jsx)', - options - ); - - const generator = new StoryIndexGenerator([specifier], autodocsOptions); - await generator.initialize(); - - expect(await generator.getIndex()).toMatchInlineSnapshot(` - Object { - "entries": Object { - "duplicate-a--docs": Object { - "id": "duplicate-a--docs", - "importPath": "./duplicate/A.stories.js", - "name": "docs", - "storiesImports": Array [ - "./duplicate/SecondA.stories.js", - ], - "tags": Array [ - "autodocs", - "docs", - ], - "title": "duplicate/A", - "type": "docs", - }, - "duplicate-a--story-one": Object { - "id": "duplicate-a--story-one", - "importPath": "./duplicate/A.stories.js", - "name": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "duplicate/A", - "type": "story", - }, - "duplicate-a--story-two": Object { - "id": "duplicate-a--story-two", - "importPath": "./duplicate/SecondA.stories.js", - "name": "Story Two", - "tags": Array [ - "autodocs", - "story", - ], - "title": "duplicate/A", - "type": "story", - }, - }, - "v": 4, - } - `); - }); - - // https://github.com/storybookjs/storybook/issues/19142 - it('does not generate a docs page entry if there are no stories in the CSF file', async () => { - const csfSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './errors/NoStories.stories.ts', - options - ); - - const generator = new StoryIndexGenerator([csfSpecifier], autodocsOptions); - await generator.initialize(); - - expect(await generator.getIndex()).toMatchInlineSnapshot(` - Object { - "entries": Object {}, - "v": 4, - } - `); - }); - }); - - describe('docs specifier', () => { - it('creates correct docs entries', async () => { - const generator = new StoryIndexGenerator([storiesSpecifier, docsSpecifier], options); - await generator.initialize(); - - expect(await generator.getIndex()).toMatchInlineSnapshot(` - Object { - "entries": Object { - "a--metaof": Object { - "id": "a--metaof", - "importPath": "./src/docs2/MetaOf.mdx", - "name": "MetaOf", - "storiesImports": Array [ - "./src/A.stories.js", - ], - "tags": Array [ - "attached-mdx", - "docs", - ], - "title": "A", - "type": "docs", - }, - "a--second-docs": Object { - "id": "a--second-docs", - "importPath": "./src/docs2/SecondMetaOf.mdx", - "name": "Second Docs", - "storiesImports": Array [ - "./src/A.stories.js", - ], - "tags": Array [ - "attached-mdx", - "docs", - ], - "title": "A", - "type": "docs", - }, - "a--story-one": Object { - "id": "a--story-one", - "importPath": "./src/A.stories.js", - "name": "Story One", - "tags": Array [ - "component-tag", - "story-tag", - "story", - ], - "title": "A", - "type": "story", - }, - "componentreference--docs": Object { - "id": "componentreference--docs", - "importPath": "./src/docs2/ComponentReference.mdx", - "name": "docs", - "storiesImports": Array [], - "tags": Array [ - "unattached-mdx", - "docs", - ], - "title": "ComponentReference", - "type": "docs", - }, - "docs2-yabbadabbadooo--docs": Object { - "id": "docs2-yabbadabbadooo--docs", - "importPath": "./src/docs2/Title.mdx", - "name": "docs", - "storiesImports": Array [], - "tags": Array [ - "unattached-mdx", - "docs", - ], - "title": "docs2/Yabbadabbadooo", - "type": "docs", - }, - "notitle--docs": Object { - "id": "notitle--docs", - "importPath": "./src/docs2/NoTitle.mdx", - "name": "docs", - "storiesImports": Array [], - "tags": Array [ - "unattached-mdx", - "docs", - ], - "title": "NoTitle", - "type": "docs", - }, - }, - "v": 4, - } - `); - }); - - it('does not append title prefix if meta references a CSF file', async () => { - const generator = new StoryIndexGenerator( - [ - storiesSpecifier, - normalizeStoriesEntry( - { directory: './src/docs2', files: '**/*.mdx', titlePrefix: 'titlePrefix' }, - options - ), - ], - options - ); - await generator.initialize(); - - // NOTE: `toMatchInlineSnapshot` on objects sorts the keys, but in actuality, they are - // not sorted by default. - expect(Object.values((await generator.getIndex()).entries).map((e) => e.title)) - .toMatchInlineSnapshot(` - Array [ - "A", - "titlePrefix/ComponentReference", - "A", - "titlePrefix/NoTitle", - "A", - "titlePrefix/docs2/Yabbadabbadooo", - ] - `); - }); - - it('Allows you to override default name for docs files', async () => { - const generator = new StoryIndexGenerator([storiesSpecifier, docsSpecifier], { - ...options, - docs: { - ...options.docs, - defaultName: 'Info', - }, - }); - await generator.initialize(); - - expect(await generator.getIndex()).toMatchInlineSnapshot(` - Object { - "entries": Object { - "a--metaof": Object { - "id": "a--metaof", - "importPath": "./src/docs2/MetaOf.mdx", - "name": "MetaOf", - "storiesImports": Array [ - "./src/A.stories.js", - ], - "tags": Array [ - "attached-mdx", - "docs", - ], - "title": "A", - "type": "docs", - }, - "a--second-docs": Object { - "id": "a--second-docs", - "importPath": "./src/docs2/SecondMetaOf.mdx", - "name": "Second Docs", - "storiesImports": Array [ - "./src/A.stories.js", - ], - "tags": Array [ - "attached-mdx", - "docs", - ], - "title": "A", - "type": "docs", - }, - "a--story-one": Object { - "id": "a--story-one", - "importPath": "./src/A.stories.js", - "name": "Story One", - "tags": Array [ - "component-tag", - "story-tag", - "story", - ], - "title": "A", - "type": "story", - }, - "componentreference--info": Object { - "id": "componentreference--info", - "importPath": "./src/docs2/ComponentReference.mdx", - "name": "Info", - "storiesImports": Array [], - "tags": Array [ - "unattached-mdx", - "docs", - ], - "title": "ComponentReference", - "type": "docs", - }, - "docs2-yabbadabbadooo--info": Object { - "id": "docs2-yabbadabbadooo--info", - "importPath": "./src/docs2/Title.mdx", - "name": "Info", - "storiesImports": Array [], - "tags": Array [ - "unattached-mdx", - "docs", - ], - "title": "docs2/Yabbadabbadooo", - "type": "docs", - }, - "notitle--info": Object { - "id": "notitle--info", - "importPath": "./src/docs2/NoTitle.mdx", - "name": "Info", - "storiesImports": Array [], - "tags": Array [ - "unattached-mdx", - "docs", - ], - "title": "NoTitle", - "type": "docs", - }, - }, - "v": 4, - } - `); - }); - - it('pulls the attached story file to the front of the list', async () => { - const generator = new StoryIndexGenerator( - [ - normalizeStoriesEntry('./src/A.stories.js', options), - normalizeStoriesEntry('./src/B.stories.ts', options), - normalizeStoriesEntry('./complex/TwoStoryReferences.mdx', options), - ], - options - ); - await generator.initialize(); - expect(await generator.getIndex()).toMatchInlineSnapshot(` - Object { - "entries": Object { - "a--story-one": Object { - "id": "a--story-one", - "importPath": "./src/A.stories.js", - "name": "Story One", - "tags": Array [ - "component-tag", - "story-tag", - "story", - ], - "title": "A", - "type": "story", - }, - "b--story-one": Object { - "id": "b--story-one", - "importPath": "./src/B.stories.ts", - "name": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "B", - "type": "story", - }, - "b--twostoryreferences": Object { - "id": "b--twostoryreferences", - "importPath": "./complex/TwoStoryReferences.mdx", - "name": "TwoStoryReferences", - "storiesImports": Array [ - "./src/B.stories.ts", - "./src/A.stories.js", - ], - "tags": Array [ - "attached-mdx", - "docs", - ], - "title": "B", - "type": "docs", - }, - }, - "v": 4, - } - `); - }); - }); - - describe('errors', () => { - it('when docs dependencies are missing', async () => { - const generator = new StoryIndexGenerator( - [normalizeStoriesEntry('./src/docs2/MetaOf.mdx', options)], - options - ); - await generator.initialize(); - await expect(() => generator.getIndex()).rejects.toThrowErrorMatchingInlineSnapshot( - `"Unable to index ./src/docs2/MetaOf.mdx"` - ); - }); - }); - - describe('warnings', () => { - it('when entries do not match any files', async () => { - const generator = new StoryIndexGenerator( - [normalizeStoriesEntry('./src/docs2/wrong.js', options)], - options - ); - await generator.initialize(); - await generator.getIndex(); - - expect(once.warn).toHaveBeenCalledTimes(1); - const logMessage = jest.mocked(once.warn).mock.calls[0][0]; - expect(logMessage).toContain(`No story files found for the specified pattern`); - }); - }); - - describe('duplicates', () => { - it('errors when two MDX entries reference the same CSF file without a name', async () => { - const docsErrorSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './errors/**/A.mdx', - options - ); - - const generator = new StoryIndexGenerator( - [storiesSpecifier, docsSpecifier, docsErrorSpecifier], - options - ); - await generator.initialize(); - - await expect(generator.getIndex()).rejects.toThrowErrorMatchingInlineSnapshot( - `"Unable to index ./errors/A.mdx,./errors/duplicate/A.mdx"` - ); - }); - - it('errors when a MDX entry has the same name as a story', async () => { - const docsErrorSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './errors/MetaOfClashingName.mdx', - options - ); - - const generator = new StoryIndexGenerator( - [storiesSpecifier, docsSpecifier, docsErrorSpecifier], - options - ); - await generator.initialize(); - - await expect(generator.getIndex()).rejects.toThrowErrorMatchingInlineSnapshot( - `"Unable to index ./src/A.stories.js,./errors/MetaOfClashingName.mdx"` - ); - }); - - it('errors when a story has the default docs name', async () => { - const docsErrorSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './errors/A.mdx', - options - ); - - const generator = new StoryIndexGenerator( - [storiesSpecifier, docsSpecifier, docsErrorSpecifier], - { - ...options, - docs: { ...options.docs, defaultName: 'Story One' }, - } - ); - await generator.initialize(); - - await expect(generator.getIndex()).rejects.toThrowErrorMatchingInlineSnapshot( - `"Unable to index ./src/A.stories.js,./errors/A.mdx"` - ); - }); - it('errors when two duplicate stories exists, with duplicated entries details', async () => { - const generator = new StoryIndexGenerator([storiesSpecifier, docsSpecifier], { - ...options, - }); - await generator.initialize(); - const mockEntry: StoryIndexEntry = { - id: 'StoryId', - name: 'StoryName', - title: 'ComponentTitle', - importPath: 'Path', - type: 'story', - }; - expect(() => { - generator.chooseDuplicate(mockEntry, { ...mockEntry, importPath: 'DifferentPath' }); - }).toThrowErrorMatchingInlineSnapshot(`"Duplicate stories with id: StoryId"`); - }); - - it('DOES NOT error when the same MDX file matches two specifiers', async () => { - const generator = new StoryIndexGenerator( - [storiesSpecifier, docsSpecifier, docsSpecifier], - options - ); - await generator.initialize(); - - expect(Object.keys((await generator.getIndex()).entries)).toMatchInlineSnapshot(` - Array [ - "a--story-one", - "componentreference--docs", - "a--metaof", - "notitle--docs", - "a--second-docs", - "docs2-yabbadabbadooo--docs", - ] - `); - - expect(logger.warn).not.toHaveBeenCalled(); - }); - - it('DOES NOT throw when the same CSF file matches two specifiers', async () => { - const generator = new StoryIndexGenerator([storiesSpecifier, storiesSpecifier], { - ...options, - }); - await generator.initialize(); - expect(Object.keys((await generator.getIndex()).entries)).toMatchInlineSnapshot(` - Array [ - "a--story-one", - ] - `); - - expect(logger.warn).not.toHaveBeenCalled(); - }); - - it('DOES NOT throw when the same CSF file is indexed by both a deprecated and current indexer', async () => { - const generator = new StoryIndexGenerator([storiesSpecifier], { - ...options, - indexers: [ - { - test: /\.stories\.(m?js|ts)x?$/, - createIndex: async (fileName, options) => { - const code = (await fs.readFile(fileName, 'utf-8')).toString(); - const csf = loadCsf(code, { ...options, fileName }).parse(); - - // eslint-disable-next-line no-underscore-dangle - return Object.entries(csf._stories).map(([exportName, story]) => ({ - type: 'story', - importPath: fileName, - exportName, - name: story.name, - title: csf.meta.title, - metaId: csf.meta.id, - tags: story.tags ?? csf.meta.tags, - __id: story.id, - })); - }, - }, - ], - }); - await generator.initialize(); - expect(Object.keys((await generator.getIndex()).entries)).toMatchInlineSnapshot(` - Array [ - "a--story-one", - ] - `); - - expect(logger.warn).not.toHaveBeenCalled(); - }); - }); - }); - - describe('sorting', () => { - it('runs a user-defined sort function', async () => { - const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|mjs|jsx)', - options - ); - const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/docs2/*.mdx', - options - ); - - const generator = new StoryIndexGenerator([docsSpecifier, storiesSpecifier], options); - await generator.initialize(); - - (getStorySortParameter as jest.Mock).mockReturnValueOnce({ - order: ['docs2', 'D', 'B', 'nested', 'A', 'second-nested', 'first-nested/deeply'], - }); - - expect(Object.keys((await generator.getIndex()).entries)).toMatchInlineSnapshot(` - Array [ - "docs2-yabbadabbadooo--docs", - "d--story-one", - "b--story-one", - "nested-button--story-one", - "a--metaof", - "a--second-docs", - "a--story-one", - "second-nested-g--story-one", - "componentreference--docs", - "notitle--docs", - "h--story-one", - "first-nested-deeply-f--story-one", - ] - `); - }); - }); - - describe('caching', () => { - describe('no invalidation', () => { - it('does not extract csf files a second time', async () => { - const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|mjs|jsx)', - options - ); - - loadCsfMock.mockClear(); - const generator = new StoryIndexGenerator([specifier], options); - await generator.initialize(); - await generator.getIndex(); - expect(loadCsfMock).toHaveBeenCalledTimes(7); - - loadCsfMock.mockClear(); - await generator.getIndex(); - expect(loadCsfMock).not.toHaveBeenCalled(); - }); - - it('does not extract docs files a second time', async () => { - const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/A.stories.(ts|js|mjs|jsx)', - options - ); - const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/docs2/*.mdx', - options - ); - - const generator = new StoryIndexGenerator([storiesSpecifier, docsSpecifier], options); - await generator.initialize(); - await generator.getIndex(); - expect(toId).toHaveBeenCalledTimes(6); - - toIdMock.mockClear(); - await generator.getIndex(); - expect(toId).not.toHaveBeenCalled(); - }); - - it('does not call the sort function a second time', async () => { - const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|mjs|jsx)', - options - ); - - const sortFn = jest.fn(); - getStorySortParameterMock.mockReturnValue(sortFn); - const generator = new StoryIndexGenerator([specifier], options); - await generator.initialize(); - await generator.getIndex(); - expect(sortFn).toHaveBeenCalled(); - - sortFn.mockClear(); - await generator.getIndex(); - expect(sortFn).not.toHaveBeenCalled(); - }); - }); - - describe('file changed', () => { - it('calls extract csf file for just the one file', async () => { - const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|mjs|jsx)', - options - ); - - loadCsfMock.mockClear(); - const generator = new StoryIndexGenerator([specifier], options); - await generator.initialize(); - await generator.getIndex(); - expect(loadCsfMock).toHaveBeenCalledTimes(7); - - generator.invalidate(specifier, './src/B.stories.ts', false); - - loadCsfMock.mockClear(); - await generator.getIndex(); - expect(loadCsfMock).toHaveBeenCalledTimes(1); - }); - - it('calls extract docs file for just the one file', async () => { - const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/A.stories.(ts|js|mjs|jsx)', - options - ); - const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/docs2/*.mdx', - options - ); - - const generator = new StoryIndexGenerator([storiesSpecifier, docsSpecifier], options); - await generator.initialize(); - await generator.getIndex(); - expect(toId).toHaveBeenCalledTimes(6); - - generator.invalidate(docsSpecifier, './src/docs2/Title.mdx', false); - - toIdMock.mockClear(); - await generator.getIndex(); - expect(toId).toHaveBeenCalledTimes(1); - }); - - it('calls extract for a csf file and any of its docs dependents', async () => { - const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/A.stories.(ts|js|mjs|jsx)', - options - ); - const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/docs2/*.mdx', - options - ); - - const generator = new StoryIndexGenerator([storiesSpecifier, docsSpecifier], options); - await generator.initialize(); - await generator.getIndex(); - expect(toId).toHaveBeenCalledTimes(6); - - generator.invalidate(storiesSpecifier, './src/A.stories.js', false); - - toIdMock.mockClear(); - await generator.getIndex(); - expect(toId).toHaveBeenCalledTimes(3); - }); - - it('does call the sort function a second time', async () => { - const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|mjs|jsx)', - options - ); - - const sortFn = jest.fn(); - getStorySortParameterMock.mockReturnValue(sortFn); - const generator = new StoryIndexGenerator([specifier], options); - await generator.initialize(); - await generator.getIndex(); - expect(sortFn).toHaveBeenCalled(); - - generator.invalidate(specifier, './src/B.stories.ts', false); - - sortFn.mockClear(); - await generator.getIndex(); - expect(sortFn).toHaveBeenCalled(); - }); - }); - - describe('file removed', () => { - it('does not extract csf files a second time', async () => { - const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|mjs|jsx)', - options - ); - - loadCsfMock.mockClear(); - const generator = new StoryIndexGenerator([specifier], options); - await generator.initialize(); - await generator.getIndex(); - expect(loadCsfMock).toHaveBeenCalledTimes(7); - - generator.invalidate(specifier, './src/B.stories.ts', true); - - loadCsfMock.mockClear(); - await generator.getIndex(); - expect(loadCsfMock).not.toHaveBeenCalled(); - }); - - it('does call the sort function a second time', async () => { - const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|mjs|jsx)', - options - ); - - const sortFn = jest.fn(); - getStorySortParameterMock.mockReturnValue(sortFn); - const generator = new StoryIndexGenerator([specifier], options); - await generator.initialize(); - await generator.getIndex(); - expect(sortFn).toHaveBeenCalled(); - - generator.invalidate(specifier, './src/B.stories.ts', true); - - sortFn.mockClear(); - await generator.getIndex(); - expect(sortFn).toHaveBeenCalled(); - }); - - it('does not include the deleted stories in results', async () => { - const specifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/**/*.stories.(ts|js|mjs|jsx)', - options - ); - - loadCsfMock.mockClear(); - const generator = new StoryIndexGenerator([specifier], options); - await generator.initialize(); - await generator.getIndex(); - expect(loadCsfMock).toHaveBeenCalledTimes(7); - - generator.invalidate(specifier, './src/B.stories.ts', true); - - expect(Object.keys((await generator.getIndex()).entries)).not.toContain('b--story-one'); - }); - - it('does not include the deleted docs in results', async () => { - const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/A.stories.(ts|js|mjs|jsx)', - options - ); - const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/docs2/*.mdx', - options - ); - - const generator = new StoryIndexGenerator([docsSpecifier, storiesSpecifier], options); - await generator.initialize(); - await generator.getIndex(); - expect(toId).toHaveBeenCalledTimes(6); - - expect(Object.keys((await generator.getIndex()).entries)).toContain('notitle--docs'); - - generator.invalidate(docsSpecifier, './src/docs2/NoTitle.mdx', true); - - expect(Object.keys((await generator.getIndex()).entries)).not.toContain('notitle--docs'); - }); - - it('cleans up properly on dependent docs deletion', async () => { - const storiesSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/A.stories.(ts|js|mjs|jsx)', - options - ); - const docsSpecifier: NormalizedStoriesSpecifier = normalizeStoriesEntry( - './src/docs2/*.mdx', - options - ); - - const generator = new StoryIndexGenerator([docsSpecifier, storiesSpecifier], options); - await generator.initialize(); - await generator.getIndex(); - expect(toId).toHaveBeenCalledTimes(6); - - expect(Object.keys((await generator.getIndex()).entries)).toContain('a--metaof'); - - generator.invalidate(docsSpecifier, './src/docs2/MetaOf.mdx', true); - - expect(Object.keys((await generator.getIndex()).entries)).not.toContain('a--metaof'); - - // this will throw if MetaOf is not removed from A's dependents - generator.invalidate(storiesSpecifier, './src/A.stories.js', false); - }); - }); - }); -}); diff --git a/code/lib/core-server/src/utils/StoryIndexGenerator.test.ts b/code/lib/core-server/src/utils/StoryIndexGenerator.test.ts index fad7090789fe..cfabf443d838 100644 --- a/code/lib/core-server/src/utils/StoryIndexGenerator.test.ts +++ b/code/lib/core-server/src/utils/StoryIndexGenerator.test.ts @@ -48,7 +48,6 @@ const options: StoryIndexGeneratorOptions = { workingDir: path.join(__dirname, '__mockdata__'), storyIndexers: [], indexers: [csfIndexer, createStoriesMdxIndexer(false)], - storiesV2Compatibility: false, storyStoreV7: true, docs: { defaultName: 'docs', autodocs: false }, }; diff --git a/code/lib/core-server/src/utils/StoryIndexGenerator.ts b/code/lib/core-server/src/utils/StoryIndexGenerator.ts index fc0f38aa8833..d8f4e8ba95ed 100644 --- a/code/lib/core-server/src/utils/StoryIndexGenerator.ts +++ b/code/lib/core-server/src/utils/StoryIndexGenerator.ts @@ -16,8 +16,6 @@ import type { Path, Tag, StoryIndex, - V3CompatIndexEntry, - StoryId, StoryName, Indexer, IndexerOptions, @@ -54,7 +52,6 @@ type SpecifierStoriesCache = Record; export type StoryIndexGeneratorOptions = { workingDir: Path; configDir: Path; - storiesV2Compatibility: boolean; storyStoreV7: boolean; storyIndexers: StoryIndexer[]; indexers: Indexer[]; @@ -661,35 +658,9 @@ export class StoryIndexGenerator { const sorted = await this.sortStories(indexEntries); - let compat = sorted; - if (this.options.storiesV2Compatibility) { - const titleToStoryCount = Object.values(sorted).reduce((acc, story) => { - acc[story.title] = (acc[story.title] || 0) + 1; - return acc; - }, {} as Record); - - // @ts-expect-error (Converted from ts-ignore) - compat = Object.entries(sorted).reduce((acc, entry) => { - const [id, story] = entry; - if (story.type === 'docs') return acc; - - acc[id] = { - ...story, - kind: story.title, - story: story.name, - parameters: { - __id: story.id, - docsOnly: titleToStoryCount[story.title] === 1 && story.name === 'Page', - fileName: story.importPath, - }, - }; - return acc; - }, {} as Record); - } - this.lastIndex = { v: 4, - entries: compat, + entries: sorted, }; return this.lastIndex; diff --git a/code/lib/core-server/src/utils/__tests__/index-extraction.test.ts b/code/lib/core-server/src/utils/__tests__/index-extraction.test.ts index 39820b3e2c17..48618f017c39 100644 --- a/code/lib/core-server/src/utils/__tests__/index-extraction.test.ts +++ b/code/lib/core-server/src/utils/__tests__/index-extraction.test.ts @@ -18,7 +18,6 @@ const options: StoryIndexGeneratorOptions = { workingDir: path.join(__dirname, '..', '__mockdata__'), storyIndexers: [], indexers: [], - storiesV2Compatibility: false, storyStoreV7: true, docs: { defaultName: 'docs', autodocs: false }, }; diff --git a/code/lib/core-server/src/utils/getStoryIndexGenerator.ts b/code/lib/core-server/src/utils/getStoryIndexGenerator.ts index 952edb507824..74401020256e 100644 --- a/code/lib/core-server/src/utils/getStoryIndexGenerator.ts +++ b/code/lib/core-server/src/utils/getStoryIndexGenerator.ts @@ -35,7 +35,6 @@ export async function getStoryIndexGenerator( indexers: await indexers, docs: await docsOptions, workingDir, - storiesV2Compatibility: !features?.storyStoreV7, storyStoreV7: features.storyStoreV7 ?? false, }); diff --git a/code/lib/core-server/src/utils/stories-json.test.ts b/code/lib/core-server/src/utils/stories-json.test.ts index e1f0b1f6d613..521d4f940940 100644 --- a/code/lib/core-server/src/utils/stories-json.test.ts +++ b/code/lib/core-server/src/utils/stories-json.test.ts @@ -7,10 +7,9 @@ import debounce from 'lodash/debounce.js'; // @ts-expect-error -- cannot find declaration file import { createStoriesMdxIndexer } from '@storybook/addon-docs/preset'; import { STORY_INDEX_INVALIDATED } from '@storybook/core-events'; -import type { StoryIndex } from '@storybook/types'; import { normalizeStoriesEntry } from '@storybook/core-common'; -import { useStoriesJson, DEBOUNCE, convertToIndexV3 } from './stories-json'; +import { useStoriesJson, DEBOUNCE } from './stories-json'; import type { ServerChannel } from './get-server-channel'; import type { StoryIndexGeneratorOptions } from './StoryIndexGenerator'; import { StoryIndexGenerator } from './StoryIndexGenerator'; @@ -49,7 +48,6 @@ const getInitializedStoryIndexGenerator = async ( indexers: [csfIndexer, createStoriesMdxIndexer(false)], configDir: workingDir, workingDir, - storiesV2Compatibility: false, storyStoreV7: true, docs: { defaultName: 'docs', autodocs: false }, ...overrides, @@ -98,7 +96,7 @@ describe('useStoriesJson', () => { initializedStoryIndexGenerator: getInitializedStoryIndexGenerator(), }); - expect(use).toHaveBeenCalledTimes(2); + expect(use).toHaveBeenCalledTimes(1); const route = use.mock.calls[0][1]; await route(request, response); @@ -276,440 +274,6 @@ describe('useStoriesJson', () => { `); }); - it('scans and extracts stories v3', async () => { - const mockServerChannel = { emit: jest.fn() } as any as ServerChannel; - useStoriesJson({ - router, - initializedStoryIndexGenerator: getInitializedStoryIndexGenerator(), - workingDir, - serverChannel: mockServerChannel, - normalizedStories, - }); - - expect(use).toHaveBeenCalledTimes(2); - const route = use.mock.calls[1][1]; - - await route(request, response); - - expect(send).toHaveBeenCalledTimes(1); - expect(JSON.parse(send.mock.calls[0][0])).toMatchInlineSnapshot(` - Object { - "stories": Object { - "a--metaof": Object { - "id": "a--metaof", - "importPath": "./src/docs2/MetaOf.mdx", - "kind": "A", - "name": "MetaOf", - "parameters": Object { - "__id": "a--metaof", - "docsOnly": true, - "fileName": "./src/docs2/MetaOf.mdx", - }, - "storiesImports": Array [ - "./src/A.stories.js", - ], - "story": "MetaOf", - "tags": Array [ - "attached-mdx", - "docs", - ], - "title": "A", - }, - "a--second-docs": Object { - "id": "a--second-docs", - "importPath": "./src/docs2/SecondMetaOf.mdx", - "kind": "A", - "name": "Second Docs", - "parameters": Object { - "__id": "a--second-docs", - "docsOnly": true, - "fileName": "./src/docs2/SecondMetaOf.mdx", - }, - "storiesImports": Array [ - "./src/A.stories.js", - ], - "story": "Second Docs", - "tags": Array [ - "attached-mdx", - "docs", - ], - "title": "A", - }, - "a--story-one": Object { - "id": "a--story-one", - "importPath": "./src/A.stories.js", - "kind": "A", - "name": "Story One", - "parameters": Object { - "__id": "a--story-one", - "docsOnly": false, - "fileName": "./src/A.stories.js", - }, - "story": "Story One", - "tags": Array [ - "component-tag", - "story-tag", - "story", - ], - "title": "A", - }, - "b--story-one": Object { - "id": "b--story-one", - "importPath": "./src/B.stories.ts", - "kind": "B", - "name": "Story One", - "parameters": Object { - "__id": "b--story-one", - "docsOnly": false, - "fileName": "./src/B.stories.ts", - }, - "story": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "B", - }, - "d--story-one": Object { - "id": "d--story-one", - "importPath": "./src/D.stories.jsx", - "kind": "D", - "name": "Story One", - "parameters": Object { - "__id": "d--story-one", - "docsOnly": false, - "fileName": "./src/D.stories.jsx", - }, - "story": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "D", - }, - "docs2-componentreference--docs": Object { - "id": "docs2-componentreference--docs", - "importPath": "./src/docs2/ComponentReference.mdx", - "kind": "docs2/ComponentReference", - "name": "docs", - "parameters": Object { - "__id": "docs2-componentreference--docs", - "docsOnly": true, - "fileName": "./src/docs2/ComponentReference.mdx", - }, - "storiesImports": Array [], - "story": "docs", - "tags": Array [ - "unattached-mdx", - "docs", - ], - "title": "docs2/ComponentReference", - }, - "docs2-notitle--docs": Object { - "id": "docs2-notitle--docs", - "importPath": "./src/docs2/NoTitle.mdx", - "kind": "docs2/NoTitle", - "name": "docs", - "parameters": Object { - "__id": "docs2-notitle--docs", - "docsOnly": true, - "fileName": "./src/docs2/NoTitle.mdx", - }, - "storiesImports": Array [], - "story": "docs", - "tags": Array [ - "unattached-mdx", - "docs", - ], - "title": "docs2/NoTitle", - }, - "docs2-yabbadabbadooo--docs": Object { - "id": "docs2-yabbadabbadooo--docs", - "importPath": "./src/docs2/Title.mdx", - "kind": "docs2/Yabbadabbadooo", - "name": "docs", - "parameters": Object { - "__id": "docs2-yabbadabbadooo--docs", - "docsOnly": true, - "fileName": "./src/docs2/Title.mdx", - }, - "storiesImports": Array [], - "story": "docs", - "tags": Array [ - "unattached-mdx", - "docs", - ], - "title": "docs2/Yabbadabbadooo", - }, - "first-nested-deeply-f--story-one": Object { - "id": "first-nested-deeply-f--story-one", - "importPath": "./src/first-nested/deeply/F.stories.js", - "kind": "first-nested/deeply/F", - "name": "Story One", - "parameters": Object { - "__id": "first-nested-deeply-f--story-one", - "docsOnly": false, - "fileName": "./src/first-nested/deeply/F.stories.js", - }, - "story": "Story One", - "tags": Array [ - "story", - ], - "title": "first-nested/deeply/F", - }, - "h--story-one": Object { - "id": "h--story-one", - "importPath": "./src/H.stories.mjs", - "kind": "H", - "name": "Story One", - "parameters": Object { - "__id": "h--story-one", - "docsOnly": false, - "fileName": "./src/H.stories.mjs", - }, - "story": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "H", - }, - "nested-button--story-one": Object { - "id": "nested-button--story-one", - "importPath": "./src/nested/Button.stories.ts", - "kind": "nested/Button", - "name": "Story One", - "parameters": Object { - "__id": "nested-button--story-one", - "docsOnly": false, - "fileName": "./src/nested/Button.stories.ts", - }, - "story": "Story One", - "tags": Array [ - "component-tag", - "story", - ], - "title": "nested/Button", - }, - "nested-page--docs": Object { - "id": "nested-page--docs", - "importPath": "./src/nested/Page.stories.mdx", - "kind": "nested/Page", - "name": "docs", - "parameters": Object { - "__id": "nested-page--docs", - "docsOnly": true, - "fileName": "./src/nested/Page.stories.mdx", - }, - "storiesImports": Array [], - "story": "docs", - "tags": Array [ - "stories-mdx", - "docs", - ], - "title": "nested/Page", - }, - "nested-page--story-one": Object { - "id": "nested-page--story-one", - "importPath": "./src/nested/Page.stories.mdx", - "kind": "nested/Page", - "name": "StoryOne", - "parameters": Object { - "__id": "nested-page--story-one", - "docsOnly": false, - "fileName": "./src/nested/Page.stories.mdx", - }, - "story": "StoryOne", - "tags": Array [ - "stories-mdx", - "story", - ], - "title": "nested/Page", - }, - "second-nested-g--story-one": Object { - "id": "second-nested-g--story-one", - "importPath": "./src/second-nested/G.stories.ts", - "kind": "second-nested/G", - "name": "Story One", - "parameters": Object { - "__id": "second-nested-g--story-one", - "docsOnly": false, - "fileName": "./src/second-nested/G.stories.ts", - }, - "story": "Story One", - "tags": Array [ - "story", - ], - "title": "second-nested/G", - }, - }, - "v": 3, - } - `); - }); - - it('scans and extracts stories v2', async () => { - const mockServerChannel = { emit: jest.fn() } as any as ServerChannel; - useStoriesJson({ - router, - initializedStoryIndexGenerator: getInitializedStoryIndexGenerator({ - storiesV2Compatibility: true, - }), - workingDir, - serverChannel: mockServerChannel, - normalizedStories, - }); - - expect(use).toHaveBeenCalledTimes(2); - const route = use.mock.calls[1][1]; - - await route(request, response); - - expect(send).toHaveBeenCalledTimes(1); - expect(JSON.parse(send.mock.calls[0][0])).toMatchInlineSnapshot(` - Object { - "stories": Object { - "a--story-one": Object { - "id": "a--story-one", - "importPath": "./src/A.stories.js", - "kind": "A", - "name": "Story One", - "parameters": Object { - "__id": "a--story-one", - "docsOnly": false, - "fileName": "./src/A.stories.js", - }, - "story": "Story One", - "tags": Array [ - "component-tag", - "story-tag", - "story", - ], - "title": "A", - }, - "b--story-one": Object { - "id": "b--story-one", - "importPath": "./src/B.stories.ts", - "kind": "B", - "name": "Story One", - "parameters": Object { - "__id": "b--story-one", - "docsOnly": false, - "fileName": "./src/B.stories.ts", - }, - "story": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "B", - }, - "d--story-one": Object { - "id": "d--story-one", - "importPath": "./src/D.stories.jsx", - "kind": "D", - "name": "Story One", - "parameters": Object { - "__id": "d--story-one", - "docsOnly": false, - "fileName": "./src/D.stories.jsx", - }, - "story": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "D", - }, - "first-nested-deeply-f--story-one": Object { - "id": "first-nested-deeply-f--story-one", - "importPath": "./src/first-nested/deeply/F.stories.js", - "kind": "first-nested/deeply/F", - "name": "Story One", - "parameters": Object { - "__id": "first-nested-deeply-f--story-one", - "docsOnly": false, - "fileName": "./src/first-nested/deeply/F.stories.js", - }, - "story": "Story One", - "tags": Array [ - "story", - ], - "title": "first-nested/deeply/F", - }, - "h--story-one": Object { - "id": "h--story-one", - "importPath": "./src/H.stories.mjs", - "kind": "H", - "name": "Story One", - "parameters": Object { - "__id": "h--story-one", - "docsOnly": false, - "fileName": "./src/H.stories.mjs", - }, - "story": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "H", - }, - "nested-button--story-one": Object { - "id": "nested-button--story-one", - "importPath": "./src/nested/Button.stories.ts", - "kind": "nested/Button", - "name": "Story One", - "parameters": Object { - "__id": "nested-button--story-one", - "docsOnly": false, - "fileName": "./src/nested/Button.stories.ts", - }, - "story": "Story One", - "tags": Array [ - "component-tag", - "story", - ], - "title": "nested/Button", - }, - "nested-page--story-one": Object { - "id": "nested-page--story-one", - "importPath": "./src/nested/Page.stories.mdx", - "kind": "nested/Page", - "name": "StoryOne", - "parameters": Object { - "__id": "nested-page--story-one", - "docsOnly": false, - "fileName": "./src/nested/Page.stories.mdx", - }, - "story": "StoryOne", - "tags": Array [ - "stories-mdx", - "story", - ], - "title": "nested/Page", - }, - "second-nested-g--story-one": Object { - "id": "second-nested-g--story-one", - "importPath": "./src/second-nested/G.stories.ts", - "kind": "second-nested/G", - "name": "Story One", - "parameters": Object { - "__id": "second-nested-g--story-one", - "docsOnly": false, - "fileName": "./src/second-nested/G.stories.ts", - }, - "story": "Story One", - "tags": Array [ - "story", - ], - "title": "second-nested/G", - }, - }, - "v": 3, - } - `); - }); - it('disallows .mdx files without storyStoreV7', async () => { const mockServerChannel = { emit: jest.fn() } as any as ServerChannel; useStoriesJson({ @@ -722,8 +286,8 @@ describe('useStoriesJson', () => { normalizedStories, }); - expect(use).toHaveBeenCalledTimes(2); - const route = use.mock.calls[1][1]; + expect(use).toHaveBeenCalledTimes(1); + const route = use.mock.calls[0][1]; await route(request, response); @@ -739,152 +303,6 @@ describe('useStoriesJson', () => { `); }); - it('allows disabling storyStoreV7 if no .mdx files are used', async () => { - const mockServerChannel = { emit: jest.fn() } as any as ServerChannel; - useStoriesJson({ - router, - initializedStoryIndexGenerator: getInitializedStoryIndexGenerator( - { storyStoreV7: false }, - normalizedStories.slice(0, 1) - ), - workingDir, - serverChannel: mockServerChannel, - normalizedStories, - }); - - expect(use).toHaveBeenCalledTimes(2); - const route = use.mock.calls[1][1]; - - await route(request, response); - - expect(send).toHaveBeenCalledTimes(1); - expect(JSON.parse(send.mock.calls[0][0])).toMatchInlineSnapshot(` - Object { - "stories": Object { - "a--story-one": Object { - "id": "a--story-one", - "importPath": "./src/A.stories.js", - "kind": "A", - "name": "Story One", - "parameters": Object { - "__id": "a--story-one", - "docsOnly": false, - "fileName": "./src/A.stories.js", - }, - "story": "Story One", - "tags": Array [ - "component-tag", - "story-tag", - "story", - ], - "title": "A", - }, - "b--story-one": Object { - "id": "b--story-one", - "importPath": "./src/B.stories.ts", - "kind": "B", - "name": "Story One", - "parameters": Object { - "__id": "b--story-one", - "docsOnly": false, - "fileName": "./src/B.stories.ts", - }, - "story": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "B", - }, - "d--story-one": Object { - "id": "d--story-one", - "importPath": "./src/D.stories.jsx", - "kind": "D", - "name": "Story One", - "parameters": Object { - "__id": "d--story-one", - "docsOnly": false, - "fileName": "./src/D.stories.jsx", - }, - "story": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "D", - }, - "first-nested-deeply-f--story-one": Object { - "id": "first-nested-deeply-f--story-one", - "importPath": "./src/first-nested/deeply/F.stories.js", - "kind": "first-nested/deeply/F", - "name": "Story One", - "parameters": Object { - "__id": "first-nested-deeply-f--story-one", - "docsOnly": false, - "fileName": "./src/first-nested/deeply/F.stories.js", - }, - "story": "Story One", - "tags": Array [ - "story", - ], - "title": "first-nested/deeply/F", - }, - "h--story-one": Object { - "id": "h--story-one", - "importPath": "./src/H.stories.mjs", - "kind": "H", - "name": "Story One", - "parameters": Object { - "__id": "h--story-one", - "docsOnly": false, - "fileName": "./src/H.stories.mjs", - }, - "story": "Story One", - "tags": Array [ - "autodocs", - "story", - ], - "title": "H", - }, - "nested-button--story-one": Object { - "id": "nested-button--story-one", - "importPath": "./src/nested/Button.stories.ts", - "kind": "nested/Button", - "name": "Story One", - "parameters": Object { - "__id": "nested-button--story-one", - "docsOnly": false, - "fileName": "./src/nested/Button.stories.ts", - }, - "story": "Story One", - "tags": Array [ - "component-tag", - "story", - ], - "title": "nested/Button", - }, - "second-nested-g--story-one": Object { - "id": "second-nested-g--story-one", - "importPath": "./src/second-nested/G.stories.ts", - "kind": "second-nested/G", - "name": "Story One", - "parameters": Object { - "__id": "second-nested-g--story-one", - "docsOnly": false, - "fileName": "./src/second-nested/G.stories.ts", - }, - "story": "Story One", - "tags": Array [ - "story", - ], - "title": "second-nested/G", - }, - }, - "v": 3, - } - `); - }); - it('can handle simultaneous access', async () => { const mockServerChannel = { emit: jest.fn() } as any as ServerChannel; @@ -896,7 +314,7 @@ describe('useStoriesJson', () => { initializedStoryIndexGenerator: getInitializedStoryIndexGenerator(), }); - expect(use).toHaveBeenCalledTimes(2); + expect(use).toHaveBeenCalledTimes(1); const route = use.mock.calls[0][1]; const firstPromise = route(request, response); @@ -928,7 +346,7 @@ describe('useStoriesJson', () => { initializedStoryIndexGenerator: getInitializedStoryIndexGenerator(), }); - expect(use).toHaveBeenCalledTimes(2); + expect(use).toHaveBeenCalledTimes(1); const route = use.mock.calls[0][1]; await route(request, response); @@ -957,7 +375,7 @@ describe('useStoriesJson', () => { initializedStoryIndexGenerator: getInitializedStoryIndexGenerator(), }); - expect(use).toHaveBeenCalledTimes(2); + expect(use).toHaveBeenCalledTimes(1); const route = use.mock.calls[0][1]; // Don't wait for the first request here before starting the second @@ -992,7 +410,7 @@ describe('useStoriesJson', () => { initializedStoryIndexGenerator: getInitializedStoryIndexGenerator(), }); - expect(use).toHaveBeenCalledTimes(2); + expect(use).toHaveBeenCalledTimes(1); const route = use.mock.calls[0][1]; await route(request, response); @@ -1021,85 +439,3 @@ describe('useStoriesJson', () => { }); }); }); - -describe('convertToIndexV3', () => { - it('converts v7 index.json to v6 stories.json', () => { - const indexJson: StoryIndex = { - v: 4, - entries: { - 'a--docs': { - id: 'a--docs', - importPath: './src/docs2/MetaOf.mdx', - name: 'docs', - storiesImports: ['./src/A.stories.js'], - title: 'A', - type: 'docs', - }, - 'a--story-one': { - id: 'a--story-one', - importPath: './src/A.stories.js', - name: 'Story One', - title: 'A', - type: 'story', - }, - 'b--story-one': { - id: 'b--story-one', - importPath: './src/B.stories.ts', - name: 'Story One', - title: 'B', - type: 'story', - }, - }, - }; - - expect(convertToIndexV3(indexJson)).toMatchInlineSnapshot(` - Object { - "stories": Object { - "a--docs": Object { - "id": "a--docs", - "importPath": "./src/docs2/MetaOf.mdx", - "kind": "A", - "name": "docs", - "parameters": Object { - "__id": "a--docs", - "docsOnly": true, - "fileName": "./src/docs2/MetaOf.mdx", - }, - "storiesImports": Array [ - "./src/A.stories.js", - ], - "story": "docs", - "title": "A", - }, - "a--story-one": Object { - "id": "a--story-one", - "importPath": "./src/A.stories.js", - "kind": "A", - "name": "Story One", - "parameters": Object { - "__id": "a--story-one", - "docsOnly": false, - "fileName": "./src/A.stories.js", - }, - "story": "Story One", - "title": "A", - }, - "b--story-one": Object { - "id": "b--story-one", - "importPath": "./src/B.stories.ts", - "kind": "B", - "name": "Story One", - "parameters": Object { - "__id": "b--story-one", - "docsOnly": false, - "fileName": "./src/B.stories.ts", - }, - "story": "Story One", - "title": "B", - }, - }, - "v": 3, - } - `); - }); -}); diff --git a/code/lib/core-server/src/utils/stories-json.ts b/code/lib/core-server/src/utils/stories-json.ts index 7070245a6043..074c0248cb0c 100644 --- a/code/lib/core-server/src/utils/stories-json.ts +++ b/code/lib/core-server/src/utils/stories-json.ts @@ -1,7 +1,7 @@ import type { Router, Request, Response } from 'express'; import { writeJSON } from 'fs-extra'; -import type { NormalizedStoriesSpecifier, StoryIndex, StoryIndexV3 } from '@storybook/types'; +import type { NormalizedStoriesSpecifier, StoryIndex } from '@storybook/types'; import debounce from 'lodash/debounce.js'; import { STORY_INDEX_INVALIDATED } from '@storybook/core-events'; @@ -54,38 +54,4 @@ export function useStoriesJson({ res.send(err instanceof Error ? err.toString() : String(err)); } }); - - router.use('/stories.json', async (req: Request, res: Response) => { - try { - const generator = await initializedStoryIndexGenerator; - const index = convertToIndexV3(await generator.getIndex()); - res.header('Content-Type', 'application/json'); - res.send(JSON.stringify(index)); - } catch (err) { - res.status(500); - res.send(err instanceof Error ? err.toString() : String(err)); - } - }); } - -export const convertToIndexV3 = (index: StoryIndex): StoryIndexV3 => { - const { entries } = index; - const stories = Object.entries(entries).reduce((acc, [id, entry]) => { - const { type, ...rest } = entry; - acc[id] = { - ...rest, - kind: rest.title, - story: rest.name, - parameters: { - __id: rest.id, - docsOnly: type === 'docs', - fileName: rest.importPath, - }, - }; - return acc; - }, {} as StoryIndexV3['stories']); - return { - v: 3, - stories, - }; -}; From 4d5f96584d9166aa17356fc8404a551fcd98d1c7 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Fri, 15 Dec 2023 22:45:31 +0800 Subject: [PATCH 55/64] Core: Bundle for node18 in SB8 --- scripts/prepare/addon-bundle.ts | 4 ++-- scripts/prepare/bundle.ts | 2 +- scripts/prepare/esm-bundle.ts | 2 +- scripts/prepare/facade.ts | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/prepare/addon-bundle.ts b/scripts/prepare/addon-bundle.ts index 757402c4600d..b274f00e3c2e 100755 --- a/scripts/prepare/addon-bundle.ts +++ b/scripts/prepare/addon-bundle.ts @@ -116,7 +116,7 @@ const run = async ({ cwd, flags }: { cwd: string; flags: string[] }) => { ...(optimized ? dtsConfig : {}), entry: exportEntries, format: ['cjs'], - target: 'node16', + target: 'node18', platform: 'node', external: commonExternals, esbuildOptions: (options) => { @@ -184,7 +184,7 @@ const run = async ({ cwd, flags }: { cwd: string; flags: string[] }) => { ...commonOptions, entry: nodeEntries.map((e: string) => slash(join(cwd, e))), format: ['cjs'], - target: 'node16', + target: 'node18', platform: 'node', external: commonExternals, esbuildOptions: (c) => { diff --git a/scripts/prepare/bundle.ts b/scripts/prepare/bundle.ts index efb68303706a..879e963f44c7 100755 --- a/scripts/prepare/bundle.ts +++ b/scripts/prepare/bundle.ts @@ -126,7 +126,7 @@ const run = async ({ cwd, flags }: { cwd: string; flags: string[] }) => { outDir, sourcemap: false, format: ['cjs'], - target: 'node16', + target: 'node18', ...(dtsBuild === 'cjs' ? dtsConfig : {}), platform: 'node', clean: false, diff --git a/scripts/prepare/esm-bundle.ts b/scripts/prepare/esm-bundle.ts index 104585b7e4c2..8d41e51012c6 100755 --- a/scripts/prepare/esm-bundle.ts +++ b/scripts/prepare/esm-bundle.ts @@ -120,7 +120,7 @@ const run = async ({ cwd, flags }: { cwd: string; flags: string[] }) => { outExtension: () => ({ js: '.js', }), - target: 'node16', + target: 'node18', clean: false, ...(dtsBuild ? dtsConfig : {}), platform: 'node', diff --git a/scripts/prepare/facade.ts b/scripts/prepare/facade.ts index 2a1a62d73b52..be1c0ebfa07c 100755 --- a/scripts/prepare/facade.ts +++ b/scripts/prepare/facade.ts @@ -53,7 +53,7 @@ const run = async ({ cwd, flags }: { cwd: string; flags: string[] }) => { entry: entries.map((e: string) => slash(join(cwd, e))), outDir: join(process.cwd(), 'dist'), format: ['cjs'], - target: 'node16', + target: 'node18', platform: 'node', external: [name, ...Object.keys(dependencies || {}), ...Object.keys(peerDependencies || {})], From 9d767ef8081be871a920c3f34174b83a79c3e330 Mon Sep 17 00:00:00 2001 From: storybook-bot <32066757+storybook-bot@users.noreply.github.com> Date: Fri, 15 Dec 2023 14:50:56 +0000 Subject: [PATCH 56/64] Update CHANGELOG.md for v7.6.5 [skip ci] --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ba60ca1636f..24af8968f63d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## 7.6.5 + +- Angular: Update Angular cli templates - [#25152](https://github.com/storybookjs/storybook/pull/25152), thanks [@Marklb](https://github.com/Marklb)! +- Blocks: Fix Subtitle block for unattached docs pages - [#25157](https://github.com/storybookjs/storybook/pull/25157), thanks [@kripod](https://github.com/kripod)! +- SvelteKit: Fix missing `$app` modules - [#25132](https://github.com/storybookjs/storybook/pull/25132), thanks [@paoloricciuti](https://github.com/paoloricciuti)! + ## 7.6.4 - Angular: Fix CSF Plugin - [#25098](https://github.com/storybookjs/storybook/pull/25098), thanks [@valentinpalkovic](https://github.com/valentinpalkovic)! From 05efeae4e35142963c27e67c7bf810bb6df622b2 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Fri, 15 Dec 2023 23:11:29 +0800 Subject: [PATCH 57/64] Build: Removed changing `version` from SvelteKit environment story --- .../stories_svelte-kit-skeleton-js/Environment.svelte | 4 ++-- .../stories_svelte-kit-skeleton-ts/Environment.svelte | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/Environment.svelte b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/Environment.svelte index aef1c05011f8..7cdc852f7fcf 100644 --- a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/Environment.svelte +++ b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-js/Environment.svelte @@ -1,8 +1,8 @@
{browser}
{dev}
{building}
-
{version}
+
{version}
diff --git a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/Environment.svelte b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/Environment.svelte index aef1c05011f8..7cdc852f7fcf 100644 --- a/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/Environment.svelte +++ b/code/frameworks/sveltekit/template/stories_svelte-kit-skeleton-ts/Environment.svelte @@ -1,8 +1,8 @@
{browser}
{dev}
{building}
-
{version}
+
{version}
From b3840f4e4f86ffc779836086a1ff24b1eeff0ffa Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Fri, 15 Dec 2023 16:45:53 +0100 Subject: [PATCH 58/64] SvelteKit: new modules exports mocks --- code/e2e-tests/framework-svelte.spec.ts | 16 +++++++++ code/frameworks/sveltekit/README.md | 2 ++ code/frameworks/sveltekit/package.json | 2 +- .../sveltekit/src/mocks/app/navigation.ts | 14 ++++++++ code/frameworks/sveltekit/src/preview.ts | 2 +- .../Navigation.svelte | 14 +++++++- .../navigation.stories.js | 36 +++++++++++++++++++ .../Navigation.svelte | 14 +++++++- .../navigation.stories.js | 36 +++++++++++++++++++ .../Navigation.svelte | 14 +++++++- .../navigation.stories.js | 36 +++++++++++++++++++ 11 files changed, 181 insertions(+), 5 deletions(-) diff --git a/code/e2e-tests/framework-svelte.spec.ts b/code/e2e-tests/framework-svelte.spec.ts index 40d2b7f817dd..7033342b6890 100644 --- a/code/e2e-tests/framework-svelte.spec.ts +++ b/code/e2e-tests/framework-svelte.spec.ts @@ -122,5 +122,21 @@ test.describe('SvelteKit', () => { hasText: `"invalidateAll"`, }); await expect(invalidateAllLogItem).toBeVisible(); + + const replaceState = root.getByRole('button', { name: 'replaceState' }); + await replaceState.click(); + + const replaceStateLogItem = page.locator('#storybook-panel-root #panel-tab-content', { + hasText: `/storybook-replace-state`, + }); + await expect(replaceStateLogItem).toBeVisible(); + + const pushState = root.getByRole('button', { name: 'pushState' }); + await pushState.click(); + + const pushStateLogItem = page.locator('#storybook-panel-root #panel-tab-content', { + hasText: `/storybook-push-state`, + }); + await expect(pushStateLogItem).toBeVisible(); }); }); diff --git a/code/frameworks/sveltekit/README.md b/code/frameworks/sveltekit/README.md index 2f2755dc91a2..c3c01c771897 100644 --- a/code/frameworks/sveltekit/README.md +++ b/code/frameworks/sveltekit/README.md @@ -136,6 +136,8 @@ You can add the name of the module you want to mock to `parameters.sveltekit_exp | `import { navigating } from "$app/stores"` | `parameters.sveltekit_experimental.stores.navigating` | A Partial of the navigating store | | `import { updated } from "$app/stores"` | `parameters.sveltekit_experimental.stores.updated` | A boolean representing the value of updated (you can also access `check()` which will be a noop) | | `import { goto } from "$app/navigation"` | `parameters.sveltekit_experimental.navigation.goto` | A callback that will be called whenever goto is called, in no function is provided an action will be logged to the Actions panel | +| `import { pushState } from "$app/navigation"` | `parameters.sveltekit_experimental.navigation.pushState` | A callback that will be called whenever pushState is called, in no function is provided an action will be logged to the Actions panel | +| `import { replaceState } from "$app/navigation"` | `parameters.sveltekit_experimental.navigation.replaceState` | A callback that will be called whenever replaceState is called, in no function is provided an action will be logged to the Actions panel | | `import { invalidate } from "$app/navigation"` | `parameters.sveltekit_experimental.navigation.invalidate` | A callback that will be called whenever invalidate is called, in no function is provided an action will be logged to the Actions panel | | `import { invalidateAll } from "$app/navigation"` | `parameters.sveltekit_experimental.navigation.invalidateAll` | A callback that will be called whenever invalidateAll is called, in no function is provided an action will be logged to the Actions panel | | `import { afterNavigate } from "$app/navigation"` | `parameters.sveltekit_experimental.navigation.afterNavigate` | An object that will be passed to the afterNavigate function (which will be invoked onMount) called | diff --git a/code/frameworks/sveltekit/package.json b/code/frameworks/sveltekit/package.json index 95f01fb533ef..85e0c1000043 100644 --- a/code/frameworks/sveltekit/package.json +++ b/code/frameworks/sveltekit/package.json @@ -65,7 +65,7 @@ }, "peerDependencies": { "svelte": "^4.0.0 || ^5.0.0-next.16", - "vite": "^4.0.0" + "vite": "^4.0.0 | ^5.0.0" }, "engines": { "node": "^14.18 || >=16" diff --git a/code/frameworks/sveltekit/src/mocks/app/navigation.ts b/code/frameworks/sveltekit/src/mocks/app/navigation.ts index 8d23ddbea46a..edd60f5ebf83 100644 --- a/code/frameworks/sveltekit/src/mocks/app/navigation.ts +++ b/code/frameworks/sveltekit/src/mocks/app/navigation.ts @@ -41,3 +41,17 @@ export async function invalidateAll() { export function preloadCode() {} export function preloadData() {} + +export async function pushState(...args: any[]) { + const event = new CustomEvent('storybook:pushState', { + detail: args, + }); + window.dispatchEvent(event); +} + +export async function replaceState(...args: any[]) { + const event = new CustomEvent('storybook:replaceState', { + detail: args, + }); + window.dispatchEvent(event); +} diff --git a/code/frameworks/sveltekit/src/preview.ts b/code/frameworks/sveltekit/src/preview.ts index 10affca46fc4..fc3ab8bcc65a 100644 --- a/code/frameworks/sveltekit/src/preview.ts +++ b/code/frameworks/sveltekit/src/preview.ts @@ -117,7 +117,7 @@ export const decorators: Decorator[] = [ const removeNavigationListeners = createListeners( 'navigation', - ['goto', 'invalidate', 'invalidateAll'], + ['goto', 'invalidate', 'invalidateAll', 'pushState', 'replaceState'], true ); const removeFormsListeners = createListeners('forms', ['enhance']); diff --git a/code/frameworks/sveltekit/template/stories_svelte-kit-prerelease-ts/Navigation.svelte b/code/frameworks/sveltekit/template/stories_svelte-kit-prerelease-ts/Navigation.svelte index 4bcb7d0e6fc9..24a37f3517f8 100644 --- a/code/frameworks/sveltekit/template/stories_svelte-kit-prerelease-ts/Navigation.svelte +++ b/code/frameworks/sveltekit/template/stories_svelte-kit-prerelease-ts/Navigation.svelte @@ -1,5 +1,5 @@