Skip to content

Commit

Permalink
Fix a bug that broke builds when using @storybook/testing-library
Browse files Browse the repository at this point in the history
  • Loading branch information
Karibash committed Mar 30, 2022
1 parent 6cd97d0 commit ed714ba
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 10 deletions.
5 changes: 5 additions & 0 deletions .changeset/late-avocados-join.md
@@ -0,0 +1,5 @@
---
"storybook-addon-swc": patch
---

Fix a bug that broke builds when using @storybook/testing-library
13 changes: 7 additions & 6 deletions 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';
Expand All @@ -9,7 +9,7 @@ export interface StoryBookAddonSwcOptions {
enable: boolean;
enableSwcLoader: boolean;
enableSwcMinify: boolean;
swcLoaderOptions: Config;
swcLoaderOptions: SWCLoaderOptions;
swcMinifyOptions: JsMinifyOptions;
}

Expand All @@ -19,6 +19,7 @@ const defaultOptions: StoryBookAddonSwcOptions = {
enableSwcLoader: true,
enableSwcMinify: true,
swcLoaderOptions: {
isModule: 'unknown',
sourceMaps: !isProduction,
jsc: {
parser: {
Expand Down Expand Up @@ -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));
};
8 changes: 4 additions & 4 deletions 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<string, any> => {
export const createSwcLoader = (options: SWCLoaderOptions): Record<string, any> => {
return {
loader: require.resolve('swc-loader'),
options: {
Expand All @@ -15,7 +15,7 @@ export const createSwcLoader = (options: Config): Record<string, any> => {
};
};

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;

Expand Down Expand Up @@ -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: {
Expand Down

0 comments on commit ed714ba

Please sign in to comment.