From ed714baecdb02df7efaebdeb8da4ef47d74c1e50 Mon Sep 17 00:00:00 2001 From: Karibash Date: Thu, 31 Mar 2022 02:11:06 +0900 Subject: [PATCH] Fix a bug that broke builds when using @storybook/testing-library --- .changeset/late-avocados-join.md | 5 +++++ src/index.ts | 13 +++++++------ src/transformers.ts | 8 ++++---- 3 files changed, 16 insertions(+), 10 deletions(-) create mode 100644 .changeset/late-avocados-join.md diff --git a/.changeset/late-avocados-join.md b/.changeset/late-avocados-join.md new file mode 100644 index 0000000..88b8a6e --- /dev/null +++ b/.changeset/late-avocados-join.md @@ -0,0 +1,5 @@ +--- +"storybook-addon-swc": patch +--- + +Fix a bug that broke builds when using @storybook/testing-library diff --git a/src/index.ts b/src/index.ts index 7f6b5f1..08d6d34 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,6 @@ import { Configuration } from 'webpack'; -import { Config, JsMinifyOptions } from '@swc/core'; -import { Options } from '@storybook/core-common'; +import { Options as SWCLoaderOptions, JsMinifyOptions } from '@swc/core'; +import { Options as StorybookOptions } from '@storybook/core-common'; import merge from 'deepmerge'; import { replaceLoader, replaceMinimizer, disableSourceMap } from './transformers'; @@ -9,7 +9,7 @@ export interface StoryBookAddonSwcOptions { enable: boolean; enableSwcLoader: boolean; enableSwcMinify: boolean; - swcLoaderOptions: Config; + swcLoaderOptions: SWCLoaderOptions; swcMinifyOptions: JsMinifyOptions; } @@ -19,6 +19,7 @@ const defaultOptions: StoryBookAddonSwcOptions = { enableSwcLoader: true, enableSwcMinify: true, swcLoaderOptions: { + isModule: 'unknown', sourceMaps: !isProduction, jsc: { parser: { @@ -53,15 +54,15 @@ const includeSwcConfig = (config: Configuration, options: StoryBookAddonSwcOptio }; const addonFilePattern = /storybook-addon-swc(.(cjs|esm))?.js/; -const getAddonOptions = (options: Options): StoryBookAddonSwcOptions => { +const getAddonOptions = (options: StorybookOptions): StoryBookAddonSwcOptions => { const addonOptions = options.presetsList?.find(preset => addonFilePattern.test(preset.name)).options ?? {}; return merge(defaultOptions, addonOptions); }; -export const webpack = (config: Configuration, options: Options): Configuration => { +export const webpack = (config: Configuration, options: StorybookOptions): Configuration => { return includeSwcConfig(config, getAddonOptions(options)); }; -export const managerWebpack = (config: Configuration, options: Options): Configuration => { +export const managerWebpack = (config: Configuration, options: StorybookOptions): Configuration => { return includeSwcConfig(config, getAddonOptions(options)); }; diff --git a/src/transformers.ts b/src/transformers.ts index 6257ef7..a983fb8 100644 --- a/src/transformers.ts +++ b/src/transformers.ts @@ -1,11 +1,11 @@ import { Configuration, ModuleOptions, RuleSetRule } from 'webpack'; -import { Config, JsMinifyOptions } from '@swc/core'; +import { Options as SWCLoaderOptions, JsMinifyOptions } from '@swc/core'; import TerserPlugin from 'terser-webpack-plugin'; const babelLoaderPattern = /babel-loader/; // eslint-disable-next-line @typescript-eslint/no-explicit-any -export const createSwcLoader = (options: Config): Record => { +export const createSwcLoader = (options: SWCLoaderOptions): Record => { return { loader: require.resolve('swc-loader'), options: { @@ -15,7 +15,7 @@ export const createSwcLoader = (options: Config): Record => { }; }; -export const replaceRuleSetRule = (rule: ModuleOptions['rules'][0], options: Config): RuleSetRule => { +export const replaceRuleSetRule = (rule: ModuleOptions['rules'][0], options: SWCLoaderOptions): RuleSetRule => { if (!('test' in rule && rule.test instanceof RegExp)) return rule; if (!rule.test.test('dummy.js') && !rule.test.test('dummy.ts')) return rule; @@ -54,7 +54,7 @@ export const replaceRuleSetRule = (rule: ModuleOptions['rules'][0], options: Con return rule; }; -export const replaceLoader = (options: Config): (config: Configuration) => Configuration => { +export const replaceLoader = (options: SWCLoaderOptions): (config: Configuration) => Configuration => { return (config: Configuration) => ({ ...config, module: {