diff --git a/.storybook/test-runner.ts b/.storybook/test-runner.ts index bbe049e8..f775fff1 100644 --- a/.storybook/test-runner.ts +++ b/.storybook/test-runner.ts @@ -7,6 +7,11 @@ const customSnapshotsDir = `${process.cwd()}/${snapshotsDir}`; const skipSnapshots = process.env.SKIP_SNAPSHOTS === 'true'; const config: TestRunnerConfig = { + tags: { + exclude: ['exclude'], + include: [], + skip: ['skip'], + }, setup() { expect.extend({ toMatchImageSnapshot }); }, diff --git a/README.md b/README.md index be29b7ee..f1205b66 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ Storybook test runner turns all of your stories into executable tests. - [Ejecting configuration](#ejecting-configuration) - [Jest-playwright options](#jest-playwright-options) - [Jest options](#jest-options) +- [Filtering tests (experimental)](#filtering-tests-experimental) - [Test reporters](#test-reporters) - [Running against a deployed Storybook](#running-against-a-deployed-storybook) - [Index.json mode](#indexjson-mode) @@ -32,6 +33,7 @@ Storybook test runner turns all of your stories into executable tests. - [Render lifecycle](#render-lifecycle) - [prepare](#prepare) - [getHttpHeaders](#gethttpheaders) + - [tags](#tags) - [Utility functions](#utility-functions) - [getStoryContext](#getstorycontext) - [waitForPageReady](#waitforpageready) @@ -159,6 +161,9 @@ Usage: test-storybook [options] | `--ci` | Instead of the regular behavior of storing a new snapshot automatically, it will fail the test and require Jest to be run with `--updateSnapshot`.
`test-storybook --ci` | | `--shard [shardIndex/shardCount]` | Splits your test suite across different machines to run in CI.
`test-storybook --shard=1/3` | | `--failOnConsole` | Makes tests fail on browser console errors
`test-storybook --failOnConsole` | +| `--includeTags` | Only test stories that match the specified tags, comma separated
`test-storybook --includeTags="test-only"` | +| `--excludeTags` | Do not test stories that match the specified tags, comma separated
`test-storybook --excludeTags="broken-story,todo"` | +| `--skipTags` | Skip test stories that match the specified tags, comma separated
`test-storybook --skipTags="design"` | ## Ejecting configuration @@ -181,7 +186,7 @@ The Storybook test runner comes with Jest installed as an internal dependency. Y | ------------------- | ------------------ | | ^0.6.2 | ^26.6.3 or ^27.0.0 | | ^0.7.0 | ^28.0.0 | -| ^0.14.0-next.2 | ^29.0.0 | +| ^0.14.0 | ^29.0.0 | > If you're already using a compatible version of Jest, the test runner will use it, instead of installing a duplicate version in your node_modules folder. @@ -206,6 +211,33 @@ module.exports = { }; ``` +## Filtering tests (experimental) + +You might want to skip certain stories in the test-runner, run tests only against a subset of stories, or exclude certain stories entirely from your tests. This is possible via the `tags` annotation. + +This annotation can be part of a story, therefore only applying to it, or the component meta (the default export), which applies to all stories in the file: + +```ts +const meta = { + component: Button, + tags: ['design', 'test-only'], +}; +export default meta; + +// will inherit tags from meta with value ['design', 'test-only'] +export const Primary = {}; + +export const Secondary = { + // will override tags to be just ['skip'] + tags: ['skip'], +}; +``` + +> **Note** +> You can't import constants from another file and use them to define tags in your stories. The tags in your stories or meta **have to be** defined inline, as an array of strings. This is a limitation due to Storybook's static analysis. + +Once your stories have your own custom tags, you can filter them via the [tags property](#tags) in your test-runner configuration file. You can also use the CLI flags `--includeTags`, `--excludeTags` or `--skipTags` for the same purpose. The CLI flags will take precedence over the tags in the test-runner config, therefore overriding them. + ## Test reporters The test runner uses default Jest reporters, but you can add additional reporters by ejecting the configuration as explained above and overriding (or merging with) the `reporters` property. @@ -622,6 +654,23 @@ module.exports = { }; ``` +#### tags + +The `tags` property contains three options: `include | exclude | skip`, each accepting an array of strings: + +```js +// .storybook/test-runner.js +module.exports = { + tags: { + include: [], // string array, e.g. ['test-only'] + exclude: [], // string array, e.g. ['design', 'docs-only'] + skip: [], // string array, e.g. ['design'] + }, +}; +``` + +`tags` are used for filtering your tests. Learn more [here](#filtering-tests-experimental). + ### Utility functions For more specific use cases, the test runner provides utility functions that could be useful to you. diff --git a/package.json b/package.json index f10b4ac0..6d0da075 100644 --- a/package.json +++ b/package.json @@ -55,11 +55,11 @@ "@babel/preset-typescript": "^7.18.6", "@jest/types": "^29.6.3", "@storybook/addon-coverage": "^0.0.9", - "@storybook/addon-essentials": "^7.3.0", - "@storybook/addon-interactions": "^7.3.0", + "@storybook/addon-essentials": "^7.5.3", + "@storybook/addon-interactions": "^7.5.3", "@storybook/jest": "^0.2.2", - "@storybook/react": "^7.3.0", - "@storybook/react-vite": "^7.3.0", + "@storybook/react": "^7.5.3", + "@storybook/react-vite": "^7.5.3", "@storybook/testing-library": "^0.2.0", "@types/jest": "^29.0.0", "@types/node": "^16.4.1", @@ -78,7 +78,7 @@ "react-dom": "^17.0.1", "rimraf": "^3.0.2", "semver": "^7.5.4", - "storybook": "^7.3.0", + "storybook": "^7.5.3", "ts-jest": "^29.0.0", "tsup": "^6.5.0", "typescript": "~4.9.4", diff --git a/src/csf/transformCsf.ts b/src/csf/transformCsf.ts index fd7821d3..924faa9d 100644 --- a/src/csf/transformCsf.ts +++ b/src/csf/transformCsf.ts @@ -4,6 +4,7 @@ import * as t from '@babel/types'; import generate from '@babel/generator'; import { toId, storyNameFromExport } from '@storybook/csf'; import dedent from 'ts-dedent'; +import { getTagOptions } from '../util/getTagOptions'; export interface TestContext { storyExport?: t.Identifier; @@ -21,6 +22,9 @@ interface TransformOptions { testPrefixer?: TestPrefixer; insertTestIfEmpty?: boolean; makeTitle?: (userTitle: string) => string; + includeTags?: string[]; + excludeTags?: string[]; + skipTags?: string[]; } const prefixFunction = ( @@ -42,15 +46,22 @@ const prefixFunction = ( return stmt.expression; }; -const makePlayTest = ( - key: string, - title: string, - metaOrStoryPlay: t.Node, - testPrefix?: TestPrefixer -): t.Statement[] => { +const makePlayTest = ({ + key, + metaOrStoryPlay, + title, + testPrefix, + shouldSkip, +}: { + key: string; + title: string; + metaOrStoryPlay: t.Node; + testPrefix?: TestPrefixer; + shouldSkip?: boolean; +}): t.Statement[] => { return [ t.expressionStatement( - t.callExpression(t.identifier('it'), [ + t.callExpression(shouldSkip ? t.identifier('it.skip') : t.identifier('it'), [ t.stringLiteral(!!metaOrStoryPlay ? 'play-test' : 'smoke-test'), prefixFunction(key, title, metaOrStoryPlay as t.Expression, testPrefix), ]) @@ -81,6 +92,18 @@ const makeBeforeEach = (beforeEachPrefixer: FilePrefixer) => { const makeArray = (templateResult: TemplateResult) => Array.isArray(templateResult) ? templateResult : [templateResult]; +// copied from csf-tools, as it's not exported +function parseTags(prop: t.Node) { + if (!t.isArrayExpression(prop)) { + throw new Error('CSF: Expected tags array'); + } + + return prop.elements.map((e) => { + if (t.isStringLiteral(e)) return e.value; + throw new Error(`CSF: Expected tag to be string literal`); + }) as string[]; +} + export const transformCsf = ( code: string, { @@ -91,23 +114,49 @@ export const transformCsf = ( makeTitle, }: TransformOptions = {} ) => { + const { includeTags, excludeTags, skipTags } = getTagOptions(); + const csf = loadCsf(code, { makeTitle }); csf.parse(); const storyExports = Object.keys(csf._stories); const title = csf.meta.title; - const storyPlays = storyExports.reduce((acc, key) => { + const storyAnnotations = storyExports.reduce((acc, key) => { const annotations = csf._storyAnnotations[key]; + acc[key] = {}; if (annotations?.play) { - acc[key] = annotations.play; + acc[key].play = annotations.play; } + acc[key].tags = annotations.tags ? parseTags(annotations.tags) : csf.meta.tags || []; return acc; - }, {} as Record); + }, {} as Record); + const playTests = storyExports + .filter((key) => { + // If includeTags is passed, check if the story has any of them - else include by default + const isIncluded = + includeTags.length === 0 || + includeTags.some((tag) => storyAnnotations[key].tags.includes(tag)); + + // If excludeTags is passed, check if the story does not have any of them + const isNotExcluded = excludeTags.every((tag) => !storyAnnotations[key].tags.includes(tag)); + + return isIncluded && isNotExcluded; + }) .map((key: string) => { let tests: t.Statement[] = []; - tests = [...tests, ...makePlayTest(key, title, storyPlays[key], testPrefixer)]; + const shouldSkip = skipTags.some((tag) => storyAnnotations[key].tags.includes(tag)); + tests = [ + ...tests, + ...makePlayTest({ + key, + title, + metaOrStoryPlay: storyAnnotations[key].play, + testPrefix: testPrefixer, + shouldSkip, + }), + ]; if (tests.length) { return makeDescribe(key, tests); diff --git a/src/playwright/hooks.ts b/src/playwright/hooks.ts index c082aa28..05be178a 100644 --- a/src/playwright/hooks.ts +++ b/src/playwright/hooks.ts @@ -31,6 +31,14 @@ export interface TestRunnerConfig { * If you override the default prepare behavior, even though this is powerful, you will be responsible for properly preparing the browser. Future changes to the default prepare function will not get included in your project, so you will have to keep an eye out for changes in upcoming releases. */ prepare?: PrepareSetter; + /** + * Tags to include, exclude, or skip. These tags are defined as annotations in your story or meta. + */ + tags: { + include: string[]; + exclude: string[]; + skip: string[]; + }; } export const setPreRender = (preRender: TestHook) => { diff --git a/src/playwright/index.ts b/src/playwright/index.ts index 8abfbf42..e24e8811 100644 --- a/src/playwright/index.ts +++ b/src/playwright/index.ts @@ -1,7 +1,7 @@ import { transformSync as swcTransform } from '@swc/core'; import { transformPlaywright } from './transformPlaywright'; -export const process = (src: string, filename: string, config: any) => { +export const process = (src: string, filename: string) => { const csfTest = transformPlaywright(src, filename); const result = swcTransform(csfTest, { diff --git a/src/playwright/transformPlaywright.test.ts b/src/playwright/transformPlaywright.test.ts index 8181cb15..6dd70b50 100644 --- a/src/playwright/transformPlaywright.test.ts +++ b/src/playwright/transformPlaywright.test.ts @@ -18,12 +18,15 @@ jest.mock('@storybook/core-common', () => ({ ]), })); +jest.mock('../util/getTestRunnerConfig'); + expect.addSnapshotSerializer({ print: (val: any) => val.trim(), test: (val: any) => true, }); describe('Playwright', () => { + const filename = './stories/basic/Header.stories.js'; beforeEach(() => { const relativeSpy = jest.spyOn(path, 'relative'); relativeSpy.mockReturnValueOnce('stories/basic/Header.stories.js'); @@ -35,9 +38,486 @@ describe('Playwright', () => { }, ], })); + + delete process.env.STORYBOOK_INCLUDE_TAGS; + delete process.env.STORYBOOK_EXCLUDE_TAGS; + delete process.env.STORYBOOK_SKIP_TAGS; + }); + + describe('tag filtering mechanism', () => { + it('should include all stories when there is no tag filtering', () => { + expect( + transformPlaywright( + dedent` + export default { title: 'foo/bar', component: Button }; + export const A = { }; + export const B = { }; + `, + filename + ) + ).toMatchInlineSnapshot(` + if (!require.main) { + describe("Example/foo/bar", () => { + describe("A", () => { + it("smoke-test", async () => { + const testFn = async () => { + const context = { + id: "example-foo-bar--a", + title: "Example/foo/bar", + name: "A" + }; + page.on('pageerror', err => { + page.evaluate(({ + id, + err + }) => __throwError(id, err), { + id: "example-foo-bar--a", + err: err.message + }); + }); + if (globalThis.__sbPreRender) { + await globalThis.__sbPreRender(page, context); + } + const result = await page.evaluate(({ + id, + hasPlayFn + }) => __test(id, hasPlayFn), { + id: "example-foo-bar--a" + }); + if (globalThis.__sbPostRender) { + await globalThis.__sbPostRender(page, context); + } + if (globalThis.__sbCollectCoverage) { + const isCoverageSetupCorrectly = await page.evaluate(() => '__coverage__' in window); + if (!isCoverageSetupCorrectly) { + throw new Error(\`[Test runner] An error occurred when evaluating code coverage: + The code in this story is not instrumented, which means the coverage setup is likely not correct. + More info: https://github.com/storybookjs/test-runner#setting-up-code-coverage\`); + } + await jestPlaywright.saveCoverage(page); + } + return result; + }; + try { + await testFn(); + } catch (err) { + if (err.toString().includes('Execution context was destroyed')) { + console.log(\`An error occurred in the following story, most likely because of a navigation: "\${"Example/foo/bar"}/\${"A"}". Retrying...\`); + await jestPlaywright.resetPage(); + await globalThis.__sbSetupPage(globalThis.page, globalThis.context); + await testFn(); + } else { + throw err; + } + } + }); + }); + describe("B", () => { + it("smoke-test", async () => { + const testFn = async () => { + const context = { + id: "example-foo-bar--b", + title: "Example/foo/bar", + name: "B" + }; + page.on('pageerror', err => { + page.evaluate(({ + id, + err + }) => __throwError(id, err), { + id: "example-foo-bar--b", + err: err.message + }); + }); + if (globalThis.__sbPreRender) { + await globalThis.__sbPreRender(page, context); + } + const result = await page.evaluate(({ + id, + hasPlayFn + }) => __test(id, hasPlayFn), { + id: "example-foo-bar--b" + }); + if (globalThis.__sbPostRender) { + await globalThis.__sbPostRender(page, context); + } + if (globalThis.__sbCollectCoverage) { + const isCoverageSetupCorrectly = await page.evaluate(() => '__coverage__' in window); + if (!isCoverageSetupCorrectly) { + throw new Error(\`[Test runner] An error occurred when evaluating code coverage: + The code in this story is not instrumented, which means the coverage setup is likely not correct. + More info: https://github.com/storybookjs/test-runner#setting-up-code-coverage\`); + } + await jestPlaywright.saveCoverage(page); + } + return result; + }; + try { + await testFn(); + } catch (err) { + if (err.toString().includes('Execution context was destroyed')) { + console.log(\`An error occurred in the following story, most likely because of a navigation: "\${"Example/foo/bar"}/\${"B"}". Retrying...\`); + await jestPlaywright.resetPage(); + await globalThis.__sbSetupPage(globalThis.page, globalThis.context); + await testFn(); + } else { + throw err; + } + } + }); + }); + }); + } + `); + }); + it('should exclude stories when excludeTags matches', () => { + process.env.STORYBOOK_EXCLUDE_TAGS = 'exclude-test'; + expect( + transformPlaywright( + dedent` + export default { title: 'foo/bar', component: Button }; + export const A = { tags: ['exclude-test'] }; + export const B = { }; + `, + filename + ) + ).toMatchInlineSnapshot(` + if (!require.main) { + describe("Example/foo/bar", () => { + describe("B", () => { + it("smoke-test", async () => { + const testFn = async () => { + const context = { + id: "example-foo-bar--b", + title: "Example/foo/bar", + name: "B" + }; + page.on('pageerror', err => { + page.evaluate(({ + id, + err + }) => __throwError(id, err), { + id: "example-foo-bar--b", + err: err.message + }); + }); + if (globalThis.__sbPreRender) { + await globalThis.__sbPreRender(page, context); + } + const result = await page.evaluate(({ + id, + hasPlayFn + }) => __test(id, hasPlayFn), { + id: "example-foo-bar--b" + }); + if (globalThis.__sbPostRender) { + await globalThis.__sbPostRender(page, context); + } + if (globalThis.__sbCollectCoverage) { + const isCoverageSetupCorrectly = await page.evaluate(() => '__coverage__' in window); + if (!isCoverageSetupCorrectly) { + throw new Error(\`[Test runner] An error occurred when evaluating code coverage: + The code in this story is not instrumented, which means the coverage setup is likely not correct. + More info: https://github.com/storybookjs/test-runner#setting-up-code-coverage\`); + } + await jestPlaywright.saveCoverage(page); + } + return result; + }; + try { + await testFn(); + } catch (err) { + if (err.toString().includes('Execution context was destroyed')) { + console.log(\`An error occurred in the following story, most likely because of a navigation: "\${"Example/foo/bar"}/\${"B"}". Retrying...\`); + await jestPlaywright.resetPage(); + await globalThis.__sbSetupPage(globalThis.page, globalThis.context); + await testFn(); + } else { + throw err; + } + } + }); + }); + }); + } + `); + }); + it('should skip stories when skipTags matches', () => { + process.env.STORYBOOK_SKIP_TAGS = 'skip-test'; + expect( + transformPlaywright( + dedent` + export default { title: 'foo/bar', component: Button }; + export const A = { tags: ['skip-test'] }; + export const B = { }; + `, + filename + ) + ).toMatchInlineSnapshot(` + if (!require.main) { + describe("Example/foo/bar", () => { + describe("A", () => { + it.skip("smoke-test", async () => { + const testFn = async () => { + const context = { + id: "example-foo-bar--a", + title: "Example/foo/bar", + name: "A" + }; + page.on('pageerror', err => { + page.evaluate(({ + id, + err + }) => __throwError(id, err), { + id: "example-foo-bar--a", + err: err.message + }); + }); + if (globalThis.__sbPreRender) { + await globalThis.__sbPreRender(page, context); + } + const result = await page.evaluate(({ + id, + hasPlayFn + }) => __test(id, hasPlayFn), { + id: "example-foo-bar--a" + }); + if (globalThis.__sbPostRender) { + await globalThis.__sbPostRender(page, context); + } + if (globalThis.__sbCollectCoverage) { + const isCoverageSetupCorrectly = await page.evaluate(() => '__coverage__' in window); + if (!isCoverageSetupCorrectly) { + throw new Error(\`[Test runner] An error occurred when evaluating code coverage: + The code in this story is not instrumented, which means the coverage setup is likely not correct. + More info: https://github.com/storybookjs/test-runner#setting-up-code-coverage\`); + } + await jestPlaywright.saveCoverage(page); + } + return result; + }; + try { + await testFn(); + } catch (err) { + if (err.toString().includes('Execution context was destroyed')) { + console.log(\`An error occurred in the following story, most likely because of a navigation: "\${"Example/foo/bar"}/\${"A"}". Retrying...\`); + await jestPlaywright.resetPage(); + await globalThis.__sbSetupPage(globalThis.page, globalThis.context); + await testFn(); + } else { + throw err; + } + } + }); + }); + describe("B", () => { + it("smoke-test", async () => { + const testFn = async () => { + const context = { + id: "example-foo-bar--b", + title: "Example/foo/bar", + name: "B" + }; + page.on('pageerror', err => { + page.evaluate(({ + id, + err + }) => __throwError(id, err), { + id: "example-foo-bar--b", + err: err.message + }); + }); + if (globalThis.__sbPreRender) { + await globalThis.__sbPreRender(page, context); + } + const result = await page.evaluate(({ + id, + hasPlayFn + }) => __test(id, hasPlayFn), { + id: "example-foo-bar--b" + }); + if (globalThis.__sbPostRender) { + await globalThis.__sbPostRender(page, context); + } + if (globalThis.__sbCollectCoverage) { + const isCoverageSetupCorrectly = await page.evaluate(() => '__coverage__' in window); + if (!isCoverageSetupCorrectly) { + throw new Error(\`[Test runner] An error occurred when evaluating code coverage: + The code in this story is not instrumented, which means the coverage setup is likely not correct. + More info: https://github.com/storybookjs/test-runner#setting-up-code-coverage\`); + } + await jestPlaywright.saveCoverage(page); + } + return result; + }; + try { + await testFn(); + } catch (err) { + if (err.toString().includes('Execution context was destroyed')) { + console.log(\`An error occurred in the following story, most likely because of a navigation: "\${"Example/foo/bar"}/\${"B"}". Retrying...\`); + await jestPlaywright.resetPage(); + await globalThis.__sbSetupPage(globalThis.page, globalThis.context); + await testFn(); + } else { + throw err; + } + } + }); + }); + }); + } + `); + }); + it('should work in conjunction with includeTags, excludeTags and skipTags', () => { + process.env.STORYBOOK_INCLUDE_TAGS = 'play,design'; + process.env.STORYBOOK_SKIP_TAGS = 'skip'; + process.env.STORYBOOK_EXCLUDE_TAGS = 'exclude'; + // Should result in: + // - A being excluded + // - B being included, but skipped + // - C being included + // - D being excluded + expect( + transformPlaywright( + dedent` + export default { title: 'foo/bar', component: Button }; + export const A = { tags: ['play', 'exclude'] }; + export const B = { tags: ['play', 'skip'] }; + export const C = { tags: ['design'] }; + export const D = { }; + `, + filename + ) + ).toMatchInlineSnapshot(` + if (!require.main) { + describe("Example/foo/bar", () => { + describe("B", () => { + it.skip("smoke-test", async () => { + const testFn = async () => { + const context = { + id: "example-foo-bar--b", + title: "Example/foo/bar", + name: "B" + }; + page.on('pageerror', err => { + page.evaluate(({ + id, + err + }) => __throwError(id, err), { + id: "example-foo-bar--b", + err: err.message + }); + }); + if (globalThis.__sbPreRender) { + await globalThis.__sbPreRender(page, context); + } + const result = await page.evaluate(({ + id, + hasPlayFn + }) => __test(id, hasPlayFn), { + id: "example-foo-bar--b" + }); + if (globalThis.__sbPostRender) { + await globalThis.__sbPostRender(page, context); + } + if (globalThis.__sbCollectCoverage) { + const isCoverageSetupCorrectly = await page.evaluate(() => '__coverage__' in window); + if (!isCoverageSetupCorrectly) { + throw new Error(\`[Test runner] An error occurred when evaluating code coverage: + The code in this story is not instrumented, which means the coverage setup is likely not correct. + More info: https://github.com/storybookjs/test-runner#setting-up-code-coverage\`); + } + await jestPlaywright.saveCoverage(page); + } + return result; + }; + try { + await testFn(); + } catch (err) { + if (err.toString().includes('Execution context was destroyed')) { + console.log(\`An error occurred in the following story, most likely because of a navigation: "\${"Example/foo/bar"}/\${"B"}". Retrying...\`); + await jestPlaywright.resetPage(); + await globalThis.__sbSetupPage(globalThis.page, globalThis.context); + await testFn(); + } else { + throw err; + } + } + }); + }); + describe("C", () => { + it("smoke-test", async () => { + const testFn = async () => { + const context = { + id: "example-foo-bar--c", + title: "Example/foo/bar", + name: "C" + }; + page.on('pageerror', err => { + page.evaluate(({ + id, + err + }) => __throwError(id, err), { + id: "example-foo-bar--c", + err: err.message + }); + }); + if (globalThis.__sbPreRender) { + await globalThis.__sbPreRender(page, context); + } + const result = await page.evaluate(({ + id, + hasPlayFn + }) => __test(id, hasPlayFn), { + id: "example-foo-bar--c" + }); + if (globalThis.__sbPostRender) { + await globalThis.__sbPostRender(page, context); + } + if (globalThis.__sbCollectCoverage) { + const isCoverageSetupCorrectly = await page.evaluate(() => '__coverage__' in window); + if (!isCoverageSetupCorrectly) { + throw new Error(\`[Test runner] An error occurred when evaluating code coverage: + The code in this story is not instrumented, which means the coverage setup is likely not correct. + More info: https://github.com/storybookjs/test-runner#setting-up-code-coverage\`); + } + await jestPlaywright.saveCoverage(page); + } + return result; + }; + try { + await testFn(); + } catch (err) { + if (err.toString().includes('Execution context was destroyed')) { + console.log(\`An error occurred in the following story, most likely because of a navigation: "\${"Example/foo/bar"}/\${"C"}". Retrying...\`); + await jestPlaywright.resetPage(); + await globalThis.__sbSetupPage(globalThis.page, globalThis.context); + await testFn(); + } else { + throw err; + } + } + }); + }); + }); + } + `); + }); + it('should no op when includeTags is passed but not matched', () => { + process.env.STORYBOOK_INCLUDE_TAGS = 'play'; + expect( + transformPlaywright( + dedent` + export default { title: 'foo/bar', component: Button }; + export const A = () => {}; + A.play = () => {}; + `, + filename + ) + ).toMatchInlineSnapshot(`describe('Example/foo/bar', () => { it('no-op', () => {}) });`); + }); }); - const filename = './stories/basic/Header.stories.js'; it('should generate a play test when the story has a play function', () => { expect( transformPlaywright( @@ -179,7 +659,6 @@ describe('Playwright', () => { } `); }); - it('should generate a smoke test with auto title', () => { expect( transformPlaywright( diff --git a/src/playwright/transformPlaywright.ts b/src/playwright/transformPlaywright.ts index 0e43cd84..0e98402e 100644 --- a/src/playwright/transformPlaywright.ts +++ b/src/playwright/transformPlaywright.ts @@ -75,11 +75,13 @@ const makeTitleFactory = (filename: string) => { }; export const transformPlaywright = (src: string, filename: string) => { - const result = transformCsf(src, { + const transformOptions = { testPrefixer, insertTestIfEmpty: true, clearBody: true, makeTitle: makeTitleFactory(filename), - }); + }; + + const result = transformCsf(src, transformOptions); return result; }; diff --git a/src/playwright/transformPlaywrightJson.test.ts b/src/playwright/transformPlaywrightJson.test.ts index beb0b5f2..63a1a8ed 100644 --- a/src/playwright/transformPlaywrightJson.test.ts +++ b/src/playwright/transformPlaywrightJson.test.ts @@ -1,7 +1,15 @@ import { transformPlaywrightJson } from './transformPlaywrightJson'; +jest.mock('../util/getTestRunnerConfig'); + describe('Playwright Json', () => { describe('v4 indexes', () => { + beforeEach(() => { + delete process.env.STORYBOOK_INCLUDE_TAGS; + delete process.env.STORYBOOK_EXCLUDE_TAGS; + delete process.env.STORYBOOK_SKIP_TAGS; + }); + it('should generate a test for each story', () => { const input = { v: 4, @@ -11,6 +19,7 @@ describe('Playwright Json', () => { title: 'Example/Header', name: 'Logged In', importPath: './stories/basic/Header.stories.js', + tags: ['play-fn'], }, 'example-header--logged-out': { id: 'example-header--logged-out', @@ -30,7 +39,7 @@ describe('Playwright Json', () => { { "example-header": "describe("Example/Header", () => { describe("Logged In", () => { - it("test", async () => { + it("play-test", async () => { const testFn = async () => { const context = { id: "example-header--logged-in", @@ -84,7 +93,7 @@ describe('Playwright Json', () => { }); }); describe("Logged Out", () => { - it("test", async () => { + it("smoke-test", async () => { const testFn = async () => { const context = { id: "example-header--logged-out", @@ -140,7 +149,7 @@ describe('Playwright Json', () => { });", "example-page": "describe("Example/Page", () => { describe("Logged In", () => { - it("test", async () => { + it("smoke-test", async () => { const testFn = async () => { const context = { id: "example-page--logged-in", @@ -198,6 +207,165 @@ describe('Playwright Json', () => { `); }); + it('should respect include, exclude and skip tags', () => { + process.env.STORYBOOK_INCLUDE_TAGS = 'play,design'; + process.env.STORYBOOK_SKIP_TAGS = 'skip'; + process.env.STORYBOOK_EXCLUDE_TAGS = 'exclude'; + const input = { + v: 4, + entries: { + A: { + id: 'example-a', + title: 'Example/Header', + name: 'Logged In', + importPath: './stories/basic/Header.stories.js', + tags: ['play', 'exclude'], + }, + B: { + id: 'example-b', + title: 'Example/Header', + name: 'Logged Out', + importPath: './stories/basic/Header.stories.js', + tags: ['play', 'skip'], + }, + C: { + id: 'example-c', + title: 'Example/Page', + name: 'Logged In', + importPath: './stories/basic/Page.stories.js', + tags: ['design'], + }, + D: { + id: 'example-d', + title: 'Example/Page', + name: 'Logged In', + importPath: './stories/basic/Page.stories.js', + }, + }, + }; + // Should result in: + // - A being excluded + // - B being included, but skipped + // - C being included + // - D being excluded + expect(transformPlaywrightJson(input)).toMatchInlineSnapshot(` + { + "example-header": "describe("Example/Header", () => { + describe("Logged Out", () => { + it.skip("smoke-test", async () => { + const testFn = async () => { + const context = { + id: "example-b", + title: "Example/Header", + name: "Logged Out" + }; + page.on('pageerror', err => { + page.evaluate(({ + id, + err + }) => __throwError(id, err), { + id: "example-b", + err: err.message + }); + }); + if (globalThis.__sbPreRender) { + await globalThis.__sbPreRender(page, context); + } + const result = await page.evaluate(({ + id, + hasPlayFn + }) => __test(id, hasPlayFn), { + id: "example-b" + }); + if (globalThis.__sbPostRender) { + await globalThis.__sbPostRender(page, context); + } + if (globalThis.__sbCollectCoverage) { + const isCoverageSetupCorrectly = await page.evaluate(() => '__coverage__' in window); + if (!isCoverageSetupCorrectly) { + throw new Error(\`[Test runner] An error occurred when evaluating code coverage: + The code in this story is not instrumented, which means the coverage setup is likely not correct. + More info: https://github.com/storybookjs/test-runner#setting-up-code-coverage\`); + } + await jestPlaywright.saveCoverage(page); + } + return result; + }; + try { + await testFn(); + } catch (err) { + if (err.toString().includes('Execution context was destroyed')) { + console.log(\`An error occurred in the following story, most likely because of a navigation: "\${"Example/Header"}/\${"Logged Out"}". Retrying...\`); + await jestPlaywright.resetPage(); + await globalThis.__sbSetupPage(globalThis.page, globalThis.context); + await testFn(); + } else { + throw err; + } + } + }); + }); + });", + "example-page": "describe("Example/Page", () => { + describe("Logged In", () => { + it("smoke-test", async () => { + const testFn = async () => { + const context = { + id: "example-c", + title: "Example/Page", + name: "Logged In" + }; + page.on('pageerror', err => { + page.evaluate(({ + id, + err + }) => __throwError(id, err), { + id: "example-c", + err: err.message + }); + }); + if (globalThis.__sbPreRender) { + await globalThis.__sbPreRender(page, context); + } + const result = await page.evaluate(({ + id, + hasPlayFn + }) => __test(id, hasPlayFn), { + id: "example-c" + }); + if (globalThis.__sbPostRender) { + await globalThis.__sbPostRender(page, context); + } + if (globalThis.__sbCollectCoverage) { + const isCoverageSetupCorrectly = await page.evaluate(() => '__coverage__' in window); + if (!isCoverageSetupCorrectly) { + throw new Error(\`[Test runner] An error occurred when evaluating code coverage: + The code in this story is not instrumented, which means the coverage setup is likely not correct. + More info: https://github.com/storybookjs/test-runner#setting-up-code-coverage\`); + } + await jestPlaywright.saveCoverage(page); + } + return result; + }; + try { + await testFn(); + } catch (err) { + if (err.toString().includes('Execution context was destroyed')) { + console.log(\`An error occurred in the following story, most likely because of a navigation: "\${"Example/Page"}/\${"Logged In"}". Retrying...\`); + await jestPlaywright.resetPage(); + await globalThis.__sbSetupPage(globalThis.page, globalThis.context); + await testFn(); + } else { + throw err; + } + } + }); + }); + });", + } + `); + }); + it('should skip docs entries', () => { const input = { v: 4, @@ -221,7 +389,7 @@ describe('Playwright Json', () => { { "example-page": "describe("Example/Page", () => { describe("Logged In", () => { - it("test", async () => { + it("smoke-test", async () => { const testFn = async () => { const context = { id: "example-page--logged-in", @@ -330,7 +498,7 @@ describe('Playwright Json', () => { { "example-header": "describe("Example/Header", () => { describe("Logged In", () => { - it("test", async () => { + it("smoke-test", async () => { const testFn = async () => { const context = { id: "example-header--logged-in", @@ -384,7 +552,7 @@ describe('Playwright Json', () => { }); }); describe("Logged Out", () => { - it("test", async () => { + it("smoke-test", async () => { const testFn = async () => { const context = { id: "example-header--logged-out", @@ -440,7 +608,7 @@ describe('Playwright Json', () => { });", "example-page": "describe("Example/Page", () => { describe("Logged In", () => { - it("test", async () => { + it("smoke-test", async () => { const testFn = async () => { const context = { id: "example-page--logged-in", @@ -534,7 +702,7 @@ describe('Playwright Json', () => { { "example-page": "describe("Example/Page", () => { describe("Logged In", () => { - it("test", async () => { + it("smoke-test", async () => { const testFn = async () => { const context = { id: "example-page--logged-in", diff --git a/src/playwright/transformPlaywrightJson.ts b/src/playwright/transformPlaywrightJson.ts index 0a6df337..d8034103 100644 --- a/src/playwright/transformPlaywrightJson.ts +++ b/src/playwright/transformPlaywrightJson.ts @@ -3,8 +3,17 @@ import generate from '@babel/generator'; import { ComponentTitle, StoryId, StoryName, toId } from '@storybook/csf'; import { testPrefixer } from './transformPlaywright'; +import { getTagOptions } from '../util/getTagOptions'; -const makeTest = (entry: V4Entry): t.Statement => { +const makeTest = ({ + entry, + shouldSkip, + metaOrStoryPlay, +}: { + entry: V4Entry; + shouldSkip: boolean; + metaOrStoryPlay: boolean; +}): t.Statement => { const result: any = testPrefixer({ name: t.stringLiteral(entry.name), title: t.stringLiteral(entry.title), @@ -12,9 +21,13 @@ const makeTest = (entry: V4Entry): t.Statement => { // FIXME storyExport: t.identifier(entry.id), }); + const stmt = result[1] as t.ExpressionStatement; return t.expressionStatement( - t.callExpression(t.identifier('it'), [t.stringLiteral('test'), stmt.expression]) + t.callExpression(shouldSkip ? t.identifier('it.skip') : t.identifier('it'), [ + t.stringLiteral(!!metaOrStoryPlay ? 'play-test' : 'smoke-test'), + stmt.expression, + ]) ); }; @@ -27,7 +40,13 @@ const makeDescribe = (title: string, stmts: t.Statement[]) => { ); }; -type V4Entry = { type?: 'story' | 'docs'; id: StoryId; name: StoryName; title: ComponentTitle }; +type V4Entry = { + type?: 'story' | 'docs'; + id: StoryId; + name: StoryName; + title: ComponentTitle; + tags: string[]; +}; type V4Index = { v: 4; entries: Record; @@ -76,15 +95,39 @@ export const transformPlaywrightJson = (index: Record) => { ); titleIdToEntries = v3TitleMapToV4TitleMap(titleIdToStories); } else if (index.v === 4) { + // TODO: Once Storybook 8.0 is released, we should only support v4 and higher titleIdToEntries = groupByTitleId(Object.values((index as V4Index).entries)); } else { throw new Error(`Unsupported version ${index.v}`); } + const { includeTags, excludeTags, skipTags } = getTagOptions(); + const titleIdToTest = Object.entries(titleIdToEntries).reduce((acc, [titleId, entries]) => { const stories = entries.filter((s) => s.type !== 'docs'); if (stories.length) { - const storyTests = stories.map((story) => makeDescribe(story.name, [makeTest(story)])); + const storyTests = stories + .filter((story) => { + // If includeTags is passed, check if the story has any of them - else include by default + const isIncluded = + includeTags.length === 0 || includeTags.some((tag) => story.tags?.includes(tag)); + + // If excludeTags is passed, check if the story does not have any of them + const isNotExcluded = excludeTags.every((tag) => !story.tags?.includes(tag)); + + return isIncluded && isNotExcluded; + }) + .map((story) => { + const shouldSkip = skipTags.some((tag) => story.tags?.includes(tag)); + + return makeDescribe(story.name, [ + makeTest({ + entry: story, + shouldSkip, + metaOrStoryPlay: story.tags?.includes('play-fn'), + }), + ]); + }); const program = t.program([makeDescribe(stories[0].title, storyTests)]) as babel.types.Node; const { code } = generate(program, {}); diff --git a/src/setup-page.ts b/src/setup-page.ts index b64b78ad..5364d376 100644 --- a/src/setup-page.ts +++ b/src/setup-page.ts @@ -1,7 +1,7 @@ import type { Page, BrowserContext } from 'playwright'; import readPackageUp from 'read-pkg-up'; import { PrepareContext } from './playwright/hooks'; -import { getTestRunnerConfig } from './util'; +import { getTestRunnerConfig } from './util/getTestRunnerConfig'; /** * This is a default prepare function which can be overridden by the user. diff --git a/src/test-storybook.ts b/src/test-storybook.ts index ae0cb608..e738e248 100644 --- a/src/test-storybook.ts +++ b/src/test-storybook.ts @@ -18,6 +18,7 @@ import { getTestRunnerConfig } from './util/getTestRunnerConfig'; import { transformPlaywrightJson } from './playwright/transformPlaywrightJson'; import { glob } from 'glob'; +import { TestRunnerConfig } from './playwright/hooks'; // Do this as the first thing so that any code reading it knows the right env. process.env.BABEL_ENV = 'test'; @@ -284,7 +285,7 @@ const main = async () => { process.env.STORYBOOK_CONFIG_DIR = runnerOptions.configDir; - const testRunnerConfig = getTestRunnerConfig(runnerOptions.configDir) || {}; + const testRunnerConfig = getTestRunnerConfig(runnerOptions.configDir) || ({} as TestRunnerConfig); if (testRunnerConfig.getHttpHeaders) { getHttpHeaders = testRunnerConfig.getHttpHeaders; } @@ -303,6 +304,18 @@ const main = async () => { process.env.STORYBOOK_COLLECT_COVERAGE = 'true'; } + if (runnerOptions.includeTags) { + process.env.STORYBOOK_INCLUDE_TAGS = runnerOptions.includeTags; + } + + if (runnerOptions.excludeTags) { + process.env.STORYBOOK_EXCLUDE_TAGS = runnerOptions.excludeTags; + } + + if (runnerOptions.skipTags) { + process.env.STORYBOOK_SKIP_TAGS = runnerOptions.skipTags; + } + if (runnerOptions.coverageDirectory) { process.env.STORYBOOK_COVERAGE_DIRECTORY = runnerOptions.coverageDirectory; } diff --git a/src/util/getCliOptions.ts b/src/util/getCliOptions.ts index 2db332e1..5e0ddfd7 100644 --- a/src/util/getCliOptions.ts +++ b/src/util/getCliOptions.ts @@ -14,6 +14,9 @@ export type CliOptions = { junit?: boolean; browsers?: BrowserType | BrowserType[]; failOnConsole?: boolean; + includeTags?: string; + excludeTags?: string; + skipTags?: string; }; jestOptions: JestOptions; }; @@ -30,6 +33,9 @@ const STORYBOOK_RUNNER_COMMANDS: StorybookRunnerCommand[] = [ 'coverageDirectory', 'junit', 'failOnConsole', + 'includeTags', + 'excludeTags', + 'skipTags', ]; function copyOption( diff --git a/src/util/getParsedCliOptions.ts b/src/util/getParsedCliOptions.ts index d4df6774..e1971d7a 100644 --- a/src/util/getParsedCliOptions.ts +++ b/src/util/getParsedCliOptions.ts @@ -76,7 +76,10 @@ export const getParsedCliOptions = (): ParsedCliOptions => { '--shard ', 'Splits your test suite across different machines to run in CI.' ) - .option('--failOnConsole', 'Makes tests fail on browser console errors'); + .option('--failOnConsole', 'Makes tests fail on browser console errors') + .option('--includeTags ', 'Only test stories that match the specified tags') + .option('--excludeTags ', 'Do not test stories that match the specified tags') + .option('--skipTags ', 'Skip test stories that match the specified tags'); program.exitOverride(); diff --git a/src/util/getTagOptions.ts b/src/util/getTagOptions.ts new file mode 100644 index 00000000..1bbdad8c --- /dev/null +++ b/src/util/getTagOptions.ts @@ -0,0 +1,36 @@ +import { getTestRunnerConfig } from './getTestRunnerConfig'; + +type TagOptions = { + includeTags: string[]; + excludeTags: string[]; + skipTags: string[]; +}; + +/** + * Get filtering options based on: + * 1. Test runner config 'tags' object + * 2. Environment variables (takes precedence) + */ +export function getTagOptions() { + const config = getTestRunnerConfig(); + + let tagOptions = { + includeTags: config?.tags?.include || [], + excludeTags: config?.tags?.exclude || [], + skipTags: config?.tags?.skip || [], + } as TagOptions; + + if (process.env.STORYBOOK_INCLUDE_TAGS) { + tagOptions.includeTags = process.env.STORYBOOK_INCLUDE_TAGS.split(',').map((s) => s.trim()); + } + + if (process.env.STORYBOOK_EXCLUDE_TAGS) { + tagOptions.excludeTags = process.env.STORYBOOK_EXCLUDE_TAGS.split(',').map((s) => s.trim()); + } + + if (process.env.STORYBOOK_SKIP_TAGS) { + tagOptions.skipTags = process.env.STORYBOOK_SKIP_TAGS.split(',').map((s) => s.trim()); + } + + return tagOptions; +} diff --git a/yarn.lock b/yarn.lock index 98b4c52f..fc81dd93 100644 --- a/yarn.lock +++ b/yarn.lock @@ -188,6 +188,16 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.22.13": + version: 7.22.13 + resolution: "@babel/code-frame@npm:7.22.13" + dependencies: + "@babel/highlight": ^7.22.13 + chalk: ^2.4.2 + checksum: 22e342c8077c8b77eeb11f554ecca2ba14153f707b85294fcf6070b6f6150aae88a7b7436dd88d8c9289970585f3fe5b9b941c5aa3aa26a6d5a8ef3f292da058 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.22.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": version: 7.22.9 resolution: "@babel/compat-data@npm:7.22.9" @@ -218,7 +228,30 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.22.5, @babel/generator@npm:^7.22.7, @babel/generator@npm:^7.22.9, @babel/generator@npm:^7.7.2": +"@babel/core@npm:^7.18.9": + version: 7.23.3 + resolution: "@babel/core@npm:7.23.3" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.23.3 + "@babel/helper-compilation-targets": ^7.22.15 + "@babel/helper-module-transforms": ^7.23.3 + "@babel/helpers": ^7.23.2 + "@babel/parser": ^7.23.3 + "@babel/template": ^7.22.15 + "@babel/traverse": ^7.23.3 + "@babel/types": ^7.23.3 + convert-source-map: ^2.0.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: d306c1fa68972f4e085e9e7ad165aee80eb801ef331f6f07808c86309f03534d638b82ad00a3bc08f4d3de4860ccd38512b2790a39e6acc2caf9ea21e526afe7 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.22.5, @babel/generator@npm:^7.22.7, @babel/generator@npm:^7.22.9, @babel/generator@npm:^7.7.2": version: 7.22.9 resolution: "@babel/generator@npm:7.22.9" dependencies: @@ -230,6 +263,18 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/generator@npm:7.23.3" + dependencies: + "@babel/types": ^7.23.3 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: b6e71cca852d4e1aa01a28a30b8c74ffc3b8d56ccb7ae3ee783028ee015f63ad861a2e386c3eb490a9a8634db485a503a33521680f4af510151e90346c46da17 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.18.6, @babel/helper-annotate-as-pure@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" @@ -248,6 +293,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-compilation-targets@npm:7.22.15" + dependencies: + "@babel/compat-data": ^7.22.9 + "@babel/helper-validator-option": ^7.22.15 + browserslist: ^4.21.9 + lru-cache: ^5.1.1 + semver: ^6.3.1 + checksum: ce85196769e091ae54dd39e4a80c2a9df1793da8588e335c383d536d54f06baf648d0a08fc873044f226398c4ded15c4ae9120ee18e7dfd7c639a68e3cdc9980 + languageName: node + linkType: hard + "@babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.22.9": version: 7.22.9 resolution: "@babel/helper-compilation-targets@npm:7.22.9" @@ -310,6 +368,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-environment-visitor@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-environment-visitor@npm:7.22.20" + checksum: d80ee98ff66f41e233f36ca1921774c37e88a803b2f7dca3db7c057a5fea0473804db9fb6729e5dbfd07f4bed722d60f7852035c2c739382e84c335661590b69 + languageName: node + linkType: hard + "@babel/helper-environment-visitor@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-environment-visitor@npm:7.22.5" @@ -327,6 +392,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-function-name@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-function-name@npm:7.23.0" + dependencies: + "@babel/template": ^7.22.15 + "@babel/types": ^7.23.0 + checksum: e44542257b2d4634a1f979244eb2a4ad8e6d75eb6761b4cfceb56b562f7db150d134bc538c8e6adca3783e3bc31be949071527aa8e3aab7867d1ad2d84a26e10 + languageName: node + linkType: hard + "@babel/helper-hoist-variables@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-hoist-variables@npm:7.22.5" @@ -354,6 +429,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-imports@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-module-imports@npm:7.22.15" + dependencies: + "@babel/types": ^7.22.15 + checksum: ecd7e457df0a46f889228f943ef9b4a47d485d82e030676767e6a2fdcbdaa63594d8124d4b55fd160b41c201025aec01fc27580352b1c87a37c9c6f33d116702 + languageName: node + linkType: hard + "@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9": version: 7.22.9 resolution: "@babel/helper-module-transforms@npm:7.22.9" @@ -369,6 +453,21 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/helper-module-transforms@npm:7.23.3" + dependencies: + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-module-imports": ^7.22.15 + "@babel/helper-simple-access": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/helper-validator-identifier": ^7.22.20 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 5d0895cfba0e16ae16f3aa92fee108517023ad89a855289c4eb1d46f7aef4519adf8e6f971e1d55ac20c5461610e17213f1144097a8f932e768a9132e2278d71 + languageName: node + linkType: hard + "@babel/helper-optimise-call-expression@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" @@ -445,6 +544,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-validator-identifier@npm:7.22.20" + checksum: 136412784d9428266bcdd4d91c32bcf9ff0e8d25534a9d94b044f77fe76bc50f941a90319b05aafd1ec04f7d127cd57a179a3716009ff7f3412ef835ada95bdc + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.22.5": version: 7.22.5 resolution: "@babel/helper-validator-identifier@npm:7.22.5" @@ -459,6 +565,13 @@ __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: 68da52b1e10002a543161494c4bc0f4d0398c8fdf361d5f7f4272e95c45d5b32d974896d44f6a0ea7378c9204988879d73613ca683e13bd1304e46d25ff67a8d + languageName: node + linkType: hard + "@babel/helper-wrap-function@npm:^7.22.9": version: 7.22.9 resolution: "@babel/helper-wrap-function@npm:7.22.9" @@ -481,6 +594,28 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.23.2": + version: 7.23.2 + resolution: "@babel/helpers@npm:7.23.2" + dependencies: + "@babel/template": ^7.22.15 + "@babel/traverse": ^7.23.2 + "@babel/types": ^7.23.0 + checksum: aaf4828df75ec460eaa70e5c9f66e6dadc28dae3728ddb7f6c13187dbf38030e142194b83d81aa8a31bbc35a5529a5d7d3f3cf59d5d0b595f5dd7f9d8f1ced8e + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.22.13": + version: 7.22.20 + resolution: "@babel/highlight@npm:7.22.20" + dependencies: + "@babel/helper-validator-identifier": ^7.22.20 + chalk: ^2.4.2 + js-tokens: ^4.0.0 + checksum: 84bd034dca309a5e680083cd827a766780ca63cef37308404f17653d32366ea76262bd2364b2d38776232f2d01b649f26721417d507e8b4b6da3e4e739f6d134 + languageName: node + linkType: hard + "@babel/highlight@npm:^7.22.5": version: 7.22.5 resolution: "@babel/highlight@npm:7.22.5" @@ -501,6 +636,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/parser@npm:7.23.3" + bin: + parser: ./bin/babel-parser.js + checksum: 4aa7366e401b5467192c1dbf2bef99ac0958c45ef69ed6704abbae68f98fab6409a527b417d1528fddc49d7664450670528adc7f45abb04db5fafca7ed766d57 + languageName: node + linkType: hard + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.5" @@ -1683,6 +1827,17 @@ __metadata: languageName: node linkType: hard +"@babel/template@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/template@npm:7.22.15" + dependencies: + "@babel/code-frame": ^7.22.13 + "@babel/parser": ^7.22.15 + "@babel/types": ^7.22.15 + checksum: 1f3e7dcd6c44f5904c184b3f7fe280394b191f2fed819919ffa1e529c259d5b197da8981b6ca491c235aee8dbad4a50b7e31304aa531271cb823a4a24a0dd8fd + languageName: node + linkType: hard + "@babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3": version: 7.22.5 resolution: "@babel/template@npm:7.22.5" @@ -1694,7 +1849,25 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8": +"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/traverse@npm:7.23.3" + dependencies: + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.23.3 + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-function-name": ^7.23.0 + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/parser": ^7.23.3 + "@babel/types": ^7.23.3 + debug: ^4.1.0 + globals: ^11.1.0 + checksum: f4e0c05f2f82368b9be7e1fed38cfcc2e1074967a8b76ac837b89661adbd391e99d0b1fd8c31215ffc3a04d2d5d7ee5e627914a09082db84ec5606769409fe2b + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.22.6, @babel/traverse@npm:^7.22.8": version: 7.22.8 resolution: "@babel/traverse@npm:7.22.8" dependencies: @@ -1712,7 +1885,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.22.11 resolution: "@babel/types@npm:7.22.11" dependencies: @@ -1723,6 +1896,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.18.9, @babel/types@npm:^7.22.15, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/types@npm:7.23.3" + dependencies: + "@babel/helper-string-parser": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.20 + to-fast-properties: ^2.0.0 + checksum: b96f1ec495351aeb2a5f98dd494aafa17df02a351548ae96999460f35c933261c839002a34c1e83552ff0d9f5e94d0b5b8e105d38131c7c9b0f5a6588676f35d + languageName: node + linkType: hard + "@base2/pretty-print-object@npm:1.0.1": version: 1.0.1 resolution: "@base2/pretty-print-object@npm:1.0.1" @@ -2165,7 +2349,7 @@ __metadata: languageName: node linkType: hard -"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": +"@istanbuljs/schema@npm:^0.1.2": version: 0.1.3 resolution: "@istanbuljs/schema@npm:0.1.3" checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 @@ -2433,9 +2617,9 @@ __metadata: languageName: node linkType: hard -"@joshwooding/vite-plugin-react-docgen-typescript@npm:0.2.1": - version: 0.2.1 - resolution: "@joshwooding/vite-plugin-react-docgen-typescript@npm:0.2.1" +"@joshwooding/vite-plugin-react-docgen-typescript@npm:0.3.0": + version: 0.3.0 + resolution: "@joshwooding/vite-plugin-react-docgen-typescript@npm:0.3.0" dependencies: glob: ^7.2.0 glob-promise: ^4.2.0 @@ -2443,11 +2627,11 @@ __metadata: react-docgen-typescript: ^2.2.2 peerDependencies: typescript: ">= 4.3.x" - vite: ^3.0.0 || ^4.0.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 91401505b379396cb48c74e99ebafb8a3f85bb0c38783d4b17df42d5420782bf733f049f9a97659feb4423b4e4db9ba35fd8230add5fd32e615d5633d37cdcfd + checksum: 3fe2dc68dcb43920cc08bc5cc2937953bed1080e9c453dc3f513156b9a862fe6af0cda94b70272a4844a27964070129f8d0d31056211b1486a8fd9f6e1c20559 languageName: node linkType: hard @@ -3395,24 +3579,24 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-actions@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/addon-actions@npm:7.3.1" +"@storybook/addon-actions@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-actions@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.3.1 - "@storybook/components": 7.3.1 - "@storybook/core-events": 7.3.1 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.3.1 - "@storybook/preview-api": 7.3.1 - "@storybook/theming": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 dequal: ^2.0.2 lodash: ^4.17.21 polished: ^4.2.2 prop-types: ^15.7.2 react-inspector: ^6.0.0 - telejson: ^7.0.3 + telejson: ^7.2.0 ts-dedent: ^2.0.0 uuid: ^9.0.0 peerDependencies: @@ -3423,22 +3607,22 @@ __metadata: optional: true react-dom: optional: true - checksum: bb76f10802a231843b96de156dbc0e7a65e5706377cd557516dc8b2baadb54626ee088edbea633f5977a47e3564996a2c880813b5a43d32e1c8c57ee206467ff + checksum: d79baf1da30da5f99d513f08f74093741725c9f865990bf7f99ca2ae171156ab9f11f6c354c32b73d7d9fed13665780cf3a2a7623b7d6877c8dc262dd5616733 languageName: node linkType: hard -"@storybook/addon-backgrounds@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/addon-backgrounds@npm:7.3.1" +"@storybook/addon-backgrounds@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-backgrounds@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.3.1 - "@storybook/components": 7.3.1 - "@storybook/core-events": 7.3.1 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.3.1 - "@storybook/preview-api": 7.3.1 - "@storybook/theming": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 memoizerific: ^1.11.3 ts-dedent: ^2.0.0 peerDependencies: @@ -3449,24 +3633,24 @@ __metadata: optional: true react-dom: optional: true - checksum: 34dbfac5669ca25ede45decf47816ed71a552b5c60c035682ec933e88613e9827187b48c65c539346b6c9a5e9939a71e7d44a20799302963765ddd8827286731 + checksum: 6a432d490a8df336dc419dde7ee28abc3ca3966f2e512c1c3c6479b139f99e294213d832d91e8c8c18c96d3b3acb84299f0789800797d6338e691ee1e9c667fe languageName: node linkType: hard -"@storybook/addon-controls@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/addon-controls@npm:7.3.1" +"@storybook/addon-controls@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-controls@npm:7.5.3" dependencies: - "@storybook/blocks": 7.3.1 - "@storybook/client-logger": 7.3.1 - "@storybook/components": 7.3.1 - "@storybook/core-common": 7.3.1 - "@storybook/core-events": 7.3.1 - "@storybook/manager-api": 7.3.1 - "@storybook/node-logger": 7.3.1 - "@storybook/preview-api": 7.3.1 - "@storybook/theming": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/blocks": 7.5.3 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-common": 7.5.3 + "@storybook/core-events": 7.5.3 + "@storybook/manager-api": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 lodash: ^4.17.21 ts-dedent: ^2.0.0 peerDependencies: @@ -3477,7 +3661,7 @@ __metadata: optional: true react-dom: optional: true - checksum: 8f2aa09cd4a40230dbf06e2c0579df5a91ee49ca36121ef98bd34af562a27cca8376856776ac2ed91138ebd2e6db360906eaaabb68a26c6183cf1a4889d7ba0d + checksum: c86f8da8a3a3e1b286826eb7c157991dfb62d9e2d1c4493966beadde5bcf8dec3ff6f88433fec99843b2020a9e025a0635d497abda0bd52b4fdbe0d3bce65638 languageName: node linkType: hard @@ -3493,25 +3677,25 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-docs@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/addon-docs@npm:7.3.1" +"@storybook/addon-docs@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-docs@npm:7.5.3" dependencies: "@jest/transform": ^29.3.1 "@mdx-js/react": ^2.1.5 - "@storybook/blocks": 7.3.1 - "@storybook/client-logger": 7.3.1 - "@storybook/components": 7.3.1 - "@storybook/csf-plugin": 7.3.1 - "@storybook/csf-tools": 7.3.1 + "@storybook/blocks": 7.5.3 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/csf-plugin": 7.5.3 + "@storybook/csf-tools": 7.5.3 "@storybook/global": ^5.0.0 "@storybook/mdx2-csf": ^1.0.0 - "@storybook/node-logger": 7.3.1 - "@storybook/postinstall": 7.3.1 - "@storybook/preview-api": 7.3.1 - "@storybook/react-dom-shim": 7.3.1 - "@storybook/theming": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/node-logger": 7.5.3 + "@storybook/postinstall": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/react-dom-shim": 7.5.3 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 fs-extra: ^11.1.0 remark-external-links: ^8.0.0 remark-slug: ^6.0.0 @@ -3519,60 +3703,60 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: dc8a34f5df124139281976eb5db6edaad39a243ed52138086dd8d425d2b6234b24c84f72ed41e118c07db108e8bcda96f50145864f342406ab0febc9ee6797d8 - languageName: node - linkType: hard - -"@storybook/addon-essentials@npm:^7.3.0": - version: 7.3.1 - resolution: "@storybook/addon-essentials@npm:7.3.1" - dependencies: - "@storybook/addon-actions": 7.3.1 - "@storybook/addon-backgrounds": 7.3.1 - "@storybook/addon-controls": 7.3.1 - "@storybook/addon-docs": 7.3.1 - "@storybook/addon-highlight": 7.3.1 - "@storybook/addon-measure": 7.3.1 - "@storybook/addon-outline": 7.3.1 - "@storybook/addon-toolbars": 7.3.1 - "@storybook/addon-viewport": 7.3.1 - "@storybook/core-common": 7.3.1 - "@storybook/manager-api": 7.3.1 - "@storybook/node-logger": 7.3.1 - "@storybook/preview-api": 7.3.1 + checksum: 54ef17505cdeb24995131842055256000f2894d7a8e7a46e33c2b29bb4067abdf4a1bc160421729e222fd32d1d77b435fe2afe4d3f9afb32a9ccff7c3d4eeafe + languageName: node + linkType: hard + +"@storybook/addon-essentials@npm:^7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-essentials@npm:7.5.3" + dependencies: + "@storybook/addon-actions": 7.5.3 + "@storybook/addon-backgrounds": 7.5.3 + "@storybook/addon-controls": 7.5.3 + "@storybook/addon-docs": 7.5.3 + "@storybook/addon-highlight": 7.5.3 + "@storybook/addon-measure": 7.5.3 + "@storybook/addon-outline": 7.5.3 + "@storybook/addon-toolbars": 7.5.3 + "@storybook/addon-viewport": 7.5.3 + "@storybook/core-common": 7.5.3 + "@storybook/manager-api": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/preview-api": 7.5.3 ts-dedent: ^2.0.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: f423d240bc327bb7fe561f4171131af959fc3cd66cc8de530078519b88905c53ab16d43b61c4195e0f0154a83c13ea431d107804565fb9f12aebe86a5e9c30b4 + checksum: 57341a40f9343f8dab11950c5bd70251e7221048cdf2ef5ac8577586d753988e7f51ce0eaa06a2e216c75412622d70fe9a98f0d2c3eb80d8a699823132c70b88 languageName: node linkType: hard -"@storybook/addon-highlight@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/addon-highlight@npm:7.3.1" +"@storybook/addon-highlight@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-highlight@npm:7.5.3" dependencies: - "@storybook/core-events": 7.3.1 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.3.1 - checksum: 062fc318878d170b78197f9860294c87c63ca2ca2bede1689bdc75acd578532a1426ec0d4640a439bc9271e11292a26435c65e79aa21d744049d1a4a710f2321 + "@storybook/preview-api": 7.5.3 + checksum: be468def9a6c3495e72f2c0a15e132b519e909c42e58361fd8d55c1fb1b7764e86b9e0a6531ba0f61b227d9d2ed5646ad294db0729177a39e3da5a7e00a3f2f0 languageName: node linkType: hard -"@storybook/addon-interactions@npm:^7.3.0": - version: 7.3.1 - resolution: "@storybook/addon-interactions@npm:7.3.1" +"@storybook/addon-interactions@npm:^7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-interactions@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.3.1 - "@storybook/components": 7.3.1 - "@storybook/core-common": 7.3.1 - "@storybook/core-events": 7.3.1 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-common": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/instrumenter": 7.3.1 - "@storybook/manager-api": 7.3.1 - "@storybook/preview-api": 7.3.1 - "@storybook/theming": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/instrumenter": 7.5.3 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 jest-mock: ^27.0.6 polished: ^4.2.2 ts-dedent: ^2.2.0 @@ -3584,21 +3768,21 @@ __metadata: optional: true react-dom: optional: true - checksum: 48bceeeca339c094809ad72632826600b81c61204e45e7feca1ebf1e96877e53f414b901f4295aa5cc72088eba7217a1fc72ed934e3bdfb65187b6a9c0684fcd + checksum: fec8909767b4d55d00757cae775ddd5eafc9e596293ef7dcbaa378119227e6a3cf1612d94cd3ec30f48ccb9702fefd5a8370498809e2c176df563b064540fcd1 languageName: node linkType: hard -"@storybook/addon-measure@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/addon-measure@npm:7.3.1" +"@storybook/addon-measure@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-measure@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.3.1 - "@storybook/components": 7.3.1 - "@storybook/core-events": 7.3.1 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.3.1 - "@storybook/preview-api": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/types": 7.5.3 tiny-invariant: ^1.3.1 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -3608,21 +3792,21 @@ __metadata: optional: true react-dom: optional: true - checksum: 8ee172ca865b4cdd0151068ba58a4388a6c373f423fd8b4d050d6606b87a0b12a029f1b6b43f0e1071d44b9047ceb6c3dd291ba65986ff97144090967aafc624 + checksum: a0b6cf0a4d42ed9671dcf50df2c33dd5eadf6e1f32de6862ba3d3d507431831bc03c4a5be83566ec445635d2df180657bdc1e1a07a189b5b301c4a543229c8c1 languageName: node linkType: hard -"@storybook/addon-outline@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/addon-outline@npm:7.3.1" +"@storybook/addon-outline@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-outline@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.3.1 - "@storybook/components": 7.3.1 - "@storybook/core-events": 7.3.1 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.3.1 - "@storybook/preview-api": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/types": 7.5.3 ts-dedent: ^2.0.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -3632,19 +3816,19 @@ __metadata: optional: true react-dom: optional: true - checksum: 16f08e3540b730ca8664524bcb1fbd595f0d3b6d8cc35d6058aab2ea4e8a439c79524042e02868ba4a7686931e5d5c2a23696a1ec6a80f21d5a23511aef9ae3d + checksum: 07bf04a6427742594fcd8edc323a3a27cf6c249919b4d855725b23a580274bb777877d87fd7dab19829af4e93f5ac3a8f4574a85a852042a4f368e519139ea28 languageName: node linkType: hard -"@storybook/addon-toolbars@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/addon-toolbars@npm:7.3.1" +"@storybook/addon-toolbars@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-toolbars@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.3.1 - "@storybook/components": 7.3.1 - "@storybook/manager-api": 7.3.1 - "@storybook/preview-api": 7.3.1 - "@storybook/theming": 7.3.1 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/theming": 7.5.3 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -3653,21 +3837,21 @@ __metadata: optional: true react-dom: optional: true - checksum: 05ea1b8724fe003780e6db516e825642f12f3100ffc97888da6974adedbf1c3722ec53a8beba581d2fc9295302fec26eef9c0a270e6f5d207537f46f95dd8bcd + checksum: c61d953a53dd0eb23f3dfcb52b4227d3e3aa6b8bbd8260007b2334ceb2dc3910aa0633f18858e8caac0027b7badc57937a2094219c0f29ae414ce5c705b7a0bb languageName: node linkType: hard -"@storybook/addon-viewport@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/addon-viewport@npm:7.3.1" +"@storybook/addon-viewport@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/addon-viewport@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.3.1 - "@storybook/components": 7.3.1 - "@storybook/core-events": 7.3.1 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.3.1 - "@storybook/preview-api": 7.3.1 - "@storybook/theming": 7.3.1 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/theming": 7.5.3 memoizerific: ^1.11.3 prop-types: ^15.7.2 peerDependencies: @@ -3678,25 +3862,25 @@ __metadata: optional: true react-dom: optional: true - checksum: 98e396bc34b400eb6a7036f1efe7ce9ef625ea3f84a26575aa91247e010fd2a48f3374e3f8f7f136ba65f0a1acbffa049f60100e3e12d187687539aecd1cb419 + checksum: 4b324c9edcc96ba72573093934d862005e20265dbd1e3a4430f07ecab7c1ee577e01a5a7b75907e2ab89fcb59c80dede5f16e6a6795426219170529baff654af languageName: node linkType: hard -"@storybook/blocks@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/blocks@npm:7.3.1" +"@storybook/blocks@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/blocks@npm:7.5.3" dependencies: - "@storybook/channels": 7.3.1 - "@storybook/client-logger": 7.3.1 - "@storybook/components": 7.3.1 - "@storybook/core-events": 7.3.1 + "@storybook/channels": 7.5.3 + "@storybook/client-logger": 7.5.3 + "@storybook/components": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/csf": ^0.1.0 - "@storybook/docs-tools": 7.3.1 + "@storybook/docs-tools": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/manager-api": 7.3.1 - "@storybook/preview-api": 7.3.1 - "@storybook/theming": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/manager-api": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 "@types/lodash": ^4.14.167 color-convert: ^2.0.1 dequal: ^2.0.2 @@ -3705,25 +3889,25 @@ __metadata: memoizerific: ^1.11.3 polished: ^4.2.2 react-colorful: ^5.1.2 - telejson: ^7.0.3 + telejson: ^7.2.0 tocbot: ^4.20.1 ts-dedent: ^2.0.0 util-deprecate: ^1.0.2 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 3d26e742e37a0e5164345481d8557c752631565ae0e1a7d0b3652d49d8f1397c715423cd729ede62353451586b6e8641de3c2225fdc46fea0dd6be52836109b3 + checksum: 0b7506a52903ab319280e3af77a8e72c53d229df75187fe1d60330a903fc8926e09b7cc9debea1395afa8698c11050900f41ca24ac852bf93790e322affbfcdb languageName: node linkType: hard -"@storybook/builder-manager@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/builder-manager@npm:7.3.1" +"@storybook/builder-manager@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/builder-manager@npm:7.5.3" dependencies: "@fal-works/esbuild-plugin-global-externals": ^2.1.2 - "@storybook/core-common": 7.3.1 - "@storybook/manager": 7.3.1 - "@storybook/node-logger": 7.3.1 + "@storybook/core-common": 7.5.3 + "@storybook/manager": 7.5.3 + "@storybook/node-logger": 7.5.3 "@types/ejs": ^3.1.1 "@types/find-cache-dir": ^3.2.1 "@yarnpkg/esbuild-plugin-pnp": ^3.0.0-rc.10 @@ -3736,23 +3920,22 @@ __metadata: fs-extra: ^11.1.0 process: ^0.11.10 util: ^0.12.4 - checksum: 97b102675ce46670e8d10aae143b7fd82ec605d687f8cdd669230e719614771991a29a6fadbcca3d7ee8a5fc369c2d6cbd228e8ecf920511ab7e8a97bfae19ad + checksum: dab636019edb2c9ff350c340a8722b49a61f013f90315a616f668175c441cee39a62308909fbf1e2429c14277809dd78a8322c16d8e7a5ab1fc7c3363ff19d98 languageName: node linkType: hard -"@storybook/builder-vite@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/builder-vite@npm:7.3.1" +"@storybook/builder-vite@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/builder-vite@npm:7.5.3" dependencies: - "@storybook/channels": 7.3.1 - "@storybook/client-logger": 7.3.1 - "@storybook/core-common": 7.3.1 - "@storybook/csf-plugin": 7.3.1 - "@storybook/mdx2-csf": ^1.0.0 - "@storybook/node-logger": 7.3.1 - "@storybook/preview": 7.3.1 - "@storybook/preview-api": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/channels": 7.5.3 + "@storybook/client-logger": 7.5.3 + "@storybook/core-common": 7.5.3 + "@storybook/csf-plugin": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/preview": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/types": 7.5.3 "@types/find-cache-dir": ^3.2.1 browser-assert: ^1.2.1 es-module-lexer: ^0.9.3 @@ -3760,13 +3943,11 @@ __metadata: find-cache-dir: ^3.0.0 fs-extra: ^11.1.0 magic-string: ^0.30.0 - remark-external-links: ^8.0.0 - remark-slug: ^6.0.0 rollup: ^2.25.0 || ^3.3.0 peerDependencies: "@preact/preset-vite": "*" typescript: ">= 4.3.x" - vite: ^3.0.0 || ^4.0.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 vite-plugin-glimmerx: "*" peerDependenciesMeta: "@preact/preset-vite": @@ -3775,7 +3956,7 @@ __metadata: optional: true vite-plugin-glimmerx: optional: true - checksum: 9bb7c703051d549955e5d545de090c51de42349b026922c1ddc838973bf05b181e03bf1f96bcd9159c00b2075f5bdd8f5f61ceb86656b9f4aecae074258c9959 + checksum: 5b323bfc89e6c02728224d08dacac6a8b669150ebacf97c53a28a65aed01d4a03b767c3a6b2a128cecba8718ce8636ce8e6cee6f006210d3a4acfb18d5a8d15c languageName: node linkType: hard @@ -3793,21 +3974,36 @@ __metadata: languageName: node linkType: hard -"@storybook/cli@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/cli@npm:7.3.1" +"@storybook/channels@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/channels@npm:7.5.3" + dependencies: + "@storybook/client-logger": 7.5.3 + "@storybook/core-events": 7.5.3 + "@storybook/global": ^5.0.0 + qs: ^6.10.0 + telejson: ^7.2.0 + tiny-invariant: ^1.3.1 + checksum: 1d354798d977b1f52dfa457e40352f38776016af7c6239dd6348cd80206df774401f9a7858bde72cb9f7be3d93e3bbc537eb3c07187a337559c60c65f962c1da + languageName: node + linkType: hard + +"@storybook/cli@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/cli@npm:7.5.3" dependencies: "@babel/core": ^7.22.9 "@babel/preset-env": ^7.22.9 "@babel/types": ^7.22.5 "@ndelangen/get-tarball": ^3.0.7 - "@storybook/codemod": 7.3.1 - "@storybook/core-common": 7.3.1 - "@storybook/core-server": 7.3.1 - "@storybook/csf-tools": 7.3.1 - "@storybook/node-logger": 7.3.1 - "@storybook/telemetry": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/codemod": 7.5.3 + "@storybook/core-common": 7.5.3 + "@storybook/core-events": 7.5.3 + "@storybook/core-server": 7.5.3 + "@storybook/csf-tools": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/telemetry": 7.5.3 + "@storybook/types": 7.5.3 "@types/semver": ^7.3.4 "@yarnpkg/fslib": 2.10.3 "@yarnpkg/libzip": 2.3.0 @@ -3840,7 +4036,7 @@ __metadata: bin: getstorybook: ./bin/index.js sb: ./bin/index.js - checksum: ecb9b1304e8fa8e24ec67ab903fdea10e20c77377fc5a7ffc58cde47cf738d7f95915f6cdc63720c2e4c536c8316f412bac411890181f9c2a41cafab86e636ed + checksum: 1c65a342719e8da45dfe932c48fcfbfabb315e6c850ba0ee04193253ac766aaca9b2c8661e639c3f777d325d5bab3c80fc378f2fe20756f6512c6d960e4f9f8c languageName: node linkType: hard @@ -3853,17 +4049,26 @@ __metadata: languageName: node linkType: hard -"@storybook/codemod@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/codemod@npm:7.3.1" +"@storybook/client-logger@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/client-logger@npm:7.5.3" + dependencies: + "@storybook/global": ^5.0.0 + checksum: 0931daa2274f93dc1921e0c48cfb3a938b4c88843327e832c49115ea0aaa48ee5ddaeb37dc51ba0c7daac84215d62a9101befbfbf0088ce272396eb6c3f1d046 + languageName: node + linkType: hard + +"@storybook/codemod@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/codemod@npm:7.5.3" dependencies: "@babel/core": ^7.22.9 "@babel/preset-env": ^7.22.9 "@babel/types": ^7.22.5 "@storybook/csf": ^0.1.0 - "@storybook/csf-tools": 7.3.1 - "@storybook/node-logger": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/csf-tools": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/types": 7.5.3 "@types/cross-spawn": ^6.0.2 cross-spawn: ^7.0.3 globby: ^11.0.2 @@ -3871,43 +4076,73 @@ __metadata: lodash: ^4.17.21 prettier: ^2.8.0 recast: ^0.23.1 - checksum: 300c6b996ce4f4551793ed6349abedc89b248f8a24cb49109b9c83406e6aa351697a63017cb49f7ee60361e7b490f902c2ce7498dbb550f3abdfea4bf2394c84 + checksum: e701293d237c9f05dd2237cca77528c87412eeff3df516e7ab41b19521198855bf74347bc252a19ce4966d6727d4d9b9b49482917445d53e7fa1cdb3e49f1b29 languageName: node linkType: hard -"@storybook/components@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/components@npm:7.3.1" +"@storybook/components@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/components@npm:7.5.3" dependencies: "@radix-ui/react-select": ^1.2.2 "@radix-ui/react-toolbar": ^1.0.4 - "@storybook/client-logger": 7.3.1 + "@storybook/client-logger": 7.5.3 "@storybook/csf": ^0.1.0 "@storybook/global": ^5.0.0 - "@storybook/icons": ^1.1.6 - "@storybook/theming": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 memoizerific: ^1.11.3 use-resize-observer: ^9.1.0 util-deprecate: ^1.0.2 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 6fb7737c8207b5736daa4b55dd2bc92045257c1a3311e06f06b8251ad8a2b0bc56921bae1bd2ba0b775d372208f30de259d76e83afb68217656db56d085c2953 + checksum: a73dbc33e0767b3152fa075e632635ba3bb2ab41917969ebd6c82790e47bc414832f5bd50be7d0a9f9d598b6241b96226eb0fe3f0da4c98ea2d6ccf439a86875 languageName: node linkType: hard -"@storybook/core-client@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/core-client@npm:7.3.1" +"@storybook/core-client@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/core-client@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.3.1 - "@storybook/preview-api": 7.3.1 - checksum: fb3478723180dff6782cca1bb88742d292f0727b580ede96262c40881079f1061d14b5ee6215f0ee922bf5506465d159d034e73389d3bcaf695501a319d4c1b0 + "@storybook/client-logger": 7.5.3 + "@storybook/preview-api": 7.5.3 + checksum: 9533de3f66516c223d90ba7a6a61c9aceab0cf19553d8499b9165f286fcb17a326581f5ef963161d6b18dee2640a6e0175f6ed579a0c21036e6d0993a5706a7f + languageName: node + linkType: hard + +"@storybook/core-common@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/core-common@npm:7.5.3" + dependencies: + "@storybook/core-events": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/types": 7.5.3 + "@types/find-cache-dir": ^3.2.1 + "@types/node": ^18.0.0 + "@types/node-fetch": ^2.6.4 + "@types/pretty-hrtime": ^1.0.0 + chalk: ^4.1.0 + esbuild: ^0.18.0 + esbuild-register: ^3.5.0 + file-system-cache: 2.3.0 + find-cache-dir: ^3.0.0 + find-up: ^5.0.0 + fs-extra: ^11.1.0 + glob: ^10.0.0 + handlebars: ^4.7.7 + lazy-universal-dotenv: ^4.0.0 + node-fetch: ^2.0.0 + picomatch: ^2.3.0 + pkg-dir: ^5.0.0 + pretty-hrtime: ^1.0.3 + resolve-from: ^5.0.0 + ts-dedent: ^2.0.0 + checksum: 152816728cb1c3c14038509c9f7da78331bb91fb0ab766fff25651c9c91e246617f78e9bd4ec6adae21bd3c92c2cfdfbaf5162fedf83b2e8725970a5ac3b28d4 languageName: node linkType: hard -"@storybook/core-common@npm:7.3.1, @storybook/core-common@npm:^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": +"@storybook/core-common@npm:^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": version: 7.3.1 resolution: "@storybook/core-common@npm:7.3.1" dependencies: @@ -3944,27 +4179,36 @@ __metadata: languageName: node linkType: hard -"@storybook/core-server@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/core-server@npm:7.3.1" +"@storybook/core-events@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/core-events@npm:7.5.3" + dependencies: + ts-dedent: ^2.0.0 + checksum: 7f59f1fe5b5389b7f022fb68a295c80a6bf737d3bdd9233923a2efb042fd966b0a7c980467edcc2e3d5cf451ba080be54b84353f645cd868bbad9868f3c28d92 + languageName: node + linkType: hard + +"@storybook/core-server@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/core-server@npm:7.5.3" dependencies: "@aw-web-design/x-default-browser": 1.4.126 "@discoveryjs/json-ext": ^0.5.3 - "@storybook/builder-manager": 7.3.1 - "@storybook/channels": 7.3.1 - "@storybook/core-common": 7.3.1 - "@storybook/core-events": 7.3.1 + "@storybook/builder-manager": 7.5.3 + "@storybook/channels": 7.5.3 + "@storybook/core-common": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/csf": ^0.1.0 - "@storybook/csf-tools": 7.3.1 + "@storybook/csf-tools": 7.5.3 "@storybook/docs-mdx": ^0.1.0 "@storybook/global": ^5.0.0 - "@storybook/manager": 7.3.1 - "@storybook/node-logger": 7.3.1 - "@storybook/preview-api": 7.3.1 - "@storybook/telemetry": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/manager": 7.5.3 + "@storybook/node-logger": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/telemetry": 7.5.3 + "@storybook/types": 7.5.3 "@types/detect-port": ^1.3.0 - "@types/node": ^16.0.0 + "@types/node": ^18.0.0 "@types/pretty-hrtime": ^1.0.0 "@types/semver": ^7.3.4 better-opn: ^3.0.2 @@ -3982,29 +4226,45 @@ __metadata: prompts: ^2.4.0 read-pkg-up: ^7.0.1 semver: ^7.3.7 - serve-favicon: ^2.5.0 - telejson: ^7.0.3 + telejson: ^7.2.0 tiny-invariant: ^1.3.1 ts-dedent: ^2.0.0 util: ^0.12.4 util-deprecate: ^1.0.2 watchpack: ^2.2.0 ws: ^8.2.3 - checksum: 375d0b15a23e017de9e6483cd695ce057f84eaa943ad5412dd36a6ed1334d6d041ecdec93d6a42d393270c93b9eed8112168ad73a175ab7445c8ee80a3ae0b25 + checksum: 8d5da882230ceba7a35e769ccf5da0ac3964ad22ae14f8f2aed67ee84d916d3e4ff74dfd18e29eb59df18991a113f73f8b99ab16c772153100f57573595c3c71 languageName: node linkType: hard -"@storybook/csf-plugin@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/csf-plugin@npm:7.3.1" +"@storybook/csf-plugin@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/csf-plugin@npm:7.5.3" dependencies: - "@storybook/csf-tools": 7.3.1 + "@storybook/csf-tools": 7.5.3 unplugin: ^1.3.1 - checksum: 00f99ec8ad45b798482881acf8530258cd6abb6ecb96bb912e8d9bebb23cc276be45774f5e1d5c4612c884290268e67737eeebec778092a689232f6c79d70435 + checksum: 3252d8834e60b73fcb81601035e48b3847a1fdbef6ccce040b2685b100ca37c9faee4789124367c97e0a4cc018db323aa4f639ca1200b7921ef450276dd5d60e languageName: node linkType: hard -"@storybook/csf-tools@npm:7.3.1, @storybook/csf-tools@npm:^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": +"@storybook/csf-tools@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/csf-tools@npm:7.5.3" + dependencies: + "@babel/generator": ^7.22.9 + "@babel/parser": ^7.22.7 + "@babel/traverse": ^7.22.8 + "@babel/types": ^7.22.5 + "@storybook/csf": ^0.1.0 + "@storybook/types": 7.5.3 + fs-extra: ^11.1.0 + recast: ^0.23.1 + ts-dedent: ^2.0.0 + checksum: 32867878a588feb03701dedb1dbb65f18aaf64d464c642fb68efa4bc6ad35b0bbfdbf452fdf38b997a8139af50ee44f5dc20c27d1fb3870bc4ef66b84a41c457 + languageName: node + linkType: hard + +"@storybook/csf-tools@npm:^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": version: 7.3.1 resolution: "@storybook/csf-tools@npm:7.3.1" dependencies: @@ -4037,17 +4297,17 @@ __metadata: languageName: node linkType: hard -"@storybook/docs-tools@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/docs-tools@npm:7.3.1" +"@storybook/docs-tools@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/docs-tools@npm:7.5.3" dependencies: - "@storybook/core-common": 7.3.1 - "@storybook/preview-api": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/core-common": 7.5.3 + "@storybook/preview-api": 7.5.3 + "@storybook/types": 7.5.3 "@types/doctrine": ^0.0.3 doctrine: ^3.0.0 lodash: ^4.17.21 - checksum: 9c0d85e7fabe3338335e5e0a96f424e9d30b023613629ae0bb96fa579db74fdb975a464cec0c00a1c804d137d2c5351802b1d792b205541a3f36c8cfaf2d2c21 + checksum: 27d8e55927751a0ad553e1af2b173f186f0b5ef36055a462d2e098eb79bd786844fbc45d1c6e1d98dc89506abc2138a559852f7e10ce252ee8e5bd9a8d010521 languageName: node linkType: hard @@ -4067,26 +4327,16 @@ __metadata: languageName: node linkType: hard -"@storybook/icons@npm:^1.1.6": - version: 1.1.6 - resolution: "@storybook/icons@npm:1.1.6" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: b5774c9e61622886e006d1a87252352246af5236668d9fb2fad00c56c0bb2e1ddbdbab3535b4c806672e62d4e280d7be438596bc3888f74349490e138d9f3acf - languageName: node - linkType: hard - -"@storybook/instrumenter@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/instrumenter@npm:7.3.1" +"@storybook/instrumenter@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/instrumenter@npm:7.5.3" dependencies: - "@storybook/channels": 7.3.1 - "@storybook/client-logger": 7.3.1 - "@storybook/core-events": 7.3.1 + "@storybook/channels": 7.5.3 + "@storybook/client-logger": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.3.1 - checksum: f909a83cc5321c7ea9b7df443268255a1ee4fdc7776df601c8a795677ae3c41e1f350dca779baad4131e8ddf7ddb28b7cc26b5a1cf555aa8beabf0430852882a + "@storybook/preview-api": 7.5.3 + checksum: 32a63211babe6ccd43270ec2d566b84c735e5d9e9e0112ecff7fc43e4d170fdd90f7644e9c999e2cd4d2cba8911a2d7dd648cc8771d8ec0fb4759ddde254054b languageName: node linkType: hard @@ -4102,36 +4352,36 @@ __metadata: languageName: node linkType: hard -"@storybook/manager-api@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/manager-api@npm:7.3.1" +"@storybook/manager-api@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/manager-api@npm:7.5.3" dependencies: - "@storybook/channels": 7.3.1 - "@storybook/client-logger": 7.3.1 - "@storybook/core-events": 7.3.1 + "@storybook/channels": 7.5.3 + "@storybook/client-logger": 7.5.3 + "@storybook/core-events": 7.5.3 "@storybook/csf": ^0.1.0 "@storybook/global": ^5.0.0 - "@storybook/router": 7.3.1 - "@storybook/theming": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/router": 7.5.3 + "@storybook/theming": 7.5.3 + "@storybook/types": 7.5.3 dequal: ^2.0.2 lodash: ^4.17.21 memoizerific: ^1.11.3 semver: ^7.3.7 store2: ^2.14.2 - telejson: ^7.0.3 + telejson: ^7.2.0 ts-dedent: ^2.0.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: c7e0183c651fda634dc635dfa01b60cac258071848474bc77851ebbaf320bcfe2683d57e091aba6fc838d6d0cb32ec84027efe1c812ef1b05feb2841a27b3656 + checksum: 82bb352a4e39f1035d969c584ff2c97c693f9b392b402ce7010507788f06c9a0024d1c23909f501a6524db0b393c26eb2361ba1c0374c62fa84c2b8a5bf2a4d5 languageName: node linkType: hard -"@storybook/manager@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/manager@npm:7.3.1" - checksum: d0a2a3d7ac327f166f52750bdf431f8500f3081ffde115244f3e5351040aef3a9fb4287b8fc3dad48bb31756aeb57266c5a9f43419ae9911a56bb2cd4b27613f +"@storybook/manager@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/manager@npm:7.5.3" + checksum: 8f508f09a8a4bf662eeba6eea7eb0cf07e8590e1b8d2c82490bb21f5ce6e31937890de8fd9aac2b739bfc476fa5e445d3ad9d147d135d950bc9f3a9c7e638a77 languageName: node linkType: hard @@ -4149,14 +4399,43 @@ __metadata: languageName: node linkType: hard -"@storybook/postinstall@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/postinstall@npm:7.3.1" - checksum: 8189442c9c85cd151f5b7db5b5cef09c0231a67794580216969e22f6a0eda70e8e94fb2ca175ebdda757b9836e996d2c854b4607d99405b20a90dd5fc1b0213c +"@storybook/node-logger@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/node-logger@npm:7.5.3" + checksum: 9dec669a9a0d9862ca5f835a23b1b22b62eee5b74ff9a8759d323a06893baa9bdc2305c62f067ca5cbc80df017e564b8304bc9d161821780f32c77667601f76c + languageName: node + linkType: hard + +"@storybook/postinstall@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/postinstall@npm:7.5.3" + checksum: 66e54ca864449c5c436f8c3260b3f78dad8844fc3dc2e73174ad186c64dfbf0b11020993e858abdc7e411906273957e819af899c96dd507603a1566359900f57 + languageName: node + linkType: hard + +"@storybook/preview-api@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/preview-api@npm:7.5.3" + dependencies: + "@storybook/channels": 7.5.3 + "@storybook/client-logger": 7.5.3 + "@storybook/core-events": 7.5.3 + "@storybook/csf": ^0.1.0 + "@storybook/global": ^5.0.0 + "@storybook/types": 7.5.3 + "@types/qs": ^6.9.5 + dequal: ^2.0.2 + lodash: ^4.17.21 + memoizerific: ^1.11.3 + qs: ^6.10.0 + synchronous-promise: ^2.0.15 + ts-dedent: ^2.0.0 + util-deprecate: ^1.0.2 + checksum: 9e75ad27a031c4b17200ffc815452d3379c6a3ef28c21ca4c389521d433be6a217f2a84ee7c38b5562c31783c31101d939233053e2634f62fe1f30e39fd1fcde languageName: node linkType: hard -"@storybook/preview-api@npm:7.3.1, @storybook/preview-api@npm:^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": +"@storybook/preview-api@npm:^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": version: 7.3.1 resolution: "@storybook/preview-api@npm:7.3.1" dependencies: @@ -4178,61 +4457,60 @@ __metadata: languageName: node linkType: hard -"@storybook/preview@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/preview@npm:7.3.1" - checksum: 0a73682879ef2ca28077d31d5c6fd2bf6b5b00f11beacf7de696dc2bb3c78b07b21c3ff5d5600d0204952c272ff0a88877bd0977ca11244bb4f2823b0716d911 +"@storybook/preview@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/preview@npm:7.5.3" + checksum: 4eac804aff380e7d4e7dbdc1721595056de06bff60a9a57d2d00c9dd1ec8fb58fd97f1a346822af5294148a4fa14f3f924c26b7f672711609a5c190b2e8b7003 languageName: node linkType: hard -"@storybook/react-dom-shim@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/react-dom-shim@npm:7.3.1" +"@storybook/react-dom-shim@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/react-dom-shim@npm:7.5.3" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: be0e9bb1bc797d0698e4d681e3c4d356bd071f9aa1308314c3c8878c18582e7668dca08e8dbfb101cddabdccb3573c86bc6766a05916dd0016a68baa17ecca88 + checksum: 41071d4102202d5965fb3f7068c4864160d98f63ddac67693e1bf8126de1d520968d1c094873dd8564165e7f9c35bb7c4894972047d8378f70a0b2f3c80485fe languageName: node linkType: hard -"@storybook/react-vite@npm:^7.3.0": - version: 7.3.1 - resolution: "@storybook/react-vite@npm:7.3.1" +"@storybook/react-vite@npm:^7.5.3": + version: 7.5.3 + resolution: "@storybook/react-vite@npm:7.5.3" dependencies: - "@joshwooding/vite-plugin-react-docgen-typescript": 0.2.1 + "@joshwooding/vite-plugin-react-docgen-typescript": 0.3.0 "@rollup/pluginutils": ^5.0.2 - "@storybook/builder-vite": 7.3.1 - "@storybook/react": 7.3.1 + "@storybook/builder-vite": 7.5.3 + "@storybook/react": 7.5.3 "@vitejs/plugin-react": ^3.0.1 - ast-types: ^0.14.2 magic-string: ^0.30.0 - react-docgen: 6.0.0-alpha.3 + react-docgen: ^6.0.2 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - vite: ^3.0.0 || ^4.0.0 - checksum: ad52124be70af812701f9d1fb41ebdf3499abd6f689de752b4de960179cf48a972c749f0f3eff1a5b4e425ca239869ba08b076a1c0982a2e274de8ef35b30998 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + checksum: 701ae04b08e4f7c535a15dbd0e21f5d14e2826feb41dcb7b3615d2845aff5f5c57796a795a971d5b06a423b85a244311e847c8ffdc6190ba986feb4dd9939c88 languageName: node linkType: hard -"@storybook/react@npm:7.3.1, @storybook/react@npm:^7.3.0": - version: 7.3.1 - resolution: "@storybook/react@npm:7.3.1" +"@storybook/react@npm:7.5.3, @storybook/react@npm:^7.5.3": + version: 7.5.3 + resolution: "@storybook/react@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.3.1 - "@storybook/core-client": 7.3.1 - "@storybook/docs-tools": 7.3.1 + "@storybook/client-logger": 7.5.3 + "@storybook/core-client": 7.5.3 + "@storybook/docs-tools": 7.5.3 "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.3.1 - "@storybook/react-dom-shim": 7.3.1 - "@storybook/types": 7.3.1 + "@storybook/preview-api": 7.5.3 + "@storybook/react-dom-shim": 7.5.3 + "@storybook/types": 7.5.3 "@types/escodegen": ^0.0.6 "@types/estree": ^0.0.51 - "@types/node": ^16.0.0 + "@types/node": ^18.0.0 acorn: ^7.4.1 acorn-jsx: ^5.3.1 acorn-walk: ^7.2.0 - escodegen: ^2.0.0 + escodegen: ^2.1.0 html-tags: ^3.1.0 lodash: ^4.17.21 prop-types: ^15.7.2 @@ -4247,37 +4525,37 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: fb2c5b7548794d8d05c6d0fbe7660cb5fde53b8f4163b1790300c54207f28148af3605a7bbcf8c8b44e9d60392f855eb9ed7e73e1fb603c769c8e7c56feb6411 + checksum: 0b931d4feb424bea501bd4977f9b61479d0bbe550998d4537e2c0370b39bc66e604f0408a063477641f9d65fde1e88702154b94ca16e00b9d023c44bc72925bf languageName: node linkType: hard -"@storybook/router@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/router@npm:7.3.1" +"@storybook/router@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/router@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.3.1 + "@storybook/client-logger": 7.5.3 memoizerific: ^1.11.3 qs: ^6.10.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: ca13c69d74a91918272c7c3707f632e417bc41534d950e67524cfdf75ed4bbe16f467e403196f1895c2d879c5e59b54eeaca6d14f654c476ec70b209e48060fc + checksum: 7c7c9a6f6e0ff6a46ab284c94e33398364115f6c4e06bbab89df770efeb654819fced83e5f37c627af91b620134c9c09fcdc112bc24698350dd8f6e2fbeaeaf4 languageName: node linkType: hard -"@storybook/telemetry@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/telemetry@npm:7.3.1" +"@storybook/telemetry@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/telemetry@npm:7.5.3" dependencies: - "@storybook/client-logger": 7.3.1 - "@storybook/core-common": 7.3.1 - "@storybook/csf-tools": 7.3.1 + "@storybook/client-logger": 7.5.3 + "@storybook/core-common": 7.5.3 + "@storybook/csf-tools": 7.5.3 chalk: ^4.1.0 detect-package-manager: ^2.0.1 fetch-retry: ^5.0.2 fs-extra: ^11.1.0 read-pkg-up: ^7.0.1 - checksum: 3a80d9d8013afc8aac5ca089f52e6f6ced93e7633b471f8dfcd0d28bf764c020e1a31534f08eb614c34bcd95d0e59d0622ac3c51356fcaead5b337756ca0e579 + checksum: b031ace4e1b3c01ea43d132de01f49393007344abf98ab496e2b74bb0e15372b92bf98754fb81095ba66861ac570e730b2ed637f686e5261ece0a4ad9901db63 languageName: node linkType: hard @@ -4296,15 +4574,15 @@ __metadata: "@babel/types": ^7.22.5 "@jest/types": ^29.6.3 "@storybook/addon-coverage": ^0.0.9 - "@storybook/addon-essentials": ^7.3.0 - "@storybook/addon-interactions": ^7.3.0 + "@storybook/addon-essentials": ^7.5.3 + "@storybook/addon-interactions": ^7.5.3 "@storybook/core-common": ^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0 "@storybook/csf": ^0.1.1 "@storybook/csf-tools": ^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0 "@storybook/jest": ^0.2.2 "@storybook/preview-api": ^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0 - "@storybook/react": ^7.3.0 - "@storybook/react-vite": ^7.3.0 + "@storybook/react": ^7.5.3 + "@storybook/react-vite": ^7.5.3 "@storybook/testing-library": ^0.2.0 "@swc/core": ^1.3.18 "@swc/jest": ^0.2.23 @@ -4340,7 +4618,7 @@ __metadata: read-pkg-up: ^7.0.1 rimraf: ^3.0.2 semver: ^7.5.4 - storybook: ^7.3.0 + storybook: ^7.5.3 tempy: ^1.0.1 ts-dedent: ^2.0.0 ts-jest: ^29.0.0 @@ -4364,18 +4642,18 @@ __metadata: languageName: node linkType: hard -"@storybook/theming@npm:7.3.1": - version: 7.3.1 - resolution: "@storybook/theming@npm:7.3.1" +"@storybook/theming@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/theming@npm:7.5.3" dependencies: "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 - "@storybook/client-logger": 7.3.1 + "@storybook/client-logger": 7.5.3 "@storybook/global": ^5.0.0 memoizerific: ^1.11.3 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: ea7bdf72067c01fe6f977bd1ee3b4dd1726b9d476e77081e6662fd9755df270b0c9e8880a8802b0426fb2376095cd6b7d393c1f5a63efc37d340368ee05b1bf4 + checksum: e9769d0ad9144d47755d89fad0788ca6fa990116e2c8a3ab7c491357d71adea9feb248d1a5d6a81f4981720feaf80f42373a9ed4adb85906babc14422824fae9 languageName: node linkType: hard @@ -4391,6 +4669,18 @@ __metadata: languageName: node linkType: hard +"@storybook/types@npm:7.5.3": + version: 7.5.3 + resolution: "@storybook/types@npm:7.5.3" + dependencies: + "@storybook/channels": 7.5.3 + "@types/babel__core": ^7.0.0 + "@types/express": ^4.7.0 + file-system-cache: 2.3.0 + checksum: f9c14fc4579260fdc014e9f759c89b2214c90b9c75a31f7bf6e11d404d47d5d350650258febf8c13467615aeabab8ac4008af8cec5fc90959639bed68ce78408 + languageName: node + linkType: hard + "@swc/core-darwin-arm64@npm:1.3.44": version: 1.3.44 resolution: "@swc/core-darwin-arm64@npm:1.3.44" @@ -4622,6 +4912,19 @@ __metadata: languageName: node linkType: hard +"@types/babel__core@npm:^7.18.0": + version: 7.20.4 + resolution: "@types/babel__core@npm:7.20.4" + dependencies: + "@babel/parser": ^7.20.7 + "@babel/types": ^7.20.7 + "@types/babel__generator": "*" + "@types/babel__template": "*" + "@types/babel__traverse": "*" + checksum: 75ed6072213423d2b827740d68bbf96f5a7050ce8bd842dde0ceec8d352d06e847166bac757df4beba55525b65f8727c0432adeb5cb4f83aa42e155ac555767e + languageName: node + linkType: hard + "@types/babel__generator@npm:*": version: 7.6.4 resolution: "@types/babel__generator@npm:7.6.4" @@ -4650,6 +4953,15 @@ __metadata: languageName: node linkType: hard +"@types/babel__traverse@npm:^7.18.0": + version: 7.20.4 + resolution: "@types/babel__traverse@npm:7.20.4" + dependencies: + "@babel/types": ^7.20.7 + checksum: f044ba80e00d07e46ee917c44f96cfc268fcf6d3871f7dfb8db8d3c6dab1508302f3e6bc508352a4a3ae627d2522e3fc500fa55907e0410a08e2e0902a8f3576 + languageName: node + linkType: hard + "@types/body-parser@npm:*": version: 1.19.2 resolution: "@types/body-parser@npm:1.19.2" @@ -4706,6 +5018,13 @@ __metadata: languageName: node linkType: hard +"@types/doctrine@npm:^0.0.6": + version: 0.0.6 + resolution: "@types/doctrine@npm:0.0.6" + checksum: 6b042161d53cfb4f4cf92a6d21c78659fe40dcd2e190d3a63a0ca4113fceb1a61d4a2bcc9d5fde7fbe476ab78c55f746b50915c3dca647a6b7e2cbadee4700aa + languageName: node + linkType: hard + "@types/ejs@npm:^3.1.1": version: 3.1.2 resolution: "@types/ejs@npm:3.1.2" @@ -4901,6 +5220,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^18.0.0": + version: 18.18.9 + resolution: "@types/node@npm:18.18.9" + dependencies: + undici-types: ~5.26.4 + checksum: 629ce20357586144031cb43d601617eef45e59460dea6b1e123f708e6885664f44d54f65e5b72b2614af5b8613f3652ced832649c0b991accbc6a85139befa51 + languageName: node + linkType: hard + "@types/normalize-package-data@npm:^2.4.0": version: 2.4.1 resolution: "@types/normalize-package-data@npm:2.4.1" @@ -4954,6 +5282,13 @@ __metadata: languageName: node linkType: hard +"@types/resolve@npm:^1.20.2": + version: 1.20.5 + resolution: "@types/resolve@npm:1.20.5" + checksum: 95d33b12fe1419873e415f83d1d5fcaf3a145e497763b11491fa90a4ab8c18edb2fdec6df60e290208df30244d34763c69b5fd01d63c34c986808323f3b1667e + languageName: node + linkType: hard + "@types/scheduler@npm:*": version: 0.16.3 resolution: "@types/scheduler@npm:0.16.3" @@ -5434,15 +5769,6 @@ __metadata: languageName: node linkType: hard -"ast-types@npm:^0.14.2": - version: 0.14.2 - resolution: "ast-types@npm:0.14.2" - dependencies: - tslib: ^2.0.1 - checksum: 8674a77307764979f0a0b2006b7223a4b789abffaa7acbf6a1132650a799252155170173a1ff6a7fb6897f59437fc955f2707bdfc391b0797750898876e6c9ed - languageName: node - linkType: hard - "ast-types@npm:^0.16.1": version: 0.16.1 resolution: "ast-types@npm:0.16.1" @@ -5900,28 +6226,6 @@ __metadata: languageName: node linkType: hard -"c8@npm:^7.6.0": - version: 7.13.0 - resolution: "c8@npm:7.13.0" - dependencies: - "@bcoe/v8-coverage": ^0.2.3 - "@istanbuljs/schema": ^0.1.3 - find-up: ^5.0.0 - foreground-child: ^2.0.0 - istanbul-lib-coverage: ^3.2.0 - istanbul-lib-report: ^3.0.0 - istanbul-reports: ^3.1.4 - rimraf: ^3.0.2 - test-exclude: ^6.0.0 - v8-to-istanbul: ^9.0.0 - yargs: ^16.2.0 - yargs-parser: ^20.2.9 - bin: - c8: bin/c8.js - checksum: 491abf4cf3097cdcfd24dbac49162f1383861c22c77fdd9280bcd38240e1e07d2c6a59da5d4df59a61a8204e2fc297d31fd526e495faf8d2f20dcc12a37b144c - languageName: node - linkType: hard - "cac@npm:^6.7.12": version: 6.7.14 resolution: "cac@npm:6.7.14" @@ -6174,7 +6478,7 @@ __metadata: languageName: node linkType: hard -"cliui@npm:^7.0.2, cliui@npm:^7.0.4": +"cliui@npm:^7.0.4": version: 7.0.4 resolution: "cliui@npm:7.0.4" dependencies: @@ -6332,13 +6636,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^2.19.0": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e - languageName: node - linkType: hard - "commander@npm:^3.0.2": version: 3.0.2 resolution: "commander@npm:3.0.2" @@ -6676,13 +6973,6 @@ __metadata: languageName: node linkType: hard -"deep-is@npm:~0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 - languageName: node - linkType: hard - "deepmerge@npm:^4.0.0, deepmerge@npm:^4.2.2": version: 4.3.1 resolution: "deepmerge@npm:4.3.1" @@ -7210,6 +7500,17 @@ __metadata: languageName: node linkType: hard +"esbuild-register@npm:^3.5.0": + version: 3.5.0 + resolution: "esbuild-register@npm:3.5.0" + dependencies: + debug: ^4.3.4 + peerDependencies: + esbuild: ">=0.12 <1" + checksum: f4307753c9672a2c901d04a1165031594a854f0a4c6f4c1db08aa393b68a193d38f2df483dc8ca0513e89f7b8998415e7e26fb9830989fb8cdccc5fb5f181c6b + languageName: node + linkType: hard + "esbuild@npm:^0.17.6": version: 0.17.19 resolution: "esbuild@npm:0.17.19" @@ -7392,14 +7693,13 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^2.0.0": - version: 2.0.0 - resolution: "escodegen@npm:2.0.0" +"escodegen@npm:^2.1.0": + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" dependencies: esprima: ^4.0.1 estraverse: ^5.2.0 esutils: ^2.0.2 - optionator: ^0.8.1 source-map: ~0.6.1 dependenciesMeta: source-map: @@ -7407,7 +7707,7 @@ __metadata: bin: escodegen: bin/escodegen.js esgenerate: bin/esgenerate.js - checksum: 5aa6b2966fafe0545e4e77936300cc94ad57cfe4dc4ebff9950492eaba83eef634503f12d7e3cbd644ecc1bab388ad0e92b06fd32222c9281a75d1cf02ec6cef + checksum: 096696407e161305cd05aebb95134ad176708bc5cb13d0dcc89a5fcbb959b8ed757e7f2591a5f8036f8f4952d4a724de0df14cd419e29212729fa6df5ce16bf6 languageName: node linkType: hard @@ -7428,17 +7728,6 @@ __metadata: languageName: node linkType: hard -"estree-to-babel@npm:^3.1.0": - version: 3.2.1 - resolution: "estree-to-babel@npm:3.2.1" - dependencies: - "@babel/traverse": ^7.1.6 - "@babel/types": ^7.2.0 - c8: ^7.6.0 - checksum: a4584d0c60b80ce41abe91b11052f5d48635e811c67839942c4ebd51aa33d9f9b156ad615f71ceae2a8260b5e3054f36d73db6d0d2a3b9951483f4b6187495c8 - languageName: node - linkType: hard - "estree-walker@npm:^2.0.2": version: 2.0.2 resolution: "estree-walker@npm:2.0.2" @@ -7631,13 +7920,6 @@ __metadata: languageName: node linkType: hard -"fast-levenshtein@npm:~2.0.6": - version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" - checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c - languageName: node - linkType: hard - "fastq@npm:^1.6.0": version: 1.15.0 resolution: "fastq@npm:1.15.0" @@ -7993,6 +8275,13 @@ __metadata: languageName: node linkType: hard +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1 + languageName: node + linkType: hard + "functions-have-names@npm:^1.2.2": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" @@ -8383,6 +8672,15 @@ __metadata: languageName: node linkType: hard +"hasown@npm:^2.0.0": + version: 2.0.0 + resolution: "hasown@npm:2.0.0" + dependencies: + function-bind: ^1.1.2 + checksum: 6151c75ca12554565098641c98a40f4cc86b85b0fd5b6fe92360967e4605a4f9610f7757260b4e8098dd1c2ce7f4b095f2006fe72a570e3b6d2d28de0298c176 + languageName: node + linkType: hard + "homedir-polyfill@npm:^1.0.0": version: 1.0.3 resolution: "homedir-polyfill@npm:1.0.3" @@ -8749,6 +9047,15 @@ __metadata: languageName: node linkType: hard +"is-core-module@npm:^2.13.0": + version: 2.13.1 + resolution: "is-core-module@npm:2.13.1" + dependencies: + hasown: ^2.0.0 + checksum: 256559ee8a9488af90e4bad16f5583c6d59e92f0742e9e8bb4331e758521ee86b810b93bae44f390766ffbc518a0488b18d9dab7da9a5ff997d499efc9403f7c + languageName: node + linkType: hard + "is-date-object@npm:^1.0.5": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" @@ -9147,7 +9454,7 @@ __metadata: languageName: node linkType: hard -"istanbul-reports@npm:^3.0.2, istanbul-reports@npm:^3.1.3, istanbul-reports@npm:^3.1.4": +"istanbul-reports@npm:^3.0.2, istanbul-reports@npm:^3.1.3": version: 3.1.5 resolution: "istanbul-reports@npm:3.1.5" dependencies: @@ -9937,16 +10244,6 @@ __metadata: languageName: node linkType: hard -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - checksum: 0d084a524231a8246bb10fec48cdbb35282099f6954838604f3c7fc66f2e16fa66fd9cc2f3f20a541a113c4dafdf181e822c887c8a319c9195444e6c64ac395e - languageName: node - linkType: hard - "lilconfig@npm:2.1.0, lilconfig@npm:^2.0.5": version: 2.1.0 resolution: "lilconfig@npm:2.1.0" @@ -10420,7 +10717,7 @@ __metadata: languageName: node linkType: hard -"min-indent@npm:^1.0.0": +"min-indent@npm:^1.0.0, min-indent@npm:^1.0.1": version: 1.0.1 resolution: "min-indent@npm:1.0.1" checksum: bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 @@ -10593,13 +10890,6 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.1": - version: 2.1.1 - resolution: "ms@npm:2.1.1" - checksum: 0078a23cd916a9a7435c413caa14c57d4b4f6e2470e0ab554b6964163c8a4436448ac7ae020e883685475da6b6796cc396b670f579cb275db288a21e3e57721e - languageName: node - linkType: hard - "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -10648,7 +10938,7 @@ __metadata: languageName: node linkType: hard -"neo-async@npm:^2.5.0, neo-async@npm:^2.6.0, neo-async@npm:^2.6.1": +"neo-async@npm:^2.5.0, neo-async@npm:^2.6.0": version: 2.6.2 resolution: "neo-async@npm:2.6.2" checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 @@ -10662,7 +10952,7 @@ __metadata: languageName: node linkType: hard -"node-dir@npm:^0.1.10, node-dir@npm:^0.1.17": +"node-dir@npm:^0.1.17": version: 0.1.17 resolution: "node-dir@npm:0.1.17" dependencies: @@ -10951,20 +11241,6 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: ~0.1.3 - fast-levenshtein: ~2.0.6 - levn: ~0.3.0 - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - word-wrap: ~1.2.3 - checksum: b8695ddf3d593203e25ab0900e265d860038486c943ff8b774f596a310f8ceebdb30c6832407a8198ba3ec9debe1abe1f51d4aad94843612db3b76d690c61d34 - languageName: node - linkType: hard - "ora@npm:^5.4.1": version: 5.4.1 resolution: "ora@npm:5.4.1" @@ -11166,7 +11442,7 @@ __metadata: languageName: node linkType: hard -"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": +"parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" checksum: 407cee8e0a3a4c5cd472559bca8b6a45b82c124e9a4703302326e9ab60fc1081442ada4e02628efef1eb16197ddc7f8822f5a91fd7d7c86b51f530aedb17dfa2 @@ -11437,13 +11713,6 @@ __metadata: languageName: node linkType: hard -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: c4867c87488e4a0c233e158e4d0d5565b609b105d75e4c05dc760840475f06b731332eb93cc8c9cecb840aa8ec323ca3c9a56ad7820ad2e63f0261dadcb154e4 - languageName: node - linkType: hard - "prettier@npm:^2.8.0, prettier@npm:^2.8.1": version: 2.8.7 resolution: "prettier@npm:2.8.7" @@ -11728,23 +11997,21 @@ __metadata: languageName: node linkType: hard -"react-docgen@npm:6.0.0-alpha.3": - version: 6.0.0-alpha.3 - resolution: "react-docgen@npm:6.0.0-alpha.3" - dependencies: - "@babel/core": ^7.7.5 - "@babel/generator": ^7.12.11 - ast-types: ^0.14.2 - commander: ^2.19.0 +"react-docgen@npm:^6.0.2": + version: 6.0.4 + resolution: "react-docgen@npm:6.0.4" + dependencies: + "@babel/core": ^7.18.9 + "@babel/traverse": ^7.18.9 + "@babel/types": ^7.18.9 + "@types/babel__core": ^7.18.0 + "@types/babel__traverse": ^7.18.0 + "@types/doctrine": ^0.0.6 + "@types/resolve": ^1.20.2 doctrine: ^3.0.0 - estree-to-babel: ^3.1.0 - neo-async: ^2.6.1 - node-dir: ^0.1.10 - resolve: ^1.17.0 - strip-indent: ^3.0.0 - bin: - react-docgen: bin/react-docgen.js - checksum: db4c300910e2ef7b854ccf4f454bd701875b787d0bc0f444f89415223e7c288a5808d6cd0f7ef6346332c9de2d068d648bc801d16b6b07a1699c3e10670c4801 + resolve: ^1.22.1 + strip-indent: ^4.0.0 + checksum: 2cb3de8ff41949bd6427fa19ccd386b8c9927b7212847ae0e2e14a4d09fa18a1e3f5f03777b05addc82d8721f50b369a3e588314d7bc53d98b87f2bbca4a3743 languageName: node linkType: hard @@ -12163,7 +12430,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.20.0": +"resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0": version: 1.22.2 resolution: "resolve@npm:1.22.2" dependencies: @@ -12176,6 +12443,19 @@ __metadata: languageName: node linkType: hard +"resolve@npm:^1.22.1": + version: 1.22.8 + resolution: "resolve@npm:1.22.8" + dependencies: + is-core-module: ^2.13.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: f8a26958aa572c9b064562750b52131a37c29d072478ea32e129063e2da7f83e31f7f11e7087a18225a8561cfe8d2f0df9dbea7c9d331a897571c0a2527dbb4c + languageName: node + linkType: hard + "resolve@npm:~1.7.1": version: 1.7.1 resolution: "resolve@npm:1.7.1" @@ -12185,7 +12465,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin": +"resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.20.0#~builtin": version: 1.22.2 resolution: "resolve@patch:resolve@npm%3A1.22.2#~builtin::version=1.22.2&hash=c3c19d" dependencies: @@ -12198,6 +12478,19 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@^1.22.1#~builtin": + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=c3c19d" + dependencies: + is-core-module: ^2.13.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 5479b7d431cacd5185f8db64bfcb7286ae5e31eb299f4c4f404ad8aa6098b77599563ac4257cb2c37a42f59dfc06a1bec2bcf283bb448f319e37f0feb9a09847 + languageName: node + linkType: hard + "resolve@patch:resolve@~1.7.1#~builtin": version: 1.7.1 resolution: "resolve@patch:resolve@npm%3A1.7.1#~builtin::version=1.7.1&hash=3bafbf" @@ -12312,13 +12605,6 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:5.1.1": - version: 5.1.1 - resolution: "safe-buffer@npm:5.1.1" - checksum: 7f117b604554c9daca713be76cecc6c52932ed1dd6303638274f21319038bfd760fbfd353e526cc83f11894935bc4beb71f5b7b9478c11bf9718c0e0d94c51cb - languageName: node - linkType: hard - "safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" @@ -12411,19 +12697,6 @@ __metadata: languageName: node linkType: hard -"serve-favicon@npm:^2.5.0": - version: 2.5.0 - resolution: "serve-favicon@npm:2.5.0" - dependencies: - etag: ~1.8.1 - fresh: 0.5.2 - ms: 2.1.1 - parseurl: ~1.3.2 - safe-buffer: 5.1.1 - checksum: f4dd0fbee3b7e18d0a27ba6ba01d2f585f23f533010c9e8c74aad74615b19b12d8fbe714f14cb3579803f0bacecd67cdc858714cb56c6e28f8dd07ccc997aea4 - languageName: node - linkType: hard - "serve-static@npm:1.15.0": version: 1.15.0 resolution: "serve-static@npm:1.15.0" @@ -12794,15 +13067,15 @@ __metadata: languageName: node linkType: hard -"storybook@npm:^7.3.0": - version: 7.3.1 - resolution: "storybook@npm:7.3.1" +"storybook@npm:^7.5.3": + version: 7.5.3 + resolution: "storybook@npm:7.5.3" dependencies: - "@storybook/cli": 7.3.1 + "@storybook/cli": 7.5.3 bin: sb: ./index.js storybook: ./index.js - checksum: c4eac8eedf069ccc8377bced6ac2b382cf48904cc15114640fb5c580dd6b1107cf516a0b714f1b3af5f8715f364956f886d8fe1091962016348a04fd6562cdd3 + checksum: d5263aa78fd8f295d2770911b78cc13c00bf5ac3b67c017b9c7d388de915efd41c2091dc808122649c22c0904afb8e593ed5521d7086aea8cd12596d6df95a4b languageName: node linkType: hard @@ -12935,6 +13208,15 @@ __metadata: languageName: node linkType: hard +"strip-indent@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-indent@npm:4.0.0" + dependencies: + min-indent: ^1.0.1 + checksum: 06cbcd93da721c46bc13caeb1c00af93a9b18146a1c95927672d2decab6a25ad83662772417cea9317a2507fb143253ecc23c4415b64f5828cef9b638a744598 + languageName: node + linkType: hard + "strip-json-comments@npm:^3.0.1, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -13084,6 +13366,15 @@ __metadata: languageName: node linkType: hard +"telejson@npm:^7.2.0": + version: 7.2.0 + resolution: "telejson@npm:7.2.0" + dependencies: + memoizerific: ^1.11.3 + checksum: 55a3380c9ff3c5ad84581bb6bda28fc33c6b7c4a0c466894637da687639b8db0d21b0ff4c1bc1a7a92ae6b70662549d09e7b9e8b1ec334b2ef93078762ecdfb9 + languageName: node + linkType: hard + "temp-dir@npm:^2.0.0": version: 2.0.0 resolution: "temp-dir@npm:2.0.0" @@ -13415,15 +13706,6 @@ __metadata: languageName: node linkType: hard -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: ~1.1.2 - checksum: dd3b1495642731bc0e1fc40abe5e977e0263005551ac83342ecb6f4f89551d106b368ec32ad3fb2da19b3bd7b2d1f64330da2ea9176d8ddbfe389fb286eb5124 - languageName: node - linkType: hard - "type-detect@npm:4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" @@ -13549,6 +13831,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 3192ef6f3fd5df652f2dc1cd782b49d6ff14dc98e5dced492aa8a8c65425227da5da6aafe22523c67f035a272c599bb89cfe803c1db6311e44bed3042fc25487 + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -13809,7 +14098,7 @@ __metadata: languageName: node linkType: hard -"v8-to-istanbul@npm:^9.0.0, v8-to-istanbul@npm:^9.0.1": +"v8-to-istanbul@npm:^9.0.1": version: 9.1.0 resolution: "v8-to-istanbul@npm:9.1.0" dependencies: @@ -14086,13 +14375,6 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:~1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f - languageName: node - linkType: hard - "wordwrap@npm:^1.0.0": version: 1.0.0 resolution: "wordwrap@npm:1.0.0" @@ -14262,13 +14544,6 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.9": - version: 20.2.9 - resolution: "yargs-parser@npm:20.2.9" - checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 - languageName: node - linkType: hard - "yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" @@ -14295,21 +14570,6 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^16.2.0": - version: 16.2.0 - resolution: "yargs@npm:16.2.0" - dependencies: - cliui: ^7.0.2 - escalade: ^3.1.1 - get-caller-file: ^2.0.5 - require-directory: ^2.1.1 - string-width: ^4.2.0 - y18n: ^5.0.5 - yargs-parser: ^20.2.2 - checksum: b14afbb51e3251a204d81937c86a7e9d4bdbf9a2bcee38226c900d00f522969ab675703bee2a6f99f8e20103f608382936034e64d921b74df82b63c07c5e8f59 - languageName: node - linkType: hard - "yargs@npm:^17.3.1": version: 17.7.1 resolution: "yargs@npm:17.7.1"