@workleap/webpack-configs 1.5.7 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @workleap/webpack-configs
2
2
 
3
+ ## 1.6.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#300](https://github.com/workleap/wl-web-configs/pull/300) [`95ba69a`](https://github.com/workleap/wl-web-configs/commit/95ba69af8f342cfd5a69c4dd067b851f7a4817c3) Thanks [@patricklafrance](https://github.com/patricklafrance)! - Fixing deployment of previous version.
8
+
9
+ ## 1.6.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [#298](https://github.com/workleap/wl-web-configs/pull/298) [`ec6e2bb`](https://github.com/workleap/wl-web-configs/commit/ec6e2bba95dcedad667afae6ba99ed7d6ce27a6c) Thanks [@patricklafrance](https://github.com/patricklafrance)! - Updated dependencies.
14
+
15
+ ## 1.6.0
16
+
17
+ ### Minor Changes
18
+
19
+ - [#290](https://github.com/workleap/wl-web-configs/pull/290) [`8f0a5a0`](https://github.com/workleap/wl-web-configs/commit/8f0a5a03f8c1a55f22c41b1850d7d20a036b259d) Thanks [@patricklafrance](https://github.com/patricklafrance)! - Updated dependencies.
20
+
3
21
  ## 1.5.7
4
22
 
5
23
  ### Patch Changes
package/dist/build.js CHANGED
@@ -1,11 +1,11 @@
1
- import * as __WEBPACK_EXTERNAL_MODULE_html_webpack_plugin_e07f62c9__ from "html-webpack-plugin";
2
- import * as __WEBPACK_EXTERNAL_MODULE_mini_css_extract_plugin_0b345af5__ from "mini-css-extract-plugin";
3
- import * as __WEBPACK_EXTERNAL_MODULE_node_module_ab9f2194__ from "node:module";
4
- import * as __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__ from "node:path";
5
- import * as __WEBPACK_EXTERNAL_MODULE_terser_webpack_plugin_8f2c9815__ from "terser-webpack-plugin";
6
- import * as __WEBPACK_EXTERNAL_MODULE_webpack__ from "webpack";
7
- import * as __WEBPACK_EXTERNAL_MODULE__transformers_applyTransformers_js_6bf4bd94__ from "./transformers/applyTransformers.js";
8
- import * as __WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__ from "./utils.js";
1
+ import html_webpack_plugin from "html-webpack-plugin";
2
+ import mini_css_extract_plugin from "mini-css-extract-plugin";
3
+ import { createRequire } from "node:module";
4
+ import node_path from "node:path";
5
+ import terser_webpack_plugin from "terser-webpack-plugin";
6
+ import webpack from "webpack";
7
+ import { applyTransformers } from "./transformers/applyTransformers.js";
8
+ import { isObject } from "./utils.js";
9
9
 
10
10
  ;// CONCATENATED MODULE: external "html-webpack-plugin"
11
11
 
@@ -33,13 +33,13 @@ import * as __WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__ from "./utils.js";
33
33
 
34
34
 
35
35
  // Aliases
36
- const DefinePlugin = __WEBPACK_EXTERNAL_MODULE_webpack__["default"].DefinePlugin;
36
+ const DefinePlugin = webpack.DefinePlugin;
37
37
  // Using node:module.createRequire until
38
38
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta/resolve
39
39
  // is available
40
- const build_require = (0,__WEBPACK_EXTERNAL_MODULE_node_module_ab9f2194__.createRequire)(import.meta.url);
40
+ const build_require = createRequire(import.meta.url);
41
41
  function defineBuildHtmlWebpackPluginConfig(options = {}) {
42
- const { template = __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].resolve("./public/index.html"), ...rest } = options;
42
+ const { template = node_path.resolve("./public/index.html"), ...rest } = options;
43
43
  return {
44
44
  ...rest,
45
45
  template
@@ -57,8 +57,8 @@ function getOptimizationConfig(optimize) {
57
57
  return {
58
58
  minimize: true,
59
59
  minimizer: [
60
- new __WEBPACK_EXTERNAL_MODULE_terser_webpack_plugin_8f2c9815__["default"]({
61
- minify: __WEBPACK_EXTERNAL_MODULE_terser_webpack_plugin_8f2c9815__["default"].swcMinify,
60
+ new terser_webpack_plugin({
61
+ minify: terser_webpack_plugin.swcMinify,
62
62
  terserOptions: {
63
63
  toplevel: true,
64
64
  mangle: false,
@@ -83,8 +83,8 @@ function getOptimizationConfig(optimize) {
83
83
  return {
84
84
  minimize: true,
85
85
  minimizer: [
86
- new __WEBPACK_EXTERNAL_MODULE_terser_webpack_plugin_8f2c9815__["default"]({
87
- minify: __WEBPACK_EXTERNAL_MODULE_terser_webpack_plugin_8f2c9815__["default"].swcMinify
86
+ new terser_webpack_plugin({
87
+ minify: terser_webpack_plugin.swcMinify
88
88
  })
89
89
  ]
90
90
  };
@@ -103,7 +103,7 @@ function getOptimizationConfig(optimize) {
103
103
  };
104
104
  }
105
105
  function defineBuildConfig(swcConfig, options = {}) {
106
- const { entry = __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].resolve("./src/index.tsx"), outputPath = __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].resolve("dist"), // The trailing / is very important, otherwise paths will not be resolved correctly.
106
+ const { entry = node_path.resolve("./src/index.tsx"), outputPath = node_path.resolve("dist"), // The trailing / is very important, otherwise paths will not be resolved correctly.
107
107
  publicPath = "http://localhost:8080/", moduleRules = [], plugins = [], htmlWebpackPlugin = defineBuildHtmlWebpackPluginConfig(), miniCssExtractPluginOptions = defineMiniCssExtractPluginConfig(), optimize = true, cssModules = false, svgr = true, // Using an empty object literal as the default value to ensure
108
108
  // "process.env" is always available.
109
109
  environmentVariables = {}, transformers = [], verbose = false } = options;
@@ -144,7 +144,7 @@ function defineBuildConfig(swcConfig, options = {}) {
144
144
  test: /\.css$/i,
145
145
  use: [
146
146
  {
147
- loader: __WEBPACK_EXTERNAL_MODULE_mini_css_extract_plugin_0b345af5__["default"].loader
147
+ loader: mini_css_extract_plugin.loader
148
148
  },
149
149
  {
150
150
  loader: build_require.resolve("css-loader"),
@@ -163,7 +163,7 @@ function defineBuildConfig(swcConfig, options = {}) {
163
163
  {
164
164
  test: /\.svg$/i,
165
165
  loader: build_require.resolve("@svgr/webpack"),
166
- options: (0,__WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.isObject)(svgr) ? svgr : undefined
166
+ options: isObject(svgr) ? svgr : undefined
167
167
  },
168
168
  {
169
169
  test: /\.(png|jpe?g|gif)$/i,
@@ -189,12 +189,12 @@ function defineBuildConfig(swcConfig, options = {}) {
189
189
  alias: {
190
190
  // Fixes Module not found: Error: Can't resolve '@swc/helpers/_/_class_private_field_init'.
191
191
  // View https://github.com/vercel/next.js/pull/38174 for more information and https://github.com/vercel/next.js/issues/48593.
192
- "@swc/helpers": __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].dirname(build_require.resolve("@swc/helpers/package.json"))
192
+ "@swc/helpers": node_path.dirname(build_require.resolve("@swc/helpers/package.json"))
193
193
  }
194
194
  },
195
195
  plugins: [
196
- htmlWebpackPlugin && new __WEBPACK_EXTERNAL_MODULE_html_webpack_plugin_e07f62c9__["default"]((0,__WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.isObject)(htmlWebpackPlugin) ? htmlWebpackPlugin : defineBuildHtmlWebpackPluginConfig()),
197
- new __WEBPACK_EXTERNAL_MODULE_mini_css_extract_plugin_0b345af5__["default"](miniCssExtractPluginOptions),
196
+ htmlWebpackPlugin && new html_webpack_plugin(isObject(htmlWebpackPlugin) ? htmlWebpackPlugin : defineBuildHtmlWebpackPluginConfig()),
197
+ new mini_css_extract_plugin(miniCssExtractPluginOptions),
198
198
  // Stringify the environment variables because the plugin does a direct text replacement. Otherwise, "production" would become production
199
199
  // after replacement and cause an undefined var error because the production var doesn't exist.
200
200
  // For more information, view: https://webpack.js.org/plugins/define-plugin.
@@ -207,7 +207,7 @@ function defineBuildConfig(swcConfig, options = {}) {
207
207
  ...plugins
208
208
  ].filter(Boolean)
209
209
  };
210
- const transformedConfig = (0,__WEBPACK_EXTERNAL_MODULE__transformers_applyTransformers_js_6bf4bd94__.applyTransformers)(config, transformers, {
210
+ const transformedConfig = applyTransformers(config, transformers, {
211
211
  environment: "build",
212
212
  verbose
213
213
  });
package/dist/build.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sources":["webpack://@workleap/webpack-configs/./src/build.ts"],"sourcesContent":["import type { Config as SvgrOptions } from \"@svgr/core\";\nimport type { Config as SwcConfig } from \"@swc/core\";\nimport HtmlWebpackPlugin from \"html-webpack-plugin\";\nimport MiniCssExtractPlugin from \"mini-css-extract-plugin\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport TerserPlugin from \"terser-webpack-plugin\";\nimport webpack from \"webpack\";\nimport { applyTransformers, type WebpackConfigTransformer } from \"./transformers/applyTransformers.ts\";\nimport type { WebpackConfig } from \"./types.ts\";\nimport { isObject } from \"./utils.ts\";\n\n// Aliases\nconst DefinePlugin = webpack.DefinePlugin;\n\n// Using node:module.createRequire until\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta/resolve\n// is available\nconst require = createRequire(import.meta.url);\n\nexport function defineBuildHtmlWebpackPluginConfig(options: HtmlWebpackPlugin.Options = {}): HtmlWebpackPlugin.Options {\n const {\n template = path.resolve(\"./public/index.html\"),\n ...rest\n } = options;\n\n return {\n ...rest,\n template\n };\n}\n\ntype MiniCssExtractPluginOptions = NonNullable<ConstructorParameters<typeof MiniCssExtractPlugin>[number]>;\n\nexport function defineMiniCssExtractPluginConfig(options: MiniCssExtractPluginOptions = {}): MiniCssExtractPluginOptions {\n const {\n filename = \"[name].css\",\n ...rest\n } = options;\n\n return {\n ...rest,\n filename\n };\n}\n\nexport type WebpackOptimization = NonNullable<WebpackConfig[\"optimization\"]>;\nexport type OptimizeOption = boolean | \"readable\";\n\nexport function getOptimizationConfig(optimize: OptimizeOption): WebpackOptimization {\n if (optimize === \"readable\") {\n return {\n minimize: true,\n minimizer: [\n new TerserPlugin({\n minify: TerserPlugin.swcMinify,\n terserOptions: {\n toplevel: true,\n mangle: false,\n keep_classnames: true,\n keep_fnames: true,\n compress: {\n toplevel: true,\n hoist_props: false\n },\n output: {\n comments: true\n }\n }\n })\n ],\n chunkIds: \"named\",\n moduleIds: \"named\",\n mangleExports: false,\n mangleWasmImports: false\n };\n } else if (optimize) {\n return {\n minimize: true,\n minimizer: [\n new TerserPlugin({\n minify: TerserPlugin.swcMinify\n })\n ]\n };\n }\n\n // Doesn't turnoff everything but is good enough to help with debugging scenarios.\n return {\n minimize: false,\n chunkIds: \"named\",\n moduleIds: \"named\",\n concatenateModules: false,\n flagIncludedChunks: false,\n mangleExports: false,\n mangleWasmImports: false,\n removeAvailableModules: false,\n usedExports: false\n };\n}\n\nexport interface DefineBuildConfigOptions {\n entry?: string;\n outputPath?: string;\n publicPath?: `${string}/` | \"auto\";\n moduleRules?: NonNullable<WebpackConfig[\"module\"]>[\"rules\"];\n plugins?: WebpackConfig[\"plugins\"];\n htmlWebpackPlugin?: boolean | HtmlWebpackPlugin.Options;\n miniCssExtractPluginOptions?: MiniCssExtractPluginOptions;\n optimize?: OptimizeOption;\n cssModules?: boolean;\n svgr?: boolean | SvgrOptions;\n environmentVariables?: Record<string, unknown>;\n transformers?: WebpackConfigTransformer[];\n verbose?: boolean;\n}\n\nexport function defineBuildConfig(swcConfig: SwcConfig, options: DefineBuildConfigOptions = {}) {\n const {\n entry = path.resolve(\"./src/index.tsx\"),\n outputPath = path.resolve(\"dist\"),\n // The trailing / is very important, otherwise paths will not be resolved correctly.\n publicPath = \"http://localhost:8080/\",\n moduleRules = [],\n plugins = [],\n htmlWebpackPlugin = defineBuildHtmlWebpackPluginConfig(),\n miniCssExtractPluginOptions = defineMiniCssExtractPluginConfig(),\n optimize = true,\n cssModules = false,\n svgr = true,\n // Using an empty object literal as the default value to ensure\n // \"process.env\" is always available.\n environmentVariables = {},\n transformers = [],\n verbose = false\n } = options;\n\n const config: WebpackConfig = {\n mode: \"production\",\n target: \"web\",\n entry,\n output: {\n path: outputPath,\n filename: \"[name].js\",\n publicPath,\n clean: true,\n assetModuleFilename: \"[name][ext][query]\"\n },\n optimization: getOptimizationConfig(optimize),\n infrastructureLogging: verbose ? {\n appendOnly: true,\n level: \"verbose\",\n debug: /PackFileCache/\n } : undefined,\n module: {\n rules: [\n {\n test: /\\.(js|jsx|ts|tsx)$/i,\n exclude: /node_modules/,\n loader: require.resolve(\"swc-loader\"),\n options: swcConfig\n },\n {\n // https://stackoverflow.com/questions/69427025/programmatic-webpack-jest-esm-cant-resolve-module-without-js-file-exten\n test: /\\.js$/i,\n include: /node_modules/,\n resolve: {\n fullySpecified: false\n }\n },\n {\n test: /\\.css$/i,\n use: [\n { loader: MiniCssExtractPlugin.loader },\n {\n loader: require.resolve(\"css-loader\"),\n options: cssModules\n ? {\n // Must match the number of loaders applied before this one.\n importLoaders: 1,\n modules: true\n }\n : undefined\n },\n { loader: require.resolve(\"postcss-loader\") }\n ]\n },\n ...(svgr\n ? [\n {\n test: /\\.svg$/i,\n loader: require.resolve(\"@svgr/webpack\"),\n options: isObject(svgr) ? svgr : undefined\n },\n {\n test: /\\.(png|jpe?g|gif)$/i,\n type: \"asset/resource\"\n }\n ]\n : [\n {\n test: /\\.(png|jpe?g|gif|svg)$/i,\n type: \"asset/resource\"\n }\n ]),\n ...moduleRules\n ]\n },\n resolve: {\n extensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".css\"],\n alias: {\n // Fixes Module not found: Error: Can't resolve '@swc/helpers/_/_class_private_field_init'.\n // View https://github.com/vercel/next.js/pull/38174 for more information and https://github.com/vercel/next.js/issues/48593.\n \"@swc/helpers\": path.dirname(require.resolve(\"@swc/helpers/package.json\"))\n }\n },\n plugins: [\n htmlWebpackPlugin && new HtmlWebpackPlugin(isObject(htmlWebpackPlugin) ? htmlWebpackPlugin : defineBuildHtmlWebpackPluginConfig()),\n new MiniCssExtractPlugin(miniCssExtractPluginOptions),\n // Stringify the environment variables because the plugin does a direct text replacement. Otherwise, \"production\" would become production\n // after replacement and cause an undefined var error because the production var doesn't exist.\n // For more information, view: https://webpack.js.org/plugins/define-plugin.\n new DefinePlugin({\n \"process.env\": Object.keys(environmentVariables).reduce((acc, key) => {\n acc[key] = JSON.stringify(environmentVariables[key]);\n\n return acc;\n }, {} as Record<string, string>)\n }),\n ...plugins\n ].filter(Boolean) as WebpackConfig[\"plugins\"]\n };\n\n const transformedConfig = applyTransformers(config, transformers, {\n environment: \"build\",\n verbose\n });\n\n return transformedConfig;\n}\n"],"names":["HtmlWebpackPlugin","MiniCssExtractPlugin","createRequire","path","TerserPlugin","webpack","applyTransformers","isObject","DefinePlugin","require","defineBuildHtmlWebpackPluginConfig","options","template","rest","defineMiniCssExtractPluginConfig","filename","getOptimizationConfig","optimize","defineBuildConfig","swcConfig","entry","outputPath","publicPath","moduleRules","plugins","htmlWebpackPlugin","miniCssExtractPluginOptions","cssModules","svgr","environmentVariables","transformers","verbose","config","undefined","Object","acc","key","JSON","Boolean","transformedConfig"],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sources":["webpack://@workleap/webpack-configs/./src/build.ts"],"sourcesContent":["import type { Config as SvgrOptions } from \"@svgr/core\";\nimport type { Config as SwcConfig } from \"@swc/core\";\nimport HtmlWebpackPlugin from \"html-webpack-plugin\";\nimport MiniCssExtractPlugin from \"mini-css-extract-plugin\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport TerserPlugin from \"terser-webpack-plugin\";\nimport webpack from \"webpack\";\nimport { applyTransformers, type WebpackConfigTransformer } from \"./transformers/applyTransformers.ts\";\nimport type { WebpackConfig } from \"./types.ts\";\nimport { isObject } from \"./utils.ts\";\n\n// Aliases\nconst DefinePlugin = webpack.DefinePlugin;\n\n// Using node:module.createRequire until\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta/resolve\n// is available\nconst require = createRequire(import.meta.url);\n\nexport function defineBuildHtmlWebpackPluginConfig(options: HtmlWebpackPlugin.Options = {}): HtmlWebpackPlugin.Options {\n const {\n template = path.resolve(\"./public/index.html\"),\n ...rest\n } = options;\n\n return {\n ...rest,\n template\n };\n}\n\ntype MiniCssExtractPluginOptions = NonNullable<ConstructorParameters<typeof MiniCssExtractPlugin>[number]>;\n\nexport function defineMiniCssExtractPluginConfig(options: MiniCssExtractPluginOptions = {}): MiniCssExtractPluginOptions {\n const {\n filename = \"[name].css\",\n ...rest\n } = options;\n\n return {\n ...rest,\n filename\n };\n}\n\nexport type WebpackOptimization = NonNullable<WebpackConfig[\"optimization\"]>;\nexport type OptimizeOption = boolean | \"readable\";\n\nexport function getOptimizationConfig(optimize: OptimizeOption): WebpackOptimization {\n if (optimize === \"readable\") {\n return {\n minimize: true,\n minimizer: [\n new TerserPlugin({\n minify: TerserPlugin.swcMinify,\n terserOptions: {\n toplevel: true,\n mangle: false,\n keep_classnames: true,\n keep_fnames: true,\n compress: {\n toplevel: true,\n hoist_props: false\n },\n output: {\n comments: true\n }\n }\n })\n ],\n chunkIds: \"named\",\n moduleIds: \"named\",\n mangleExports: false,\n mangleWasmImports: false\n };\n } else if (optimize) {\n return {\n minimize: true,\n minimizer: [\n new TerserPlugin({\n minify: TerserPlugin.swcMinify\n })\n ]\n };\n }\n\n // Doesn't turnoff everything but is good enough to help with debugging scenarios.\n return {\n minimize: false,\n chunkIds: \"named\",\n moduleIds: \"named\",\n concatenateModules: false,\n flagIncludedChunks: false,\n mangleExports: false,\n mangleWasmImports: false,\n removeAvailableModules: false,\n usedExports: false\n };\n}\n\nexport interface DefineBuildConfigOptions {\n entry?: string;\n outputPath?: string;\n publicPath?: `${string}/` | \"auto\";\n moduleRules?: NonNullable<WebpackConfig[\"module\"]>[\"rules\"];\n plugins?: WebpackConfig[\"plugins\"];\n htmlWebpackPlugin?: boolean | HtmlWebpackPlugin.Options;\n miniCssExtractPluginOptions?: MiniCssExtractPluginOptions;\n optimize?: OptimizeOption;\n cssModules?: boolean;\n svgr?: boolean | SvgrOptions;\n environmentVariables?: Record<string, unknown>;\n transformers?: WebpackConfigTransformer[];\n verbose?: boolean;\n}\n\nexport function defineBuildConfig(swcConfig: SwcConfig, options: DefineBuildConfigOptions = {}) {\n const {\n entry = path.resolve(\"./src/index.tsx\"),\n outputPath = path.resolve(\"dist\"),\n // The trailing / is very important, otherwise paths will not be resolved correctly.\n publicPath = \"http://localhost:8080/\",\n moduleRules = [],\n plugins = [],\n htmlWebpackPlugin = defineBuildHtmlWebpackPluginConfig(),\n miniCssExtractPluginOptions = defineMiniCssExtractPluginConfig(),\n optimize = true,\n cssModules = false,\n svgr = true,\n // Using an empty object literal as the default value to ensure\n // \"process.env\" is always available.\n environmentVariables = {},\n transformers = [],\n verbose = false\n } = options;\n\n const config: WebpackConfig = {\n mode: \"production\",\n target: \"web\",\n entry,\n output: {\n path: outputPath,\n filename: \"[name].js\",\n publicPath,\n clean: true,\n assetModuleFilename: \"[name][ext][query]\"\n },\n optimization: getOptimizationConfig(optimize),\n infrastructureLogging: verbose ? {\n appendOnly: true,\n level: \"verbose\",\n debug: /PackFileCache/\n } : undefined,\n module: {\n rules: [\n {\n test: /\\.(js|jsx|ts|tsx)$/i,\n exclude: /node_modules/,\n loader: require.resolve(\"swc-loader\"),\n options: swcConfig\n },\n {\n // https://stackoverflow.com/questions/69427025/programmatic-webpack-jest-esm-cant-resolve-module-without-js-file-exten\n test: /\\.js$/i,\n include: /node_modules/,\n resolve: {\n fullySpecified: false\n }\n },\n {\n test: /\\.css$/i,\n use: [\n { loader: MiniCssExtractPlugin.loader },\n {\n loader: require.resolve(\"css-loader\"),\n options: cssModules\n ? {\n // Must match the number of loaders applied before this one.\n importLoaders: 1,\n modules: true\n }\n : undefined\n },\n { loader: require.resolve(\"postcss-loader\") }\n ]\n },\n ...(svgr\n ? [\n {\n test: /\\.svg$/i,\n loader: require.resolve(\"@svgr/webpack\"),\n options: isObject(svgr) ? svgr : undefined\n },\n {\n test: /\\.(png|jpe?g|gif)$/i,\n type: \"asset/resource\"\n }\n ]\n : [\n {\n test: /\\.(png|jpe?g|gif|svg)$/i,\n type: \"asset/resource\"\n }\n ]),\n ...moduleRules\n ]\n },\n resolve: {\n extensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".css\"],\n alias: {\n // Fixes Module not found: Error: Can't resolve '@swc/helpers/_/_class_private_field_init'.\n // View https://github.com/vercel/next.js/pull/38174 for more information and https://github.com/vercel/next.js/issues/48593.\n \"@swc/helpers\": path.dirname(require.resolve(\"@swc/helpers/package.json\"))\n }\n },\n plugins: [\n htmlWebpackPlugin && new HtmlWebpackPlugin(isObject(htmlWebpackPlugin) ? htmlWebpackPlugin : defineBuildHtmlWebpackPluginConfig()),\n new MiniCssExtractPlugin(miniCssExtractPluginOptions),\n // Stringify the environment variables because the plugin does a direct text replacement. Otherwise, \"production\" would become production\n // after replacement and cause an undefined var error because the production var doesn't exist.\n // For more information, view: https://webpack.js.org/plugins/define-plugin.\n new DefinePlugin({\n \"process.env\": Object.keys(environmentVariables).reduce((acc, key) => {\n acc[key] = JSON.stringify(environmentVariables[key]);\n\n return acc;\n }, {} as Record<string, string>)\n }),\n ...plugins\n ].filter(Boolean) as WebpackConfig[\"plugins\"]\n };\n\n const transformedConfig = applyTransformers(config, transformers, {\n environment: \"build\",\n verbose\n });\n\n return transformedConfig;\n}\n"],"names":["HtmlWebpackPlugin","MiniCssExtractPlugin","createRequire","path","TerserPlugin","webpack","applyTransformers","isObject","DefinePlugin","require","defineBuildHtmlWebpackPluginConfig","options","template","rest","defineMiniCssExtractPluginConfig","filename","getOptimizationConfig","optimize","defineBuildConfig","swcConfig","entry","outputPath","publicPath","moduleRules","plugins","htmlWebpackPlugin","miniCssExtractPluginOptions","cssModules","svgr","environmentVariables","transformers","verbose","config","undefined","Object","acc","key","JSON","Boolean","transformedConfig"],"mappings":"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"}
package/dist/dev.js CHANGED
@@ -1,11 +1,11 @@
1
- import * as __WEBPACK_EXTERNAL_MODULE__pmmmwh_react_refresh_webpack_plugin_143c1848__ from "@pmmmwh/react-refresh-webpack-plugin";
2
- import * as __WEBPACK_EXTERNAL_MODULE_html_webpack_plugin_e07f62c9__ from "html-webpack-plugin";
3
- import * as __WEBPACK_EXTERNAL_MODULE_node_module_ab9f2194__ from "node:module";
4
- import * as __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__ from "node:path";
5
- import * as __WEBPACK_EXTERNAL_MODULE_webpack__ from "webpack";
6
- import * as __WEBPACK_EXTERNAL_MODULE__transformers_applyTransformers_js_6bf4bd94__ from "./transformers/applyTransformers.js";
7
- import * as __WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__ from "./utils.js";
8
- import * as __WEBPACK_EXTERNAL_MODULE_webpack_dev_server_0dd3124e__ from "webpack-dev-server";
1
+ import react_refresh_webpack_plugin from "@pmmmwh/react-refresh-webpack-plugin";
2
+ import html_webpack_plugin from "html-webpack-plugin";
3
+ import { createRequire } from "node:module";
4
+ import node_path from "node:path";
5
+ import webpack from "webpack";
6
+ import { applyTransformers } from "./transformers/applyTransformers.js";
7
+ import { isNil, isObject } from "./utils.js";
8
+ import "webpack-dev-server";
9
9
 
10
10
  ;// CONCATENATED MODULE: external "@pmmmwh/react-refresh-webpack-plugin"
11
11
 
@@ -34,13 +34,13 @@ import * as __WEBPACK_EXTERNAL_MODULE_webpack_dev_server_0dd3124e__ from "webpac
34
34
  // Add the "devServer" option to WebpackConfig typings.
35
35
 
36
36
  // Aliases
37
- const DefinePlugin = __WEBPACK_EXTERNAL_MODULE_webpack__["default"].DefinePlugin;
37
+ const DefinePlugin = webpack.DefinePlugin;
38
38
  // Using node:module.createRequire until
39
39
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta/resolve
40
40
  // is available
41
- const dev_require = (0,__WEBPACK_EXTERNAL_MODULE_node_module_ab9f2194__.createRequire)(import.meta.url);
41
+ const dev_require = createRequire(import.meta.url);
42
42
  function defineDevHtmlWebpackPluginConfig(options = {}) {
43
- const { template = __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].resolve("./public/index.html"), ...rest } = options;
43
+ const { template = node_path.resolve("./public/index.html"), ...rest } = options;
44
44
  return {
45
45
  ...rest,
46
46
  template
@@ -61,14 +61,14 @@ function trySetSwcFastRefresh(config, enabled) {
61
61
  return config;
62
62
  }
63
63
  function trySetFastRefreshOverlay(options, overlay) {
64
- if (overlay === false && (0,__WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.isNil)(options.overlay)) {
64
+ if (overlay === false && isNil(options.overlay)) {
65
65
  options.overlay = false;
66
66
  }
67
67
  return options;
68
68
  }
69
69
  function defineDevConfig(swcConfig, options = {}) {
70
70
  preflight();
71
- const { entry = __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].resolve("./src/index.tsx"), https = false, host = "localhost", port = 8080, publicPath, cache = true, moduleRules = [], plugins = [], htmlWebpackPlugin = defineDevHtmlWebpackPluginConfig(), fastRefresh = true, cssModules = false, overlay, svgr = true, // Using an empty object literal as the default value to ensure
71
+ const { entry = node_path.resolve("./src/index.tsx"), https = false, host = "localhost", port = 8080, publicPath, cache = true, moduleRules = [], plugins = [], htmlWebpackPlugin = defineDevHtmlWebpackPluginConfig(), fastRefresh = true, cssModules = false, overlay, svgr = true, // Using an empty object literal as the default value to ensure
72
72
  // "process.env" is always available.
73
73
  environmentVariables = {}, transformers = [], verbose = false } = options;
74
74
  const config = {
@@ -87,7 +87,7 @@ function defineDevConfig(swcConfig, options = {}) {
87
87
  } : undefined,
88
88
  server: https ? {
89
89
  type: "https",
90
- options: (0,__WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.isObject)(https) ? https : undefined
90
+ options: isObject(https) ? https : undefined
91
91
  } : undefined
92
92
  },
93
93
  entry,
@@ -152,7 +152,7 @@ function defineDevConfig(swcConfig, options = {}) {
152
152
  {
153
153
  test: /\.svg$/i,
154
154
  loader: dev_require.resolve("@svgr/webpack"),
155
- options: (0,__WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.isObject)(svgr) ? svgr : undefined
155
+ options: isObject(svgr) ? svgr : undefined
156
156
  },
157
157
  {
158
158
  test: /\.(png|jpe?g|gif)$/i,
@@ -178,11 +178,11 @@ function defineDevConfig(swcConfig, options = {}) {
178
178
  alias: {
179
179
  // Fixes Module not found: Error: Can't resolve '@swc/helpers/_/_class_private_field_init'.
180
180
  // View https://github.com/vercel/next.js/pull/38174 for more information and https://github.com/vercel/next.js/issues/48593.
181
- "@swc/helpers": __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].dirname(dev_require.resolve("@swc/helpers/package.json"))
181
+ "@swc/helpers": node_path.dirname(dev_require.resolve("@swc/helpers/package.json"))
182
182
  }
183
183
  },
184
184
  plugins: [
185
- htmlWebpackPlugin && new __WEBPACK_EXTERNAL_MODULE_html_webpack_plugin_e07f62c9__["default"]((0,__WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.isObject)(htmlWebpackPlugin) ? htmlWebpackPlugin : defineDevHtmlWebpackPluginConfig()),
185
+ htmlWebpackPlugin && new html_webpack_plugin(isObject(htmlWebpackPlugin) ? htmlWebpackPlugin : defineDevHtmlWebpackPluginConfig()),
186
186
  // Stringify the environment variables because the plugin does a direct text replacement. Otherwise, "production" would become production
187
187
  // after replacement and cause an undefined var error.
188
188
  // For more information, view: https://webpack.js.org/plugins/define-plugin/.
@@ -192,11 +192,11 @@ function defineDevConfig(swcConfig, options = {}) {
192
192
  return acc;
193
193
  }, {})
194
194
  }),
195
- fastRefresh && new __WEBPACK_EXTERNAL_MODULE__pmmmwh_react_refresh_webpack_plugin_143c1848__["default"](trySetFastRefreshOverlay((0,__WEBPACK_EXTERNAL_MODULE__utils_js_d88b7fe1__.isObject)(fastRefresh) ? fastRefresh : defineFastRefreshPluginConfig(), overlay)),
195
+ fastRefresh && new react_refresh_webpack_plugin(trySetFastRefreshOverlay(isObject(fastRefresh) ? fastRefresh : defineFastRefreshPluginConfig(), overlay)),
196
196
  ...plugins
197
197
  ].filter(Boolean)
198
198
  };
199
- const transformedConfig = (0,__WEBPACK_EXTERNAL_MODULE__transformers_applyTransformers_js_6bf4bd94__.applyTransformers)(config, transformers, {
199
+ const transformedConfig = applyTransformers(config, transformers, {
200
200
  environment: "dev",
201
201
  verbose
202
202
  });
package/dist/dev.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sources":["webpack://@workleap/webpack-configs/./src/dev.ts"],"sourcesContent":["import ReactRefreshWebpackPlugin from \"@pmmmwh/react-refresh-webpack-plugin\";\nimport type { ReactRefreshPluginOptions } from \"@pmmmwh/react-refresh-webpack-plugin/types/lib/types.d.ts\";\nimport type { Config as SvgrOptions } from \"@svgr/core\";\nimport type { Config as SwcConfig } from \"@swc/core\";\nimport HtmlWebpackPlugin from \"html-webpack-plugin\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport webpack from \"webpack\";\nimport type { ServerOptions } from \"webpack-dev-server\";\nimport { applyTransformers, type WebpackConfigTransformer } from \"./transformers/applyTransformers.ts\";\nimport { isNil, isObject } from \"./utils.ts\";\n\n// Add the \"devServer\" option to WebpackConfig typings.\nimport \"webpack-dev-server\";\nimport type { WebpackConfig } from \"./types.ts\";\n\n// Aliases\nconst DefinePlugin = webpack.DefinePlugin;\n\n// Using node:module.createRequire until\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta/resolve\n// is available\nconst require = createRequire(import.meta.url);\n\nexport function defineDevHtmlWebpackPluginConfig(options: HtmlWebpackPlugin.Options = {}): HtmlWebpackPlugin.Options {\n const {\n template = path.resolve(\"./public/index.html\"),\n ...rest\n } = options;\n\n return {\n ...rest,\n template\n };\n}\n\nexport function defineFastRefreshPluginConfig(options: ReactRefreshPluginOptions = {}) {\n return options;\n}\n\nexport interface DefineDevConfigOptions {\n entry?: string;\n https?: boolean | ServerOptions | undefined;\n host?: string;\n port?: number;\n publicPath?: `${string}/` | \"auto\";\n cache?: boolean;\n moduleRules?: NonNullable<WebpackConfig[\"module\"]>[\"rules\"];\n plugins?: WebpackConfig[\"plugins\"];\n htmlWebpackPlugin?: boolean | HtmlWebpackPlugin.Options;\n fastRefresh?: boolean | ReactRefreshPluginOptions;\n cssModules?: boolean;\n overlay?: false;\n svgr?: boolean | SvgrOptions;\n environmentVariables?: Record<string, unknown>;\n transformers?: WebpackConfigTransformer[];\n verbose?: boolean;\n}\n\nfunction preflight() {\n if (!require.resolve(\"webpack-dev-server\")) {\n throw new Error(\"[webpack-configs] To use the \\\"dev\\\" config, install https://www.npmjs.com/package/webpack-dev-server as a \\\"devDependency\\\".\");\n }\n}\n\nfunction trySetSwcFastRefresh(config: SwcConfig, enabled: boolean) {\n if (config?.jsc?.transform?.react) {\n config.jsc.transform.react.refresh = enabled;\n }\n\n return config;\n}\n\nfunction trySetFastRefreshOverlay(options: ReactRefreshPluginOptions, overlay?: boolean) {\n if (overlay === false && isNil(options.overlay)) {\n options.overlay = false;\n }\n\n return options;\n}\n\nexport function defineDevConfig(swcConfig: SwcConfig, options: DefineDevConfigOptions = {}) {\n preflight();\n\n const {\n entry = path.resolve(\"./src/index.tsx\"),\n https = false,\n host = \"localhost\",\n port = 8080,\n publicPath,\n cache = true,\n moduleRules = [],\n plugins = [],\n htmlWebpackPlugin = defineDevHtmlWebpackPluginConfig(),\n fastRefresh = true,\n cssModules = false,\n overlay,\n svgr = true,\n // Using an empty object literal as the default value to ensure\n // \"process.env\" is always available.\n environmentVariables = {},\n transformers = [],\n verbose = false\n } = options;\n\n const config: WebpackConfig = {\n mode: \"development\",\n target: \"web\",\n devtool: \"eval-cheap-module-source-map\",\n devServer: {\n // According to the Fast Refresh plugin documentation, hot should be \"true\" to enable Fast Refresh:\n // https://github.com/pmmmwh/react-refresh-webpack-plugin#usage.\n hot: true,\n host,\n port,\n historyApiFallback: true,\n client: (overlay === false || fastRefresh) ? {\n overlay: false\n } : undefined,\n server: https ? {\n type: \"https\",\n options: isObject(https) ? https : undefined\n } : undefined\n },\n entry,\n output: {\n // The trailing / is very important, otherwise paths will not be resolved correctly.\n publicPath: publicPath ?? `${https ? \"https\" : \"http\"}://${host}:${port}/`\n },\n cache: cache && {\n type: \"memory\",\n maxGenerations: 1\n },\n // See: https://webpack.js.org/guides/build-performance/#avoid-extra-optimization-steps\n optimization: {\n // Keep \"runtimeChunk\" to false, otherwise it breaks module federation\n // (at least for the remote application).\n runtimeChunk: false,\n removeAvailableModules: false,\n removeEmptyChunks: false,\n splitChunks: false\n },\n infrastructureLogging: verbose ? {\n appendOnly: true,\n level: \"verbose\",\n debug: /PackFileCache/\n } : undefined,\n module: {\n rules: [\n {\n test: /\\.(js|jsx|ts|tsx)$/i,\n exclude: /node_modules/,\n loader: require.resolve(\"swc-loader\"),\n options: trySetSwcFastRefresh(swcConfig, fastRefresh !== false)\n },\n {\n // https://stackoverflow.com/questions/69427025/programmatic-webpack-jest-esm-cant-resolve-module-without-js-file-exten\n test: /\\.js$/i,\n include: /node_modules/,\n resolve: {\n fullySpecified: false\n }\n },\n {\n test: /\\.css$/i,\n use: [\n { loader: require.resolve(\"style-loader\") },\n {\n loader: require.resolve(\"css-loader\"),\n options: cssModules\n ? {\n // Must match the number of loaders applied before this one.\n importLoaders: 1,\n modules: true\n }\n : undefined\n },\n { loader: require.resolve(\"postcss-loader\") }\n ]\n },\n ...(svgr\n ? [\n {\n test: /\\.svg$/i,\n loader: require.resolve(\"@svgr/webpack\"),\n options: isObject(svgr) ? svgr : undefined\n },\n {\n test: /\\.(png|jpe?g|gif)$/i,\n type: \"asset/resource\"\n }\n ]\n : [\n {\n test: /\\.(png|jpe?g|gif|svg)$/i,\n type: \"asset/resource\"\n }\n ]),\n ...moduleRules\n ]\n },\n resolve: {\n extensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".css\"],\n alias: {\n // Fixes Module not found: Error: Can't resolve '@swc/helpers/_/_class_private_field_init'.\n // View https://github.com/vercel/next.js/pull/38174 for more information and https://github.com/vercel/next.js/issues/48593.\n \"@swc/helpers\": path.dirname(require.resolve(\"@swc/helpers/package.json\"))\n }\n },\n plugins: [\n htmlWebpackPlugin && new HtmlWebpackPlugin(isObject(htmlWebpackPlugin) ? htmlWebpackPlugin : defineDevHtmlWebpackPluginConfig()),\n // Stringify the environment variables because the plugin does a direct text replacement. Otherwise, \"production\" would become production\n // after replacement and cause an undefined var error.\n // For more information, view: https://webpack.js.org/plugins/define-plugin/.\n new DefinePlugin({\n \"process.env\": Object.keys(environmentVariables).reduce((acc, key) => {\n acc[key] = JSON.stringify(environmentVariables[key]);\n\n return acc;\n }, {} as Record<string, string>)\n }),\n fastRefresh && new ReactRefreshWebpackPlugin(trySetFastRefreshOverlay(isObject(fastRefresh) ? fastRefresh : defineFastRefreshPluginConfig(), overlay)),\n ...plugins\n ].filter(Boolean)\n };\n\n const transformedConfig = applyTransformers(config, transformers, {\n environment: \"dev\",\n verbose\n });\n\n return transformedConfig;\n}\n"],"names":["ReactRefreshWebpackPlugin","HtmlWebpackPlugin","createRequire","path","webpack","applyTransformers","isNil","isObject","DefinePlugin","require","defineDevHtmlWebpackPluginConfig","options","template","rest","defineFastRefreshPluginConfig","preflight","Error","trySetSwcFastRefresh","config","enabled","trySetFastRefreshOverlay","overlay","defineDevConfig","swcConfig","entry","https","host","port","publicPath","cache","moduleRules","plugins","htmlWebpackPlugin","fastRefresh","cssModules","svgr","environmentVariables","transformers","verbose","undefined","Object","acc","key","JSON","Boolean","transformedConfig"],"mappings":"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"}
1
+ {"version":3,"file":"dev.js","sources":["webpack://@workleap/webpack-configs/./src/dev.ts"],"sourcesContent":["import ReactRefreshWebpackPlugin from \"@pmmmwh/react-refresh-webpack-plugin\";\nimport type { ReactRefreshPluginOptions } from \"@pmmmwh/react-refresh-webpack-plugin/types/lib/types.d.ts\";\nimport type { Config as SvgrOptions } from \"@svgr/core\";\nimport type { Config as SwcConfig } from \"@swc/core\";\nimport HtmlWebpackPlugin from \"html-webpack-plugin\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\nimport webpack from \"webpack\";\nimport type { ServerOptions } from \"webpack-dev-server\";\nimport { applyTransformers, type WebpackConfigTransformer } from \"./transformers/applyTransformers.ts\";\nimport { isNil, isObject } from \"./utils.ts\";\n\n// Add the \"devServer\" option to WebpackConfig typings.\nimport \"webpack-dev-server\";\nimport type { WebpackConfig } from \"./types.ts\";\n\n// Aliases\nconst DefinePlugin = webpack.DefinePlugin;\n\n// Using node:module.createRequire until\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta/resolve\n// is available\nconst require = createRequire(import.meta.url);\n\nexport function defineDevHtmlWebpackPluginConfig(options: HtmlWebpackPlugin.Options = {}): HtmlWebpackPlugin.Options {\n const {\n template = path.resolve(\"./public/index.html\"),\n ...rest\n } = options;\n\n return {\n ...rest,\n template\n };\n}\n\nexport function defineFastRefreshPluginConfig(options: ReactRefreshPluginOptions = {}) {\n return options;\n}\n\nexport interface DefineDevConfigOptions {\n entry?: string;\n https?: boolean | ServerOptions | undefined;\n host?: string;\n port?: number;\n publicPath?: `${string}/` | \"auto\";\n cache?: boolean;\n moduleRules?: NonNullable<WebpackConfig[\"module\"]>[\"rules\"];\n plugins?: WebpackConfig[\"plugins\"];\n htmlWebpackPlugin?: boolean | HtmlWebpackPlugin.Options;\n fastRefresh?: boolean | ReactRefreshPluginOptions;\n cssModules?: boolean;\n overlay?: false;\n svgr?: boolean | SvgrOptions;\n environmentVariables?: Record<string, unknown>;\n transformers?: WebpackConfigTransformer[];\n verbose?: boolean;\n}\n\nfunction preflight() {\n if (!require.resolve(\"webpack-dev-server\")) {\n throw new Error(\"[webpack-configs] To use the \\\"dev\\\" config, install https://www.npmjs.com/package/webpack-dev-server as a \\\"devDependency\\\".\");\n }\n}\n\nfunction trySetSwcFastRefresh(config: SwcConfig, enabled: boolean) {\n if (config?.jsc?.transform?.react) {\n config.jsc.transform.react.refresh = enabled;\n }\n\n return config;\n}\n\nfunction trySetFastRefreshOverlay(options: ReactRefreshPluginOptions, overlay?: boolean) {\n if (overlay === false && isNil(options.overlay)) {\n options.overlay = false;\n }\n\n return options;\n}\n\nexport function defineDevConfig(swcConfig: SwcConfig, options: DefineDevConfigOptions = {}) {\n preflight();\n\n const {\n entry = path.resolve(\"./src/index.tsx\"),\n https = false,\n host = \"localhost\",\n port = 8080,\n publicPath,\n cache = true,\n moduleRules = [],\n plugins = [],\n htmlWebpackPlugin = defineDevHtmlWebpackPluginConfig(),\n fastRefresh = true,\n cssModules = false,\n overlay,\n svgr = true,\n // Using an empty object literal as the default value to ensure\n // \"process.env\" is always available.\n environmentVariables = {},\n transformers = [],\n verbose = false\n } = options;\n\n const config: WebpackConfig = {\n mode: \"development\",\n target: \"web\",\n devtool: \"eval-cheap-module-source-map\",\n devServer: {\n // According to the Fast Refresh plugin documentation, hot should be \"true\" to enable Fast Refresh:\n // https://github.com/pmmmwh/react-refresh-webpack-plugin#usage.\n hot: true,\n host,\n port,\n historyApiFallback: true,\n client: (overlay === false || fastRefresh) ? {\n overlay: false\n } : undefined,\n server: https ? {\n type: \"https\",\n options: isObject(https) ? https : undefined\n } : undefined\n },\n entry,\n output: {\n // The trailing / is very important, otherwise paths will not be resolved correctly.\n publicPath: publicPath ?? `${https ? \"https\" : \"http\"}://${host}:${port}/`\n },\n cache: cache && {\n type: \"memory\",\n maxGenerations: 1\n },\n // See: https://webpack.js.org/guides/build-performance/#avoid-extra-optimization-steps\n optimization: {\n // Keep \"runtimeChunk\" to false, otherwise it breaks module federation\n // (at least for the remote application).\n runtimeChunk: false,\n removeAvailableModules: false,\n removeEmptyChunks: false,\n splitChunks: false\n },\n infrastructureLogging: verbose ? {\n appendOnly: true,\n level: \"verbose\",\n debug: /PackFileCache/\n } : undefined,\n module: {\n rules: [\n {\n test: /\\.(js|jsx|ts|tsx)$/i,\n exclude: /node_modules/,\n loader: require.resolve(\"swc-loader\"),\n options: trySetSwcFastRefresh(swcConfig, fastRefresh !== false)\n },\n {\n // https://stackoverflow.com/questions/69427025/programmatic-webpack-jest-esm-cant-resolve-module-without-js-file-exten\n test: /\\.js$/i,\n include: /node_modules/,\n resolve: {\n fullySpecified: false\n }\n },\n {\n test: /\\.css$/i,\n use: [\n { loader: require.resolve(\"style-loader\") },\n {\n loader: require.resolve(\"css-loader\"),\n options: cssModules\n ? {\n // Must match the number of loaders applied before this one.\n importLoaders: 1,\n modules: true\n }\n : undefined\n },\n { loader: require.resolve(\"postcss-loader\") }\n ]\n },\n ...(svgr\n ? [\n {\n test: /\\.svg$/i,\n loader: require.resolve(\"@svgr/webpack\"),\n options: isObject(svgr) ? svgr : undefined\n },\n {\n test: /\\.(png|jpe?g|gif)$/i,\n type: \"asset/resource\"\n }\n ]\n : [\n {\n test: /\\.(png|jpe?g|gif|svg)$/i,\n type: \"asset/resource\"\n }\n ]),\n ...moduleRules\n ]\n },\n resolve: {\n extensions: [\".js\", \".jsx\", \".ts\", \".tsx\", \".css\"],\n alias: {\n // Fixes Module not found: Error: Can't resolve '@swc/helpers/_/_class_private_field_init'.\n // View https://github.com/vercel/next.js/pull/38174 for more information and https://github.com/vercel/next.js/issues/48593.\n \"@swc/helpers\": path.dirname(require.resolve(\"@swc/helpers/package.json\"))\n }\n },\n plugins: [\n htmlWebpackPlugin && new HtmlWebpackPlugin(isObject(htmlWebpackPlugin) ? htmlWebpackPlugin : defineDevHtmlWebpackPluginConfig()),\n // Stringify the environment variables because the plugin does a direct text replacement. Otherwise, \"production\" would become production\n // after replacement and cause an undefined var error.\n // For more information, view: https://webpack.js.org/plugins/define-plugin/.\n new DefinePlugin({\n \"process.env\": Object.keys(environmentVariables).reduce((acc, key) => {\n acc[key] = JSON.stringify(environmentVariables[key]);\n\n return acc;\n }, {} as Record<string, string>)\n }),\n fastRefresh && new ReactRefreshWebpackPlugin(trySetFastRefreshOverlay(isObject(fastRefresh) ? fastRefresh : defineFastRefreshPluginConfig(), overlay)),\n ...plugins\n ].filter(Boolean)\n };\n\n const transformedConfig = applyTransformers(config, transformers, {\n environment: \"dev\",\n verbose\n });\n\n return transformedConfig;\n}\n"],"names":["ReactRefreshWebpackPlugin","HtmlWebpackPlugin","createRequire","path","webpack","applyTransformers","isNil","isObject","DefinePlugin","require","defineDevHtmlWebpackPluginConfig","options","template","rest","defineFastRefreshPluginConfig","preflight","Error","trySetSwcFastRefresh","config","enabled","trySetFastRefreshOverlay","overlay","defineDevConfig","swcConfig","entry","https","host","port","publicPath","cache","moduleRules","plugins","htmlWebpackPlugin","fastRefresh","cssModules","svgr","environmentVariables","transformers","verbose","undefined","Object","acc","key","JSON","Boolean","transformedConfig"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAA6E;AAIzB;AACR;AACf;AACC;AAEyE;AAC1D;AAE7C,uDAAuD;AAC3B;AAG5B,UAAU;AACV,MAAMQ,eAAeJ,oBAAoB;AAEzC,wCAAwC;AACxC,kGAAkG;AAClG,eAAe;AACf,MAAMK,WAAOA,GAAGP,aAAaA,CAAC,YAAY,GAAG;AAEtC,SAASQ,iCAAiCC,UAAqC,CAAC,CAAC;IACpF,MAAM,EACFC,WAAWT,iBAAY,CAAC,sBAAsB,EAC9C,GAAGU,MACN,GAAGF;IAEJ,OAAO;QACH,GAAGE,IAAI;QACPD;IACJ;AACJ;AAEO,SAASE,8BAA8BH,UAAqC,CAAC,CAAC;IACjF,OAAOA;AACX;AAqBA,SAASI;IACL,IAAI,CAACN,WAAOA,CAAC,OAAO,CAAC,uBAAuB;QACxC,MAAM,IAAIO,MAAM;IACpB;AACJ;AAEA,SAASC,qBAAqBC,MAAiB,EAAEC,OAAgB;IAC7D,IAAID,QAAQ,KAAK,WAAW,OAAO;QAC/BA,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAGC;IACzC;IAEA,OAAOD;AACX;AAEA,SAASE,yBAAyBT,OAAkC,EAAEU,OAAiB;IACnF,IAAIA,YAAY,SAASf,KAAKA,CAACK,QAAQ,OAAO,GAAG;QAC7CA,QAAQ,OAAO,GAAG;IACtB;IAEA,OAAOA;AACX;AAEO,SAASW,gBAAgBC,SAAoB,EAAEZ,UAAkC,CAAC,CAAC;IACtFI;IAEA,MAAM,EACFS,QAAQrB,iBAAY,CAAC,kBAAkB,EACvCsB,QAAQ,KAAK,EACbC,OAAO,WAAW,EAClBC,OAAO,IAAI,EACXC,UAAU,EACVC,QAAQ,IAAI,EACZC,cAAc,EAAE,EAChBC,UAAU,EAAE,EACZC,oBAAoBtB,kCAAkC,EACtDuB,cAAc,IAAI,EAClBC,aAAa,KAAK,EAClBb,OAAO,EACPc,OAAO,IAAI,EACX,+DAA+D;IAC/D,qCAAqC;IACrCC,uBAAuB,CAAC,CAAC,EACzBC,eAAe,EAAE,EACjBC,UAAU,KAAK,EAClB,GAAG3B;IAEJ,MAAMO,SAAwB;QAC1B,MAAM;QACN,QAAQ;QACR,SAAS;QACT,WAAW;YACP,mGAAmG;YACnG,gEAAgE;YAChE,KAAK;YACLQ;YACAC;YACA,oBAAoB;YACpB,QAASN,YAAY,SAASY,cAAe;gBACzC,SAAS;YACb,IAAIM;YACJ,QAAQd,QAAQ;gBACZ,MAAM;gBACN,SAASlB,QAAQA,CAACkB,SAASA,QAAQc;YACvC,IAAIA;QACR;QACAf;QACA,QAAQ;YACJ,oFAAoF;YACpF,YAAYI,cAAc,GAAGH,QAAQ,UAAU,OAAO,GAAG,EAAEC,KAAK,CAAC,EAAEC,KAAK,CAAC,CAAC;QAC9E;QACA,OAAOE,SAAS;YACZ,MAAM;YACN,gBAAgB;QACpB;QACA,uFAAuF;QACvF,cAAc;YACV,sEAAsE;YACtE,yCAAyC;YACzC,cAAc;YACd,wBAAwB;YACxB,mBAAmB;YACnB,aAAa;QACjB;QACA,uBAAuBS,UAAU;YAC7B,YAAY;YACZ,OAAO;YACP,OAAO;QACX,IAAIC;QACJ,QAAQ;YACJ,OAAO;gBACH;oBACI,MAAM;oBACN,SAAS;oBACT,QAAQ9B,WAAOA,CAAC,OAAO,CAAC;oBACxB,SAASQ,qBAAqBM,WAAWU,gBAAgB;gBAC7D;gBACA;oBACI,uHAAuH;oBACvH,MAAM;oBACN,SAAS;oBACT,SAAS;wBACL,gBAAgB;oBACpB;gBACJ;gBACA;oBACI,MAAM;oBACN,KAAK;wBACD;4BAAE,QAAQxB,WAAOA,CAAC,OAAO,CAAC;wBAAgB;wBAC1C;4BACI,QAAQA,WAAOA,CAAC,OAAO,CAAC;4BACxB,SAASyB,aACH;gCACE,4DAA4D;gCAC5D,eAAe;gCACf,SAAS;4BACb,IACEK;wBACV;wBACA;4BAAE,QAAQ9B,WAAOA,CAAC,OAAO,CAAC;wBAAkB;qBAC/C;gBACL;mBACI0B,OACE;oBACE;wBACI,MAAM;wBACN,QAAQ1B,WAAOA,CAAC,OAAO,CAAC;wBACxB,SAASF,QAAQA,CAAC4B,QAAQA,OAAOI;oBACrC;oBACA;wBACI,MAAM;wBACN,MAAM;oBACV;iBACH,GACC;oBACE;wBACI,MAAM;wBACN,MAAM;oBACV;iBACH;mBACFT;aACN;QACL;QACA,SAAS;YACL,YAAY;gBAAC;gBAAO;gBAAQ;gBAAO;gBAAQ;aAAO;YAClD,OAAO;gBACH,2FAA2F;gBAC3F,6HAA6H;gBAC7H,gBAAgB3B,iBAAY,CAACM,WAAOA,CAAC,OAAO,CAAC;YACjD;QACJ;QACA,SAAS;YACLuB,qBAAqB,IAAI/B,mBAAiBA,CAACM,QAAQA,CAACyB,qBAAqBA,oBAAoBtB;YAC7F,yIAAyI;YACzI,sDAAsD;YACtD,6EAA6E;YAC7E,IAAIF,aAAa;gBACb,eAAegC,OAAO,IAAI,CAACJ,sBAAsB,MAAM,CAAC,CAACK,KAAKC;oBAC1DD,GAAG,CAACC,IAAI,GAAGC,KAAK,SAAS,CAACP,oBAAoB,CAACM,IAAI;oBAEnD,OAAOD;gBACX,GAAG,CAAC;YACR;YACAR,eAAe,IAAIjC,4BAAyBA,CAACoB,yBAAyBb,QAAQA,CAAC0B,eAAeA,cAAcnB,iCAAiCO;eAC1IU;SACN,CAAC,MAAM,CAACa;IACb;IAEA,MAAMC,oBAAoBxC,iBAAiBA,CAACa,QAAQmB,cAAc;QAC9D,aAAa;QACbC;IACJ;IAEA,OAAOO;AACX"}
@@ -1,11 +1,11 @@
1
- import * as __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__ from "node:path";
1
+ import node_path from "node:path";
2
2
 
3
3
  ;// CONCATENATED MODULE: external "node:path"
4
4
 
5
5
  ;// CONCATENATED MODULE: ./src/transformers/moduleRules.ts
6
6
 
7
7
  function isNameMatchingLoader(loader, name) {
8
- return loader === name || loader.indexOf(`${__WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].sep}${name}${__WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].sep}`) !== -1 || loader.indexOf(`@${name}${__WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__["default"].sep}`) !== -1;
8
+ return loader === name || loader.includes(`${node_path.sep}${name}${node_path.sep}`) || loader.includes(`@${name}${node_path.sep}`);
9
9
  }
10
10
  function matchLoaderName(name) {
11
11
  const matcher = (moduleRule)=>{
@@ -1 +1 @@
1
- {"version":3,"file":"transformers/moduleRules.js","sources":["webpack://@workleap/webpack-configs/./src/transformers/moduleRules.ts"],"sourcesContent":["import path from \"node:path\";\nimport type { RuleSetRule, RuleSetUseItem } from \"webpack\";\nimport type { WebpackConfig } from \"../types.ts\";\n\nexport type ModuleRuleMatcher = (moduleRule: RuleSetRule | RuleSetUseItem, index: number, array: RuleSetRule[] | RuleSetUseItem[]) => boolean;\n\nexport type WithModuleRuleMatcherInfo = {\n info: {\n type: string;\n value: string;\n };\n} & ModuleRuleMatcher;\n\nfunction isNameMatchingLoader(loader: string, name: string) {\n return loader === name || loader.indexOf(`${path.sep}${name}${path.sep}`) !== -1 || loader.indexOf(`@${name}${path.sep}`) !== -1;\n}\n\nexport function matchLoaderName(name: string): ModuleRuleMatcher {\n const matcher: WithModuleRuleMatcherInfo = moduleRule => {\n if (typeof moduleRule === \"string\") {\n return isNameMatchingLoader(moduleRule, name);\n } else {\n if (\"loader\" in moduleRule && moduleRule.loader) {\n return isNameMatchingLoader(moduleRule.loader, name);\n }\n }\n\n return false;\n };\n\n // Add contextual information about the matcher for debugging.\n matcher.info = {\n type: matchLoaderName.name,\n value: name\n };\n\n return matcher;\n}\n\nexport type AssetModuleType =\n | \"javascript/auto\"\n | \"javascript/dynamic\"\n | \"javascript/esm\"\n | \"json\"\n | \"webassembly/sync\"\n | \"webassembly/async\"\n | \"asset\"\n | \"asset/source\"\n | \"asset/resource\"\n | \"asset/inline\";\n\nexport function matchAssetModuleType(type: AssetModuleType): ModuleRuleMatcher {\n const matcher: WithModuleRuleMatcherInfo = moduleRule => {\n if (typeof moduleRule !== \"string\" && \"type\" in moduleRule) {\n return moduleRule.type === type;\n }\n\n return false;\n };\n\n // Add contextual information about the matcher for debugging.\n matcher.info = {\n type: matchAssetModuleType.name,\n value: type\n };\n\n return matcher;\n}\n\nexport function matchTest(test: string | RegExp): ModuleRuleMatcher {\n const matcher: WithModuleRuleMatcherInfo = moduleRule => {\n if (typeof moduleRule !== \"string\" && \"test\" in moduleRule) {\n if (typeof moduleRule.test === \"object\" && typeof test === \"object\") {\n // Assuming it's regular expressions.\n return moduleRule.test.toString() === test.toString();\n }\n\n return moduleRule.test === test;\n }\n\n return false;\n };\n\n // Add contextual information about the matcher for debugging.\n matcher.info = {\n type: matchTest.name,\n value: test.toString()\n };\n\n return matcher;\n}\n\nexport interface ModuleRuleMatch {\n moduleRule: RuleSetRule | RuleSetUseItem;\n index: number;\n parent: RuleSetRule[] | RuleSetUseItem[];\n}\n\nfunction toMatch(moduleRule: RuleSetRule | RuleSetUseItem, index: number, parent: RuleSetRule[] | RuleSetUseItem[]) {\n return {\n moduleRule,\n index,\n parent\n };\n}\n\nfunction isRuleSetRule(value: RuleSetRule | RuleSetUseItem): value is RuleSetRule {\n return (value as RuleSetRule).use !== undefined || (value as RuleSetRule).oneOf !== undefined;\n}\n\nfunction findModuleRulesRecursively(moduleRules: RuleSetRule[] | RuleSetUseItem[], matcher: ModuleRuleMatcher, parent: RuleSetRule[] | RuleSetUseItem[], matches: ModuleRuleMatch[]) {\n moduleRules.forEach((x, index, array) => {\n if (x) {\n if (matcher(x, index, array)) {\n matches.push(toMatch(x, index, parent));\n } else {\n if (isRuleSetRule(x)) {\n if (x.use) {\n findModuleRulesRecursively(x.use as RuleSetUseItem[], matcher, x.use as RuleSetUseItem[], matches);\n } else if (x.oneOf) {\n // This error seems to have been introduced by either TS 5.2. or webpack 5.88.1 (https://github.com/webpack/webpack/releases/tag/v5.88.1),\n // I am not sure what changed thought.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n findModuleRulesRecursively(x.oneOf, matcher, x.oneOf, matches);\n }\n }\n }\n }\n });\n}\n\nexport function findModuleRule(config: WebpackConfig, matcher: ModuleRuleMatcher) {\n const moduleRules = config.module?.rules;\n\n if (!moduleRules) {\n return;\n }\n\n const matches: ModuleRuleMatch[] = [];\n\n findModuleRulesRecursively(moduleRules as RuleSetRule[], matcher, moduleRules as RuleSetRule[], matches);\n\n if (matches.length > 1) {\n const matcherInfo = (matcher as WithModuleRuleMatcherInfo).info;\n\n throw new Error(`[webpack-configs] Found more than 1 matching module rule.\\n[webpack-configs] Matcher: \"${JSON.stringify(matcherInfo)}\"\\n[webpack-configs] Matches: \"${JSON.stringify(matches.map(x => x.moduleRule))}\"`);\n }\n\n return matches[0];\n}\n\nexport function findModuleRules(config: WebpackConfig, matcher: ModuleRuleMatcher) {\n const moduleRules = config.module?.rules;\n\n if (!moduleRules) {\n return;\n }\n\n const matches: ModuleRuleMatch[] = [];\n\n findModuleRulesRecursively(moduleRules as RuleSetRule[], matcher, moduleRules as RuleSetRule[], matches);\n\n return matches;\n}\n\nexport function addBeforeModuleRule(config: WebpackConfig, matcher: ModuleRuleMatcher, newModuleRules: RuleSetRule[] | RuleSetUseItem[]) {\n const match = findModuleRule(config, matcher);\n\n if (match) {\n match.parent.splice(match.index, 0, ...newModuleRules);\n } else {\n const matcherInfo = (matcher as WithModuleRuleMatcherInfo).info;\n\n throw new Error(`[webpack-configs] Couldn't add the new module rules because no match has been found.\\n[webpack-configs] Matcher: \"${JSON.stringify(matcherInfo)}\"`);\n }\n}\n\nexport function addAfterModuleRule(config: WebpackConfig, matcher: ModuleRuleMatcher, newModuleRules: RuleSetRule[] | RuleSetUseItem[]) {\n const match = findModuleRule(config, matcher);\n\n if (match) {\n match.parent.splice(match.index + 1, 0, ...newModuleRules);\n } else {\n const matcherInfo = (matcher as WithModuleRuleMatcherInfo).info;\n\n throw new Error(`[webpack-configs] Couldn't add the new module rules because no match has been found.\\n[webpack-configs] Matcher: \"${JSON.stringify(matcherInfo)}\"`);\n }\n}\n\nexport function replaceModuleRule(config: WebpackConfig, matcher: ModuleRuleMatcher, newModuleRule: RuleSetRule | RuleSetUseItem) {\n const match = findModuleRule(config, matcher);\n\n if (match) {\n match.parent[match.index] = newModuleRule;\n } else {\n const matcherInfo = (matcher as WithModuleRuleMatcherInfo).info;\n\n throw new Error(`[webpack-configs] Couldn't replace the module rule because no match has been found.\\n[webpack-configs] Matcher: \"${JSON.stringify(matcherInfo)}\"`);\n }\n}\n\nexport function removeModuleRules(config: WebpackConfig, matcher: ModuleRuleMatcher) {\n const moduleRules = config.module?.rules;\n\n if (!moduleRules) {\n return;\n }\n\n const matches: ModuleRuleMatch[] = [];\n\n findModuleRulesRecursively(moduleRules as RuleSetRule[], matcher, moduleRules as RuleSetRule[], matches);\n\n if (matches.length > 0) {\n // Must keep the initial parent arrays' length to calculate the adjustment\n // once the first match has been deleted.\n const initialParentLengths = new Map<RuleSetRule[] | RuleSetUseItem[], number>(matches.map(x => [x.parent, x.parent.length]));\n\n matches.forEach(x => {\n const positionAdjustment = initialParentLengths.get(x.parent)! - x.parent.length;\n\n x.parent.splice(x.index - positionAdjustment, 1);\n });\n } else {\n const matcherInfo = (matcher as WithModuleRuleMatcherInfo).info;\n\n throw new Error(`[webpack-configs] Didn't remove any module rules because no match has been found.\\n[webpack-configs] Matcher: \"${matcherInfo}\"`);\n }\n}\n"],"names":["path","isNameMatchingLoader","loader","name","matchLoaderName","matcher","moduleRule","matchAssetModuleType","type","matchTest","test","toMatch","index","parent","isRuleSetRule","value","undefined","findModuleRulesRecursively","moduleRules","matches","x","array","findModuleRule","config","matcherInfo","Error","JSON","findModuleRules","addBeforeModuleRule","newModuleRules","match","addAfterModuleRule","replaceModuleRule","newModuleRule","removeModuleRules","initialParentLengths","Map","positionAdjustment"],"mappings":"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"}
1
+ {"version":3,"file":"transformers/moduleRules.js","sources":["webpack://@workleap/webpack-configs/./src/transformers/moduleRules.ts"],"sourcesContent":["import path from \"node:path\";\nimport type { RuleSetRule, RuleSetUseItem } from \"webpack\";\nimport type { WebpackConfig } from \"../types.ts\";\n\nexport type ModuleRuleMatcher = (moduleRule: RuleSetRule | RuleSetUseItem, index: number, array: RuleSetRule[] | RuleSetUseItem[]) => boolean;\n\nexport type WithModuleRuleMatcherInfo = {\n info: {\n type: string;\n value: string;\n };\n} & ModuleRuleMatcher;\n\nfunction isNameMatchingLoader(loader: string, name: string) {\n return loader === name || loader.includes(`${path.sep}${name}${path.sep}`) || loader.includes(`@${name}${path.sep}`);\n}\n\nexport function matchLoaderName(name: string): ModuleRuleMatcher {\n const matcher: WithModuleRuleMatcherInfo = moduleRule => {\n if (typeof moduleRule === \"string\") {\n return isNameMatchingLoader(moduleRule, name);\n } else {\n if (\"loader\" in moduleRule && moduleRule.loader) {\n return isNameMatchingLoader(moduleRule.loader, name);\n }\n }\n\n return false;\n };\n\n // Add contextual information about the matcher for debugging.\n matcher.info = {\n type: matchLoaderName.name,\n value: name\n };\n\n return matcher;\n}\n\nexport type AssetModuleType =\n | \"javascript/auto\"\n | \"javascript/dynamic\"\n | \"javascript/esm\"\n | \"json\"\n | \"webassembly/sync\"\n | \"webassembly/async\"\n | \"asset\"\n | \"asset/source\"\n | \"asset/resource\"\n | \"asset/inline\";\n\nexport function matchAssetModuleType(type: AssetModuleType): ModuleRuleMatcher {\n const matcher: WithModuleRuleMatcherInfo = moduleRule => {\n if (typeof moduleRule !== \"string\" && \"type\" in moduleRule) {\n return moduleRule.type === type;\n }\n\n return false;\n };\n\n // Add contextual information about the matcher for debugging.\n matcher.info = {\n type: matchAssetModuleType.name,\n value: type\n };\n\n return matcher;\n}\n\nexport function matchTest(test: string | RegExp): ModuleRuleMatcher {\n const matcher: WithModuleRuleMatcherInfo = moduleRule => {\n if (typeof moduleRule !== \"string\" && \"test\" in moduleRule) {\n if (typeof moduleRule.test === \"object\" && typeof test === \"object\") {\n // Assuming it's regular expressions.\n return moduleRule.test.toString() === test.toString();\n }\n\n return moduleRule.test === test;\n }\n\n return false;\n };\n\n // Add contextual information about the matcher for debugging.\n matcher.info = {\n type: matchTest.name,\n value: test.toString()\n };\n\n return matcher;\n}\n\nexport interface ModuleRuleMatch {\n moduleRule: RuleSetRule | RuleSetUseItem;\n index: number;\n parent: RuleSetRule[] | RuleSetUseItem[];\n}\n\nfunction toMatch(moduleRule: RuleSetRule | RuleSetUseItem, index: number, parent: RuleSetRule[] | RuleSetUseItem[]) {\n return {\n moduleRule,\n index,\n parent\n };\n}\n\nfunction isRuleSetRule(value: RuleSetRule | RuleSetUseItem): value is RuleSetRule {\n return (value as RuleSetRule).use !== undefined || (value as RuleSetRule).oneOf !== undefined;\n}\n\nfunction findModuleRulesRecursively(moduleRules: RuleSetRule[] | RuleSetUseItem[], matcher: ModuleRuleMatcher, parent: RuleSetRule[] | RuleSetUseItem[], matches: ModuleRuleMatch[]) {\n moduleRules.forEach((x, index, array) => {\n if (x) {\n if (matcher(x, index, array)) {\n matches.push(toMatch(x, index, parent));\n } else {\n if (isRuleSetRule(x)) {\n if (x.use) {\n findModuleRulesRecursively(x.use as RuleSetUseItem[], matcher, x.use as RuleSetUseItem[], matches);\n } else if (x.oneOf) {\n // This error seems to have been introduced by either TS 5.2. or webpack 5.88.1 (https://github.com/webpack/webpack/releases/tag/v5.88.1),\n // I am not sure what changed thought.\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n findModuleRulesRecursively(x.oneOf, matcher, x.oneOf, matches);\n }\n }\n }\n }\n });\n}\n\nexport function findModuleRule(config: WebpackConfig, matcher: ModuleRuleMatcher) {\n const moduleRules = config.module?.rules;\n\n if (!moduleRules) {\n return;\n }\n\n const matches: ModuleRuleMatch[] = [];\n\n findModuleRulesRecursively(moduleRules as RuleSetRule[], matcher, moduleRules as RuleSetRule[], matches);\n\n if (matches.length > 1) {\n const matcherInfo = (matcher as WithModuleRuleMatcherInfo).info;\n\n throw new Error(`[webpack-configs] Found more than 1 matching module rule.\\n[webpack-configs] Matcher: \"${JSON.stringify(matcherInfo)}\"\\n[webpack-configs] Matches: \"${JSON.stringify(matches.map(x => x.moduleRule))}\"`);\n }\n\n return matches[0];\n}\n\nexport function findModuleRules(config: WebpackConfig, matcher: ModuleRuleMatcher) {\n const moduleRules = config.module?.rules;\n\n if (!moduleRules) {\n return;\n }\n\n const matches: ModuleRuleMatch[] = [];\n\n findModuleRulesRecursively(moduleRules as RuleSetRule[], matcher, moduleRules as RuleSetRule[], matches);\n\n return matches;\n}\n\nexport function addBeforeModuleRule(config: WebpackConfig, matcher: ModuleRuleMatcher, newModuleRules: RuleSetRule[] | RuleSetUseItem[]) {\n const match = findModuleRule(config, matcher);\n\n if (match) {\n match.parent.splice(match.index, 0, ...newModuleRules);\n } else {\n const matcherInfo = (matcher as WithModuleRuleMatcherInfo).info;\n\n throw new Error(`[webpack-configs] Couldn't add the new module rules because no match has been found.\\n[webpack-configs] Matcher: \"${JSON.stringify(matcherInfo)}\"`);\n }\n}\n\nexport function addAfterModuleRule(config: WebpackConfig, matcher: ModuleRuleMatcher, newModuleRules: RuleSetRule[] | RuleSetUseItem[]) {\n const match = findModuleRule(config, matcher);\n\n if (match) {\n match.parent.splice(match.index + 1, 0, ...newModuleRules);\n } else {\n const matcherInfo = (matcher as WithModuleRuleMatcherInfo).info;\n\n throw new Error(`[webpack-configs] Couldn't add the new module rules because no match has been found.\\n[webpack-configs] Matcher: \"${JSON.stringify(matcherInfo)}\"`);\n }\n}\n\nexport function replaceModuleRule(config: WebpackConfig, matcher: ModuleRuleMatcher, newModuleRule: RuleSetRule | RuleSetUseItem) {\n const match = findModuleRule(config, matcher);\n\n if (match) {\n match.parent[match.index] = newModuleRule;\n } else {\n const matcherInfo = (matcher as WithModuleRuleMatcherInfo).info;\n\n throw new Error(`[webpack-configs] Couldn't replace the module rule because no match has been found.\\n[webpack-configs] Matcher: \"${JSON.stringify(matcherInfo)}\"`);\n }\n}\n\nexport function removeModuleRules(config: WebpackConfig, matcher: ModuleRuleMatcher) {\n const moduleRules = config.module?.rules;\n\n if (!moduleRules) {\n return;\n }\n\n const matches: ModuleRuleMatch[] = [];\n\n findModuleRulesRecursively(moduleRules as RuleSetRule[], matcher, moduleRules as RuleSetRule[], matches);\n\n if (matches.length > 0) {\n // Must keep the initial parent arrays' length to calculate the adjustment\n // once the first match has been deleted.\n const initialParentLengths = new Map<RuleSetRule[] | RuleSetUseItem[], number>(matches.map(x => [x.parent, x.parent.length]));\n\n matches.forEach(x => {\n const positionAdjustment = initialParentLengths.get(x.parent)! - x.parent.length;\n\n x.parent.splice(x.index - positionAdjustment, 1);\n });\n } else {\n const matcherInfo = (matcher as WithModuleRuleMatcherInfo).info;\n\n throw new Error(`[webpack-configs] Didn't remove any module rules because no match has been found.\\n[webpack-configs] Matcher: \"${matcherInfo}\"`);\n }\n}\n"],"names":["path","isNameMatchingLoader","loader","name","matchLoaderName","matcher","moduleRule","matchAssetModuleType","type","matchTest","test","toMatch","index","parent","isRuleSetRule","value","undefined","findModuleRulesRecursively","moduleRules","matches","x","array","findModuleRule","config","matcherInfo","Error","JSON","findModuleRules","addBeforeModuleRule","newModuleRules","match","addAfterModuleRule","replaceModuleRule","newModuleRule","removeModuleRules","initialParentLengths","Map","positionAdjustment"],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@workleap/webpack-configs",
3
3
  "author": "Workleap",
4
4
  "description": "Workleap recommended webpack configurations.",
5
- "version": "1.5.7",
5
+ "version": "1.6.2",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
8
8
  "type": "git",
@@ -24,16 +24,15 @@
24
24
  "files": [
25
25
  "src",
26
26
  "dist",
27
- "CHANGELOG.md",
28
- "README.md"
27
+ "CHANGELOG.md"
29
28
  ],
30
29
  "peerDependencies": {
31
- "@swc/core": "^1.11.29",
30
+ "@swc/core": "^1.13.5",
32
31
  "@swc/helpers": "^0.5.17",
33
- "browserslist": "^4.24.5",
34
- "postcss": "^8.5.3",
35
- "webpack": "^5.99.9",
36
- "webpack-dev-server": "^5.2.1"
32
+ "browserslist": "^4.27.0",
33
+ "postcss": "^8.5.6",
34
+ "webpack": "^5.102.1",
35
+ "webpack-dev-server": "^5.2.2"
37
36
  },
38
37
  "peerDependenciesMeta": {
39
38
  "webpack-dev-server": {
@@ -41,30 +40,32 @@
41
40
  }
42
41
  },
43
42
  "dependencies": {
44
- "@pmmmwh/react-refresh-webpack-plugin": "^0.6.0",
43
+ "@pmmmwh/react-refresh-webpack-plugin": "^0.6.1",
45
44
  "@svgr/webpack": "^8.1.0",
46
45
  "css-loader": "^7.1.2",
47
- "html-webpack-plugin": "^5.6.3",
48
- "mini-css-extract-plugin": "^2.9.2",
49
- "postcss-loader": "^8.1.1",
50
- "react-refresh": "^0.17.0",
46
+ "html-webpack-plugin": "^5.6.4",
47
+ "mini-css-extract-plugin": "^2.9.4",
48
+ "postcss-loader": "^8.2.0",
49
+ "react-refresh": "^0.18.0",
51
50
  "style-loader": "^4.0.0",
52
51
  "swc-loader": "^0.2.6",
53
52
  "terser-webpack-plugin": "^5.3.14"
54
53
  },
55
54
  "devDependencies": {
56
- "@rsbuild/core": "1.3.21",
57
- "@rslib/core": "0.8.0",
55
+ "@eslint/js": "9.38.0",
56
+ "@rsbuild/core": "1.5.17",
57
+ "@rslib/core": "0.16.0",
58
58
  "@svgr/core": "8.1.0",
59
- "@types/node": "22.15.21",
60
- "@typescript-eslint/parser": "8.32.1",
61
- "eslint": "8.57.0",
62
- "typescript": "5.8.3",
63
- "vitest": "3.1.4",
64
- "@workleap/eslint-plugin": "3.4.2",
65
- "@workleap/rslib-configs": "1.0.6",
66
- "@workleap/swc-configs": "2.2.8",
67
- "@workleap/typescript-configs": "3.0.4"
59
+ "@types/node": "24.9.1",
60
+ "@typescript-eslint/parser": "8.46.2",
61
+ "eslint": "9.38.0",
62
+ "typescript": "5.9.3",
63
+ "typescript-eslint": "8.46.2",
64
+ "vitest": "4.0.1",
65
+ "@workleap/eslint-configs": "0.0.2",
66
+ "@workleap/rslib-configs": "1.1.2",
67
+ "@workleap/swc-configs": "2.3.2",
68
+ "@workleap/typescript-configs": "3.0.6"
68
69
  },
69
70
  "scripts": {
70
71
  "build": "rslib build -c rslib.config.ts",
@@ -12,7 +12,7 @@ export type WithModuleRuleMatcherInfo = {
12
12
  } & ModuleRuleMatcher;
13
13
 
14
14
  function isNameMatchingLoader(loader: string, name: string) {
15
- return loader === name || loader.indexOf(`${path.sep}${name}${path.sep}`) !== -1 || loader.indexOf(`@${name}${path.sep}`) !== -1;
15
+ return loader === name || loader.includes(`${path.sep}${name}${path.sep}`) || loader.includes(`@${name}${path.sep}`);
16
16
  }
17
17
 
18
18
  export function matchLoaderName(name: string): ModuleRuleMatcher {
@@ -38,16 +38,16 @@ export function matchLoaderName(name: string): ModuleRuleMatcher {
38
38
  }
39
39
 
40
40
  export type AssetModuleType =
41
- | "javascript/auto"
42
- | "javascript/dynamic"
43
- | "javascript/esm"
44
- | "json"
45
- | "webassembly/sync"
46
- | "webassembly/async"
47
- | "asset"
48
- | "asset/source"
49
- | "asset/resource"
50
- | "asset/inline";
41
+ | "javascript/auto"
42
+ | "javascript/dynamic"
43
+ | "javascript/esm"
44
+ | "json"
45
+ | "webassembly/sync"
46
+ | "webassembly/async"
47
+ | "asset"
48
+ | "asset/source"
49
+ | "asset/resource"
50
+ | "asset/inline";
51
51
 
52
52
  export function matchAssetModuleType(type: AssetModuleType): ModuleRuleMatcher {
53
53
  const matcher: WithModuleRuleMatcherInfo = moduleRule => {