From fcd2b24b89777e26c26575dfe78dd3482017dbed Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Wed, 18 Dec 2024 11:25:13 -0700 Subject: [PATCH 01/34] Docs fixes found during 8.5 QA - Add `configDir` option to example configs - Move coverage exclusion config under Set up heading - Add `**/.storybook/**` --- docs/_snippets/vitest-plugin-vitest-config.md | 6 +++ .../vitest-plugin-vitest-workspace.md | 6 +++ docs/writing-tests/test-addon.mdx | 13 +++-- docs/writing-tests/test-coverage.mdx | 49 +++++++++---------- 4 files changed, 45 insertions(+), 29 deletions(-) diff --git a/docs/_snippets/vitest-plugin-vitest-config.md b/docs/_snippets/vitest-plugin-vitest-config.md index b3f271a6e636..6ce11fcef545 100644 --- a/docs/_snippets/vitest-plugin-vitest-config.md +++ b/docs/_snippets/vitest-plugin-vitest-config.md @@ -11,6 +11,8 @@ export default mergeConfig( defineConfig({ plugins: [ storybookTest({ + // The location of your Storybook config, main.js|ts + configDir: './.storybook', // This should match your package.json script to run Storybook // The --ci flag will skip prompts and not open a browser storybookScript: 'yarn storybook --ci', @@ -44,6 +46,8 @@ export default mergeConfig( defineConfig({ plugins: [ storybookTest({ + // The location of your Storybook config, main.js|ts + configDir: './.storybook', // This should match your package.json script to run Storybook // The --ci flag will skip prompts and not open a browser storybookScript: 'yarn storybook --ci', @@ -78,6 +82,8 @@ export default mergeConfig( defineConfig({ plugins: [ storybookTest({ + // The location of your Storybook config, main.js|ts + configDir: './.storybook', // This should match your package.json script to run Storybook // The --ci flag will skip prompts and not open a browser storybookScript: 'yarn storybook --ci', diff --git a/docs/_snippets/vitest-plugin-vitest-workspace.md b/docs/_snippets/vitest-plugin-vitest-workspace.md index 46b5a3e22edd..bce2c89ce97a 100644 --- a/docs/_snippets/vitest-plugin-vitest-workspace.md +++ b/docs/_snippets/vitest-plugin-vitest-workspace.md @@ -12,6 +12,8 @@ export default defineWorkspace([ extends: './vite.config.ts', plugins: [ storybookTest({ + // The location of your Storybook config, main.js|ts + configDir: './.storybook', // This should match your package.json script to run Storybook // The --ci flag will skip prompts and not open a browser storybookScript: 'yarn storybook --ci', @@ -49,6 +51,8 @@ export default defineWorkspace([ extends: './vite.config.ts', plugins: [ storybookTest({ + // The location of your Storybook config, main.js|ts + configDir: './.storybook', // This should match your package.json script to run Storybook // The --ci flag will skip prompts and not open a browser storybookScript: 'yarn storybook --ci', @@ -87,6 +91,8 @@ export default defineWorkspace([ extends: './vite.config.ts', plugins: [ storybookTest({ + // The location of your Storybook config, main.js|ts + configDir: './.storybook', // This should match your package.json script to run Storybook // The --ci flag will skip prompts and not open a browser storybookScript: 'yarn storybook --ci', diff --git a/docs/writing-tests/test-addon.mdx b/docs/writing-tests/test-addon.mdx index 351aa557428a..2fe39d7b8b83 100644 --- a/docs/writing-tests/test-addon.mdx +++ b/docs/writing-tests/test-addon.mdx @@ -96,7 +96,9 @@ Some Storybook frameworks require additional setup to enable the framework's fea viteConfig, defineConfig({ plugins: [ - storybookTest(), + storybookTest({ + // ... + }), storybookNextJsPlugin(), // 👈 Apply the framework plugin here ], // ... @@ -119,7 +121,9 @@ Some Storybook frameworks require additional setup to enable the framework's fea viteConfig, defineConfig({ plugins: [ - storybookTest(), + storybookTest({ + // ... + }), storybookVuePlugin(), // 👈 Apply the framework plugin here ], // ... @@ -142,7 +146,9 @@ Some Storybook frameworks require additional setup to enable the framework's fea viteConfig, defineConfig({ plugins: [ - storybookTest(), + storybookTest({ + // ... + }), storybookSveltekitPlugin(), // 👈 Apply the framework plugin here ], // ... @@ -313,6 +319,7 @@ export default defineWorkspace([ { plugins: [ storybookTest({ + // ... storybookScript: 'yarn storybook --ci', storybookUrl: process.env.SB_URL }), diff --git a/docs/writing-tests/test-coverage.mdx b/docs/writing-tests/test-coverage.mdx index 1b62f752dfbd..857d70dcae5e 100644 --- a/docs/writing-tests/test-coverage.mdx +++ b/docs/writing-tests/test-coverage.mdx @@ -34,6 +34,29 @@ Before coverage can be calculated, you may need to install a support package cor {/* prettier-ignore-end */} +Additionally (until Vitest 3.0.0 is released), the generated coverage report will include the stories files themselves and output from your built Storybook application. This is misleading and they should be excluded. To do this, you can add the following to your Vitest config: + +```ts title="vitest.config.ts" +import { coverageConfigDefaults, defineConfig } from 'vitest/config'; + +export default defineConfig({ + // ... + test: { + coverage: { + // 👇 Add this + exclude: [ + ...coverageConfigDefaults.exclude, + '**/.storybook/**', + // 👇 This pattern must align with the `stories` property of your `.storybook/main.ts` config + '**/*.stories.*', + // 👇 This pattern must align with the output directory of `storybook build` + '**/storybook-static/**', + ], + } + } +}) +``` + ### Usage Because coverage is built into the Test addon, you can use it everywhere you run your tests. @@ -188,32 +211,6 @@ When calculating coverage in the Storybook UI, the following options are always - `reporter` - `reportsDirectory` -### Troubleshooting - -#### Excluding stories from the coverage report - -Until Vitest 3.0.0 is released, the generated coverage report will include the stories files themselves and output from your built Storybook application. This is misleading and they should be excluded. To do this, you can add the following to your Vitest config: - -```ts title="vitest.config.ts" -import { coverageConfigDefaults, defineConfig } from 'vitest/config'; - -export default defineConfig({ - // ... - test: { - coverage: { - // 👇 Add this - exclude: [ - ...coverageConfigDefaults.exclude, - // This pattern must align with the `stories` property of your `.storybook/main.ts` config - '**/*.stories.*', - // This pattern must align with the output directory of `storybook build` - 'storybook-static/**', - ], - } - } -}) -``` - ## With the coverage addon From 8cbd0caaab3eeb1a7403d516a31eb457710f59ad Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Wed, 18 Dec 2024 20:58:26 -0700 Subject: [PATCH 02/34] Correct `viteFinal` guidance --- .../vitest-plugin-vitest-config-alias.md | 31 ------------------- docs/writing-tests/test-addon.mdx | 12 ++----- 2 files changed, 2 insertions(+), 41 deletions(-) delete mode 100644 docs/_snippets/vitest-plugin-vitest-config-alias.md diff --git a/docs/_snippets/vitest-plugin-vitest-config-alias.md b/docs/_snippets/vitest-plugin-vitest-config-alias.md deleted file mode 100644 index ac1f59857c72..000000000000 --- a/docs/_snippets/vitest-plugin-vitest-config-alias.md +++ /dev/null @@ -1,31 +0,0 @@ -```js filename=".storybook/main.js" renderer="common" tabTitle="Before" -import { mergeConfig } from 'vite'; - -export default { - // ... - viteFinal: async (viteConfig) => { - return mergeConfig(viteConfig, { - resolve: { - alias: { - '@components': '/src/components', - // ... - }, - }, - }); - }, -}; -``` - -```js filename="vitest.config.ts" renderer="common" tabTitle="After" -import { defineConfig } from 'vitest/config'; - -export default defineConfig({ - // ... - resolve: { - alias: { - '@components': '/src/components', - // ... - }, - }, -}); -``` diff --git a/docs/writing-tests/test-addon.mdx b/docs/writing-tests/test-addon.mdx index 2fe39d7b8b83..4b340203f378 100644 --- a/docs/writing-tests/test-addon.mdx +++ b/docs/writing-tests/test-addon.mdx @@ -434,17 +434,9 @@ If your stories use assets in the public directory and you're not using the defa ### How do I apply custom Vite configuration? -If you have custom operations defined in [`viteFinal`](../api/main-config/main-config-vite-final.mdx) in your `.storybook/main.js|ts` file, you will need to translate those into the Vitest configuration. This is because the plugin does not use the Storybook Vite configuration. +Your Storybook project's Vite configuration (in [`viteFinal`](../api/main-config/main-config-vite-final.mdx) in your `.storybook/main.js|ts` file) is automatically applied to your Vitest configuration, with one exception: the plugins. -For example, to recreate an alias in Storybook's Vite configuration, you would need to apply that alias in the Vitest configuration: - -{/* prettier-ignore-start */} - - - -{/* prettier-ignore-end */} - -The above example places the Vite configuration in a Vitest configuration file. You can also place it in a Vitest workspace file, if that is how your project is configured. +If you are running any plugins in `viteFinal`, you will likely also need to run those in the Vitest configuration. ### How do I isolate Storybook tests from others? From eaaa59b080437d626247a2d6141a25be549937d6 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Mon, 23 Dec 2024 11:30:37 -0600 Subject: [PATCH 03/34] Add MSW version requirement --- docs/writing-tests/test-addon.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/writing-tests/test-addon.mdx b/docs/writing-tests/test-addon.mdx index 4b340203f378..27dfb004ff5f 100644 --- a/docs/writing-tests/test-addon.mdx +++ b/docs/writing-tests/test-addon.mdx @@ -41,6 +41,8 @@ Before installing, make sure your project meets the following requirements: - A Storybook framework that uses Vite (e.g. [`vue3-vite`](../get-started/frameworks/vue3-vite.mdx), [`react-vite`](../get-started/frameworks/react-vite.mdx), ['sveltekit`](../get-started/frameworks/sveltekit.mdx), etc.), or the [Storybook Next.js framework with Vite](../get-started/frameworks/nextjs.mdx#with-vite) - Vitest â‰Ĩ 2.1 - If you're not yet using Vitest, it will be installed and configured for you when you install the addon +- (optional) MSW â‰Ĩ 2.0 + - If MSW is installed, it must be v2.0.0 or later to not conflict with Vitest's dependency From 68140850830f03cd5d8e95cbea711ef8bc46d612 Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Tue, 24 Dec 2024 10:55:09 +0100 Subject: [PATCH 04/34] UI: Fix overlapping shadow of testing module on scrollbar --- code/core/src/manager/components/sidebar/SidebarBottom.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/core/src/manager/components/sidebar/SidebarBottom.tsx b/code/core/src/manager/components/sidebar/SidebarBottom.tsx index 38efdae4f682..00730fa36e5c 100644 --- a/code/core/src/manager/components/sidebar/SidebarBottom.tsx +++ b/code/core/src/manager/components/sidebar/SidebarBottom.tsx @@ -56,12 +56,14 @@ const Content = styled.div(({ theme }) => ({ bottom: 0, left: 0, right: 0, - padding: 12, + padding: '12px 0', + margin: '0 12px', display: 'flex', flexDirection: 'column', gap: 12, color: theme.color.defaultText, fontSize: theme.typography.size.s1, + overflow: 'hidden', '&:empty': { display: 'none', From 50a61c5d252706ada425a5aa5cfbd0acf5b8e275 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Fri, 27 Dec 2024 15:13:05 -0600 Subject: [PATCH 05/34] Add webpack-to-vite migration guidance --- docs/_snippets/webpack-final-to-vite-final.md | 83 +++++++++++++++++++ docs/builders/vite.mdx | 14 ++++ docs/get-started/frameworks/nextjs.mdx | 2 + 3 files changed, 99 insertions(+) create mode 100644 docs/_snippets/webpack-final-to-vite-final.md diff --git a/docs/_snippets/webpack-final-to-vite-final.md b/docs/_snippets/webpack-final-to-vite-final.md new file mode 100644 index 000000000000..df83bc4fa7c5 --- /dev/null +++ b/docs/_snippets/webpack-final-to-vite-final.md @@ -0,0 +1,83 @@ +```js filename=".storybook/main.js" renderer="common" language="js" tabTitle="With Webpack" +export default { + // Replace your-framework with the framework you are using (e.g., react-webpack5, nextjs, angular) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + async webpackFinal(config) { + storybookBaseConfig.module?.rules?.push({ + test: /\.(graphql|gql)$/, + include: [path.resolve('./lib/emails')], + exclude: /node_modules/, + loader: 'graphql-tag/loader', + }); + storybookBaseConfig.module?.rules?.push({ + test: /\.(graphql|gql)$/, + include: [path.resolve('./lib/schema')], + exclude: /node_modules/, + loader: 'raw-loader', + }); + + return config; + }, +}; +``` + +```js filename=".storybook/main.js" renderer="common" language="js" tabTitle="With Vite" +export default { + // Replace your-framework with the framework you are using (e.g., react-vite, vue3-vite) + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + async viteFinal(config) { + return { + ...config, + plugins: [...(config.plugins ?? []), graphql()], + }; + }, +}; +``` + +```ts filename=".storybook/main.ts" renderer="common" language="ts" tabTitle="With Webpack" +// Replace your-framework with the framework you are using (e.g., react-webpack5, nextjs, angular) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + async webpackFinal(config) { + storybookBaseConfig.module?.rules?.push({ + test: /\.(graphql|gql)$/, + include: [path.resolve('./lib/emails')], + exclude: /node_modules/, + loader: 'graphql-tag/loader', + }); + storybookBaseConfig.module?.rules?.push({ + test: /\.(graphql|gql)$/, + include: [path.resolve('./lib/schema')], + exclude: /node_modules/, + loader: 'raw-loader', + }); + + return config; + }, +}; + +export default config; +``` + +```ts filename=".storybook/main.ts" renderer="common" language="ts" tabTitle="With Vite" +// Replace your-framework with the framework you are using (e.g., react-vite, vue3-vite) +import type { StorybookConfig } from '@storybook/your-framework'; + +const config: StorybookConfig = { + framework: '@storybook/your-framework', + stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], + async viteFinal(config) { + return { + ...config, + plugins: [...(config.plugins ?? []), graphql()], + }; + }, +}; + +export default config; +``` diff --git a/docs/builders/vite.mdx b/docs/builders/vite.mdx index 8f226e4f5844..99c411dac1e1 100644 --- a/docs/builders/vite.mdx +++ b/docs/builders/vite.mdx @@ -82,6 +82,20 @@ If you need, you can also configure Storybook's Vite builder using TypeScript. R ## Troubleshooting +### Migrating from Webpack + +Vite generally handles more use cases out of the box than Webpack. For example, loading styles just works for most projects. So, when migrating a Webpack-based project to Vite, you may find that you don't need all of your previous configuration. + +We recommend starting with no Storybook-specific Vite configuration and only adding what you determine your project actually requires. + +For reference, here is a Webpack configuration to handle loading graphql queries and its equivalent, using a plugin, in Vite: + +{/* prettier-ignore-start */} + + + +{/* prettier-ignore-end */} + ### Working directory not being detected By default, the Vite builder enables Vite's [`server.fs.strict`](https://vitejs.dev/config/#server-fs-strict) option for increased security, defining the project's `root` to Storybook's configuration directory. diff --git a/docs/get-started/frameworks/nextjs.mdx b/docs/get-started/frameworks/nextjs.mdx index 14e2c3e55294..62b2c5b7ff88 100644 --- a/docs/get-started/frameworks/nextjs.mdx +++ b/docs/get-started/frameworks/nextjs.mdx @@ -108,6 +108,8 @@ Storybook for Next.js is a [framework](../../contribute/framework.mdx) that make If your Storybook configuration contains custom Webpack operations in [`webpackFinal`](../../api/main-config/main-config-webpack-final.mdx), you will likely need to create equivalents in [`viteFinal`](../../api/main-config/main-config-vite-final.mdx). + + For more information, see the [Vite builder documentation](../../builders/vite.mdx#migrating-from-webpack). Finally, if you were using Storybook plugins to integrate with Next.js, those are no longer necessary when using this framework and can be removed: From 0f5424c016122bfd31a450fc93ba31f4880ad976 Mon Sep 17 00:00:00 2001 From: jonniebigodes Date: Sat, 28 Dec 2024 20:37:25 +0000 Subject: [PATCH 06/34] Docs: A11y minor fixes --- .../storybook-addon-a11y-component-config.md | 60 ++++++++++++ .../storybook-addon-a11y-global-config.md | 12 ++- .../storybook-addon-a11y-story-config.md | 96 ++++++++++++++++--- docs/writing-tests/accessibility-testing.mdx | 2 +- 4 files changed, 156 insertions(+), 14 deletions(-) diff --git a/docs/_snippets/storybook-addon-a11y-component-config.md b/docs/_snippets/storybook-addon-a11y-component-config.md index 5d84203b21c8..97f1d07c1eeb 100644 --- a/docs/_snippets/storybook-addon-a11y-component-config.md +++ b/docs/_snippets/storybook-addon-a11y-component-config.md @@ -23,6 +23,11 @@ const meta: Meta = { }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -62,6 +67,11 @@ export default meta; }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {} }, }, @@ -97,6 +107,11 @@ export default { }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -131,6 +146,11 @@ export default { }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -168,6 +188,11 @@ export default { }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -205,6 +230,11 @@ const meta = { }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -244,6 +274,11 @@ const meta = { }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -283,6 +318,11 @@ export default meta; }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -320,6 +360,11 @@ const meta: Meta = { }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -359,6 +404,11 @@ const meta: Meta = { }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -393,6 +443,11 @@ export default { }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -427,6 +482,11 @@ const meta: Meta = { }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, diff --git a/docs/_snippets/storybook-addon-a11y-global-config.md b/docs/_snippets/storybook-addon-a11y-global-config.md index bd508791adc4..cbd7fb07bcc9 100644 --- a/docs/_snippets/storybook-addon-a11y-global-config.md +++ b/docs/_snippets/storybook-addon-a11y-global-config.md @@ -18,7 +18,11 @@ export default { }, ], }, - // Axe's options parameter + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -54,7 +58,11 @@ const preview: Preview = { }, ], }, - // Axe's options parameter + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, diff --git a/docs/_snippets/storybook-addon-a11y-story-config.md b/docs/_snippets/storybook-addon-a11y-story-config.md index b20c4f3b4359..ce8adce07f7c 100644 --- a/docs/_snippets/storybook-addon-a11y-story-config.md +++ b/docs/_snippets/storybook-addon-a11y-story-config.md @@ -28,7 +28,11 @@ export const ExampleStory: Story = { }, ], }, - // Axe's options parameter + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -66,7 +70,11 @@ export const ExampleStory = { }, ], }, - // Axe's options parameter + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -109,7 +117,11 @@ export const ExampleStory: Story = { }, ], }, - // Axe's options parameter + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -152,7 +164,11 @@ export const ExampleStory: Story = { }, ], }, - // Axe's options parameter + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -195,7 +211,17 @@ export const ExampleStory: Story = { }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, + }, + }} + globals={{ + a11y: { + // Optional flag to prevent the automatic check manual: true, }, }} @@ -227,7 +253,17 @@ export const ExampleStory = { }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, + }, + }, + globals: { + a11y: { + // Optional flag to prevent the automatic check manual: true, }, }, @@ -264,6 +300,11 @@ export const ExampleStory = { }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }} @@ -306,7 +347,11 @@ export const ExampleStory: Story = { }, ], }, - // Axe's options parameter + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -349,6 +394,11 @@ export const ExampleStory: Story = { }, ], }, + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }} @@ -391,7 +441,11 @@ export const ExampleStory: Story = { }, ], }, - // Axe's options parameter + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -429,7 +483,11 @@ export const ExampleStory = { }, ], }, - // Axe's options parameter + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -472,7 +530,11 @@ export const ExampleStory = { }, ], }, - // Axe's options parameter + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -515,7 +577,11 @@ export const ExampleStory = { }, ], }, - // Axe's options parameter + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -551,7 +617,11 @@ export const ExampleStory = { }, ], }, - // Axe's options parameter + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, @@ -592,7 +662,11 @@ export const ExampleStory: Story = { }, ], }, - // Axe's options parameter + /* + * Axe's options parameter + * See https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter + * to learn more about the available options. + */ options: {}, }, }, diff --git a/docs/writing-tests/accessibility-testing.mdx b/docs/writing-tests/accessibility-testing.mdx index 48ce67a1b4a7..0de09e6ceced 100644 --- a/docs/writing-tests/accessibility-testing.mdx +++ b/docs/writing-tests/accessibility-testing.mdx @@ -53,7 +53,7 @@ Cycling through both stories, you will see that the `Inaccessible` story contain ### Configure -Out of the box, Storybook's accessibility addon includes a set of accessibility rules that cover most issues. You can also fine-tune the [addon configuration](https://github.com/storybookjs/storybook/tree/next/code/addons/a11y#parameters) or override [Axe's ruleset](https://github.com/storybookjs/storybook/tree/next/code/addons/a11y#handling-failing-rules) to best suit your needs. +Out of the box, Storybook's accessibility addon includes a set of accessibility rules that cover most issues. You can also fine-tune the addon configuration or override [Axe's ruleset](https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#api-name-axeconfigure) to best suit your needs. #### Global a11y configuration From ac11562b3eec2f3647aafebf644de50d38c10266 Mon Sep 17 00:00:00 2001 From: jonniebigodes Date: Sat, 28 Dec 2024 20:56:38 +0000 Subject: [PATCH 07/34] Removes the outdated addon screenshot --- code/addons/a11y/docs/screenshot.png | Bin 179567 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 code/addons/a11y/docs/screenshot.png diff --git a/code/addons/a11y/docs/screenshot.png b/code/addons/a11y/docs/screenshot.png deleted file mode 100644 index eb11bbed0f571f430ce7a9ba408d8c2ff33fdfa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179567 zcmYg$2UL?w*R=%|rHP7wl&A=(2uSaspdwxA9Th?^0!oLdpeR*93B5}1MOuJJjS#8Q zTYwNk31EOgdj8t&92^{Sa=#^gNsfs4K%>zP z@MJuJw7ZKvAksfjC{(JHl++3eH8wsyIx)SECmrC4fFkPd?%wX+-pn?2Zi~8yJKQ@U z{K4*HcX9KJ$W;_7H8pj5dV1^6E>AHPg<8dI{W%~~aR-F!Mby20!Ukpsy@C0&f2gOY zr=p^=g~i#}*eEC{Z2#Glk&z(~2qY3|XAh^PrS;&!gM0VxIXXJZ$;lNI6!i7=)4}6# zxQ%V>^XJd2s;bP*&6k&#M@Gj+e~-C(yzJ@eIXpbv+S+>a=FQs1)}KFr$Yg4Jd;9nA z-&ZqFSXo(xhK81wmOgp%WPE&lXlQt5W(JL3Gchr7c5#6~AOnMgv(}}D`J0%{ z_4PGRFR!kyE=fr#UteDY0@2vqIzPYQ2vvIg__3j(VS0LcTwL7y_wQk_pZoN<|5Q%A|k$tjqmdHkStt_Vvy9h`frcq)54Ga97jRgRu0N@UIo47=H_12)rek3RyTJNQzD3q zC|Y&@=d^s9?-OQb=I^uLX!eRturXS4(@$huYWg@Ww20=I(zX33>T?P?KbD$fLNke_ zy=VHdSi{+V7f>dY-$SG(NIj@~=<3x43WwV~Z!0OEH@0X3oI6LN>*m}mLwzHkS9Wq; z&2RH^5|-|)G#oq8a#icWedB-`%zTF{&wb`MOK(?&auvEqOHOHsi(Ly%ZZ}5c4V!H} zcB^u`+fgX%o(igUz7eXVgyqi=jA#lCB4G8pQPSmkj&7nad12o4cZj~1c+k(ex@OA~ zE6y#~cS!lTqjypei6by7_Os|$UEfP({_OvB=FJ|T1s6=Q3Gp<-u`JDw6n#q^^56fh_N!o~Y@MVEY0fzsXHc(?f zl=A*6tKBQ2o&8HiK5l4JG`NO3INcL1BHH;sG@txA8l~e4rhCZs5B{TK>vdbGA*aM? zvV8az!}|Z&$ko6>StC-#sr=o){}1>A#k{0A{>E)H@1#rrhY7f9`NfjS)%@ZAHGRDN zKu|37jf+0&UqHycpt8aiEwh1S3jiiCYPIHh{3|7hP0RWQ`|b}4@)d>WAigOq6zUP$ z43phaqt<}J5TMZcwuvd!O#;e?Uf!iFiV>bv3 z-8!FqV>uC>`N2(Y-JS}VuMGNmvT`SNCX+-eAhm6Z25KB~LOT!#kV#@{gKjD?h}mRO zK2EI<)b2r`uxEFn2t)p0euI!ukNfO0Uq{Tm0a}^ts-3d)zeByP;(9#1n^&njq{xae z5_Pf?L_6HEYN6o)2ixfHpRPuo4A_R~-m43Cb$x<8<9Ykt8H01zC)oF|8sAd+_@o$* zd~)jka>woOmpSemKVUnUF}jt^&%o3ZULUEB&ACJtwp^P&T-Y9T{5`E}lqBEcm58Z| z_j0=MeD8Iggb=h~5I;P7Wq$nwODsM1v?cLR1&25|dG&W42lxfd#_J*=cgAQ>}{4TtC~u~==K9K)w+9NDsxT$JMDF&Mr+JHBmb z&I{?m^EPsGD;<~k51P^I*3xBW+Y~LDZ9_WgP~%V!H!#<@jB_#w_AWc@_A(!Sc@`iT zQYd= zd^nu;4{;c3&Q8dONzRv4HQoVmjQx3Lve+${BV-M$8#!eeΞ|MvI%vo6K%&Hd{aW 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 HScm-&y{|f# From f2560a6f63e2937355517250a448c14261413557 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 2 Jan 2025 10:23:10 +0100 Subject: [PATCH 08/34] move @types/node to devDeps consistently --- code/builders/builder-webpack5/package.json | 2 +- code/frameworks/angular/package.json | 2 +- .../experimental-nextjs-vite/package.json | 2 +- code/frameworks/html-webpack5/package.json | 4 +- code/frameworks/nextjs/package.json | 2 +- code/frameworks/preact-webpack5/package.json | 4 +- code/frameworks/react-webpack5/package.json | 4 +- code/frameworks/server-webpack5/package.json | 4 +- code/frameworks/vue3-webpack5/package.json | 4 +- .../web-components-webpack5/package.json | 4 +- code/lib/core-webpack/package.json | 2 +- code/presets/html-webpack/package.json | 2 +- code/presets/preact-webpack/package.json | 4 +- code/presets/react-webpack/package.json | 2 +- code/presets/server-webpack/package.json | 2 +- code/presets/vue3-webpack/package.json | 2 +- code/renderers/react/package.json | 2 +- code/yarn.lock | 376 +----------------- scripts/package.json | 4 +- 19 files changed, 44 insertions(+), 384 deletions(-) diff --git a/code/builders/builder-webpack5/package.json b/code/builders/builder-webpack5/package.json index 3fa79a85bcdd..31ece7b41f06 100644 --- a/code/builders/builder-webpack5/package.json +++ b/code/builders/builder-webpack5/package.json @@ -64,7 +64,6 @@ }, "dependencies": { "@storybook/core-webpack": "workspace:*", - "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", "case-sensitive-paths-webpack-plugin": "^2.4.0", @@ -90,6 +89,7 @@ "webpack-virtual-modules": "^0.6.0" }, "devDependencies": { + "@types/node": "^22.0.0", "@types/pretty-hrtime": "^1.0.0", "@types/terser-webpack-plugin": "^5.2.0", "@types/webpack-hot-middleware": "^2.25.6", diff --git a/code/frameworks/angular/package.json b/code/frameworks/angular/package.json index 2c24b9c2fd5c..6440967566d3 100644 --- a/code/frameworks/angular/package.json +++ b/code/frameworks/angular/package.json @@ -44,7 +44,6 @@ "@storybook/manager-api": "workspace:*", "@storybook/preview-api": "workspace:*", "@storybook/theming": "workspace:*", - "@types/node": "^22.0.0", "@types/react": "^18.0.37", "@types/react-dom": "^18.0.11", "@types/semver": "^7.3.4", @@ -73,6 +72,7 @@ "@angular/platform-browser": "^17.3.0", "@angular/platform-browser-dynamic": "^17.3.0", "@types/cross-spawn": "^6.0.2", + "@types/node": "^22.0.0", "@types/tmp": "^0.2.3", "cross-spawn": "^7.0.3", "tmp": "^0.2.1", diff --git a/code/frameworks/experimental-nextjs-vite/package.json b/code/frameworks/experimental-nextjs-vite/package.json index 56e1028156b8..9d2a5011c71a 100644 --- a/code/frameworks/experimental-nextjs-vite/package.json +++ b/code/frameworks/experimental-nextjs-vite/package.json @@ -103,7 +103,7 @@ "vite-plugin-storybook-nextjs": "^1.1.0" }, "devDependencies": { - "@types/node": "^18.0.0", + "@types/node": "^22.0.0", "next": "^15.0.3", "typescript": "^5.3.2" }, diff --git a/code/frameworks/html-webpack5/package.json b/code/frameworks/html-webpack5/package.json index 01697940c9a6..7a67d3b1f2c9 100644 --- a/code/frameworks/html-webpack5/package.json +++ b/code/frameworks/html-webpack5/package.json @@ -50,10 +50,10 @@ "@storybook/builder-webpack5": "workspace:*", "@storybook/global": "^5.0.0", "@storybook/html": "workspace:*", - "@storybook/preset-html-webpack": "workspace:*", - "@types/node": "^22.0.0" + "@storybook/preset-html-webpack": "workspace:*" }, "devDependencies": { + "@types/node": "^22.0.0", "typescript": "^5.3.2" }, "peerDependencies": { diff --git a/code/frameworks/nextjs/package.json b/code/frameworks/nextjs/package.json index 60c96f86533e..6ff8ca763277 100644 --- a/code/frameworks/nextjs/package.json +++ b/code/frameworks/nextjs/package.json @@ -148,7 +148,6 @@ "@storybook/preset-react-webpack": "workspace:*", "@storybook/react": "workspace:*", "@storybook/test": "workspace:*", - "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "babel-loader": "^9.1.3", "css-loader": "^6.7.3", @@ -175,6 +174,7 @@ "@types/babel__plugin-transform-runtime": "^7", "@types/babel__preset-env": "^7", "@types/loader-utils": "^2.0.5", + "@types/node": "^22.0.0", "@types/react-refresh": "^0", "next": "^15.0.3", "typescript": "^5.3.2", diff --git a/code/frameworks/preact-webpack5/package.json b/code/frameworks/preact-webpack5/package.json index 94004e0a1995..a4b1238d50c2 100644 --- a/code/frameworks/preact-webpack5/package.json +++ b/code/frameworks/preact-webpack5/package.json @@ -49,10 +49,10 @@ "dependencies": { "@storybook/builder-webpack5": "workspace:*", "@storybook/preact": "workspace:*", - "@storybook/preset-preact-webpack": "workspace:*", - "@types/node": "^22.0.0" + "@storybook/preset-preact-webpack": "workspace:*" }, "devDependencies": { + "@types/node": "^22.0.0", "preact": "^10.5.13", "typescript": "^5.3.2" }, diff --git a/code/frameworks/react-webpack5/package.json b/code/frameworks/react-webpack5/package.json index 348e86f1869d..3a5173eab887 100644 --- a/code/frameworks/react-webpack5/package.json +++ b/code/frameworks/react-webpack5/package.json @@ -49,7 +49,9 @@ "dependencies": { "@storybook/builder-webpack5": "workspace:*", "@storybook/preset-react-webpack": "workspace:*", - "@storybook/react": "workspace:*", + "@storybook/react": "workspace:*" + }, + "devDependencies": { "@types/node": "^22.0.0" }, "peerDependencies": { diff --git a/code/frameworks/server-webpack5/package.json b/code/frameworks/server-webpack5/package.json index 0afcd8816f1e..ca1c7ca224ce 100644 --- a/code/frameworks/server-webpack5/package.json +++ b/code/frameworks/server-webpack5/package.json @@ -49,10 +49,10 @@ "dependencies": { "@storybook/builder-webpack5": "workspace:*", "@storybook/preset-server-webpack": "workspace:*", - "@storybook/server": "workspace:*", - "@types/node": "^22.0.0" + "@storybook/server": "workspace:*" }, "devDependencies": { + "@types/node": "^22.0.0", "typescript": "^5.3.2" }, "peerDependencies": { diff --git a/code/frameworks/vue3-webpack5/package.json b/code/frameworks/vue3-webpack5/package.json index 0c338bb459c7..7790cd71220b 100644 --- a/code/frameworks/vue3-webpack5/package.json +++ b/code/frameworks/vue3-webpack5/package.json @@ -49,10 +49,10 @@ "dependencies": { "@storybook/builder-webpack5": "workspace:*", "@storybook/preset-vue3-webpack": "workspace:*", - "@storybook/vue3": "workspace:*", - "@types/node": "^22.0.0" + "@storybook/vue3": "workspace:*" }, "devDependencies": { + "@types/node": "^22.0.0", "@vue/compiler-sfc": "3.0.0", "typescript": "^5.3.2", "vue": "3.0.0" diff --git a/code/frameworks/web-components-webpack5/package.json b/code/frameworks/web-components-webpack5/package.json index a4e754fac9ca..8573e26fcdc9 100644 --- a/code/frameworks/web-components-webpack5/package.json +++ b/code/frameworks/web-components-webpack5/package.json @@ -51,10 +51,10 @@ }, "dependencies": { "@storybook/builder-webpack5": "workspace:*", - "@storybook/web-components": "workspace:*", - "@types/node": "^22.0.0" + "@storybook/web-components": "workspace:*" }, "devDependencies": { + "@types/node": "^22.0.0", "lit": "2.3.1", "typescript": "^5.3.2" }, diff --git a/code/lib/core-webpack/package.json b/code/lib/core-webpack/package.json index 59a734780e40..12c9479ee629 100644 --- a/code/lib/core-webpack/package.json +++ b/code/lib/core-webpack/package.json @@ -44,10 +44,10 @@ "prep": "jiti ../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@types/node": "^22.0.0", "ts-dedent": "^2.0.0" }, "devDependencies": { + "@types/node": "^22.0.0", "slash": "^5.1.0", "typescript": "^5.3.2", "webpack": "5" diff --git a/code/presets/html-webpack/package.json b/code/presets/html-webpack/package.json index 618f5f5ae818..08d4b3b0b219 100644 --- a/code/presets/html-webpack/package.json +++ b/code/presets/html-webpack/package.json @@ -50,11 +50,11 @@ }, "dependencies": { "@storybook/core-webpack": "workspace:*", - "@types/node": "^22.0.0", "html-loader": "^3.1.0", "webpack": "5" }, "devDependencies": { + "@types/node": "^22.0.0", "typescript": "^5.3.2" }, "peerDependencies": { diff --git a/code/presets/preact-webpack/package.json b/code/presets/preact-webpack/package.json index f014c0de59c1..3c6f81849306 100644 --- a/code/presets/preact-webpack/package.json +++ b/code/presets/preact-webpack/package.json @@ -49,10 +49,10 @@ "prep": "jiti ../../../scripts/prepare/bundle.ts" }, "dependencies": { - "@storybook/core-webpack": "workspace:*", - "@types/node": "^22.0.0" + "@storybook/core-webpack": "workspace:*" }, "devDependencies": { + "@types/node": "^22.0.0", "preact": "^10.5.13", "typescript": "^5.3.2" }, diff --git a/code/presets/react-webpack/package.json b/code/presets/react-webpack/package.json index d69d3679d901..f4823db4e0f4 100644 --- a/code/presets/react-webpack/package.json +++ b/code/presets/react-webpack/package.json @@ -67,7 +67,6 @@ "@storybook/core-webpack": "workspace:*", "@storybook/react": "workspace:*", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", - "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "find-up": "^5.0.0", "magic-string": "^0.30.5", @@ -78,6 +77,7 @@ "webpack": "5" }, "devDependencies": { + "@types/node": "^22.0.0", "typescript": "^5.3.2" }, "peerDependencies": { diff --git a/code/presets/server-webpack/package.json b/code/presets/server-webpack/package.json index 7103faba76bc..22039000df7a 100644 --- a/code/presets/server-webpack/package.json +++ b/code/presets/server-webpack/package.json @@ -57,12 +57,12 @@ "@storybook/core-webpack": "workspace:*", "@storybook/global": "^5.0.0", "@storybook/server": "workspace:*", - "@types/node": "^22.0.0", "safe-identifier": "^0.4.1", "ts-dedent": "^2.0.0", "yaml-loader": "^0.8.0" }, "devDependencies": { + "@types/node": "^22.0.0", "typescript": "^5.3.2", "yaml": "^2.3.1" }, diff --git a/code/presets/vue3-webpack/package.json b/code/presets/vue3-webpack/package.json index 90e3d499df39..60c5149e1574 100644 --- a/code/presets/vue3-webpack/package.json +++ b/code/presets/vue3-webpack/package.json @@ -60,7 +60,6 @@ }, "dependencies": { "@storybook/core-webpack": "workspace:*", - "@types/node": "^22.0.0", "ts-loader": "^9.2.8", "vue-docgen-api": "^4.75.1", "vue-docgen-loader": "^1.5.1", @@ -68,6 +67,7 @@ "webpack": "5" }, "devDependencies": { + "@types/node": "^22.0.0", "@vue/compiler-sfc": "^3.2.33", "typescript": "^5.3.2", "vue": "^3.2.33" diff --git a/code/renderers/react/package.json b/code/renderers/react/package.json index a9c31f243679..da17393e4e93 100644 --- a/code/renderers/react/package.json +++ b/code/renderers/react/package.json @@ -74,7 +74,6 @@ "@types/babel-plugin-react-docgen": "^4", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", - "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "acorn": "^7.4.1", "acorn-jsx": "^5.3.1", @@ -93,6 +92,7 @@ }, "peerDependencies": { "@storybook/test": "workspace:*", + "@types/node": "^22.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "storybook": "workspace:^", diff --git a/code/yarn.lock b/code/yarn.lock index 13e798756fd5..3b8af3baaf3f 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -378,16 +378,6 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/code-frame@npm:7.24.7" - dependencies: - "@babel/highlight": "npm:^7.24.7" - picocolors: "npm:^1.0.0" - checksum: 10c0/ab0af539473a9f5aeaac7047e377cb4f4edd255a81d84a76058595f8540784cc3fbe8acf73f1e073981104562490aabfb23008cd66dc677a456a4ed5390fdde6 - languageName: node - linkType: hard - "@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.23.5, @babel/compat-data@npm:^7.24.4, @babel/compat-data@npm:^7.25.9": version: 7.26.2 resolution: "@babel/compat-data@npm:7.26.2" @@ -395,13 +385,6 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/compat-data@npm:7.25.2" - checksum: 10c0/5bf1f14d6e5f0d37c19543e99209ff4a94bb97915e1ce01e5334a144aa08cd56b6e62ece8135dac77e126723d63d4d4b96fc603a12c43b88c28f4b5e070270c5 - languageName: node - linkType: hard - "@babel/core@npm:7.23.9": version: 7.23.9 resolution: "@babel/core@npm:7.23.9" @@ -448,30 +431,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.12.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.18.9, @babel/core@npm:^7.23.0, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.4, @babel/core@npm:^7.3.4, @babel/core@npm:^7.7.5": - version: 7.25.2 - resolution: "@babel/core@npm:7.25.2" - dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.0" - "@babel/helper-compilation-targets": "npm:^7.25.2" - "@babel/helper-module-transforms": "npm:^7.25.2" - "@babel/helpers": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.0" - "@babel/template": "npm:^7.25.0" - "@babel/traverse": "npm:^7.25.2" - "@babel/types": "npm:^7.25.2" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10c0/a425fa40e73cb72b6464063a57c478bc2de9dbcc19c280f1b55a3d88b35d572e87e8594e7d7b4880331addb6faef641bbeb701b91b41b8806cd4deae5d74f401 - languageName: node - linkType: hard - -"@babel/core@npm:^7.25.2": +"@babel/core@npm:^7.12.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.13.16, @babel/core@npm:^7.18.9, @babel/core@npm:^7.23.0, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.4, @babel/core@npm:^7.25.2, @babel/core@npm:^7.3.4, @babel/core@npm:^7.7.5": version: 7.26.0 resolution: "@babel/core@npm:7.26.0" dependencies: @@ -530,18 +490,6 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/generator@npm:7.25.0" - dependencies: - "@babel/types": "npm:^7.25.0" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^2.5.1" - checksum: 10c0/d0e2dfcdc8bdbb5dded34b705ceebf2e0bc1b06795a1530e64fb6a3ccf313c189db7f60c1616effae48114e1a25adc75855bc4496f3779a396b3377bae718ce7 - languageName: node - linkType: hard - "@babel/helper-annotate-as-pure@npm:7.22.5": version: 7.22.5 resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" @@ -583,19 +531,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-compilation-targets@npm:7.25.2" - dependencies: - "@babel/compat-data": "npm:^7.25.2" - "@babel/helper-validator-option": "npm:^7.24.8" - browserslist: "npm:^4.23.1" - lru-cache: "npm:^5.1.1" - semver: "npm:^6.3.1" - checksum: 10c0/de10e986b5322c9f807350467dc845ec59df9e596a5926a3b5edbb4710d8e3b8009d4396690e70b88c3844fe8ec4042d61436dd4b92d1f5f75655cf43ab07e99 - languageName: node - linkType: hard - "@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0, @babel/helper-create-class-features-plugin@npm:^7.24.0, @babel/helper-create-class-features-plugin@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-create-class-features-plugin@npm:7.24.7" @@ -696,17 +631,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.24.3, @babel/helper-module-imports@npm:^7.24.7, @babel/helper-module-imports@npm:^7.8.3": - version: 7.24.7 - resolution: "@babel/helper-module-imports@npm:7.24.7" - dependencies: - "@babel/traverse": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10c0/97c57db6c3eeaea31564286e328a9fb52b0313c5cfcc7eee4bc226aebcf0418ea5b6fe78673c0e4a774512ec6c86e309d0f326e99d2b37bfc16a25a032498af0 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.25.9": +"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.24.3, @babel/helper-module-imports@npm:^7.24.7, @babel/helper-module-imports@npm:^7.25.9, @babel/helper-module-imports@npm:^7.8.3": version: 7.25.9 resolution: "@babel/helper-module-imports@npm:7.25.9" dependencies: @@ -729,20 +654,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-module-transforms@npm:7.25.2" - dependencies: - "@babel/helper-module-imports": "npm:^7.24.7" - "@babel/helper-simple-access": "npm:^7.24.7" - "@babel/helper-validator-identifier": "npm:^7.24.7" - "@babel/traverse": "npm:^7.25.2" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/adaa15970ace0aee5934b5a633789b5795b6229c6a9cf3e09a7e80aa33e478675eee807006a862aa9aa517935d81f88a6db8a9f5936e3a2a40ec75f8062bc329 - languageName: node - linkType: hard - "@babel/helper-optimise-call-expression@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-optimise-call-expression@npm:7.24.7" @@ -752,14 +663,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.24.7 - resolution: "@babel/helper-plugin-utils@npm:7.24.7" - checksum: 10c0/c3d38cd9b3520757bb4a279255cc3f956fc0ac1c193964bd0816ebd5c86e30710be8e35252227e0c9d9e0f4f56d9b5f916537f2bc588084b0988b4787a967d31 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.25.9": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.25.9 resolution: "@babel/helper-plugin-utils@npm:7.25.9" checksum: 10c0/483066a1ba36ff16c0116cd24f93de05de746a603a777cd695ac7a1b034928a65a4ecb35f255761ca56626435d7abdb73219eba196f9aa83b6c3c3169325599d @@ -830,13 +734,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-string-parser@npm:7.24.8" - checksum: 10c0/6361f72076c17fabf305e252bf6d580106429014b3ab3c1f5c4eb3e6d465536ea6b670cc0e9a637a77a9ad40454d3e41361a2909e70e305116a23d68ce094c08 - languageName: node - linkType: hard - "@babel/helper-string-parser@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-string-parser@npm:7.25.9" @@ -858,13 +755,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-validator-option@npm:7.24.8" - checksum: 10c0/73db93a34ae89201351288bee7623eed81a54000779462a986105b54ffe82069e764afd15171a428b82e7c7a9b5fec10b5d5603b216317a414062edf5c67a21f - languageName: node - linkType: hard - "@babel/helper-wrap-function@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-wrap-function@npm:7.24.7" @@ -887,28 +777,6 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helpers@npm:7.25.0" - dependencies: - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 10c0/b7fe007fc4194268abf70aa3810365085e290e6528dcb9fbbf7a765d43c74b6369ce0f99c5ccd2d44c413853099daa449c9a0123f0b212ac8d18643f2e8174b8 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/highlight@npm:7.24.7" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.24.7" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.0.0" - checksum: 10c0/674334c571d2bb9d1c89bdd87566383f59231e16bcdcf5bb7835babdf03c9ae585ca0887a7b25bdf78f303984af028df52831c7989fecebb5101cc132da9393a - languageName: node - linkType: hard - "@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.11.5, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.5, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.5, @babel/parser@npm:^7.23.6, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.24.7, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2, @babel/parser@npm:^7.4.5, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.9.6": version: 7.26.2 resolution: "@babel/parser@npm:7.26.2" @@ -920,17 +788,6 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.3": - version: 7.25.3 - resolution: "@babel/parser@npm:7.25.3" - dependencies: - "@babel/types": "npm:^7.25.2" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/874b01349aedb805d6694f867a752fdc7469778fad76aca4548d2cc6ce96087c3ba5fb917a6f8d05d2d1a74aae309b5f50f1a4dba035f5a2c9fcfe6e106d2c4e - languageName: node - linkType: hard - "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.24.4": version: 7.24.4 resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.24.4" @@ -2390,17 +2247,6 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/template@npm:7.25.0" - dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/parser": "npm:^7.25.0" - "@babel/types": "npm:^7.25.0" - checksum: 10c0/4e31afd873215744c016e02b04f43b9fa23205d6d0766fb2e93eb4091c60c1b88897936adb895fb04e3c23de98dfdcbe31bc98daaa1a4e0133f78bb948e1209b - languageName: node - linkType: hard - "@babel/traverse@npm:7.23.2": version: 7.23.2 resolution: "@babel/traverse@npm:7.23.2" @@ -2434,21 +2280,6 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.25.2": - version: 7.25.3 - resolution: "@babel/traverse@npm:7.25.3" - dependencies: - "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.25.0" - "@babel/parser": "npm:^7.25.3" - "@babel/template": "npm:^7.25.0" - "@babel/types": "npm:^7.25.2" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10c0/4c8a1966fa90b53a783a4afd2fcdaa6ab1a912e6621dca9fcc6633e80ccb9491620e88caf73b537da4e16cefd537b548c87d7087868d5b0066414dea375c0e9b - languageName: node - linkType: hard - "@babel/types@npm:7.17.0": version: 7.17.0 resolution: "@babel/types@npm:7.17.0" @@ -2469,17 +2300,6 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/types@npm:7.25.2" - dependencies: - "@babel/helper-string-parser": "npm:^7.24.8" - "@babel/helper-validator-identifier": "npm:^7.24.7" - to-fast-properties: "npm:^2.0.0" - checksum: 10c0/e489435856be239f8cc1120c90a197e4c2865385121908e5edb7223cfdff3768cba18f489adfe0c26955d9e7bbb1fb10625bc2517505908ceb0af848989bd864 - 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" @@ -3039,20 +2859,13 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.10.0": +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": version: 4.12.1 resolution: "@eslint-community/regexpp@npm:4.12.1" checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.10.0 - resolution: "@eslint-community/regexpp@npm:4.10.0" - checksum: 10c0/c5f60ef1f1ea7649fa7af0e80a5a79f64b55a8a8fa5086de4727eb4c86c652aedee407a9c143b8995d2c0b2d75c1222bec9ba5d73dbfc1f314550554f0979ef4 - languageName: node - linkType: hard - "@eslint/eslintrc@npm:^1.0.5": version: 1.4.1 resolution: "@eslint/eslintrc@npm:1.4.1" @@ -4820,20 +4633,13 @@ __metadata: languageName: node linkType: hard -"@polka/url@npm:^1.0.0-next.21": +"@polka/url@npm:^1.0.0-next.21, @polka/url@npm:^1.0.0-next.24": version: 1.0.0-next.28 resolution: "@polka/url@npm:1.0.0-next.28" checksum: 10c0/acc5ea62597e4da2fb42dbee02749d07f102ae7d6d2c966bf7e423c79cd65d1621da305af567e6e7c232f3b565e242d1ec932cbb3dcc0db1508d02e9a2cafa2e languageName: node linkType: hard -"@polka/url@npm:^1.0.0-next.24": - version: 1.0.0-next.25 - resolution: "@polka/url@npm:1.0.0-next.25" - checksum: 10c0/ef61f0a0fe94bb6e1143fc5b9d5a12e6ca9dbd2c57843ebf81db432c21b9f1005c09e8a1ef8b6d5ddfa42146ca65b640feb2d353bd0d3546da46ba59e48a5349 - languageName: node - linkType: hard - "@popperjs/core@npm:^2.11.5, @popperjs/core@npm:^2.6.0": version: 2.11.8 resolution: "@popperjs/core@npm:2.11.8" @@ -6463,7 +6269,7 @@ __metadata: "@storybook/react": "workspace:*" "@storybook/react-vite": "workspace:*" "@storybook/test": "workspace:*" - "@types/node": "npm:^18.0.0" + "@types/node": "npm:^22.0.0" next: "npm:^15.0.3" sharp: "npm:^0.33.3" styled-jsx: "npm:5.1.6" @@ -6537,7 +6343,7 @@ __metadata: languageName: unknown linkType: soft -"@storybook/icons@npm:^1.2.12": +"@storybook/icons@npm:^1.2.12, @storybook/icons@npm:^1.2.5": version: 1.2.12 resolution: "@storybook/icons@npm:1.2.12" peerDependencies: @@ -6547,16 +6353,6 @@ __metadata: languageName: node linkType: hard -"@storybook/icons@npm:^1.2.5": - version: 1.2.10 - resolution: "@storybook/icons@npm:1.2.10" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10c0/aadde2efd5c471b78096f29a6393db111ee95174cab94ade0d2859d476262f080aa8ffb414f82932afd81d5c57bed813193a04e92086962bde2224774dac9060 - languageName: node - linkType: hard - "@storybook/instrumenter@workspace:*, @storybook/instrumenter@workspace:lib/instrumenter": version: 0.0.0-use.local resolution: "@storybook/instrumenter@workspace:lib/instrumenter" @@ -6996,7 +6792,6 @@ __metadata: "@types/babel-plugin-react-docgen": "npm:^4" "@types/escodegen": "npm:^0.0.6" "@types/estree": "npm:^0.0.51" - "@types/node": "npm:^22.0.0" "@types/semver": "npm:^7.3.4" acorn: "npm:^7.4.1" acorn-jsx: "npm:^5.3.1" @@ -7014,6 +6809,7 @@ __metadata: type-fest: "npm:~2.19" peerDependencies: "@storybook/test": "workspace:*" + "@types/node": ^22.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta storybook: "workspace:^" @@ -7530,7 +7326,7 @@ __metadata: languageName: node linkType: hard -"@swc/helpers@npm:0.5.13": +"@swc/helpers@npm:0.5.13, @swc/helpers@npm:~0.5.0": version: 0.5.13 resolution: "@swc/helpers@npm:0.5.13" dependencies: @@ -7539,15 +7335,6 @@ __metadata: languageName: node linkType: hard -"@swc/helpers@npm:~0.5.0": - version: 0.5.6 - resolution: "@swc/helpers@npm:0.5.6" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10c0/ae43e2130b0c47a8c5dc51148925604707ee7801fef90674f71d2266a98b272c8f16145931fc7d51daf6795c4f3a86ccecd472e94a7ea562e0db7c333447d9e6 - languageName: node - linkType: hard - "@tanstack/react-virtual@npm:^3.3.0": version: 3.3.0 resolution: "@tanstack/react-virtual@npm:3.3.0" @@ -8175,20 +7962,13 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:*": +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.6 resolution: "@types/istanbul-lib-coverage@npm:2.0.6" checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 languageName: node linkType: hard -"@types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.4 - resolution: "@types/istanbul-lib-coverage@npm:2.0.4" - checksum: 10c0/af5f6b64e788331ed3f7b2e2613cb6ca659c58b8500be94bbda8c995ad3da9216c006f1cfe6f66b321c39392b1bda18b16e63cef090a77d24a00b4bd5ba3b018 - languageName: node - linkType: hard - "@types/istanbul-lib-report@npm:^3.0.3": version: 3.0.3 resolution: "@types/istanbul-lib-report@npm:3.0.3" @@ -10725,14 +10505,7 @@ __metadata: languageName: node linkType: hard -"axe-core@npm:^4.2.0": - version: 4.8.2 - resolution: "axe-core@npm:4.8.2" - checksum: 10c0/ad9e1125ba226bbc73d442996d8b9b35fed9af8bcfa995831e29c3d6b8ddb0d16bc7d18c66c5a685211296ee99fe966ae4d59051ca6fbef2a7ee7408322b9dbe - languageName: node - linkType: hard - -"axe-core@npm:^4.4.2": +"axe-core@npm:^4.2.0, axe-core@npm:^4.4.2": version: 4.10.2 resolution: "axe-core@npm:4.10.2" checksum: 10c0/0e20169077de96946a547fce0df39d9aeebe0077f9d3eeff4896518b96fde857f80b98f0d4279274a7178791744dd5a54bb4f322de45b4f561ffa2586ff9a09d @@ -11592,20 +11365,6 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.23.1": - version: 4.23.3 - resolution: "browserslist@npm:4.23.3" - dependencies: - caniuse-lite: "npm:^1.0.30001646" - electron-to-chromium: "npm:^1.5.4" - node-releases: "npm:^2.0.18" - update-browserslist-db: "npm:^1.1.0" - bin: - browserslist: cli.js - checksum: 10c0/3063bfdf812815346447f4796c8f04601bf5d62003374305fd323c2a463e42776475bcc5309264e39bcf9a8605851e53560695991a623be988138b3ff8c66642 - languageName: node - linkType: hard - "buffer-crc32@npm:^0.2.5": version: 0.2.13 resolution: "buffer-crc32@npm:0.2.13" @@ -11866,13 +11625,6 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001646": - version: 1.0.30001650 - resolution: "caniuse-lite@npm:1.0.30001650" - checksum: 10c0/81d271517f452321d4274d514dcbf4d57fc7ca6d2f82d4e273a850fc6d92d334d97bbec8359ce2237c7f2d128729037b82ca506c7213511dc8380b8ec24d9d45 - languageName: node - linkType: hard - "case-sensitive-paths-webpack-plugin@npm:^2.4.0": version: 2.4.0 resolution: "case-sensitive-paths-webpack-plugin@npm:2.4.0" @@ -11907,7 +11659,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.0.0, chalk@npm:^2.3.0, chalk@npm:^2.4.2": +"chalk@npm:^2.0.0, chalk@npm:^2.3.0": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -13808,14 +13560,7 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:^16.0.0": - version: 16.3.1 - resolution: "dotenv@npm:16.3.1" - checksum: 10c0/b95ff1bbe624ead85a3cd70dbd827e8e06d5f05f716f2d0cbc476532d54c7c9469c3bc4dd93ea519f6ad711cb522c00ac9a62b6eb340d5affae8008facc3fbd7 - languageName: node - linkType: hard - -"dotenv@npm:^16.4.5, dotenv@npm:~16.4.5": +"dotenv@npm:^16.0.0, dotenv@npm:^16.4.5, dotenv@npm:~16.4.5": version: 16.4.7 resolution: "dotenv@npm:16.4.7" checksum: 10c0/be9f597e36a8daf834452daa1f4cc30e5375a5968f98f46d89b16b983c567398a330580c88395069a77473943c06b877d1ca25b4afafcdd6d4adb549e8293462 @@ -13927,13 +13672,6 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.4": - version: 1.5.5 - resolution: "electron-to-chromium@npm:1.5.5" - checksum: 10c0/6e5e12f729a74a78d9a7386ea32039262cb8a2f4611ab346da1f162c270d0569194c72169042080a1017220835ed30ee2d77ca5ba13c1acaa5fa0d373fbc0ad5 - languageName: node - linkType: hard - "electron-to-chromium@npm:^1.5.41": version: 1.5.50 resolution: "electron-to-chromium@npm:1.5.50" @@ -14608,13 +14346,6 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.2": - version: 3.1.2 - resolution: "escalade@npm:3.1.2" - checksum: 10c0/6b4adafecd0682f3aa1cd1106b8fff30e492c7015b178bc81b2d2f75106dabea6c6d6e8508fc491bd58e597c74abb0e8e2368f943ecb9393d4162e3c2f3cf287 - languageName: node - linkType: hard - "escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" @@ -19937,16 +19668,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.0, magic-string@npm:^0.30.11, magic-string@npm:^0.30.5": - version: 0.30.11 - resolution: "magic-string@npm:0.30.11" - dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.5.0" - checksum: 10c0/b9eb370773d0bd90ca11a848753409d8e5309b1ad56d2a1aa49d6649da710a6d2fe7237ad1a643c5a5d3800de2b9946ed9690acdfc00e6cc1aeafff3ab1752c4 - languageName: node - linkType: hard - -"magic-string@npm:^0.30.12": +"magic-string@npm:^0.30.0, magic-string@npm:^0.30.11, magic-string@npm:^0.30.12, magic-string@npm:^0.30.5": version: 0.30.12 resolution: "magic-string@npm:0.30.12" dependencies: @@ -27323,7 +27045,7 @@ __metadata: languageName: node linkType: hard -"svelte@npm:^5.0.0, svelte@npm:^5.0.5": +"svelte@npm:^5.0.0, svelte@npm:^5.0.0-next.268, svelte@npm:^5.0.5": version: 5.0.5 resolution: "svelte@npm:5.0.5" dependencies: @@ -27344,27 +27066,6 @@ __metadata: languageName: node linkType: hard -"svelte@npm:^5.0.0-next.268": - version: 5.0.0-next.268 - resolution: "svelte@npm:5.0.0-next.268" - dependencies: - "@ampproject/remapping": "npm:^2.3.0" - "@jridgewell/sourcemap-codec": "npm:^1.5.0" - "@types/estree": "npm:^1.0.5" - acorn: "npm:^8.12.1" - acorn-typescript: "npm:^1.4.13" - aria-query: "npm:^5.3.1" - axobject-query: "npm:^4.1.0" - esm-env: "npm:^1.0.0" - esrap: "npm:^1.2.2" - is-reference: "npm:^3.0.2" - locate-character: "npm:^3.0.0" - magic-string: "npm:^0.30.11" - zimmerframe: "npm:^1.1.2" - checksum: 10c0/74a954cffe2a70259a1d1d2a834e9615d3f393429ac8cc1e15bfdc66b8bbe5dc449a8289370631b29023bca51aa451d1906f570b3761de4c235ea731913ee1b2 - languageName: node - linkType: hard - "sveltedoc-parser@npm:^4.2.1": version: 4.3.1 resolution: "sveltedoc-parser@npm:4.3.1" @@ -28176,17 +27877,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.3.2": - version: 5.4.5 - resolution: "typescript@npm:5.4.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/2954022ada340fd3d6a9e2b8e534f65d57c92d5f3989a263754a78aba549f7e6529acc1921913560a4b816c46dce7df4a4d29f9f11a3dc0d4213bb76d043251e - languageName: node - linkType: hard - -"typescript@npm:~5.6.2": +"typescript@npm:^5.3.2, typescript@npm:~5.6.2": version: 5.6.3 resolution: "typescript@npm:5.6.3" bin: @@ -28216,17 +27907,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5.3.2#optional!builtin": - version: 5.4.5 - resolution: "typescript@patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 10c0/db2ad2a16ca829f50427eeb1da155e7a45e598eec7b086d8b4e8ba44e5a235f758e606d681c66992230d3fc3b8995865e5fd0b22a2c95486d0b3200f83072ec9 - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A~5.6.2#optional!builtin": +"typescript@patch:typescript@npm%3A^5.3.2#optional!builtin, typescript@patch:typescript@npm%3A~5.6.2#optional!builtin": version: 5.6.3 resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin::version=5.6.3&hash=b45daf" bin: @@ -28712,20 +28393,6 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.1.0": - version: 1.1.0 - resolution: "update-browserslist-db@npm:1.1.0" - dependencies: - escalade: "npm:^3.1.2" - picocolors: "npm:^1.0.1" - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: 10c0/a7452de47785842736fb71547651c5bbe5b4dc1e3722ccf48a704b7b34e4dcf633991eaa8e4a6a517ffb738b3252eede3773bef673ef9021baa26b056d63a5b9 - languageName: node - linkType: hard - "update-browserslist-db@npm:^1.1.1": version: 1.1.1 resolution: "update-browserslist-db@npm:1.1.1" @@ -30213,14 +29880,7 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.0.0, yaml@npm:^2.3.1": - version: 2.3.4 - resolution: "yaml@npm:2.3.4" - checksum: 10c0/cf03b68f8fef5e8516b0f0b54edaf2459f1648317fc6210391cf606d247e678b449382f4bd01f77392538429e306c7cba8ff46ff6b37cac4de9a76aff33bd9e1 - languageName: node - linkType: hard - -"yaml@npm:^2.6.0": +"yaml@npm:^2.0.0, yaml@npm:^2.3.1, yaml@npm:^2.6.0": version: 2.6.1 resolution: "yaml@npm:2.6.1" bin: diff --git a/scripts/package.json b/scripts/package.json index b02d6abc9bba..5c2270e10e6a 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -133,6 +133,7 @@ "glob": "^10.4.5", "http-server": "^14.1.1", "husky": "^4.3.7", + "jiti": "^1.21.6", "json5": "^2.2.3", "junit-xml": "^1.2.0", "knip": "^5.30.1", @@ -188,9 +189,6 @@ "yaml": "^2.4.5", "zod": "^3.23.8" }, - "devDependencies": { - "jiti": "^1.21.6" - }, "optionalDependencies": { "@verdaccio/types": "^10.8.0", "verdaccio": "^5.31.1", From e9a7adba21e19f286c35033830a50fe5db7acdfa Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Thu, 2 Jan 2025 11:26:36 +0100 Subject: [PATCH 09/34] fix incorrect move of dep to peerDep --- code/renderers/react/package.json | 2 +- code/yarn.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/renderers/react/package.json b/code/renderers/react/package.json index 34ec0fe3b08a..e863f283dc37 100644 --- a/code/renderers/react/package.json +++ b/code/renderers/react/package.json @@ -74,6 +74,7 @@ "@types/babel-plugin-react-docgen": "^4", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", + "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "acorn": "^7.4.1", "acorn-jsx": "^5.3.1", @@ -92,7 +93,6 @@ }, "peerDependencies": { "@storybook/test": "workspace:*", - "@types/node": "^22.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "storybook": "workspace:^", diff --git a/code/yarn.lock b/code/yarn.lock index 3b8af3baaf3f..7bfe0ba8b5e5 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -6792,6 +6792,7 @@ __metadata: "@types/babel-plugin-react-docgen": "npm:^4" "@types/escodegen": "npm:^0.0.6" "@types/estree": "npm:^0.0.51" + "@types/node": "npm:^22.0.0" "@types/semver": "npm:^7.3.4" acorn: "npm:^7.4.1" acorn-jsx: "npm:^5.3.1" @@ -6809,7 +6810,6 @@ __metadata: type-fest: "npm:~2.19" peerDependencies: "@storybook/test": "workspace:*" - "@types/node": ^22.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta storybook: "workspace:^" From 0556bd244459896470d1e7782242ff105feb9a75 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Thu, 2 Jan 2025 10:15:48 -0700 Subject: [PATCH 10/34] Fix mistakes in #30103 --- docs/_snippets/webpack-final-to-vite-final.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/_snippets/webpack-final-to-vite-final.md b/docs/_snippets/webpack-final-to-vite-final.md index df83bc4fa7c5..93b63cadd977 100644 --- a/docs/_snippets/webpack-final-to-vite-final.md +++ b/docs/_snippets/webpack-final-to-vite-final.md @@ -4,13 +4,13 @@ export default { framework: '@storybook/your-framework', stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], async webpackFinal(config) { - storybookBaseConfig.module?.rules?.push({ + config.module?.rules?.push({ test: /\.(graphql|gql)$/, include: [path.resolve('./lib/emails')], exclude: /node_modules/, loader: 'graphql-tag/loader', }); - storybookBaseConfig.module?.rules?.push({ + config.module?.rules?.push({ test: /\.(graphql|gql)$/, include: [path.resolve('./lib/schema')], exclude: /node_modules/, @@ -23,6 +23,8 @@ export default { ``` ```js filename=".storybook/main.js" renderer="common" language="js" tabTitle="With Vite" +import graphql from 'vite-plugin-graphql-loader'; + export default { // Replace your-framework with the framework you are using (e.g., react-vite, vue3-vite) framework: '@storybook/your-framework', @@ -44,13 +46,13 @@ const config: StorybookConfig = { framework: '@storybook/your-framework', stories: ['../src/**/*.mdx', '../stories/**/*.stories.@(js|jsx|mjs|ts|tsx)'], async webpackFinal(config) { - storybookBaseConfig.module?.rules?.push({ + config.module?.rules?.push({ test: /\.(graphql|gql)$/, include: [path.resolve('./lib/emails')], exclude: /node_modules/, loader: 'graphql-tag/loader', }); - storybookBaseConfig.module?.rules?.push({ + config.module?.rules?.push({ test: /\.(graphql|gql)$/, include: [path.resolve('./lib/schema')], exclude: /node_modules/, @@ -67,6 +69,7 @@ export default config; ```ts filename=".storybook/main.ts" renderer="common" language="ts" tabTitle="With Vite" // Replace your-framework with the framework you are using (e.g., react-vite, vue3-vite) import type { StorybookConfig } from '@storybook/your-framework'; +import graphql from 'vite-plugin-graphql-loader'; const config: StorybookConfig = { framework: '@storybook/your-framework', From acb6a30a1f91d5ac6ef1c9a5412864b2b768583c Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 3 Jan 2025 09:48:00 +0100 Subject: [PATCH 11/34] add ts-ignore --- code/addons/test/src/components/TestProviderRender.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/addons/test/src/components/TestProviderRender.tsx b/code/addons/test/src/components/TestProviderRender.tsx index ab8e61fadf0d..a43168fef11e 100644 --- a/code/addons/test/src/components/TestProviderRender.tsx +++ b/code/addons/test/src/components/TestProviderRender.tsx @@ -355,7 +355,8 @@ export const TestProviderRender: FC< icon={ state.crashed ? ( - ) : status === 'unknown' ? ( + ) : // @ts-expect-error: TODO: Fix types + status === 'unknown' ? ( ) : ( From 2183c2d0c1ab6712dff1ebeeb028768c4af165d5 Mon Sep 17 00:00:00 2001 From: Norbert de Langen Date: Fri, 3 Jan 2025 10:23:21 +0100 Subject: [PATCH 12/34] bump `vue-tsc` to v2, see https://github.com/vuejs/language-tools/issues/4484 --- code/yarn.lock | 201 ++++++++++++++++++++++++------------------------- 1 file changed, 100 insertions(+), 101 deletions(-) diff --git a/code/yarn.lock b/code/yarn.lock index 7bfe0ba8b5e5..a36028c2bb19 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -777,14 +777,14 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.11.5, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.5, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.5, @babel/parser@npm:^7.23.6, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.24.7, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2, @babel/parser@npm:^7.4.5, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.9.6": - version: 7.26.2 - resolution: "@babel/parser@npm:7.26.2" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.11.5, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.5, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.5, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.5, @babel/parser@npm:^7.23.6, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.24.7, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2, @babel/parser@npm:^7.4.5, @babel/parser@npm:^7.6.0, @babel/parser@npm:^7.9.6": + version: 7.26.3 + resolution: "@babel/parser@npm:7.26.3" dependencies: - "@babel/types": "npm:^7.26.0" + "@babel/types": "npm:^7.26.3" bin: parser: ./bin/babel-parser.js - checksum: 10c0/751a743087b3a9172a7599f1421830d44c38f065ef781588d2bfb1c98f9b461719a226feb13c868d7a284783eee120c88ea522593118f2668f46ebfb1105c4d7 + checksum: 10c0/48f736374e61cfd10ddbf7b80678514ae1f16d0e88bc793d2b505d73d9b987ea786fc8c2f7ee8f8b8c467df062030eb07fd0eb2168f0f541ca1f542775852cad languageName: node linkType: hard @@ -2290,13 +2290,13 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.11.5, @babel/types@npm:^7.17.0, @babel/types@npm:^7.18.9, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.23.6, @babel/types@npm:^7.23.9, @babel/types@npm:^7.24.0, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.4.4, @babel/types@npm:^7.6.1, @babel/types@npm:^7.7.2, @babel/types@npm:^7.9.6": - version: 7.26.0 - resolution: "@babel/types@npm:7.26.0" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.11.5, @babel/types@npm:^7.17.0, @babel/types@npm:^7.18.9, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.23.6, @babel/types@npm:^7.23.9, @babel/types@npm:^7.24.0, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.26.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.6.1, @babel/types@npm:^7.7.2, @babel/types@npm:^7.9.6": + version: 7.26.3 + resolution: "@babel/types@npm:7.26.3" dependencies: "@babel/helper-string-parser": "npm:^7.25.9" "@babel/helper-validator-identifier": "npm:^7.25.9" - checksum: 10c0/b694f41ad1597127e16024d766c33a641508aad037abd08d0d1f73af753e1119fa03b4a107d04b5f92cc19c095a594660547ae9bead1db2299212d644b0a5cb8 + checksum: 10c0/966c5242c5e55c8704bf7a7418e7be2703a0afa4d19a8480999d5a4ef13d095dd60686615fe5983cb7593b4b06ba3a7de8d6ca501c1d78bdd233a10d90be787b languageName: node linkType: hard @@ -9077,15 +9077,6 @@ __metadata: languageName: node linkType: hard -"@volar/language-core@npm:1.10.1, @volar/language-core@npm:~1.10.0": - version: 1.10.1 - resolution: "@volar/language-core@npm:1.10.1" - dependencies: - "@volar/source-map": "npm:1.10.1" - checksum: 10c0/cc4e6b07801cc48b68d9bfb4899703afc0b1d0d0a765d952df98ae63d3109555dd2d882aab8970d599521300d50aa109c82f869a590ddd8f94106b3daf0503f8 - languageName: node - linkType: hard - "@volar/language-core@npm:2.2.2, @volar/language-core@npm:~2.2.2": version: 2.2.2 resolution: "@volar/language-core@npm:2.2.2" @@ -9095,12 +9086,12 @@ __metadata: languageName: node linkType: hard -"@volar/source-map@npm:1.10.1, @volar/source-map@npm:~1.10.0": - version: 1.10.1 - resolution: "@volar/source-map@npm:1.10.1" +"@volar/language-core@npm:2.4.11, @volar/language-core@npm:~2.4.11": + version: 2.4.11 + resolution: "@volar/language-core@npm:2.4.11" dependencies: - muggle-string: "npm:^0.3.1" - checksum: 10c0/9bfc96528d802959d19d07148238cf1b7f7ba7bf05a8cf78339dd1edfb0e755d88005057673c7a807aea74b234a63067fa433a81841b9b9bc1d6e741674f6e40 + "@volar/source-map": "npm:2.4.11" + checksum: 10c0/ccc5de0c28b4186dc99ff9856b2ac2318ee1818480af3ca406f3c09d42b19b6df8698b525f6cf0fed368332fc76659cd4433fb38e6a55a85c7cefc97d665ccf8 languageName: node linkType: hard @@ -9113,12 +9104,10 @@ __metadata: languageName: node linkType: hard -"@volar/typescript@npm:~1.10.0": - version: 1.10.1 - resolution: "@volar/typescript@npm:1.10.1" - dependencies: - "@volar/language-core": "npm:1.10.1" - checksum: 10c0/daad1018ac7f9d5b45416ca8f1cabec1448c020669bcc3ad9873c277ed467b1e8a2c5849f272888cfaca5e93683f1fd67cc5532fcd1e7a5f0c3a74ad2d595ffe +"@volar/source-map@npm:2.4.11": + version: 2.4.11 + resolution: "@volar/source-map@npm:2.4.11" + checksum: 10c0/8e5badf9f67d669679c48fe32258e082d823523ca2807438d38c0aac6c52b84d43580c8921b559fc5a27c0c7457ffcba569e60de7a597851690dec04ed77c5fc languageName: node linkType: hard @@ -9132,6 +9121,17 @@ __metadata: languageName: node linkType: hard +"@volar/typescript@npm:~2.4.11": + version: 2.4.11 + resolution: "@volar/typescript@npm:2.4.11" + dependencies: + "@volar/language-core": "npm:2.4.11" + path-browserify: "npm:^1.0.1" + vscode-uri: "npm:^3.0.8" + checksum: 10c0/bca9bda9c8c95fd06672b834d1804810fdad496e15ee8e2099f76de74fa529d835f342afb6b976e6e3bc4599a3bbbfd007a842694fe1300cf6286783b827f917 + languageName: node + linkType: hard + "@vue/compiler-core@npm:3.0.0": version: 3.0.0 resolution: "@vue/compiler-core@npm:3.0.0" @@ -9157,19 +9157,6 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-core@npm:3.4.27, @vue/compiler-core@npm:^3.0.0": - version: 3.4.27 - resolution: "@vue/compiler-core@npm:3.4.27" - dependencies: - "@babel/parser": "npm:^7.24.4" - "@vue/shared": "npm:3.4.27" - entities: "npm:^4.5.0" - estree-walker: "npm:^2.0.2" - source-map-js: "npm:^1.2.0" - checksum: 10c0/fbc9a4a6c467fa47609df3337c1b2012a55e3b07adbffc45a31435237ec1169d0a4ece22f3538607364427b779ce04154b86a0e8dd40d3bd4aa03358d4db136d - languageName: node - linkType: hard - "@vue/compiler-core@npm:3.4.5": version: 3.4.5 resolution: "@vue/compiler-core@npm:3.4.5" @@ -9183,6 +9170,19 @@ __metadata: languageName: node linkType: hard +"@vue/compiler-core@npm:3.5.13, @vue/compiler-core@npm:^3.0.0": + version: 3.5.13 + resolution: "@vue/compiler-core@npm:3.5.13" + dependencies: + "@babel/parser": "npm:^7.25.3" + "@vue/shared": "npm:3.5.13" + entities: "npm:^4.5.0" + estree-walker: "npm:^2.0.2" + source-map-js: "npm:^1.2.0" + checksum: 10c0/b89f3e3ca92c3177ae449ada1480df13d99b5b3b2cdcf3202fd37dc30f294a1db1f473209f8bae9233e2d338632219d39b2bfa6941d158cea55255e4b0b30f90 + languageName: node + linkType: hard + "@vue/compiler-dom@npm:3.0.0": version: 3.0.0 resolution: "@vue/compiler-dom@npm:3.0.0" @@ -9213,13 +9213,13 @@ __metadata: languageName: node linkType: hard -"@vue/compiler-dom@npm:^3.2.0, @vue/compiler-dom@npm:^3.3.0, @vue/compiler-dom@npm:^3.4.0": - version: 3.4.27 - resolution: "@vue/compiler-dom@npm:3.4.27" +"@vue/compiler-dom@npm:^3.2.0, @vue/compiler-dom@npm:^3.4.0, @vue/compiler-dom@npm:^3.5.0": + version: 3.5.13 + resolution: "@vue/compiler-dom@npm:3.5.13" dependencies: - "@vue/compiler-core": "npm:3.4.27" - "@vue/shared": "npm:3.4.27" - checksum: 10c0/ceb8aef314b6b7df1ab6cd3c7c1290e5b60363a6092bbffc3ee6aca42f6f5247a070b0dcbe71530751e840d01beec00a6268e3663abcf4a6ac297a32bfb90e49 + "@vue/compiler-core": "npm:3.5.13" + "@vue/shared": "npm:3.5.13" + checksum: 10c0/8f424a71883c9ef4abdd125d2be8d12dd8cf94ba56089245c88734b1f87c65e10597816070ba2ea0a297a2f66dc579f39275a9a53ef5664c143a12409612cd72 languageName: node linkType: hard @@ -9314,24 +9314,13 @@ __metadata: languageName: node linkType: hard -"@vue/language-core@npm:1.8.15": - version: 1.8.15 - resolution: "@vue/language-core@npm:1.8.15" +"@vue/compiler-vue2@npm:^2.7.16": + version: 2.7.16 + resolution: "@vue/compiler-vue2@npm:2.7.16" dependencies: - "@volar/language-core": "npm:~1.10.0" - "@volar/source-map": "npm:~1.10.0" - "@vue/compiler-dom": "npm:^3.3.0" - "@vue/reactivity": "npm:^3.3.0" - "@vue/shared": "npm:^3.3.0" - minimatch: "npm:^9.0.0" - muggle-string: "npm:^0.3.1" - vue-template-compiler: "npm:^2.7.14" - peerDependencies: - typescript: "*" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/05ec3d660bd26cf05d17e722d1117324e1309360f0be4998c82ccac22689e31a332660086ece6b3f4f43660dfb94d1905eea0aa329b88b2f5afea944b01153e0 + de-indent: "npm:^1.0.2" + he: "npm:^1.2.0" + checksum: 10c0/c76c3fad770b9a7da40b314116cc9da173da20e5fd68785c8ed8dd8a87d02f239545fa296e16552e040ec86b47bfb18283b39447b250c2e76e479bd6ae475bb3 languageName: node linkType: hard @@ -9355,6 +9344,27 @@ __metadata: languageName: node linkType: hard +"@vue/language-core@npm:2.2.0": + version: 2.2.0 + resolution: "@vue/language-core@npm:2.2.0" + dependencies: + "@volar/language-core": "npm:~2.4.11" + "@vue/compiler-dom": "npm:^3.5.0" + "@vue/compiler-vue2": "npm:^2.7.16" + "@vue/shared": "npm:^3.5.0" + alien-signals: "npm:^0.4.9" + minimatch: "npm:^9.0.3" + muggle-string: "npm:^0.4.1" + path-browserify: "npm:^1.0.1" + peerDependencies: + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/1c44cc4067266bbc825af358a867aed455963a08c160cd9df9a47571fd917a87d9de9bdea6149877e0c8309a6cf39f263e7cf2fbadeceba47a5a158f392151b2 + languageName: node + linkType: hard + "@vue/reactivity-transform@npm:3.3.11": version: 3.3.11 resolution: "@vue/reactivity-transform@npm:3.3.11" @@ -9377,7 +9387,7 @@ __metadata: languageName: node linkType: hard -"@vue/reactivity@npm:3.3.11, @vue/reactivity@npm:^3.3.0": +"@vue/reactivity@npm:3.3.11": version: 3.3.11 resolution: "@vue/reactivity@npm:3.3.11" dependencies: @@ -9454,13 +9464,6 @@ __metadata: languageName: node linkType: hard -"@vue/shared@npm:3.4.27, @vue/shared@npm:^3.3.0, @vue/shared@npm:^3.4.0": - version: 3.4.27 - resolution: "@vue/shared@npm:3.4.27" - checksum: 10c0/4a21918858270bcc654bb94b3429d9acbe95af097ea3063e192b36bd502dc896ca47778fa74a863b01f677ec271b189eb90f8b372943c10e52725a6bdc7f6cd5 - languageName: node - linkType: hard - "@vue/shared@npm:3.4.5": version: 3.4.5 resolution: "@vue/shared@npm:3.4.5" @@ -9468,6 +9471,13 @@ __metadata: languageName: node linkType: hard +"@vue/shared@npm:3.5.13, @vue/shared@npm:^3.4.0, @vue/shared@npm:^3.5.0": + version: 3.5.13 + resolution: "@vue/shared@npm:3.5.13" + checksum: 10c0/2c940ef907116f1c2583ca1d7733984e5705983ab07054c4e72f1d95eb0f7bdf4d01efbdaee1776c2008f79595963f44e98fced057f5957d86d57b70028f5025 + languageName: node + linkType: hard + "@vue/test-utils@npm:^2.4.1": version: 2.4.1 resolution: "@vue/test-utils@npm:2.4.1" @@ -9484,16 +9494,6 @@ __metadata: languageName: node linkType: hard -"@vue/typescript@npm:1.8.15": - version: 1.8.15 - resolution: "@vue/typescript@npm:1.8.15" - dependencies: - "@volar/typescript": "npm:~1.10.0" - "@vue/language-core": "npm:1.8.15" - checksum: 10c0/c68808d29da93e616cd30bd4dc84aad0bb3d245d45537adc74244cc0fe93cb797e4bbdbdf2a4841b6bce088e6ef1bc70fa279fd2e1aabb794c42d908d8e46087 - languageName: node - linkType: hard - "@webassemblyjs/ast@npm:1.11.6, @webassemblyjs/ast@npm:^1.11.5": version: 1.11.6 resolution: "@webassemblyjs/ast@npm:1.11.6" @@ -9922,6 +9922,13 @@ __metadata: languageName: node linkType: hard +"alien-signals@npm:^0.4.9": + version: 0.4.12 + resolution: "alien-signals@npm:0.4.12" + checksum: 10c0/858c07fc66d4d6bb58062d7fb4d64a327b86592bae37ed5fd90ea28314a04109cca005b3cc63abe8bfd035f3d16e05d0e61611955a50f2f0c667c11cf204381a + languageName: node + linkType: hard + "amd-name-resolver@npm:^1.3.1": version: 1.3.1 resolution: "amd-name-resolver@npm:1.3.1" @@ -21347,14 +21354,7 @@ __metadata: languageName: node linkType: hard -"muggle-string@npm:^0.3.1": - version: 0.3.1 - resolution: "muggle-string@npm:0.3.1" - checksum: 10c0/489b0575fa76e30914393915a36638590052409fca2206a6bef0fb0ad7b181c1cbf99761191bfd16fe402c6f5a3164897965422fa32ef20ada1b44024ba46ab6 - languageName: node - linkType: hard - -"muggle-string@npm:^0.4.0": +"muggle-string@npm:^0.4.0, muggle-string@npm:^0.4.1": version: 0.4.1 resolution: "muggle-string@npm:0.4.1" checksum: 10c0/e914b63e24cd23f97e18376ec47e4ba3aa24365e4776212b666add2e47bb158003212980d732c49abf3719568900af7861873844a6e2d3a7ca7e86952c0e99e9 @@ -25739,7 +25739,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.2.1, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2, semver@npm:^7.6.3": +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.2.1, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2, semver@npm:^7.6.3": version: 7.6.3 resolution: "semver@npm:7.6.3" bin: @@ -29034,7 +29034,7 @@ __metadata: languageName: node linkType: hard -"vscode-uri@npm:^3.0.3": +"vscode-uri@npm:^3.0.3, vscode-uri@npm:^3.0.8": version: 3.0.8 resolution: "vscode-uri@npm:3.0.8" checksum: 10c0/f7f217f526bf109589969fe6e66b71e70b937de1385a1d7bb577ca3ee7c5e820d3856a86e9ff2fa9b7a0bc56a3dd8c3a9a557d3fedd7df414bc618d5e6b567f9 @@ -29149,17 +29149,16 @@ __metadata: linkType: hard "vue-tsc@npm:latest": - version: 1.8.15 - resolution: "vue-tsc@npm:1.8.15" + version: 2.2.0 + resolution: "vue-tsc@npm:2.2.0" dependencies: - "@vue/language-core": "npm:1.8.15" - "@vue/typescript": "npm:1.8.15" - semver: "npm:^7.3.8" + "@volar/typescript": "npm:~2.4.11" + "@vue/language-core": "npm:2.2.0" peerDependencies: - typescript: "*" + typescript: ">=5.0.0" bin: - vue-tsc: bin/vue-tsc.js - checksum: 10c0/18092627141afcef9515701ea85beae564bc31258358d3b0eb7a3ae5167559ac56d8e218a0490661bae91a4f496d1351f9431074820473206dda9d0c50998216 + vue-tsc: ./bin/vue-tsc.js + checksum: 10c0/7258db27efd689402cf66631e5425fceb032526b0647c5188080a5ddbb02040eaaeafc1685270d281c6f05f9230344351343be5494a78b517173df2c6c0e4796 languageName: node linkType: hard From 60c06af4fab598b2aa2393d272ddf19df781a8c0 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Sat, 4 Jan 2025 20:17:57 +0000 Subject: [PATCH 13/34] fix: add extra babel plugin to handle node modules --- .../react-native-web-vite/package.json | 2 + .../react-native-web-vite/src/preset.ts | 42 +- code/yarn.lock | 947 +++++++++++++++++- 3 files changed, 986 insertions(+), 5 deletions(-) diff --git a/code/frameworks/react-native-web-vite/package.json b/code/frameworks/react-native-web-vite/package.json index 62852daf4eaf..ca83dd74e1fb 100644 --- a/code/frameworks/react-native-web-vite/package.json +++ b/code/frameworks/react-native-web-vite/package.json @@ -59,6 +59,8 @@ "@storybook/react": "workspace:*", "@storybook/react-vite": "workspace:*", "@vitejs/plugin-react": "^4.3.2", + "babel-preset-expo": "^12.0.4", + "vite-plugin-babel": "^1.3.0", "vite-tsconfig-paths": "^5.1.4" }, "devDependencies": { diff --git a/code/frameworks/react-native-web-vite/src/preset.ts b/code/frameworks/react-native-web-vite/src/preset.ts index 44e847171dda..f8a827e037ed 100644 --- a/code/frameworks/react-native-web-vite/src/preset.ts +++ b/code/frameworks/react-native-web-vite/src/preset.ts @@ -3,6 +3,7 @@ import { viteFinal as reactViteFinal } from '@storybook/react-vite/preset'; import { esbuildFlowPlugin, flowPlugin } from '@bunchtogether/vite-plugin-flow'; import react from '@vitejs/plugin-react'; import type { InlineConfig, PluginOption } from 'vite'; +import babel from 'vite-plugin-babel'; import tsconfigPaths from 'vite-tsconfig-paths'; import type { FrameworkOptions, StorybookConfig } from './types'; @@ -19,6 +20,8 @@ export function reactNativeWeb(): PluginOption { _WORKLET: false, __DEV__: `${env.mode === 'development'}`, 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || env.mode), + // this is for the expo preset + 'process.env.EXPO_OS': JSON.stringify('web'), }, optimizeDeps: { include: [], @@ -77,12 +80,47 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = exclude: [/node_modules\/(?!react-native|@react-native)/], }), react({ + jsxRuntime: 'automatic', + ...pluginReactOptions, babel: { + ...pluginReactOptions.babel, babelrc: false, configFile: false, + plugins: ['react-native-web', ...(pluginReactOptions.babel?.plugins || [])], + }, + }), + + // we need to add this extra babel config because the react plugin doesn't allow + // for transpiling node_modules. However we keep the react plugin to get the fast refresh + // and other benefits + babel({ + include: pluginReactOptions.include + ? pluginReactOptions.include + : [/node_modules\/(react-native|@react-native)/], + // gesture handler is already transpiled + exclude: pluginReactOptions.exclude + ? pluginReactOptions.exclude + : [/node_modules\/(react-native-gesture-handler)/], + babelConfig: { + ...pluginReactOptions.babel, + babelrc: false, + configFile: false, + presets: [ + [ + 'babel-preset-expo', + { + ...(pluginReactOptions.jsxImportSource + ? { jsxImportSource: pluginReactOptions.jsxImportSource } + : {}), + ...(pluginReactOptions.jsxRuntime + ? { jsxRuntime: pluginReactOptions.jsxRuntime } + : {}), + }, + ], + ...(pluginReactOptions.babel?.presets || []), + ], + plugins: ['react-native-web', ...(pluginReactOptions.babel?.plugins || [])], }, - jsxRuntime: 'automatic', - ...pluginReactOptions, }) ); diff --git a/code/yarn.lock b/code/yarn.lock index a36028c2bb19..97b0e56c6f5a 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -508,6 +508,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-annotate-as-pure@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-annotate-as-pure@npm:7.25.9" + dependencies: + "@babel/types": "npm:^7.25.9" + checksum: 10c0/095b6ba50489d797733abebc4596a81918316a99e3632755c9f02508882912b00c2ae5e468532a25a5c2108d109ddbe9b7da78333ee7cc13817fc50c00cf06fe + languageName: node + linkType: hard + "@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.24.7" @@ -550,6 +559,23 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-class-features-plugin@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-create-class-features-plugin@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-member-expression-to-functions": "npm:^7.25.9" + "@babel/helper-optimise-call-expression": "npm:^7.25.9" + "@babel/helper-replace-supers": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/b2bdd39f38056a76b9ba00ec5b209dd84f5c5ebd998d0f4033cf0e73d5f2c357fbb49d1ce52db77a2709fb29ee22321f84a5734dc9914849bdfee9ad12ce8caf + languageName: node + linkType: hard + "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.24.7" @@ -563,6 +589,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-create-regexp-features-plugin@npm:^7.25.9": + version: 7.26.3 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.26.3" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + regexpu-core: "npm:^6.2.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/266f30b99af621559467ed67634cb653408a9262930c0627c3d17691a9d477329fb4dabe4b1785cbf0490e892513d247836674271842d6a8da49fd0afae7d435 + languageName: node + linkType: hard + "@babel/helper-define-polyfill-provider@npm:^0.5.0": version: 0.5.0 resolution: "@babel/helper-define-polyfill-provider@npm:0.5.0" @@ -631,6 +670,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-member-expression-to-functions@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-member-expression-to-functions@npm:7.25.9" + dependencies: + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/e08c7616f111e1fb56f398365e78858e26e466d4ac46dff25921adc5ccae9b232f66e952a2f4162bbe336627ba336c7fd9eca4835b6548935973d3380d77eaff + languageName: node + linkType: hard + "@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.24.3, @babel/helper-module-imports@npm:^7.24.7, @babel/helper-module-imports@npm:^7.25.9, @babel/helper-module-imports@npm:^7.8.3": version: 7.25.9 resolution: "@babel/helper-module-imports@npm:7.25.9" @@ -663,6 +712,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-optimise-call-expression@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-optimise-call-expression@npm:7.25.9" + dependencies: + "@babel/types": "npm:^7.25.9" + checksum: 10c0/90203e6607edeadd2a154940803fd616c0ed92c1013d6774c4b8eb491f1a5a3448b68faae6268141caa5c456e55e3ee49a4ed2bd7ddaf2365daea321c435914c + languageName: node + linkType: hard + "@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.25.9 resolution: "@babel/helper-plugin-utils@npm:7.25.9" @@ -683,6 +741,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-remap-async-to-generator@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-remap-async-to-generator@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-wrap-function": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/6798b562f2788210980f29c5ee96056d90dc73458c88af5bd32f9c82e28e01975588aa2a57bb866c35556bd9b76bac937e824ee63ba472b6430224b91b4879e9 + languageName: node + linkType: hard + "@babel/helper-replace-supers@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-replace-supers@npm:7.24.7" @@ -696,6 +767,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-replace-supers@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-replace-supers@npm:7.25.9" + dependencies: + "@babel/helper-member-expression-to-functions": "npm:^7.25.9" + "@babel/helper-optimise-call-expression": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/0b40d7d2925bd3ba4223b3519e2e4d2456d471ad69aa458f1c1d1783c80b522c61f8237d3a52afc9e47c7174129bbba650df06393a6787d5722f2ec7f223c3f4 + languageName: node + linkType: hard + "@babel/helper-simple-access@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-simple-access@npm:7.24.7" @@ -716,6 +800,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.9" + dependencies: + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/09ace0c6156961624ac9524329ce7f45350bab94bbe24335cbe0da7dfaa1448e658771831983cb83fe91cf6635b15d0a3cab57c03b92657480bfb49fb56dd184 + languageName: node + linkType: hard + "@babel/helper-split-export-declaration@npm:7.22.6": version: 7.22.6 resolution: "@babel/helper-split-export-declaration@npm:7.22.6" @@ -767,6 +861,17 @@ __metadata: languageName: node linkType: hard +"@babel/helper-wrap-function@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-wrap-function@npm:7.25.9" + dependencies: + "@babel/template": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/b6627d83291e7b80df020f8ee2890c52b8d49272962cac0114ef90f189889c90f1027985873d1b5261a4e986e109b2754292dc112392f0b1fcbfc91cc08bd003 + languageName: node + linkType: hard + "@babel/helpers@npm:^7.23.9, @babel/helpers@npm:^7.24.0, @babel/helpers@npm:^7.26.0": version: 7.26.0 resolution: "@babel/helpers@npm:7.26.0" @@ -848,6 +953,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-decorators@npm:^7.12.9": + version: 7.25.9 + resolution: "@babel/plugin-proposal-decorators@npm:7.25.9" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/plugin-syntax-decorators": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d7d54644f50a60c47090d70121905ca76534bd7a837c03d25e163ca6ae384b48ef6dcfb125a99f12b3ce7e78e074a33f6fa8c4531c1a46aa31274153f587b05e + languageName: node + linkType: hard + "@babel/plugin-proposal-decorators@npm:^7.13.5, @babel/plugin-proposal-decorators@npm:^7.22.7": version: 7.24.0 resolution: "@babel/plugin-proposal-decorators@npm:7.24.0" @@ -861,6 +979,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-proposal-export-default-from@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-proposal-export-default-from@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6d7ca2d8179d97c38cbcc327129c70103b95797a048c6d244fa8f3eb35b8aebc8122957dc25f20d9923fe6e75f16e2a4d649f1d80a63a9fed2d8b9eda85bd650 + languageName: node + linkType: hard + "@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8": version: 7.18.6 resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" @@ -976,6 +1105,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-decorators@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-decorators@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/47e44a7d61b76dac4f18fd61edc186012e084eb8f1fe253c483b0fe90b73366b4ebd2b0b03728e000fd1fdedc8af3aa6e93246caf97183a8d9d42a0eb57ecfcc + languageName: node + linkType: hard + "@babel/plugin-syntax-dynamic-import@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" @@ -987,6 +1127,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-export-default-from@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-syntax-export-default-from@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/10267af3a2bed893acb17b1e1e5e6a3aafcdcb202d54ac295bfa95ac11c66336a9c36cc73b4adc2b10a41a8ecc0c3390808ab16a99c24a76f8c74313ba32be63 + languageName: node + linkType: hard + "@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" @@ -998,6 +1149,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-flow@npm:^7.12.1, @babel/plugin-syntax-flow@npm:^7.25.9": + version: 7.26.0 + resolution: "@babel/plugin-syntax-flow@npm:7.26.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3d5cc1627a67af8be9df8cfe246869f18e7e9e2592f4b6f1c4bcd9bbe4ad27102784a25b31ebdbed23499ecb6fc23aaf7891ccf5ac3f432fd26a27123d1e242b + languageName: node + linkType: hard + "@babel/plugin-syntax-flow@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-syntax-flow@npm:7.22.5" @@ -1064,6 +1226,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-jsx@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-jsx@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d56597aff4df39d3decda50193b6dfbe596ca53f437ff2934622ce19a743bf7f43492d3fb3308b0289f5cee2b825d99ceb56526a2b9e7b68bf04901546c5618c + languageName: node + linkType: hard + "@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" @@ -1163,6 +1336,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-typescript@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-syntax-typescript@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5192ebe11bd46aea68b7a60fd9555465c59af7e279e71126788e59121b86e00b505816685ab4782abe159232b0f73854e804b54449820b0d950b397ee158caa2 + languageName: node + linkType: hard + "@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" @@ -1186,6 +1370,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-arrow-functions@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/851fef9f58be60a80f46cc0ce1e46a6f7346a6f9d50fa9e0fa79d46ec205320069d0cc157db213e2bea88ef5b7d9bd7618bb83f0b1996a836e2426c3a3a1f622 + languageName: node + linkType: hard + "@babel/plugin-transform-async-generator-functions@npm:7.23.9": version: 7.23.9 resolution: "@babel/plugin-transform-async-generator-functions@npm:7.23.9" @@ -1214,6 +1409,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-async-generator-functions@npm:^7.25.4": + version: 7.25.9 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-remap-async-to-generator": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e3fcb9fc3d6ab6cbd4fcd956b48c17b5e92fe177553df266ffcd2b2c1f2f758b893e51b638e77ed867941e0436487d2b8b505908d615c41799241699b520dec6 + languageName: node + linkType: hard + "@babel/plugin-transform-async-to-generator@npm:7.23.3": version: 7.23.3 resolution: "@babel/plugin-transform-async-to-generator@npm:7.23.3" @@ -1240,6 +1448,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-async-to-generator@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.25.9" + dependencies: + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-remap-async-to-generator": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c443d9e462ddef733ae56360064f32fc800105803d892e4ff32d7d6a6922b3765fa97b9ddc9f7f1d3f9d8c2d95721d85bef9dbf507804214c6cf6466b105c168 + languageName: node + linkType: hard + "@babel/plugin-transform-block-scoped-functions@npm:^7.23.3, @babel/plugin-transform-block-scoped-functions@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.24.7" @@ -1262,6 +1483,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-block-scoping@npm:^7.25.0": + version: 7.25.9 + resolution: "@babel/plugin-transform-block-scoping@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a76e30becb6c75b4d87a2cd53556fddb7c88ddd56bfadb965287fd944810ac159aa8eb5705366fc37336041f63154ed9fab3862fb10482a45bf5ede63fd55fda + languageName: node + linkType: hard + "@babel/plugin-transform-class-properties@npm:^7.22.5, @babel/plugin-transform-class-properties@npm:^7.23.3, @babel/plugin-transform-class-properties@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-class-properties@npm:7.24.7" @@ -1274,6 +1506,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-class-properties@npm:^7.25.4": + version: 7.25.9 + resolution: "@babel/plugin-transform-class-properties@npm:7.25.9" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f0603b6bd34d8ba62c03fc0572cb8bbc75874d097ac20cc7c5379e001081210a84dba1749e7123fca43b978382f605bb9973c99caf2c5b4c492d5c0a4a441150 + languageName: node + linkType: hard + "@babel/plugin-transform-class-static-block@npm:^7.23.4, @babel/plugin-transform-class-static-block@npm:^7.24.4": version: 7.24.7 resolution: "@babel/plugin-transform-class-static-block@npm:7.24.7" @@ -1305,6 +1549,22 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-classes@npm:^7.25.4": + version: 7.25.9 + resolution: "@babel/plugin-transform-classes@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-replace-supers": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + globals: "npm:^11.1.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/02742ea7cd25be286c982e672619effca528d7a931626a6f3d6cea11852951b7ee973276127eaf6418ac0e18c4d749a16b520709c707e86a67012bd23ff2927d + languageName: node + linkType: hard + "@babel/plugin-transform-computed-properties@npm:^7.23.3, @babel/plugin-transform-computed-properties@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-computed-properties@npm:7.24.7" @@ -1317,6 +1577,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-computed-properties@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-computed-properties@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/template": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/948c0ae3ce0ba2375241d122a9bc7cda4a7ac8110bd8a62cd804bc46a5fdb7a7a42c7799c4cd972e14e0a579d2bd0999b92e53177b73f240bb0d4b09972c758b + languageName: node + linkType: hard + "@babel/plugin-transform-destructuring@npm:^7.23.3, @babel/plugin-transform-destructuring@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-destructuring@npm:7.24.7" @@ -1328,6 +1600,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-destructuring@npm:^7.24.8": + version: 7.25.9 + resolution: "@babel/plugin-transform-destructuring@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7beec5fda665d108f69d5023aa7c298a1e566b973dd41290faa18aeea70f6f571295c1ece0a058f3ceb6c6c96de76de7cd34f5a227fbf09a1b8d8a735d28ca49 + languageName: node + linkType: hard + "@babel/plugin-transform-dotall-regex@npm:^7.23.3, @babel/plugin-transform-dotall-regex@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-dotall-regex@npm:7.24.7" @@ -1375,6 +1658,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-export-namespace-from@npm:^7.22.11": + version: 7.25.9 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f291ea2ec5f36de9028a00cbd5b32f08af281b8183bf047200ff001f4cb260be56f156b2449f42149448a4a033bd6e86a3a7f06d0c2825532eb0ae6b03058dfb + languageName: node + linkType: hard + "@babel/plugin-transform-export-namespace-from@npm:^7.23.4, @babel/plugin-transform-export-namespace-from@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-export-namespace-from@npm:7.24.7" @@ -1399,6 +1693,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-flow-strip-types@npm:^7.25.2": + version: 7.25.9 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/plugin-syntax-flow": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d4b79769a5b8bfc1a0766ed2158417e7efa53cdb5776161f641a642019c0822a1288f2ccd36c16a4bca77c64ccf1bab7e36aa1419adc417606acc6eddc126339 + languageName: node + linkType: hard + "@babel/plugin-transform-for-of@npm:^7.23.6, @babel/plugin-transform-for-of@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-for-of@npm:7.24.7" @@ -1411,6 +1717,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-for-of@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-for-of@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bf11abc71934a1f369f39cd7a33cf3d4dc5673026a53f70b7c1238c4fcc44e68b3ca1bdbe3db2076f60defb6ffe117cbe10b90f3e1a613b551d88f7c4e693bbe + languageName: node + linkType: hard + "@babel/plugin-transform-function-name@npm:^7.23.3, @babel/plugin-transform-function-name@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-function-name@npm:7.24.7" @@ -1424,6 +1742,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-function-name@npm:^7.25.1": + version: 7.25.9 + resolution: "@babel/plugin-transform-function-name@npm:7.25.9" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8e67fbd1dd367927b8b6afdf0a6e7cb3a3fd70766c52f700ca77428b6d536f6c9d7ec643e7762d64b23093233765c66bffa40e31aabe6492682879bcb45423e1 + languageName: node + linkType: hard + "@babel/plugin-transform-json-strings@npm:^7.23.4, @babel/plugin-transform-json-strings@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-json-strings@npm:7.24.7" @@ -1447,6 +1778,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-literals@npm:^7.25.2": + version: 7.25.9 + resolution: "@babel/plugin-transform-literals@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/00b14e9c14cf1e871c1f3781bf6334cac339c360404afd6aba63d2f6aca9270854d59a2b40abff1c4c90d4ffdca614440842d3043316c2f0ceb155fdf7726b3b + languageName: node + linkType: hard + "@babel/plugin-transform-logical-assignment-operators@npm:^7.23.4, @babel/plugin-transform-logical-assignment-operators@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.7" @@ -1459,6 +1801,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6e2051e10b2d6452980fc4bdef9da17c0d6ca48f81b8529e8804b031950e4fff7c74a7eb3de4a2b6ad22ffb631d0b67005425d232cce6e2b29ce861c78ed04f5 + languageName: node + linkType: hard + "@babel/plugin-transform-member-expression-literals@npm:^7.23.3, @babel/plugin-transform-member-expression-literals@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-member-expression-literals@npm:7.24.7" @@ -1495,6 +1848,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-modules-commonjs@npm:^7.24.8": + version: 7.26.3 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.26.3" + dependencies: + "@babel/helper-module-transforms": "npm:^7.26.0" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/82e59708f19f36da29531a64a7a94eabbf6ff46a615e0f5d9b49f3f59e8ef10e2bac607d749091508d3fa655146c9e5647c3ffeca781060cdabedb4c7a33c6f2 + languageName: node + linkType: hard + "@babel/plugin-transform-modules-systemjs@npm:^7.23.9, @babel/plugin-transform-modules-systemjs@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-modules-systemjs@npm:7.24.7" @@ -1533,6 +1898,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.25.9" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/32b14fda5c885d1706863f8af2ee6c703d39264355b57482d3a24fce7f6afbd4c7a0896e501c0806ed2b0759beb621bf7f3f7de1fbbc82026039a98d961e78ef + languageName: node + linkType: hard + "@babel/plugin-transform-new-target@npm:^7.23.3, @babel/plugin-transform-new-target@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-new-target@npm:7.24.7" @@ -1556,6 +1933,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/eb623db5be078a1c974afe7c7797b0309ba2ea9e9237c0b6831ade0f56d8248bb4ab3432ab34495ff8c877ec2fe412ff779d1e9b3c2b8139da18e1753d950bc3 + languageName: node + linkType: hard + "@babel/plugin-transform-numeric-separator@npm:^7.23.4, @babel/plugin-transform-numeric-separator@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-numeric-separator@npm:7.24.7" @@ -1568,6 +1956,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-numeric-separator@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ad63ad341977844b6f9535fcca15ca0d6d6ad112ed9cc509d4f6b75e9bf4b1b1a96a0bcb1986421a601505d34025373608b5f76d420d924b4e21f86b1a1f2749 + languageName: node + linkType: hard + "@babel/plugin-transform-object-assign@npm:^7.8.3": version: 7.22.5 resolution: "@babel/plugin-transform-object-assign@npm:7.22.5" @@ -1579,6 +1978,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-object-rest-spread@npm:^7.12.13, @babel/plugin-transform-object-rest-spread@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.9" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/plugin-transform-parameters": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/02077d8abd83bf6a48ff0b59e98d7561407cf75b591cffd3fdc5dc5e9a13dec1c847a7a690983762a3afecddb244831e897e0515c293e7c653b262c30cd614af + languageName: node + linkType: hard + "@babel/plugin-transform-object-rest-spread@npm:^7.24.0, @babel/plugin-transform-object-rest-spread@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-object-rest-spread@npm:7.24.7" @@ -1617,6 +2029,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/722fd5ee12ab905309d4e84421584fce4b6d9e6b639b06afb20b23fa809e6ab251e908a8d5e8b14d066a28186b8ef8f58d69fd6eca9ce1b9ef7af08333378f6c + languageName: node + linkType: hard + "@babel/plugin-transform-optional-chaining@npm:^7.23.0, @babel/plugin-transform-optional-chaining@npm:^7.23.4, @babel/plugin-transform-optional-chaining@npm:^7.24.1, @babel/plugin-transform-optional-chaining@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.7" @@ -1630,6 +2053,29 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-optional-chaining@npm:^7.24.8": + version: 7.25.9 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/041ad2beae5affb8e68a0bcb6882a2dadb758db3c629a0e012f57488ab43a822ac1ea17a29db8ef36560a28262a5dfa4dbbbf06ed6e431db55abe024b7cd3961 + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.22.15, @babel/plugin-transform-parameters@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-parameters@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/aecb446754b9e09d6b6fa95fd09e7cf682f8aaeed1d972874ba24c0a30a7e803ad5f014bb1fffc7bfeed22f93c0d200947407894ea59bf7687816f2f464f8df3 + languageName: node + linkType: hard + "@babel/plugin-transform-parameters@npm:^7.23.3, @babel/plugin-transform-parameters@npm:^7.24.1, @babel/plugin-transform-parameters@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-parameters@npm:7.24.7" @@ -1653,6 +2099,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-private-methods@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-private-methods@npm:7.25.9" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/64bd71de93d39daefa3e6c878d6f2fd238ed7d4ecfb13b0e771ddbbc131487def3ceb405b62b534a5cbb5043046b504e1b189b0a45229cc75af979a9fbcaa7bd + languageName: node + linkType: hard + "@babel/plugin-transform-private-property-in-object@npm:^7.23.4, @babel/plugin-transform-private-property-in-object@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-private-property-in-object@npm:7.24.7" @@ -1667,6 +2125,19 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-private-property-in-object@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d4965de19d9f204e692cc74dbc39f0bb469e5f29df96dd4457ea23c5e5596fba9d5af76eaa96f9d48a9fc20ec5f12a94c679285e36b8373406868ea228109e27 + languageName: node + linkType: hard + "@babel/plugin-transform-property-literals@npm:^7.23.3, @babel/plugin-transform-property-literals@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-property-literals@npm:7.24.7" @@ -1689,6 +2160,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-display-name@npm:^7.24.7, @babel/plugin-transform-react-display-name@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-display-name@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/63a0f962d64e71baf87c212755419e25c637d2d95ea6fdc067df26b91e606ae186442ae815b99a577eca9bf5404d9577ecad218a3cf42d0e9e286ca7b003a992 + languageName: node + linkType: hard + "@babel/plugin-transform-react-jsx-development@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-transform-react-jsx-development@npm:7.22.5" @@ -1700,6 +2182,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-jsx-development@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.25.9" + dependencies: + "@babel/plugin-transform-react-jsx": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c0b92ff9eb029620abf320ff74aae182cea87524723d740fb48a4373d0d16bddf5edbe1116e7ba341332a5337e55c2ceaee8b8cad5549e78af7f4b3cfe77debb + languageName: node + linkType: hard + "@babel/plugin-transform-react-jsx-self@npm:^7.24.7": version: 7.25.9 resolution: "@babel/plugin-transform-react-jsx-self@npm:7.25.9" @@ -1737,6 +2230,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-jsx@npm:^7.25.2, @babel/plugin-transform-react-jsx@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/plugin-syntax-jsx": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5c9947e8ed141f7606f54da3e05eea1074950c5b8354c39df69cb7f43cb5a83c6c9d7973b24bc3d89341c8611f8ad50830a98ab10d117d850e6bdd8febdce221 + languageName: node + linkType: hard + "@babel/plugin-transform-react-pure-annotations@npm:^7.24.1": version: 7.24.1 resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.24.1" @@ -1749,6 +2257,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-react-pure-annotations@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.25.9" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7c8eac04644ad19dcd71bb8e949b0ae22b9e548fa4a58e545d3d0342f647fb89db7f8789a7c5b8074d478ce6d3d581eaf47dd4b36027e16fd68211c383839abc + languageName: node + linkType: hard + "@babel/plugin-transform-regenerator@npm:^7.23.3, @babel/plugin-transform-regenerator@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-regenerator@npm:7.24.7" @@ -1761,6 +2281,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-regenerator@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-regenerator@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + regenerator-transform: "npm:^0.15.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/eef3ffc19f7d291b863635f32b896ad7f87806d9219a0d3404a470219abcfc5b43aabecd691026c48e875b965760d9c16abee25e6447272233f30cd07f453ec7 + languageName: node + linkType: hard + "@babel/plugin-transform-reserved-words@npm:^7.23.3, @babel/plugin-transform-reserved-words@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-reserved-words@npm:7.24.7" @@ -1804,6 +2336,22 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-runtime@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-runtime@npm:7.25.9" + dependencies: + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + babel-plugin-polyfill-corejs2: "npm:^0.4.10" + babel-plugin-polyfill-corejs3: "npm:^0.10.6" + babel-plugin-polyfill-regenerator: "npm:^0.6.1" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/888a4998ba0a2313de347954c9a8dfeccbff0633c69d33aee385b8878eba2b429dbfb00c3cc04f6bca454b9be8afa01ebbd73defb7fbbb6e2d3086205c07758b + languageName: node + linkType: hard + "@babel/plugin-transform-shorthand-properties@npm:^7.23.3, @babel/plugin-transform-shorthand-properties@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-shorthand-properties@npm:7.24.7" @@ -1815,6 +2363,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-shorthand-properties@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/05a20d45f0fb62567644c507ccd4e379c1a74dacf887d2b2cac70247415e3f6d7d3bf4850c8b336053144715fedb6200fc38f7130c4b76c94eec9b9c0c2a8e9b + languageName: node + linkType: hard + "@babel/plugin-transform-spread@npm:^7.23.3, @babel/plugin-transform-spread@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-spread@npm:7.24.7" @@ -1827,6 +2386,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-spread@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-spread@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/996c8fed238efc30e0664f9f58bd7ec8c148f4659f84425f68923a094fe891245711d26eb10d1f815f50c124434e076e860dbe9662240844d1b77cd09907dcdf + languageName: node + linkType: hard + "@babel/plugin-transform-sticky-regex@npm:^7.23.3, @babel/plugin-transform-sticky-regex@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.7" @@ -1838,6 +2409,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-sticky-regex@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e9612b0615dab4c4fba1c560769616a9bd7b9226c73191ef84b6c3ee185c8b719b4f887cdd8336a0a13400ce606ab4a0d33bc8fa6b4fcdb53e2896d07f2568f6 + languageName: node + linkType: hard + "@babel/plugin-transform-template-literals@npm:^7.23.3, @babel/plugin-transform-template-literals@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-template-literals@npm:7.24.7" @@ -1874,6 +2456,21 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-typescript@npm:^7.25.2": + version: 7.26.3 + resolution: "@babel/plugin-transform-typescript@npm:7.26.3" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.25.9" + "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/plugin-syntax-typescript": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0a0509ec56666fab5b557d573254665956a377916fc1e7cee309c0711d11257338ba7ee678db03603a3985d2c6c0b210b788fb6b9616d8fc0595469e39089a8f + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-escapes@npm:^7.23.3, @babel/plugin-transform-unicode-escapes@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-unicode-escapes@npm:7.24.7" @@ -1909,6 +2506,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-unicode-regex@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.25.9" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/448004f978279e726af26acd54f63f9002c9e2582ecd70d1c5c4436f6de490fcd817afb60016d11c52f5ef17dbaac2590e8cc7bfaf4e91b58c452cf188c7920f + languageName: node + linkType: hard + "@babel/plugin-transform-unicode-sets-regex@npm:^7.23.3, @babel/plugin-transform-unicode-sets-regex@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.24.7" @@ -2138,6 +2747,22 @@ __metadata: languageName: node linkType: hard +"@babel/preset-react@npm:^7.22.15": + version: 7.26.3 + resolution: "@babel/preset-react@npm:7.26.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-transform-react-display-name": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx-development": "npm:^7.25.9" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b470dcba11032ef6c832066f4af5c75052eaed49feb0f445227231ef1b5c42aacd6e216988c0bd469fd5728cd27b6b059ca307c9ecaa80c6bb5da4bf1c833e12 + languageName: node + linkType: hard + "@babel/preset-react@npm:^7.24.1": version: 7.24.1 resolution: "@babel/preset-react@npm:7.24.1" @@ -2236,7 +2861,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.23.9, @babel/template@npm:^7.24.0, @babel/template@npm:^7.24.7, @babel/template@npm:^7.25.9": +"@babel/template@npm:^7.23.9, @babel/template@npm:^7.24.0, @babel/template@npm:^7.24.7, @babel/template@npm:^7.25.0, @babel/template@npm:^7.25.9": version: 7.25.9 resolution: "@babel/template@npm:7.25.9" dependencies: @@ -5095,6 +5720,88 @@ __metadata: languageName: node linkType: hard +"@react-native/babel-plugin-codegen@npm:0.76.5": + version: 0.76.5 + resolution: "@react-native/babel-plugin-codegen@npm:0.76.5" + dependencies: + "@react-native/codegen": "npm:0.76.5" + checksum: 10c0/f853d7b4f0114a5443128af4813ea473542db4470e55f2962b94578c587c47347745e4b23819dec147d4b3926a0eecf36389ce01af286923436cb859a7b4a481 + languageName: node + linkType: hard + +"@react-native/babel-preset@npm:0.76.5": + version: 0.76.5 + resolution: "@react-native/babel-preset@npm:0.76.5" + dependencies: + "@babel/core": "npm:^7.25.2" + "@babel/plugin-proposal-export-default-from": "npm:^7.24.7" + "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" + "@babel/plugin-syntax-export-default-from": "npm:^7.24.7" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-transform-arrow-functions": "npm:^7.24.7" + "@babel/plugin-transform-async-generator-functions": "npm:^7.25.4" + "@babel/plugin-transform-async-to-generator": "npm:^7.24.7" + "@babel/plugin-transform-block-scoping": "npm:^7.25.0" + "@babel/plugin-transform-class-properties": "npm:^7.25.4" + "@babel/plugin-transform-classes": "npm:^7.25.4" + "@babel/plugin-transform-computed-properties": "npm:^7.24.7" + "@babel/plugin-transform-destructuring": "npm:^7.24.8" + "@babel/plugin-transform-flow-strip-types": "npm:^7.25.2" + "@babel/plugin-transform-for-of": "npm:^7.24.7" + "@babel/plugin-transform-function-name": "npm:^7.25.1" + "@babel/plugin-transform-literals": "npm:^7.25.2" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.24.7" + "@babel/plugin-transform-modules-commonjs": "npm:^7.24.8" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.24.7" + "@babel/plugin-transform-numeric-separator": "npm:^7.24.7" + "@babel/plugin-transform-object-rest-spread": "npm:^7.24.7" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.24.7" + "@babel/plugin-transform-optional-chaining": "npm:^7.24.8" + "@babel/plugin-transform-parameters": "npm:^7.24.7" + "@babel/plugin-transform-private-methods": "npm:^7.24.7" + "@babel/plugin-transform-private-property-in-object": "npm:^7.24.7" + "@babel/plugin-transform-react-display-name": "npm:^7.24.7" + "@babel/plugin-transform-react-jsx": "npm:^7.25.2" + "@babel/plugin-transform-react-jsx-self": "npm:^7.24.7" + "@babel/plugin-transform-react-jsx-source": "npm:^7.24.7" + "@babel/plugin-transform-regenerator": "npm:^7.24.7" + "@babel/plugin-transform-runtime": "npm:^7.24.7" + "@babel/plugin-transform-shorthand-properties": "npm:^7.24.7" + "@babel/plugin-transform-spread": "npm:^7.24.7" + "@babel/plugin-transform-sticky-regex": "npm:^7.24.7" + "@babel/plugin-transform-typescript": "npm:^7.25.2" + "@babel/plugin-transform-unicode-regex": "npm:^7.24.7" + "@babel/template": "npm:^7.25.0" + "@react-native/babel-plugin-codegen": "npm:0.76.5" + babel-plugin-syntax-hermes-parser: "npm:^0.25.1" + babel-plugin-transform-flow-enums: "npm:^0.0.2" + react-refresh: "npm:^0.14.0" + peerDependencies: + "@babel/core": "*" + checksum: 10c0/06fced0a8b804b66991b846048f99bdb0c510a84ff859d9dadeab5a51cc96313694a9c9ca0e3b304f12aa620f482cd6cc69e319f2b7fa500a1bd91a2d0e833ba + languageName: node + linkType: hard + +"@react-native/codegen@npm:0.76.5": + version: 0.76.5 + resolution: "@react-native/codegen@npm:0.76.5" + dependencies: + "@babel/parser": "npm:^7.25.3" + glob: "npm:^7.1.1" + hermes-parser: "npm:0.23.1" + invariant: "npm:^2.2.4" + jscodeshift: "npm:^0.14.0" + mkdirp: "npm:^0.5.1" + nullthrows: "npm:^1.1.1" + yargs: "npm:^17.6.2" + peerDependencies: + "@babel/preset-env": ^7.1.6 + checksum: 10c0/e4c160b0100bf0c44a6a621e1cf14fa50203671350a22da6d87d86af8427d24bc836ed6e8b6958438695655d2bea3bec19058587286e027c5f68477ca267067b + languageName: node + linkType: hard + "@rollup/pluginutils@npm:^5.0.2, @rollup/pluginutils@npm:^5.1.0": version: 5.1.0 resolution: "@rollup/pluginutils@npm:5.1.0" @@ -6719,7 +7426,9 @@ __metadata: "@storybook/react-vite": "workspace:*" "@types/node": "npm:^22.0.0" "@vitejs/plugin-react": "npm:^4.3.2" + babel-preset-expo: "npm:^12.0.4" typescript: "npm:^5.3.2" + vite-plugin-babel: "npm:^1.3.0" vite-tsconfig-paths: "npm:^5.1.4" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta @@ -10385,6 +11094,15 @@ __metadata: languageName: node linkType: hard +"ast-types@npm:0.15.2": + version: 0.15.2 + resolution: "ast-types@npm:0.15.2" + dependencies: + tslib: "npm:^2.0.1" + checksum: 10c0/5b26e3656e9e8d1db8c8d14971d0cb88ca0138aacce72171cb4cd4555fc8dc53c07e821c568e57fe147366931708fefd25cb9d7e880d42ce9cb569947844c962 + languageName: node + linkType: hard + "ast-types@npm:^0.16.1": version: 0.16.1 resolution: "ast-types@npm:0.16.1" @@ -10693,6 +11411,18 @@ __metadata: languageName: node linkType: hard +"babel-plugin-polyfill-corejs3@npm:^0.10.6": + version: 0.10.6 + resolution: "babel-plugin-polyfill-corejs3@npm:0.10.6" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.2" + core-js-compat: "npm:^3.38.0" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/3a69220471b07722c2ae6537310bf26b772514e12b601398082965459c838be70a0ca70b0662f0737070654ff6207673391221d48599abb4a2b27765206d9f79 + languageName: node + linkType: hard + "babel-plugin-polyfill-corejs3@npm:^0.9.0": version: 0.9.0 resolution: "babel-plugin-polyfill-corejs3@npm:0.9.0" @@ -10738,6 +11468,31 @@ __metadata: languageName: node linkType: hard +"babel-plugin-react-native-web@npm:~0.19.13": + version: 0.19.13 + resolution: "babel-plugin-react-native-web@npm:0.19.13" + checksum: 10c0/0710db342063182163d58febfb01ef510c9460f0500f9faaf47603d06dda37554f216e6123a099a343eb2067c2dfb43c9d4ca573a9d659662ca429048db11af4 + languageName: node + linkType: hard + +"babel-plugin-syntax-hermes-parser@npm:^0.25.1": + version: 0.25.1 + resolution: "babel-plugin-syntax-hermes-parser@npm:0.25.1" + dependencies: + hermes-parser: "npm:0.25.1" + checksum: 10c0/8f4a0cb65056162b2d4c64d0ccd4d2fdeac8218e83e0338e92564ead659fd9b9351277ed2a10e958d0d8dc4c60591d5b1a40aa425bf0cbf67224e9767c557abf + languageName: node + linkType: hard + +"babel-plugin-transform-flow-enums@npm:^0.0.2": + version: 0.0.2 + resolution: "babel-plugin-transform-flow-enums@npm:0.0.2" + dependencies: + "@babel/plugin-syntax-flow": "npm:^7.12.1" + checksum: 10c0/aa9d022d8d4be0e7c4f1ff7e5308fe7e0ff4d6f9099449913e3a11c1e81916623a8f36432da180a9aa3f53ea534dca4401fe33d6528f043f40357cfa790ee778 + languageName: node + linkType: hard + "babel-plugin-transform-typescript-metadata@npm:^0.3.1": version: 0.3.2 resolution: "babel-plugin-transform-typescript-metadata@npm:0.3.2" @@ -10747,6 +11502,31 @@ __metadata: languageName: node linkType: hard +"babel-preset-expo@npm:^12.0.4": + version: 12.0.4 + resolution: "babel-preset-expo@npm:12.0.4" + dependencies: + "@babel/plugin-proposal-decorators": "npm:^7.12.9" + "@babel/plugin-transform-export-namespace-from": "npm:^7.22.11" + "@babel/plugin-transform-object-rest-spread": "npm:^7.12.13" + "@babel/plugin-transform-parameters": "npm:^7.22.15" + "@babel/preset-react": "npm:^7.22.15" + "@babel/preset-typescript": "npm:^7.23.0" + "@react-native/babel-preset": "npm:0.76.5" + babel-plugin-react-native-web: "npm:~0.19.13" + react-refresh: "npm:^0.14.2" + peerDependencies: + babel-plugin-react-compiler: ^19.0.0-beta-9ee70a1-20241017 + react-compiler-runtime: ^19.0.0-beta-8a03594-20241020 + peerDependenciesMeta: + babel-plugin-react-compiler: + optional: true + react-compiler-runtime: + optional: true + checksum: 10c0/5fac764b42fb23f62ed0143d82bb76ed077b13f44f920041da48d9313eaf6308eaeab155da782611a50af9fc3af862caf5067768dd4dc1361fd001d3d461c7f9 + languageName: node + linkType: hard + "babel-walk@npm:3.0.0-canary-5": version: 3.0.0-canary-5 resolution: "babel-walk@npm:3.0.0-canary-5" @@ -11372,6 +12152,20 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.24.2": + version: 4.24.3 + resolution: "browserslist@npm:4.24.3" + dependencies: + caniuse-lite: "npm:^1.0.30001688" + electron-to-chromium: "npm:^1.5.73" + node-releases: "npm:^2.0.19" + update-browserslist-db: "npm:^1.1.1" + bin: + browserslist: cli.js + checksum: 10c0/bab261ef7b6e1656a719a9fa31240ae7ce4d5ba68e479f6b11e348d819346ab4c0ff6f4821f43adcc9c193a734b186775a83b37979e70a69d182965909fe569a + languageName: node + linkType: hard + "buffer-crc32@npm:^0.2.5": version: 0.2.13 resolution: "buffer-crc32@npm:0.2.13" @@ -11632,6 +12426,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001688": + version: 1.0.30001690 + resolution: "caniuse-lite@npm:1.0.30001690" + checksum: 10c0/646bd469032afa90400a84dec30a2b00a6eda62c03ead358117e3f884cda8aacec02ec058a6dbee5eaf9714f83e483b9b0eb4fb42febb8076569f5ca40f1d347 + languageName: node + linkType: hard + "case-sensitive-paths-webpack-plugin@npm:^2.4.0": version: 2.4.0 resolution: "case-sensitive-paths-webpack-plugin@npm:2.4.0" @@ -12489,6 +13290,15 @@ __metadata: languageName: node linkType: hard +"core-js-compat@npm:^3.38.0": + version: 3.39.0 + resolution: "core-js-compat@npm:3.39.0" + dependencies: + browserslist: "npm:^4.24.2" + checksum: 10c0/880579a3dab235e3b6350f1e324269c600753b48e891ea859331618d5051e68b7a95db6a03ad2f3cc7df4397318c25a5bc7740562ad39e94f56568638d09d414 + languageName: node + linkType: hard + "core-js-pure@npm:^3.23.3": version: 3.33.0 resolution: "core-js-pure@npm:3.33.0" @@ -13686,6 +14496,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.5.73": + version: 1.5.76 + resolution: "electron-to-chromium@npm:1.5.76" + checksum: 10c0/5a977be9fd5810769a7b4eae0e4b41b6beca65f2b3f3b7442819f6c93366d767d183cfbf408714f944a9bf3aa304f8c9ab9d0cdfd8e878ab8f2cbb61f8b22acd + languageName: node + linkType: hard + "elliptic@npm:^6.5.3, elliptic@npm:^6.5.4": version: 6.5.4 resolution: "elliptic@npm:6.5.4" @@ -16448,7 +17265,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4": +"glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -16978,6 +17795,13 @@ __metadata: languageName: node linkType: hard +"hermes-estree@npm:0.23.1": + version: 0.23.1 + resolution: "hermes-estree@npm:0.23.1" + checksum: 10c0/59ca9f3980419fcf511a172f0ee9960d86c8ba44ea8bc13d3bd0b6208e9540db1a0a9e46b0e797151f11b0e8e33b2bf850907aef4a5c9ac42c53809cefefc405 + languageName: node + linkType: hard + "hermes-estree@npm:0.25.1": version: 0.25.1 resolution: "hermes-estree@npm:0.25.1" @@ -16985,6 +17809,15 @@ __metadata: languageName: node linkType: hard +"hermes-parser@npm:0.23.1": + version: 0.23.1 + resolution: "hermes-parser@npm:0.23.1" + dependencies: + hermes-estree: "npm:0.23.1" + checksum: 10c0/56907e6136d2297543922dd9f8ee27378ef010c11dc1e0b4a0866faab2c527613b0edcda5e1ebc0daa0ca1ae6528734dfc479e18267aabe4dce0c7198217fd97 + languageName: node + linkType: hard + "hermes-parser@npm:0.25.1": version: 0.25.1 resolution: "hermes-parser@npm:0.25.1" @@ -18666,6 +19499,37 @@ __metadata: languageName: node linkType: hard +"jscodeshift@npm:^0.14.0": + version: 0.14.0 + resolution: "jscodeshift@npm:0.14.0" + dependencies: + "@babel/core": "npm:^7.13.16" + "@babel/parser": "npm:^7.13.16" + "@babel/plugin-proposal-class-properties": "npm:^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.13.8" + "@babel/plugin-proposal-optional-chaining": "npm:^7.13.12" + "@babel/plugin-transform-modules-commonjs": "npm:^7.13.8" + "@babel/preset-flow": "npm:^7.13.13" + "@babel/preset-typescript": "npm:^7.13.0" + "@babel/register": "npm:^7.13.16" + babel-core: "npm:^7.0.0-bridge.0" + chalk: "npm:^4.1.2" + flow-parser: "npm:0.*" + graceful-fs: "npm:^4.2.4" + micromatch: "npm:^4.0.4" + neo-async: "npm:^2.5.0" + node-dir: "npm:^0.1.17" + recast: "npm:^0.21.0" + temp: "npm:^0.8.4" + write-file-atomic: "npm:^2.3.0" + peerDependencies: + "@babel/preset-env": ^7.1.6 + bin: + jscodeshift: bin/jscodeshift.js + checksum: 10c0/dab63bdb4b7e67d79634fcd3f5dc8b227146e9f68aa88700bc49c5a45b6339d05bd934a98aa53d29abd04f81237d010e7e037799471b2aab66ec7b9a7d752786 + languageName: node + linkType: hard + "jscodeshift@npm:^0.15.1": version: 0.15.1 resolution: "jscodeshift@npm:0.15.1" @@ -18717,7 +19581,7 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^3.0.2": +"jsesc@npm:^3.0.2, jsesc@npm:~3.0.2": version: 3.0.2 resolution: "jsesc@npm:3.0.2" bin: @@ -21708,6 +22572,13 @@ __metadata: languageName: node linkType: hard +"node-releases@npm:^2.0.19": + version: 2.0.19 + resolution: "node-releases@npm:2.0.19" + checksum: 10c0/52a0dbd25ccf545892670d1551690fe0facb6a471e15f2cfa1b20142a5b255b3aa254af5f59d6ecb69c2bec7390bc643c43aa63b13bf5e64b6075952e716b1aa + languageName: node + linkType: hard + "nopt@npm:^6.0.0": version: 6.0.0 resolution: "nopt@npm:6.0.0" @@ -21908,6 +22779,13 @@ __metadata: languageName: node linkType: hard +"nullthrows@npm:^1.1.1": + version: 1.1.1 + resolution: "nullthrows@npm:1.1.1" + checksum: 10c0/56f34bd7c3dcb3bd23481a277fa22918120459d3e9d95ca72976c72e9cac33a97483f0b95fc420e2eb546b9fe6db398273aba9a938650cdb8c98ee8f159dcb30 + languageName: node + linkType: hard + "nx@npm:20.2.2": version: 20.2.2 resolution: "nx@npm:20.2.2" @@ -24492,6 +25370,18 @@ __metadata: languageName: node linkType: hard +"recast@npm:^0.21.0": + version: 0.21.5 + resolution: "recast@npm:0.21.5" + dependencies: + ast-types: "npm:0.15.2" + esprima: "npm:~4.0.0" + source-map: "npm:~0.6.1" + tslib: "npm:^2.0.1" + checksum: 10c0/a45168c82195f24fa2c70293a624fece0069a2e8e8adb637f9963777735f81cb3bb62e55172db677ec3573b08b2daaf1eddd85b74da6fe0bd37c9b15eeaf94b4 + languageName: node + linkType: hard + "recast@npm:^0.23.1, recast@npm:^0.23.3, recast@npm:^0.23.5": version: 0.23.5 resolution: "recast@npm:0.23.5" @@ -24557,6 +25447,15 @@ __metadata: languageName: node linkType: hard +"regenerate-unicode-properties@npm:^10.2.0": + version: 10.2.0 + resolution: "regenerate-unicode-properties@npm:10.2.0" + dependencies: + regenerate: "npm:^1.4.2" + checksum: 10c0/5510785eeaf56bbfdf4e663d6753f125c08d2a372d4107bc1b756b7bf142e2ed80c2733a8b54e68fb309ba37690e66a0362699b0e21d5c1f0255dea1b00e6460 + languageName: node + linkType: hard + "regenerate@npm:^1.4.2": version: 1.4.2 resolution: "regenerate@npm:1.4.2" @@ -24644,6 +25543,38 @@ __metadata: languageName: node linkType: hard +"regexpu-core@npm:^6.2.0": + version: 6.2.0 + resolution: "regexpu-core@npm:6.2.0" + dependencies: + regenerate: "npm:^1.4.2" + regenerate-unicode-properties: "npm:^10.2.0" + regjsgen: "npm:^0.8.0" + regjsparser: "npm:^0.12.0" + unicode-match-property-ecmascript: "npm:^2.0.0" + unicode-match-property-value-ecmascript: "npm:^2.1.0" + checksum: 10c0/bbcb83a854bf96ce4005ee4e4618b71c889cda72674ce6092432f0039b47890c2d0dfeb9057d08d440999d9ea03879ebbb7f26ca005ccf94390e55c348859b98 + languageName: node + linkType: hard + +"regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "regjsgen@npm:0.8.0" + checksum: 10c0/44f526c4fdbf0b29286101a282189e4dbb303f4013cf3fea058668d96d113b9180d3d03d1e13f6d4cbde38b7728bf951aecd9dc199938c080093a9a6f0d7a6bd + languageName: node + linkType: hard + +"regjsparser@npm:^0.12.0": + version: 0.12.0 + resolution: "regjsparser@npm:0.12.0" + dependencies: + jsesc: "npm:~3.0.2" + bin: + regjsparser: bin/parser + checksum: 10c0/99d3e4e10c8c7732eb7aa843b8da2fd8b647fe144d3711b480e4647dc3bff4b1e96691ccf17f3ace24aa866a50b064236177cb25e6e4fbbb18285d99edaed83b + languageName: node + linkType: hard + "regjsparser@npm:^0.9.1": version: 0.9.1 resolution: "regjsparser@npm:0.9.1" @@ -28762,6 +29693,16 @@ __metadata: languageName: node linkType: hard +"vite-plugin-babel@npm:^1.3.0": + version: 1.3.0 + resolution: "vite-plugin-babel@npm:1.3.0" + peerDependencies: + "@babel/core": ^7.0.0 + vite: ^2.7.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + checksum: 10c0/1613c45ee220ffbad18aeacbbe395d4d346cbe7c971c7469b0cd96df422bd9d617821a40bacf3b6ea3e7c4ded43e6ccdfd17ec3c0899fee2835f56e8971c6b57 + languageName: node + linkType: hard + "vite-plugin-inspect@npm:^0.8.5": version: 0.8.5 resolution: "vite-plugin-inspect@npm:0.8.5" From 9149ae8795669bc9d0f6d38e3b68de1b09812c0a Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Sat, 4 Jan 2025 20:19:06 +0000 Subject: [PATCH 14/34] fix: comment --- code/frameworks/react-native-web-vite/src/preset.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/code/frameworks/react-native-web-vite/src/preset.ts b/code/frameworks/react-native-web-vite/src/preset.ts index f8a827e037ed..83a461964a60 100644 --- a/code/frameworks/react-native-web-vite/src/preset.ts +++ b/code/frameworks/react-native-web-vite/src/preset.ts @@ -107,6 +107,7 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = configFile: false, presets: [ [ + // using this preset is what makes reanimated work with this setup (one of the plugins in there probably) 'babel-preset-expo', { ...(pluginReactOptions.jsxImportSource From 7f181a04a38858c00259bc7384c891198672c855 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Sat, 4 Jan 2025 20:22:09 +0000 Subject: [PATCH 15/34] fix: add dependency --- code/frameworks/react-native-web-vite/package.json | 1 + code/frameworks/react-native-web-vite/src/preset.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/code/frameworks/react-native-web-vite/package.json b/code/frameworks/react-native-web-vite/package.json index ca83dd74e1fb..3fb8134776d9 100644 --- a/code/frameworks/react-native-web-vite/package.json +++ b/code/frameworks/react-native-web-vite/package.json @@ -59,6 +59,7 @@ "@storybook/react": "workspace:*", "@storybook/react-vite": "workspace:*", "@vitejs/plugin-react": "^4.3.2", + "babel-plugin-react-native-web": "^0.19.13", "babel-preset-expo": "^12.0.4", "vite-plugin-babel": "^1.3.0", "vite-tsconfig-paths": "^5.1.4" diff --git a/code/frameworks/react-native-web-vite/src/preset.ts b/code/frameworks/react-native-web-vite/src/preset.ts index 83a461964a60..30d5f2de974e 100644 --- a/code/frameworks/react-native-web-vite/src/preset.ts +++ b/code/frameworks/react-native-web-vite/src/preset.ts @@ -86,6 +86,7 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = ...pluginReactOptions.babel, babelrc: false, configFile: false, + // babel-plugin-react-native-web adds optimizations for react native web prod builds plugins: ['react-native-web', ...(pluginReactOptions.babel?.plugins || [])], }, }), @@ -120,6 +121,7 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = ], ...(pluginReactOptions.babel?.presets || []), ], + // babel-plugin-react-native-web adds optimizations for react native web prod builds plugins: ['react-native-web', ...(pluginReactOptions.babel?.plugins || [])], }, }) From 30ddce60c6ebad93eac5998dc68ad3d27239b678 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Sat, 4 Jan 2025 23:25:28 +0000 Subject: [PATCH 16/34] fix: lock --- code/yarn.lock | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/yarn.lock b/code/yarn.lock index 97b0e56c6f5a..e73a10f8e95d 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -7426,6 +7426,7 @@ __metadata: "@storybook/react-vite": "workspace:*" "@types/node": "npm:^22.0.0" "@vitejs/plugin-react": "npm:^4.3.2" + babel-plugin-react-native-web: "npm:^0.19.13" babel-preset-expo: "npm:^12.0.4" typescript: "npm:^5.3.2" vite-plugin-babel: "npm:^1.3.0" @@ -11468,7 +11469,7 @@ __metadata: languageName: node linkType: hard -"babel-plugin-react-native-web@npm:~0.19.13": +"babel-plugin-react-native-web@npm:^0.19.13, babel-plugin-react-native-web@npm:~0.19.13": version: 0.19.13 resolution: "babel-plugin-react-native-web@npm:0.19.13" checksum: 10c0/0710db342063182163d58febfb01ef510c9460f0500f9faaf47603d06dda37554f216e6123a099a343eb2067c2dfb43c9d4ca573a9d659662ca429048db11af4 From 1fd15097c3c4b08b41de6b8ec4ad51a04c20451d Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Sun, 5 Jan 2025 13:15:35 +0000 Subject: [PATCH 17/34] fix: remove expo preset and reduce to just the important plugins --- .../react-native-web-vite/package.json | 4 +- .../react-native-web-vite/src/preset.ts | 41 +- code/yarn.lock | 880 +----------------- 3 files changed, 48 insertions(+), 877 deletions(-) diff --git a/code/frameworks/react-native-web-vite/package.json b/code/frameworks/react-native-web-vite/package.json index 3fb8134776d9..8dcdf6decac3 100644 --- a/code/frameworks/react-native-web-vite/package.json +++ b/code/frameworks/react-native-web-vite/package.json @@ -53,14 +53,14 @@ "prep": "jiti ../../../scripts/prepare/bundle.ts" }, "dependencies": { + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/preset-react": "^7.26.3", "@bunchtogether/vite-plugin-flow": "^1.0.2", "@joshwooding/vite-plugin-react-docgen-typescript": "0.4.2", "@storybook/builder-vite": "workspace:*", "@storybook/react": "workspace:*", "@storybook/react-vite": "workspace:*", "@vitejs/plugin-react": "^4.3.2", - "babel-plugin-react-native-web": "^0.19.13", - "babel-preset-expo": "^12.0.4", "vite-plugin-babel": "^1.3.0", "vite-tsconfig-paths": "^5.1.4" }, diff --git a/code/frameworks/react-native-web-vite/src/preset.ts b/code/frameworks/react-native-web-vite/src/preset.ts index 30d5f2de974e..2f49f97c9617 100644 --- a/code/frameworks/react-native-web-vite/src/preset.ts +++ b/code/frameworks/react-native-web-vite/src/preset.ts @@ -70,6 +70,8 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = const { pluginReactOptions = {} } = await options.presets.apply('frameworkOptions'); + const isDevelopment = options.configType !== 'PRODUCTION'; + const reactConfig = await reactViteFinal(config, options); const { plugins = [] } = reactConfig; @@ -80,14 +82,12 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = exclude: [/node_modules\/(?!react-native|@react-native)/], }), react({ - jsxRuntime: 'automatic', ...pluginReactOptions, + jsxRuntime: pluginReactOptions.jsxRuntime || 'automatic', babel: { - ...pluginReactOptions.babel, babelrc: false, configFile: false, - // babel-plugin-react-native-web adds optimizations for react native web prod builds - plugins: ['react-native-web', ...(pluginReactOptions.babel?.plugins || [])], + ...pluginReactOptions.babel, }, }), @@ -95,34 +95,37 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = // for transpiling node_modules. However we keep the react plugin to get the fast refresh // and other benefits babel({ - include: pluginReactOptions.include - ? pluginReactOptions.include - : [/node_modules\/(react-native|@react-native)/], + include: pluginReactOptions.include || [/node_modules\/(react-native|@react-native)/], // gesture handler is already transpiled - exclude: pluginReactOptions.exclude - ? pluginReactOptions.exclude - : [/node_modules\/(react-native-gesture-handler)/], + exclude: pluginReactOptions.exclude, babelConfig: { ...pluginReactOptions.babel, babelrc: false, configFile: false, presets: [ [ - // using this preset is what makes reanimated work with this setup (one of the plugins in there probably) - 'babel-preset-expo', + require('@babel/preset-react'), { - ...(pluginReactOptions.jsxImportSource - ? { jsxImportSource: pluginReactOptions.jsxImportSource } - : {}), - ...(pluginReactOptions.jsxRuntime - ? { jsxRuntime: pluginReactOptions.jsxRuntime } - : {}), + development: isDevelopment, + jsxRuntime: pluginReactOptions.jsxRuntime || 'automatic', + jsxImportSource: pluginReactOptions.jsxImportSource || 'react', }, ], ...(pluginReactOptions.babel?.presets || []), ], // babel-plugin-react-native-web adds optimizations for react native web prod builds - plugins: ['react-native-web', ...(pluginReactOptions.babel?.plugins || [])], + plugins: [ + [ + // this is a fix for reanimated not working in production + require('@babel/plugin-transform-modules-commonjs'), + { + strict: false, + strictMode: false, // prevent "use strict" injections + allowTopLevelThis: true, // dont rewrite global `this` -> `undefined` + }, + ], + ...(pluginReactOptions.babel?.plugins || []), + ], }, }) ); diff --git a/code/yarn.lock b/code/yarn.lock index e73a10f8e95d..0e87b9201c52 100644 --- a/code/yarn.lock +++ b/code/yarn.lock @@ -559,23 +559,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-create-class-features-plugin@npm:7.25.9" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - "@babel/helper-member-expression-to-functions": "npm:^7.25.9" - "@babel/helper-optimise-call-expression": "npm:^7.25.9" - "@babel/helper-replace-supers": "npm:^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/b2bdd39f38056a76b9ba00ec5b209dd84f5c5ebd998d0f4033cf0e73d5f2c357fbb49d1ce52db77a2709fb29ee22321f84a5734dc9914849bdfee9ad12ce8caf - languageName: node - linkType: hard - "@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-create-regexp-features-plugin@npm:7.24.7" @@ -589,19 +572,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.25.9": - version: 7.26.3 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.26.3" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - regexpu-core: "npm:^6.2.0" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/266f30b99af621559467ed67634cb653408a9262930c0627c3d17691a9d477329fb4dabe4b1785cbf0490e892513d247836674271842d6a8da49fd0afae7d435 - languageName: node - linkType: hard - "@babel/helper-define-polyfill-provider@npm:^0.5.0": version: 0.5.0 resolution: "@babel/helper-define-polyfill-provider@npm:0.5.0" @@ -670,16 +640,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-member-expression-to-functions@npm:7.25.9" - dependencies: - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/e08c7616f111e1fb56f398365e78858e26e466d4ac46dff25921adc5ccae9b232f66e952a2f4162bbe336627ba336c7fd9eca4835b6548935973d3380d77eaff - languageName: node - linkType: hard - "@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.24.3, @babel/helper-module-imports@npm:^7.24.7, @babel/helper-module-imports@npm:^7.25.9, @babel/helper-module-imports@npm:^7.8.3": version: 7.25.9 resolution: "@babel/helper-module-imports@npm:7.25.9" @@ -712,15 +672,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-optimise-call-expression@npm:7.25.9" - dependencies: - "@babel/types": "npm:^7.25.9" - checksum: 10c0/90203e6607edeadd2a154940803fd616c0ed92c1013d6774c4b8eb491f1a5a3448b68faae6268141caa5c456e55e3ee49a4ed2bd7ddaf2365daea321c435914c - languageName: node - linkType: hard - "@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.0, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.25.9 resolution: "@babel/helper-plugin-utils@npm:7.25.9" @@ -741,19 +692,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.25.9" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - "@babel/helper-wrap-function": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/6798b562f2788210980f29c5ee96056d90dc73458c88af5bd32f9c82e28e01975588aa2a57bb866c35556bd9b76bac937e824ee63ba472b6430224b91b4879e9 - languageName: node - linkType: hard - "@babel/helper-replace-supers@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-replace-supers@npm:7.24.7" @@ -767,19 +705,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-replace-supers@npm:7.25.9" - dependencies: - "@babel/helper-member-expression-to-functions": "npm:^7.25.9" - "@babel/helper-optimise-call-expression": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/0b40d7d2925bd3ba4223b3519e2e4d2456d471ad69aa458f1c1d1783c80b522c61f8237d3a52afc9e47c7174129bbba650df06393a6787d5722f2ec7f223c3f4 - languageName: node - linkType: hard - "@babel/helper-simple-access@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-simple-access@npm:7.24.7" @@ -800,16 +725,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.9" - dependencies: - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/09ace0c6156961624ac9524329ce7f45350bab94bbe24335cbe0da7dfaa1448e658771831983cb83fe91cf6635b15d0a3cab57c03b92657480bfb49fb56dd184 - languageName: node - linkType: hard - "@babel/helper-split-export-declaration@npm:7.22.6": version: 7.22.6 resolution: "@babel/helper-split-export-declaration@npm:7.22.6" @@ -861,17 +776,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-wrap-function@npm:7.25.9" - dependencies: - "@babel/template": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/b6627d83291e7b80df020f8ee2890c52b8d49272962cac0114ef90f189889c90f1027985873d1b5261a4e986e109b2754292dc112392f0b1fcbfc91cc08bd003 - languageName: node - linkType: hard - "@babel/helpers@npm:^7.23.9, @babel/helpers@npm:^7.24.0, @babel/helpers@npm:^7.26.0": version: 7.26.0 resolution: "@babel/helpers@npm:7.26.0" @@ -953,19 +857,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-decorators@npm:^7.12.9": - version: 7.25.9 - resolution: "@babel/plugin-proposal-decorators@npm:7.25.9" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/plugin-syntax-decorators": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/d7d54644f50a60c47090d70121905ca76534bd7a837c03d25e163ca6ae384b48ef6dcfb125a99f12b3ce7e78e074a33f6fa8c4531c1a46aa31274153f587b05e - languageName: node - linkType: hard - "@babel/plugin-proposal-decorators@npm:^7.13.5, @babel/plugin-proposal-decorators@npm:^7.22.7": version: 7.24.0 resolution: "@babel/plugin-proposal-decorators@npm:7.24.0" @@ -979,17 +870,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-export-default-from@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-proposal-export-default-from@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/6d7ca2d8179d97c38cbcc327129c70103b95797a048c6d244fa8f3eb35b8aebc8122957dc25f20d9923fe6e75f16e2a4d649f1d80a63a9fed2d8b9eda85bd650 - languageName: node - linkType: hard - "@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8": version: 7.18.6 resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" @@ -1105,17 +985,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-decorators@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-syntax-decorators@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/47e44a7d61b76dac4f18fd61edc186012e084eb8f1fe253c483b0fe90b73366b4ebd2b0b03728e000fd1fdedc8af3aa6e93246caf97183a8d9d42a0eb57ecfcc - languageName: node - linkType: hard - "@babel/plugin-syntax-dynamic-import@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" @@ -1127,17 +996,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-export-default-from@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-syntax-export-default-from@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/10267af3a2bed893acb17b1e1e5e6a3aafcdcb202d54ac295bfa95ac11c66336a9c36cc73b4adc2b10a41a8ecc0c3390808ab16a99c24a76f8c74313ba32be63 - languageName: node - linkType: hard - "@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": version: 7.8.3 resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" @@ -1149,17 +1007,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-flow@npm:^7.12.1, @babel/plugin-syntax-flow@npm:^7.25.9": - version: 7.26.0 - resolution: "@babel/plugin-syntax-flow@npm:7.26.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/3d5cc1627a67af8be9df8cfe246869f18e7e9e2592f4b6f1c4bcd9bbe4ad27102784a25b31ebdbed23499ecb6fc23aaf7891ccf5ac3f432fd26a27123d1e242b - languageName: node - linkType: hard - "@babel/plugin-syntax-flow@npm:^7.22.5": version: 7.22.5 resolution: "@babel/plugin-syntax-flow@npm:7.22.5" @@ -1336,17 +1183,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-syntax-typescript@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/5192ebe11bd46aea68b7a60fd9555465c59af7e279e71126788e59121b86e00b505816685ab4782abe159232b0f73854e804b54449820b0d950b397ee158caa2 - languageName: node - linkType: hard - "@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" @@ -1370,17 +1206,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/851fef9f58be60a80f46cc0ce1e46a6f7346a6f9d50fa9e0fa79d46ec205320069d0cc157db213e2bea88ef5b7d9bd7618bb83f0b1996a836e2426c3a3a1f622 - languageName: node - linkType: hard - "@babel/plugin-transform-async-generator-functions@npm:7.23.9": version: 7.23.9 resolution: "@babel/plugin-transform-async-generator-functions@npm:7.23.9" @@ -1409,19 +1234,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.25.4": - version: 7.25.9 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-remap-async-to-generator": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/e3fcb9fc3d6ab6cbd4fcd956b48c17b5e92fe177553df266ffcd2b2c1f2f758b893e51b638e77ed867941e0436487d2b8b505908d615c41799241699b520dec6 - languageName: node - linkType: hard - "@babel/plugin-transform-async-to-generator@npm:7.23.3": version: 7.23.3 resolution: "@babel/plugin-transform-async-to-generator@npm:7.23.3" @@ -1448,19 +1260,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.25.9" - dependencies: - "@babel/helper-module-imports": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-remap-async-to-generator": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/c443d9e462ddef733ae56360064f32fc800105803d892e4ff32d7d6a6922b3765fa97b9ddc9f7f1d3f9d8c2d95721d85bef9dbf507804214c6cf6466b105c168 - languageName: node - linkType: hard - "@babel/plugin-transform-block-scoped-functions@npm:^7.23.3, @babel/plugin-transform-block-scoped-functions@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.24.7" @@ -1483,17 +1282,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.25.0": - version: 7.25.9 - resolution: "@babel/plugin-transform-block-scoping@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/a76e30becb6c75b4d87a2cd53556fddb7c88ddd56bfadb965287fd944810ac159aa8eb5705366fc37336041f63154ed9fab3862fb10482a45bf5ede63fd55fda - languageName: node - linkType: hard - "@babel/plugin-transform-class-properties@npm:^7.22.5, @babel/plugin-transform-class-properties@npm:^7.23.3, @babel/plugin-transform-class-properties@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-class-properties@npm:7.24.7" @@ -1506,18 +1294,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:^7.25.4": - version: 7.25.9 - resolution: "@babel/plugin-transform-class-properties@npm:7.25.9" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/f0603b6bd34d8ba62c03fc0572cb8bbc75874d097ac20cc7c5379e001081210a84dba1749e7123fca43b978382f605bb9973c99caf2c5b4c492d5c0a4a441150 - languageName: node - linkType: hard - "@babel/plugin-transform-class-static-block@npm:^7.23.4, @babel/plugin-transform-class-static-block@npm:^7.24.4": version: 7.24.7 resolution: "@babel/plugin-transform-class-static-block@npm:7.24.7" @@ -1549,22 +1325,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.25.4": - version: 7.25.9 - resolution: "@babel/plugin-transform-classes@npm:7.25.9" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - "@babel/helper-compilation-targets": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-replace-supers": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" - globals: "npm:^11.1.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/02742ea7cd25be286c982e672619effca528d7a931626a6f3d6cea11852951b7ee973276127eaf6418ac0e18c4d749a16b520709c707e86a67012bd23ff2927d - languageName: node - linkType: hard - "@babel/plugin-transform-computed-properties@npm:^7.23.3, @babel/plugin-transform-computed-properties@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-computed-properties@npm:7.24.7" @@ -1577,18 +1337,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-computed-properties@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/template": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/948c0ae3ce0ba2375241d122a9bc7cda4a7ac8110bd8a62cd804bc46a5fdb7a7a42c7799c4cd972e14e0a579d2bd0999b92e53177b73f240bb0d4b09972c758b - languageName: node - linkType: hard - "@babel/plugin-transform-destructuring@npm:^7.23.3, @babel/plugin-transform-destructuring@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-destructuring@npm:7.24.7" @@ -1600,17 +1348,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.24.8": - version: 7.25.9 - resolution: "@babel/plugin-transform-destructuring@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/7beec5fda665d108f69d5023aa7c298a1e566b973dd41290faa18aeea70f6f571295c1ece0a058f3ceb6c6c96de76de7cd34f5a227fbf09a1b8d8a735d28ca49 - languageName: node - linkType: hard - "@babel/plugin-transform-dotall-regex@npm:^7.23.3, @babel/plugin-transform-dotall-regex@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-dotall-regex@npm:7.24.7" @@ -1658,17 +1395,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-export-namespace-from@npm:^7.22.11": - version: 7.25.9 - resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/f291ea2ec5f36de9028a00cbd5b32f08af281b8183bf047200ff001f4cb260be56f156b2449f42149448a4a033bd6e86a3a7f06d0c2825532eb0ae6b03058dfb - languageName: node - linkType: hard - "@babel/plugin-transform-export-namespace-from@npm:^7.23.4, @babel/plugin-transform-export-namespace-from@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-export-namespace-from@npm:7.24.7" @@ -1693,18 +1419,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-flow-strip-types@npm:^7.25.2": - version: 7.25.9 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/plugin-syntax-flow": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/d4b79769a5b8bfc1a0766ed2158417e7efa53cdb5776161f641a642019c0822a1288f2ccd36c16a4bca77c64ccf1bab7e36aa1419adc417606acc6eddc126339 - languageName: node - linkType: hard - "@babel/plugin-transform-for-of@npm:^7.23.6, @babel/plugin-transform-for-of@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-for-of@npm:7.24.7" @@ -1717,18 +1431,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-for-of@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/bf11abc71934a1f369f39cd7a33cf3d4dc5673026a53f70b7c1238c4fcc44e68b3ca1bdbe3db2076f60defb6ffe117cbe10b90f3e1a613b551d88f7c4e693bbe - languageName: node - linkType: hard - "@babel/plugin-transform-function-name@npm:^7.23.3, @babel/plugin-transform-function-name@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-function-name@npm:7.24.7" @@ -1742,19 +1444,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.25.1": - version: 7.25.9 - resolution: "@babel/plugin-transform-function-name@npm:7.25.9" - dependencies: - "@babel/helper-compilation-targets": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/8e67fbd1dd367927b8b6afdf0a6e7cb3a3fd70766c52f700ca77428b6d536f6c9d7ec643e7762d64b23093233765c66bffa40e31aabe6492682879bcb45423e1 - languageName: node - linkType: hard - "@babel/plugin-transform-json-strings@npm:^7.23.4, @babel/plugin-transform-json-strings@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-json-strings@npm:7.24.7" @@ -1778,17 +1467,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.25.2": - version: 7.25.9 - resolution: "@babel/plugin-transform-literals@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/00b14e9c14cf1e871c1f3781bf6334cac339c360404afd6aba63d2f6aca9270854d59a2b40abff1c4c90d4ffdca614440842d3043316c2f0ceb155fdf7726b3b - languageName: node - linkType: hard - "@babel/plugin-transform-logical-assignment-operators@npm:^7.23.4, @babel/plugin-transform-logical-assignment-operators@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.7" @@ -1801,17 +1479,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/6e2051e10b2d6452980fc4bdef9da17c0d6ca48f81b8529e8804b031950e4fff7c74a7eb3de4a2b6ad22ffb631d0b67005425d232cce6e2b29ce861c78ed04f5 - languageName: node - linkType: hard - "@babel/plugin-transform-member-expression-literals@npm:^7.23.3, @babel/plugin-transform-member-expression-literals@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-member-expression-literals@npm:7.24.7" @@ -1848,7 +1515,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.24.8": +"@babel/plugin-transform-modules-commonjs@npm:^7.26.3": version: 7.26.3 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.26.3" dependencies: @@ -1898,18 +1565,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.25.9" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/32b14fda5c885d1706863f8af2ee6c703d39264355b57482d3a24fce7f6afbd4c7a0896e501c0806ed2b0759beb621bf7f3f7de1fbbc82026039a98d961e78ef - languageName: node - linkType: hard - "@babel/plugin-transform-new-target@npm:^7.23.3, @babel/plugin-transform-new-target@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-new-target@npm:7.24.7" @@ -1933,17 +1588,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/eb623db5be078a1c974afe7c7797b0309ba2ea9e9237c0b6831ade0f56d8248bb4ab3432ab34495ff8c877ec2fe412ff779d1e9b3c2b8139da18e1753d950bc3 - languageName: node - linkType: hard - "@babel/plugin-transform-numeric-separator@npm:^7.23.4, @babel/plugin-transform-numeric-separator@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-numeric-separator@npm:7.24.7" @@ -1956,17 +1600,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/ad63ad341977844b6f9535fcca15ca0d6d6ad112ed9cc509d4f6b75e9bf4b1b1a96a0bcb1986421a601505d34025373608b5f76d420d924b4e21f86b1a1f2749 - languageName: node - linkType: hard - "@babel/plugin-transform-object-assign@npm:^7.8.3": version: 7.22.5 resolution: "@babel/plugin-transform-object-assign@npm:7.22.5" @@ -1978,19 +1611,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.12.13, @babel/plugin-transform-object-rest-spread@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.9" - dependencies: - "@babel/helper-compilation-targets": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/plugin-transform-parameters": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/02077d8abd83bf6a48ff0b59e98d7561407cf75b591cffd3fdc5dc5e9a13dec1c847a7a690983762a3afecddb244831e897e0515c293e7c653b262c30cd614af - languageName: node - linkType: hard - "@babel/plugin-transform-object-rest-spread@npm:^7.24.0, @babel/plugin-transform-object-rest-spread@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-object-rest-spread@npm:7.24.7" @@ -2029,17 +1649,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/722fd5ee12ab905309d4e84421584fce4b6d9e6b639b06afb20b23fa809e6ab251e908a8d5e8b14d066a28186b8ef8f58d69fd6eca9ce1b9ef7af08333378f6c - languageName: node - linkType: hard - "@babel/plugin-transform-optional-chaining@npm:^7.23.0, @babel/plugin-transform-optional-chaining@npm:^7.23.4, @babel/plugin-transform-optional-chaining@npm:^7.24.1, @babel/plugin-transform-optional-chaining@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.7" @@ -2053,29 +1662,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.24.8": - version: 7.25.9 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/041ad2beae5affb8e68a0bcb6882a2dadb758db3c629a0e012f57488ab43a822ac1ea17a29db8ef36560a28262a5dfa4dbbbf06ed6e431db55abe024b7cd3961 - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.22.15, @babel/plugin-transform-parameters@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-parameters@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/aecb446754b9e09d6b6fa95fd09e7cf682f8aaeed1d972874ba24c0a30a7e803ad5f014bb1fffc7bfeed22f93c0d200947407894ea59bf7687816f2f464f8df3 - languageName: node - linkType: hard - "@babel/plugin-transform-parameters@npm:^7.23.3, @babel/plugin-transform-parameters@npm:^7.24.1, @babel/plugin-transform-parameters@npm:^7.24.7": version: 7.24.7 resolution: "@babel/plugin-transform-parameters@npm:7.24.7" @@ -2099,18 +1685,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-private-methods@npm:7.25.9" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/64bd71de93d39daefa3e6c878d6f2fd238ed7d4ecfb13b0e771ddbbc131487def3ceb405b62b534a5cbb5043046b504e1b189b0a45229cc75af979a9fbcaa7bd - languageName: node - linkType: hard - "@babel/plugin-transform-private-property-in-object@npm:^7.23.4, @babel/plugin-transform-private-property-in-object@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-private-property-in-object@npm:7.24.7" @@ -2125,19 +1699,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.9" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - "@babel/helper-create-class-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/d4965de19d9f204e692cc74dbc39f0bb469e5f29df96dd4457ea23c5e5596fba9d5af76eaa96f9d48a9fc20ec5f12a94c679285e36b8373406868ea228109e27 - languageName: node - linkType: hard - "@babel/plugin-transform-property-literals@npm:^7.23.3, @babel/plugin-transform-property-literals@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-property-literals@npm:7.24.7" @@ -2160,7 +1721,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.24.7, @babel/plugin-transform-react-display-name@npm:^7.25.9": +"@babel/plugin-transform-react-display-name@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-react-display-name@npm:7.25.9" dependencies: @@ -2230,7 +1791,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.25.2, @babel/plugin-transform-react-jsx@npm:^7.25.9": +"@babel/plugin-transform-react-jsx@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-react-jsx@npm:7.25.9" dependencies: @@ -2281,18 +1842,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-regenerator@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - regenerator-transform: "npm:^0.15.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/eef3ffc19f7d291b863635f32b896ad7f87806d9219a0d3404a470219abcfc5b43aabecd691026c48e875b965760d9c16abee25e6447272233f30cd07f453ec7 - languageName: node - linkType: hard - "@babel/plugin-transform-reserved-words@npm:^7.23.3, @babel/plugin-transform-reserved-words@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-reserved-words@npm:7.24.7" @@ -2336,22 +1885,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-runtime@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-runtime@npm:7.25.9" - dependencies: - "@babel/helper-module-imports": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - babel-plugin-polyfill-corejs2: "npm:^0.4.10" - babel-plugin-polyfill-corejs3: "npm:^0.10.6" - babel-plugin-polyfill-regenerator: "npm:^0.6.1" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/888a4998ba0a2313de347954c9a8dfeccbff0633c69d33aee385b8878eba2b429dbfb00c3cc04f6bca454b9be8afa01ebbd73defb7fbbb6e2d3086205c07758b - languageName: node - linkType: hard - "@babel/plugin-transform-shorthand-properties@npm:^7.23.3, @babel/plugin-transform-shorthand-properties@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-shorthand-properties@npm:7.24.7" @@ -2363,17 +1896,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/05a20d45f0fb62567644c507ccd4e379c1a74dacf887d2b2cac70247415e3f6d7d3bf4850c8b336053144715fedb6200fc38f7130c4b76c94eec9b9c0c2a8e9b - languageName: node - linkType: hard - "@babel/plugin-transform-spread@npm:^7.23.3, @babel/plugin-transform-spread@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-spread@npm:7.24.7" @@ -2386,18 +1908,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-spread@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/996c8fed238efc30e0664f9f58bd7ec8c148f4659f84425f68923a094fe891245711d26eb10d1f815f50c124434e076e860dbe9662240844d1b77cd09907dcdf - languageName: node - linkType: hard - "@babel/plugin-transform-sticky-regex@npm:^7.23.3, @babel/plugin-transform-sticky-regex@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.7" @@ -2409,17 +1919,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/e9612b0615dab4c4fba1c560769616a9bd7b9226c73191ef84b6c3ee185c8b719b4f887cdd8336a0a13400ce606ab4a0d33bc8fa6b4fcdb53e2896d07f2568f6 - languageName: node - linkType: hard - "@babel/plugin-transform-template-literals@npm:^7.23.3, @babel/plugin-transform-template-literals@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-template-literals@npm:7.24.7" @@ -2456,21 +1955,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.25.2": - version: 7.26.3 - resolution: "@babel/plugin-transform-typescript@npm:7.26.3" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - "@babel/helper-create-class-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" - "@babel/plugin-syntax-typescript": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/0a0509ec56666fab5b557d573254665956a377916fc1e7cee309c0711d11257338ba7ee678db03603a3985d2c6c0b210b788fb6b9616d8fc0595469e39089a8f - languageName: node - linkType: hard - "@babel/plugin-transform-unicode-escapes@npm:^7.23.3, @babel/plugin-transform-unicode-escapes@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-unicode-escapes@npm:7.24.7" @@ -2506,18 +1990,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.24.7": - version: 7.25.9 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.25.9" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/448004f978279e726af26acd54f63f9002c9e2582ecd70d1c5c4436f6de490fcd817afb60016d11c52f5ef17dbaac2590e8cc7bfaf4e91b58c452cf188c7920f - languageName: node - linkType: hard - "@babel/plugin-transform-unicode-sets-regex@npm:^7.23.3, @babel/plugin-transform-unicode-sets-regex@npm:^7.24.1": version: 7.24.7 resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.24.7" @@ -2747,22 +2219,6 @@ __metadata: languageName: node linkType: hard -"@babel/preset-react@npm:^7.22.15": - version: 7.26.3 - resolution: "@babel/preset-react@npm:7.26.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-validator-option": "npm:^7.25.9" - "@babel/plugin-transform-react-display-name": "npm:^7.25.9" - "@babel/plugin-transform-react-jsx": "npm:^7.25.9" - "@babel/plugin-transform-react-jsx-development": "npm:^7.25.9" - "@babel/plugin-transform-react-pure-annotations": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/b470dcba11032ef6c832066f4af5c75052eaed49feb0f445227231ef1b5c42aacd6e216988c0bd469fd5728cd27b6b059ca307c9ecaa80c6bb5da4bf1c833e12 - languageName: node - linkType: hard - "@babel/preset-react@npm:^7.24.1": version: 7.24.1 resolution: "@babel/preset-react@npm:7.24.1" @@ -2779,6 +2235,22 @@ __metadata: languageName: node linkType: hard +"@babel/preset-react@npm:^7.26.3": + version: 7.26.3 + resolution: "@babel/preset-react@npm:7.26.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/plugin-transform-react-display-name": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx-development": "npm:^7.25.9" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b470dcba11032ef6c832066f4af5c75052eaed49feb0f445227231ef1b5c42aacd6e216988c0bd469fd5728cd27b6b059ca307c9ecaa80c6bb5da4bf1c833e12 + languageName: node + linkType: hard + "@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.22.5, @babel/preset-typescript@npm:^7.23.0, @babel/preset-typescript@npm:^7.24.1": version: 7.24.1 resolution: "@babel/preset-typescript@npm:7.24.1" @@ -2861,7 +2333,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.23.9, @babel/template@npm:^7.24.0, @babel/template@npm:^7.24.7, @babel/template@npm:^7.25.0, @babel/template@npm:^7.25.9": +"@babel/template@npm:^7.23.9, @babel/template@npm:^7.24.0, @babel/template@npm:^7.24.7, @babel/template@npm:^7.25.9": version: 7.25.9 resolution: "@babel/template@npm:7.25.9" dependencies: @@ -5720,88 +5192,6 @@ __metadata: languageName: node linkType: hard -"@react-native/babel-plugin-codegen@npm:0.76.5": - version: 0.76.5 - resolution: "@react-native/babel-plugin-codegen@npm:0.76.5" - dependencies: - "@react-native/codegen": "npm:0.76.5" - checksum: 10c0/f853d7b4f0114a5443128af4813ea473542db4470e55f2962b94578c587c47347745e4b23819dec147d4b3926a0eecf36389ce01af286923436cb859a7b4a481 - languageName: node - linkType: hard - -"@react-native/babel-preset@npm:0.76.5": - version: 0.76.5 - resolution: "@react-native/babel-preset@npm:0.76.5" - dependencies: - "@babel/core": "npm:^7.25.2" - "@babel/plugin-proposal-export-default-from": "npm:^7.24.7" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" - "@babel/plugin-syntax-export-default-from": "npm:^7.24.7" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-transform-arrow-functions": "npm:^7.24.7" - "@babel/plugin-transform-async-generator-functions": "npm:^7.25.4" - "@babel/plugin-transform-async-to-generator": "npm:^7.24.7" - "@babel/plugin-transform-block-scoping": "npm:^7.25.0" - "@babel/plugin-transform-class-properties": "npm:^7.25.4" - "@babel/plugin-transform-classes": "npm:^7.25.4" - "@babel/plugin-transform-computed-properties": "npm:^7.24.7" - "@babel/plugin-transform-destructuring": "npm:^7.24.8" - "@babel/plugin-transform-flow-strip-types": "npm:^7.25.2" - "@babel/plugin-transform-for-of": "npm:^7.24.7" - "@babel/plugin-transform-function-name": "npm:^7.25.1" - "@babel/plugin-transform-literals": "npm:^7.25.2" - "@babel/plugin-transform-logical-assignment-operators": "npm:^7.24.7" - "@babel/plugin-transform-modules-commonjs": "npm:^7.24.8" - "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.24.7" - "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.24.7" - "@babel/plugin-transform-numeric-separator": "npm:^7.24.7" - "@babel/plugin-transform-object-rest-spread": "npm:^7.24.7" - "@babel/plugin-transform-optional-catch-binding": "npm:^7.24.7" - "@babel/plugin-transform-optional-chaining": "npm:^7.24.8" - "@babel/plugin-transform-parameters": "npm:^7.24.7" - "@babel/plugin-transform-private-methods": "npm:^7.24.7" - "@babel/plugin-transform-private-property-in-object": "npm:^7.24.7" - "@babel/plugin-transform-react-display-name": "npm:^7.24.7" - "@babel/plugin-transform-react-jsx": "npm:^7.25.2" - "@babel/plugin-transform-react-jsx-self": "npm:^7.24.7" - "@babel/plugin-transform-react-jsx-source": "npm:^7.24.7" - "@babel/plugin-transform-regenerator": "npm:^7.24.7" - "@babel/plugin-transform-runtime": "npm:^7.24.7" - "@babel/plugin-transform-shorthand-properties": "npm:^7.24.7" - "@babel/plugin-transform-spread": "npm:^7.24.7" - "@babel/plugin-transform-sticky-regex": "npm:^7.24.7" - "@babel/plugin-transform-typescript": "npm:^7.25.2" - "@babel/plugin-transform-unicode-regex": "npm:^7.24.7" - "@babel/template": "npm:^7.25.0" - "@react-native/babel-plugin-codegen": "npm:0.76.5" - babel-plugin-syntax-hermes-parser: "npm:^0.25.1" - babel-plugin-transform-flow-enums: "npm:^0.0.2" - react-refresh: "npm:^0.14.0" - peerDependencies: - "@babel/core": "*" - checksum: 10c0/06fced0a8b804b66991b846048f99bdb0c510a84ff859d9dadeab5a51cc96313694a9c9ca0e3b304f12aa620f482cd6cc69e319f2b7fa500a1bd91a2d0e833ba - languageName: node - linkType: hard - -"@react-native/codegen@npm:0.76.5": - version: 0.76.5 - resolution: "@react-native/codegen@npm:0.76.5" - dependencies: - "@babel/parser": "npm:^7.25.3" - glob: "npm:^7.1.1" - hermes-parser: "npm:0.23.1" - invariant: "npm:^2.2.4" - jscodeshift: "npm:^0.14.0" - mkdirp: "npm:^0.5.1" - nullthrows: "npm:^1.1.1" - yargs: "npm:^17.6.2" - peerDependencies: - "@babel/preset-env": ^7.1.6 - checksum: 10c0/e4c160b0100bf0c44a6a621e1cf14fa50203671350a22da6d87d86af8427d24bc836ed6e8b6958438695655d2bea3bec19058587286e027c5f68477ca267067b - languageName: node - linkType: hard - "@rollup/pluginutils@npm:^5.0.2, @rollup/pluginutils@npm:^5.1.0": version: 5.1.0 resolution: "@rollup/pluginutils@npm:5.1.0" @@ -7419,6 +6809,8 @@ __metadata: version: 0.0.0-use.local resolution: "@storybook/react-native-web-vite@workspace:frameworks/react-native-web-vite" dependencies: + "@babel/plugin-transform-modules-commonjs": "npm:^7.26.3" + "@babel/preset-react": "npm:^7.26.3" "@bunchtogether/vite-plugin-flow": "npm:^1.0.2" "@joshwooding/vite-plugin-react-docgen-typescript": "npm:0.4.2" "@storybook/builder-vite": "workspace:*" @@ -7426,8 +6818,6 @@ __metadata: "@storybook/react-vite": "workspace:*" "@types/node": "npm:^22.0.0" "@vitejs/plugin-react": "npm:^4.3.2" - babel-plugin-react-native-web: "npm:^0.19.13" - babel-preset-expo: "npm:^12.0.4" typescript: "npm:^5.3.2" vite-plugin-babel: "npm:^1.3.0" vite-tsconfig-paths: "npm:^5.1.4" @@ -11095,15 +10485,6 @@ __metadata: languageName: node linkType: hard -"ast-types@npm:0.15.2": - version: 0.15.2 - resolution: "ast-types@npm:0.15.2" - dependencies: - tslib: "npm:^2.0.1" - checksum: 10c0/5b26e3656e9e8d1db8c8d14971d0cb88ca0138aacce72171cb4cd4555fc8dc53c07e821c568e57fe147366931708fefd25cb9d7e880d42ce9cb569947844c962 - languageName: node - linkType: hard - "ast-types@npm:^0.16.1": version: 0.16.1 resolution: "ast-types@npm:0.16.1" @@ -11412,18 +10793,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.10.6": - version: 0.10.6 - resolution: "babel-plugin-polyfill-corejs3@npm:0.10.6" - dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.6.2" - core-js-compat: "npm:^3.38.0" - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10c0/3a69220471b07722c2ae6537310bf26b772514e12b601398082965459c838be70a0ca70b0662f0737070654ff6207673391221d48599abb4a2b27765206d9f79 - languageName: node - linkType: hard - "babel-plugin-polyfill-corejs3@npm:^0.9.0": version: 0.9.0 resolution: "babel-plugin-polyfill-corejs3@npm:0.9.0" @@ -11469,31 +10838,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-react-native-web@npm:^0.19.13, babel-plugin-react-native-web@npm:~0.19.13": - version: 0.19.13 - resolution: "babel-plugin-react-native-web@npm:0.19.13" - checksum: 10c0/0710db342063182163d58febfb01ef510c9460f0500f9faaf47603d06dda37554f216e6123a099a343eb2067c2dfb43c9d4ca573a9d659662ca429048db11af4 - languageName: node - linkType: hard - -"babel-plugin-syntax-hermes-parser@npm:^0.25.1": - version: 0.25.1 - resolution: "babel-plugin-syntax-hermes-parser@npm:0.25.1" - dependencies: - hermes-parser: "npm:0.25.1" - checksum: 10c0/8f4a0cb65056162b2d4c64d0ccd4d2fdeac8218e83e0338e92564ead659fd9b9351277ed2a10e958d0d8dc4c60591d5b1a40aa425bf0cbf67224e9767c557abf - languageName: node - linkType: hard - -"babel-plugin-transform-flow-enums@npm:^0.0.2": - version: 0.0.2 - resolution: "babel-plugin-transform-flow-enums@npm:0.0.2" - dependencies: - "@babel/plugin-syntax-flow": "npm:^7.12.1" - checksum: 10c0/aa9d022d8d4be0e7c4f1ff7e5308fe7e0ff4d6f9099449913e3a11c1e81916623a8f36432da180a9aa3f53ea534dca4401fe33d6528f043f40357cfa790ee778 - languageName: node - linkType: hard - "babel-plugin-transform-typescript-metadata@npm:^0.3.1": version: 0.3.2 resolution: "babel-plugin-transform-typescript-metadata@npm:0.3.2" @@ -11503,31 +10847,6 @@ __metadata: languageName: node linkType: hard -"babel-preset-expo@npm:^12.0.4": - version: 12.0.4 - resolution: "babel-preset-expo@npm:12.0.4" - dependencies: - "@babel/plugin-proposal-decorators": "npm:^7.12.9" - "@babel/plugin-transform-export-namespace-from": "npm:^7.22.11" - "@babel/plugin-transform-object-rest-spread": "npm:^7.12.13" - "@babel/plugin-transform-parameters": "npm:^7.22.15" - "@babel/preset-react": "npm:^7.22.15" - "@babel/preset-typescript": "npm:^7.23.0" - "@react-native/babel-preset": "npm:0.76.5" - babel-plugin-react-native-web: "npm:~0.19.13" - react-refresh: "npm:^0.14.2" - peerDependencies: - babel-plugin-react-compiler: ^19.0.0-beta-9ee70a1-20241017 - react-compiler-runtime: ^19.0.0-beta-8a03594-20241020 - peerDependenciesMeta: - babel-plugin-react-compiler: - optional: true - react-compiler-runtime: - optional: true - checksum: 10c0/5fac764b42fb23f62ed0143d82bb76ed077b13f44f920041da48d9313eaf6308eaeab155da782611a50af9fc3af862caf5067768dd4dc1361fd001d3d461c7f9 - languageName: node - linkType: hard - "babel-walk@npm:3.0.0-canary-5": version: 3.0.0-canary-5 resolution: "babel-walk@npm:3.0.0-canary-5" @@ -12153,20 +11472,6 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.24.2": - version: 4.24.3 - resolution: "browserslist@npm:4.24.3" - dependencies: - caniuse-lite: "npm:^1.0.30001688" - electron-to-chromium: "npm:^1.5.73" - node-releases: "npm:^2.0.19" - update-browserslist-db: "npm:^1.1.1" - bin: - browserslist: cli.js - checksum: 10c0/bab261ef7b6e1656a719a9fa31240ae7ce4d5ba68e479f6b11e348d819346ab4c0ff6f4821f43adcc9c193a734b186775a83b37979e70a69d182965909fe569a - languageName: node - linkType: hard - "buffer-crc32@npm:^0.2.5": version: 0.2.13 resolution: "buffer-crc32@npm:0.2.13" @@ -12427,13 +11732,6 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001688": - version: 1.0.30001690 - resolution: "caniuse-lite@npm:1.0.30001690" - checksum: 10c0/646bd469032afa90400a84dec30a2b00a6eda62c03ead358117e3f884cda8aacec02ec058a6dbee5eaf9714f83e483b9b0eb4fb42febb8076569f5ca40f1d347 - languageName: node - linkType: hard - "case-sensitive-paths-webpack-plugin@npm:^2.4.0": version: 2.4.0 resolution: "case-sensitive-paths-webpack-plugin@npm:2.4.0" @@ -13291,15 +12589,6 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.38.0": - version: 3.39.0 - resolution: "core-js-compat@npm:3.39.0" - dependencies: - browserslist: "npm:^4.24.2" - checksum: 10c0/880579a3dab235e3b6350f1e324269c600753b48e891ea859331618d5051e68b7a95db6a03ad2f3cc7df4397318c25a5bc7740562ad39e94f56568638d09d414 - languageName: node - linkType: hard - "core-js-pure@npm:^3.23.3": version: 3.33.0 resolution: "core-js-pure@npm:3.33.0" @@ -14497,13 +13786,6 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.73": - version: 1.5.76 - resolution: "electron-to-chromium@npm:1.5.76" - checksum: 10c0/5a977be9fd5810769a7b4eae0e4b41b6beca65f2b3f3b7442819f6c93366d767d183cfbf408714f944a9bf3aa304f8c9ab9d0cdfd8e878ab8f2cbb61f8b22acd - languageName: node - linkType: hard - "elliptic@npm:^6.5.3, elliptic@npm:^6.5.4": version: 6.5.4 resolution: "elliptic@npm:6.5.4" @@ -17266,7 +16548,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4": +"glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -17796,13 +17078,6 @@ __metadata: languageName: node linkType: hard -"hermes-estree@npm:0.23.1": - version: 0.23.1 - resolution: "hermes-estree@npm:0.23.1" - checksum: 10c0/59ca9f3980419fcf511a172f0ee9960d86c8ba44ea8bc13d3bd0b6208e9540db1a0a9e46b0e797151f11b0e8e33b2bf850907aef4a5c9ac42c53809cefefc405 - languageName: node - linkType: hard - "hermes-estree@npm:0.25.1": version: 0.25.1 resolution: "hermes-estree@npm:0.25.1" @@ -17810,15 +17085,6 @@ __metadata: languageName: node linkType: hard -"hermes-parser@npm:0.23.1": - version: 0.23.1 - resolution: "hermes-parser@npm:0.23.1" - dependencies: - hermes-estree: "npm:0.23.1" - checksum: 10c0/56907e6136d2297543922dd9f8ee27378ef010c11dc1e0b4a0866faab2c527613b0edcda5e1ebc0daa0ca1ae6528734dfc479e18267aabe4dce0c7198217fd97 - languageName: node - linkType: hard - "hermes-parser@npm:0.25.1": version: 0.25.1 resolution: "hermes-parser@npm:0.25.1" @@ -19500,37 +18766,6 @@ __metadata: languageName: node linkType: hard -"jscodeshift@npm:^0.14.0": - version: 0.14.0 - resolution: "jscodeshift@npm:0.14.0" - dependencies: - "@babel/core": "npm:^7.13.16" - "@babel/parser": "npm:^7.13.16" - "@babel/plugin-proposal-class-properties": "npm:^7.13.0" - "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.13.8" - "@babel/plugin-proposal-optional-chaining": "npm:^7.13.12" - "@babel/plugin-transform-modules-commonjs": "npm:^7.13.8" - "@babel/preset-flow": "npm:^7.13.13" - "@babel/preset-typescript": "npm:^7.13.0" - "@babel/register": "npm:^7.13.16" - babel-core: "npm:^7.0.0-bridge.0" - chalk: "npm:^4.1.2" - flow-parser: "npm:0.*" - graceful-fs: "npm:^4.2.4" - micromatch: "npm:^4.0.4" - neo-async: "npm:^2.5.0" - node-dir: "npm:^0.1.17" - recast: "npm:^0.21.0" - temp: "npm:^0.8.4" - write-file-atomic: "npm:^2.3.0" - peerDependencies: - "@babel/preset-env": ^7.1.6 - bin: - jscodeshift: bin/jscodeshift.js - checksum: 10c0/dab63bdb4b7e67d79634fcd3f5dc8b227146e9f68aa88700bc49c5a45b6339d05bd934a98aa53d29abd04f81237d010e7e037799471b2aab66ec7b9a7d752786 - languageName: node - linkType: hard - "jscodeshift@npm:^0.15.1": version: 0.15.1 resolution: "jscodeshift@npm:0.15.1" @@ -19582,7 +18817,7 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^3.0.2, jsesc@npm:~3.0.2": +"jsesc@npm:^3.0.2": version: 3.0.2 resolution: "jsesc@npm:3.0.2" bin: @@ -22573,13 +21808,6 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.19": - version: 2.0.19 - resolution: "node-releases@npm:2.0.19" - checksum: 10c0/52a0dbd25ccf545892670d1551690fe0facb6a471e15f2cfa1b20142a5b255b3aa254af5f59d6ecb69c2bec7390bc643c43aa63b13bf5e64b6075952e716b1aa - languageName: node - linkType: hard - "nopt@npm:^6.0.0": version: 6.0.0 resolution: "nopt@npm:6.0.0" @@ -22780,13 +22008,6 @@ __metadata: languageName: node linkType: hard -"nullthrows@npm:^1.1.1": - version: 1.1.1 - resolution: "nullthrows@npm:1.1.1" - checksum: 10c0/56f34bd7c3dcb3bd23481a277fa22918120459d3e9d95ca72976c72e9cac33a97483f0b95fc420e2eb546b9fe6db398273aba9a938650cdb8c98ee8f159dcb30 - languageName: node - linkType: hard - "nx@npm:20.2.2": version: 20.2.2 resolution: "nx@npm:20.2.2" @@ -25371,18 +24592,6 @@ __metadata: languageName: node linkType: hard -"recast@npm:^0.21.0": - version: 0.21.5 - resolution: "recast@npm:0.21.5" - dependencies: - ast-types: "npm:0.15.2" - esprima: "npm:~4.0.0" - source-map: "npm:~0.6.1" - tslib: "npm:^2.0.1" - checksum: 10c0/a45168c82195f24fa2c70293a624fece0069a2e8e8adb637f9963777735f81cb3bb62e55172db677ec3573b08b2daaf1eddd85b74da6fe0bd37c9b15eeaf94b4 - languageName: node - linkType: hard - "recast@npm:^0.23.1, recast@npm:^0.23.3, recast@npm:^0.23.5": version: 0.23.5 resolution: "recast@npm:0.23.5" @@ -25448,15 +24657,6 @@ __metadata: languageName: node linkType: hard -"regenerate-unicode-properties@npm:^10.2.0": - version: 10.2.0 - resolution: "regenerate-unicode-properties@npm:10.2.0" - dependencies: - regenerate: "npm:^1.4.2" - checksum: 10c0/5510785eeaf56bbfdf4e663d6753f125c08d2a372d4107bc1b756b7bf142e2ed80c2733a8b54e68fb309ba37690e66a0362699b0e21d5c1f0255dea1b00e6460 - languageName: node - linkType: hard - "regenerate@npm:^1.4.2": version: 1.4.2 resolution: "regenerate@npm:1.4.2" @@ -25544,38 +24744,6 @@ __metadata: languageName: node linkType: hard -"regexpu-core@npm:^6.2.0": - version: 6.2.0 - resolution: "regexpu-core@npm:6.2.0" - dependencies: - regenerate: "npm:^1.4.2" - regenerate-unicode-properties: "npm:^10.2.0" - regjsgen: "npm:^0.8.0" - regjsparser: "npm:^0.12.0" - unicode-match-property-ecmascript: "npm:^2.0.0" - unicode-match-property-value-ecmascript: "npm:^2.1.0" - checksum: 10c0/bbcb83a854bf96ce4005ee4e4618b71c889cda72674ce6092432f0039b47890c2d0dfeb9057d08d440999d9ea03879ebbb7f26ca005ccf94390e55c348859b98 - languageName: node - linkType: hard - -"regjsgen@npm:^0.8.0": - version: 0.8.0 - resolution: "regjsgen@npm:0.8.0" - checksum: 10c0/44f526c4fdbf0b29286101a282189e4dbb303f4013cf3fea058668d96d113b9180d3d03d1e13f6d4cbde38b7728bf951aecd9dc199938c080093a9a6f0d7a6bd - languageName: node - linkType: hard - -"regjsparser@npm:^0.12.0": - version: 0.12.0 - resolution: "regjsparser@npm:0.12.0" - dependencies: - jsesc: "npm:~3.0.2" - bin: - regjsparser: bin/parser - checksum: 10c0/99d3e4e10c8c7732eb7aa843b8da2fd8b647fe144d3711b480e4647dc3bff4b1e96691ccf17f3ace24aa866a50b064236177cb25e6e4fbbb18285d99edaed83b - languageName: node - linkType: hard - "regjsparser@npm:^0.9.1": version: 0.9.1 resolution: "regjsparser@npm:0.9.1" From cb64e89b19ebffdbf6d30c2fa0a637aaf26f5b51 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Sun, 5 Jan 2025 13:17:02 +0000 Subject: [PATCH 18/34] fix: comments --- code/frameworks/react-native-web-vite/src/preset.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/frameworks/react-native-web-vite/src/preset.ts b/code/frameworks/react-native-web-vite/src/preset.ts index 2f49f97c9617..3e6a4e5c3331 100644 --- a/code/frameworks/react-native-web-vite/src/preset.ts +++ b/code/frameworks/react-native-web-vite/src/preset.ts @@ -96,7 +96,6 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = // and other benefits babel({ include: pluginReactOptions.include || [/node_modules\/(react-native|@react-native)/], - // gesture handler is already transpiled exclude: pluginReactOptions.exclude, babelConfig: { ...pluginReactOptions.babel, @@ -104,6 +103,7 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = configFile: false, presets: [ [ + // we use require instead of just the name to resolve the version of the plugin in our package.json require('@babel/preset-react'), { development: isDevelopment, @@ -113,10 +113,10 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = ], ...(pluginReactOptions.babel?.presets || []), ], - // babel-plugin-react-native-web adds optimizations for react native web prod builds plugins: [ [ // this is a fix for reanimated not working in production + // we use require instead of just the name to resolve the version of the plugin in our package.json require('@babel/plugin-transform-modules-commonjs'), { strict: false, From d28b7becf7cbcd2c57d5501208f96189377c4f45 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Sun, 5 Jan 2025 13:19:05 +0000 Subject: [PATCH 19/34] fix: remove uneeded expo os env --- code/frameworks/react-native-web-vite/src/preset.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/frameworks/react-native-web-vite/src/preset.ts b/code/frameworks/react-native-web-vite/src/preset.ts index 3e6a4e5c3331..8636c9813f57 100644 --- a/code/frameworks/react-native-web-vite/src/preset.ts +++ b/code/frameworks/react-native-web-vite/src/preset.ts @@ -20,8 +20,6 @@ export function reactNativeWeb(): PluginOption { _WORKLET: false, __DEV__: `${env.mode === 'development'}`, 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || env.mode), - // this is for the expo preset - 'process.env.EXPO_OS': JSON.stringify('web'), }, optimizeDeps: { include: [], From f3fdb8ac4d8ab091eab5b0952a757f1021d462da Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Sun, 5 Jan 2025 13:33:59 +0000 Subject: [PATCH 20/34] fix: remove require thing for now --- code/frameworks/react-native-web-vite/src/preset.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/code/frameworks/react-native-web-vite/src/preset.ts b/code/frameworks/react-native-web-vite/src/preset.ts index 8636c9813f57..7648ad28208a 100644 --- a/code/frameworks/react-native-web-vite/src/preset.ts +++ b/code/frameworks/react-native-web-vite/src/preset.ts @@ -101,8 +101,7 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = configFile: false, presets: [ [ - // we use require instead of just the name to resolve the version of the plugin in our package.json - require('@babel/preset-react'), + '@babel/preset-react', { development: isDevelopment, jsxRuntime: pluginReactOptions.jsxRuntime || 'automatic', @@ -114,8 +113,7 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = plugins: [ [ // this is a fix for reanimated not working in production - // we use require instead of just the name to resolve the version of the plugin in our package.json - require('@babel/plugin-transform-modules-commonjs'), + '@babel/plugin-transform-modules-commonjs', { strict: false, strictMode: false, // prevent "use strict" injections From 90ef8692498098a0035b1eda0bc18359d4f1a600 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Sun, 5 Jan 2025 13:35:42 +0000 Subject: [PATCH 21/34] better comments --- code/frameworks/react-native-web-vite/src/preset.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/frameworks/react-native-web-vite/src/preset.ts b/code/frameworks/react-native-web-vite/src/preset.ts index 7648ad28208a..db87fa75885f 100644 --- a/code/frameworks/react-native-web-vite/src/preset.ts +++ b/code/frameworks/react-native-web-vite/src/preset.ts @@ -76,6 +76,8 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = plugins.unshift( tsconfigPaths(), + + // fix for react native packages shipping with flow types untranspiled flowPlugin({ exclude: [/node_modules\/(?!react-native|@react-native)/], }), @@ -90,8 +92,8 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = }), // we need to add this extra babel config because the react plugin doesn't allow - // for transpiling node_modules. However we keep the react plugin to get the fast refresh - // and other benefits + // for transpiling node_modules. We need this because many react native packages are untranspiled. + // However we keep the react plugin to get the fast refresh and the other stuff its doing babel({ include: pluginReactOptions.include || [/node_modules\/(react-native|@react-native)/], exclude: pluginReactOptions.exclude, @@ -131,6 +133,7 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = return mergeConfig(reactConfig, { optimizeDeps: { esbuildOptions: { + // fix for react native packages shipping with flow types untranspiled plugins: [esbuildFlowPlugin(new RegExp(/\.(flow|jsx?)$/), (_path: string) => 'jsx')], }, }, From 7794b8ec7a872f8bfd0c6738a198c08a158053e8 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Sun, 5 Jan 2025 14:01:51 +0000 Subject: [PATCH 22/34] split up config for the babel plugin --- .../react-native-web-vite/src/preset.ts | 17 +++++++++-------- .../react-native-web-vite/src/types.ts | 5 +++++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/code/frameworks/react-native-web-vite/src/preset.ts b/code/frameworks/react-native-web-vite/src/preset.ts index db87fa75885f..53e2b1e12bba 100644 --- a/code/frameworks/react-native-web-vite/src/preset.ts +++ b/code/frameworks/react-native-web-vite/src/preset.ts @@ -65,7 +65,7 @@ export function reactNativeWeb(): PluginOption { export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) => { const { mergeConfig } = await import('vite'); - const { pluginReactOptions = {} } = + const { pluginReactOptions = {}, pluginBabelOptions = {} } = await options.presets.apply('frameworkOptions'); const isDevelopment = options.configType !== 'PRODUCTION'; @@ -95,10 +95,11 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = // for transpiling node_modules. We need this because many react native packages are untranspiled. // However we keep the react plugin to get the fast refresh and the other stuff its doing babel({ - include: pluginReactOptions.include || [/node_modules\/(react-native|@react-native)/], - exclude: pluginReactOptions.exclude, + ...pluginBabelOptions, + include: pluginBabelOptions.include || [/node_modules\/(react-native|@react-native)/], + exclude: pluginBabelOptions.exclude, babelConfig: { - ...pluginReactOptions.babel, + ...pluginBabelOptions.babelConfig, babelrc: false, configFile: false, presets: [ @@ -106,11 +107,11 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = '@babel/preset-react', { development: isDevelopment, - jsxRuntime: pluginReactOptions.jsxRuntime || 'automatic', - jsxImportSource: pluginReactOptions.jsxImportSource || 'react', + jsxRuntime: pluginBabelOptions.jsxRuntime || 'automatic', + jsxImportSource: pluginBabelOptions.jsxImportSource || 'react', }, ], - ...(pluginReactOptions.babel?.presets || []), + ...(pluginBabelOptions.babelConfig?.presets || []), ], plugins: [ [ @@ -122,7 +123,7 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = allowTopLevelThis: true, // dont rewrite global `this` -> `undefined` }, ], - ...(pluginReactOptions.babel?.plugins || []), + ...(pluginBabelOptions.babelConfig?.plugins || []), ], }, }) diff --git a/code/frameworks/react-native-web-vite/src/types.ts b/code/frameworks/react-native-web-vite/src/types.ts index c82c79771a1b..bbe3effea032 100644 --- a/code/frameworks/react-native-web-vite/src/types.ts +++ b/code/frameworks/react-native-web-vite/src/types.ts @@ -6,9 +6,14 @@ import type { } from '@storybook/react-vite'; import type { BabelOptions, Options as ReactOptions } from '@vitejs/plugin-react'; +import type { BabelPluginOptions } from 'vite-plugin-babel'; export type FrameworkOptions = FrameworkOptionsBase & { pluginReactOptions?: Omit & { babel?: BabelOptions }; + pluginBabelOptions?: BabelPluginOptions & { + jsxRuntime?: 'automatic' | 'classic'; + jsxImportSource?: string; + }; }; type FrameworkName = CompatibleString<'@storybook/react-native-web-vite'>; From 2db17816f8a026660929b183862c1eaa3afda512 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Sun, 5 Jan 2025 14:24:23 +0000 Subject: [PATCH 23/34] fix: preset react options and make them an object --- code/frameworks/react-native-web-vite/src/preset.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/frameworks/react-native-web-vite/src/preset.ts b/code/frameworks/react-native-web-vite/src/preset.ts index 53e2b1e12bba..40e275b5bbb1 100644 --- a/code/frameworks/react-native-web-vite/src/preset.ts +++ b/code/frameworks/react-native-web-vite/src/preset.ts @@ -92,7 +92,8 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = }), // we need to add this extra babel config because the react plugin doesn't allow - // for transpiling node_modules. We need this because many react native packages are untranspiled. + // for transpiling node_modules. We need this because many react native packages are un-transpiled. + // see this pr for more context: https://github.com/vitejs/vite-plugin-react/pull/306 // However we keep the react plugin to get the fast refresh and the other stuff its doing babel({ ...pluginBabelOptions, @@ -107,8 +108,8 @@ export const viteFinal: StorybookConfig['viteFinal'] = async (config, options) = '@babel/preset-react', { development: isDevelopment, - jsxRuntime: pluginBabelOptions.jsxRuntime || 'automatic', - jsxImportSource: pluginBabelOptions.jsxImportSource || 'react', + runtime: 'automatic', + ...(pluginBabelOptions.presetReact || {}), }, ], ...(pluginBabelOptions.babelConfig?.presets || []), From 30f73684fba26148e28618a71744d6c70c0a5279 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Sun, 5 Jan 2025 14:24:41 +0000 Subject: [PATCH 24/34] fix: oops types --- code/frameworks/react-native-web-vite/src/types.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/frameworks/react-native-web-vite/src/types.ts b/code/frameworks/react-native-web-vite/src/types.ts index bbe3effea032..5558722e03d7 100644 --- a/code/frameworks/react-native-web-vite/src/types.ts +++ b/code/frameworks/react-native-web-vite/src/types.ts @@ -11,8 +11,11 @@ import type { BabelPluginOptions } from 'vite-plugin-babel'; export type FrameworkOptions = FrameworkOptionsBase & { pluginReactOptions?: Omit & { babel?: BabelOptions }; pluginBabelOptions?: BabelPluginOptions & { - jsxRuntime?: 'automatic' | 'classic'; - jsxImportSource?: string; + presetReact?: { + [key: string]: any; + runtime?: 'automatic' | 'classic'; + importSource?: string; + }; }; }; From b0aac2af7746575025a57014282a6f2a5f1ae82f Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Sun, 5 Jan 2025 14:41:53 +0000 Subject: [PATCH 25/34] fix: dont run vite config migraiton for rnw --- .../cli-storybook/src/automigrate/fixes/vite-config-file.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/lib/cli-storybook/src/automigrate/fixes/vite-config-file.ts b/code/lib/cli-storybook/src/automigrate/fixes/vite-config-file.ts index 84201fd64852..4d1389c41e7d 100644 --- a/code/lib/cli-storybook/src/automigrate/fixes/vite-config-file.ts +++ b/code/lib/cli-storybook/src/automigrate/fixes/vite-config-file.ts @@ -42,6 +42,12 @@ export const viteConfigFile = { return null; } const frameworkName = frameworkPackages[frameworkPackageName]; + + if (frameworkName === 'react-native-web-vite') { + // we don't expect a vite config file for this framework + return null; + } + const isUsingViteBuilder = mainConfig.core?.builder === 'vite' || frameworkPackageName?.includes('vite') || From 45e96d34219f3202000aaacdb81f9cc284e03dcd Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Sun, 5 Jan 2025 15:22:43 +0000 Subject: [PATCH 26/34] test: test for react-native-web-vite exception --- .../fixes/vite-config-file.test.ts | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 code/lib/cli-storybook/src/automigrate/fixes/vite-config-file.test.ts diff --git a/code/lib/cli-storybook/src/automigrate/fixes/vite-config-file.test.ts b/code/lib/cli-storybook/src/automigrate/fixes/vite-config-file.test.ts new file mode 100644 index 000000000000..377e754e6b9b --- /dev/null +++ b/code/lib/cli-storybook/src/automigrate/fixes/vite-config-file.test.ts @@ -0,0 +1,48 @@ +import { describe, expect, it } from 'vitest'; + +import type { StorybookConfig } from 'storybook/internal/types'; + +import { viteConfigFile } from './vite-config-file'; + +const check = async ({ + packageManager, + main: mainConfig, + storybookVersion = '8.0.0', +}: { + packageManager: any; + main: Partial & Record; + storybookVersion?: string; +}) => { + return viteConfigFile.check({ + packageManager, + configDir: '', + mainConfig: mainConfig as any, + storybookVersion, + }); +}; + +describe('no-ops', () => { + it('skips when react-native-web-vite', async () => { + await expect( + check({ + packageManager: {}, + main: { + framework: '@storybook/react-native-web-vite', + }, + }) + ).resolves.toBeFalsy(); + }); +}); + +describe('continue', () => { + it('executes for vite framework', async () => { + await expect( + check({ + packageManager: {}, + main: { + framework: '@storybook/react-vite', + }, + }) + ).resolves.toBeTruthy(); + }); +}); From 2adf23d1f84527c9c72b6c57890d31d7ec33326f Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Mon, 6 Jan 2025 12:36:47 +0100 Subject: [PATCH 27/34] Manager: Optimize getPanels function with memoization --- code/core/src/manager/container/Panel.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/core/src/manager/container/Panel.tsx b/code/core/src/manager/container/Panel.tsx index f8cc2877cef0..25292bd50769 100644 --- a/code/core/src/manager/container/Panel.tsx +++ b/code/core/src/manager/container/Panel.tsx @@ -16,7 +16,7 @@ const createPanelActions = memoize(1)((api) => ({ togglePosition: () => api.togglePanelPosition(), })); -const getPanels = (api: API) => { +const getPanels = memoize(1)((api: API) => { const allPanels = api.getElements(Addon_TypesEnum.PANEL); const story = api.getCurrentStoryData(); @@ -42,7 +42,7 @@ const getPanels = (api: API) => { }); return filteredPanels; -}; +}); const mapper = ({ state, api }: Combo) => ({ panels: getPanels(api), From cc60f03f38221b8cbcc64096fad0b95307bca87f Mon Sep 17 00:00:00 2001 From: Valentin Palkovic Date: Mon, 6 Jan 2025 12:16:12 +0100 Subject: [PATCH 28/34] React: Force act running always in sequence --- code/renderers/react/src/renderToCanvas.tsx | 35 ++++++++++++++++++--- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/code/renderers/react/src/renderToCanvas.tsx b/code/renderers/react/src/renderToCanvas.tsx index 4ae1acbb7fe9..006d39e8134a 100644 --- a/code/renderers/react/src/renderToCanvas.tsx +++ b/code/renderers/react/src/renderToCanvas.tsx @@ -45,6 +45,23 @@ class ErrorBoundary extends ReactComponent<{ const Wrapper = FRAMEWORK_OPTIONS?.strictMode ? StrictMode : Fragment; +const actQueue: (() => Promise)[] = []; +let isActing = false; + +const processActQueue = async () => { + if (isActing || actQueue.length === 0) { + return; + } + + isActing = true; + const actTask = actQueue.shift(); + if (actTask) { + await actTask(); + } + isActing = false; + processActQueue(); +}; + export async function renderToCanvas( { storyContext, @@ -81,12 +98,22 @@ export async function renderToCanvas( unmountElement(canvasElement); } - await act(async () => { - await renderElement(element, canvasElement, storyContext?.parameters?.react?.rootOptions); + await new Promise((resolve, reject) => { + try { + actQueue.push(async () => { + await act(async () => { + await renderElement(element, canvasElement, storyContext?.parameters?.react?.rootOptions); + resolve(); + }); + }); + processActQueue(); + } catch (e) { + reject(e); + } }); - return async () => { - await act(() => { + return () => { + act(() => { unmountElement(canvasElement); }); }; From 103267b9cf3766be180704191255c8fc6473ba69 Mon Sep 17 00:00:00 2001 From: Kyle Gach Date: Mon, 6 Jan 2025 07:24:01 -0700 Subject: [PATCH 29/34] Rename `a11ytest` tag to `a11y-test` --- docs/_snippets/addon-a11y-meta-tag.md | 76 +++++++++---------- .../storybook-test-addon-disable-tests.md | 72 +++++++++--------- docs/writing-tests/accessibility-testing.mdx | 6 +- 3 files changed, 77 insertions(+), 77 deletions(-) diff --git a/docs/_snippets/addon-a11y-meta-tag.md b/docs/_snippets/addon-a11y-meta-tag.md index 3ef18124964e..58de99af555f 100644 --- a/docs/_snippets/addon-a11y-meta-tag.md +++ b/docs/_snippets/addon-a11y-meta-tag.md @@ -5,8 +5,8 @@ import { Button } from './button.component'; const meta: Meta