@workleap/webpack-configs 1.6.2 → 1.6.4
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 +12 -0
- package/dist/build.js.map +1 -1
- package/dist/dev.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/transformers/applyTransformers.js.map +1 -1
- package/dist/transformers/moduleRules.js.map +1 -1
- package/dist/transformers/plugins.js.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils.js.map +1 -1
- package/package.json +20 -20
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @workleap/webpack-configs
|
|
2
2
|
|
|
3
|
+
## 1.6.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#339](https://github.com/workleap/wl-web-configs/pull/339) [`4a85b91`](https://github.com/workleap/wl-web-configs/commit/4a85b9105a02f3fdad19beae1792a5cd096a2e47) Thanks [@patricklafrance](https://github.com/patricklafrance)! - Bumped dependency versions.
|
|
8
|
+
|
|
9
|
+
## 1.6.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#302](https://github.com/workleap/wl-web-configs/pull/302) [`a0c552f`](https://github.com/workleap/wl-web-configs/commit/a0c552fb26428fe854077351b78fe6dbe393b140) Thanks [@alexasselin008](https://github.com/alexasselin008)! - Bump release to test OIDC deployment
|
|
14
|
+
|
|
3
15
|
## 1.6.2
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
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":["../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.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":["../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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["export * from \"./build.ts\";\nexport * from \"./dev.ts\";\nexport type { WebpackConfigTransformer, WebpackConfigTransformerContext } from \"./transformers/applyTransformers.ts\";\nexport * from \"./transformers/moduleRules.ts\";\nexport * from \"./transformers/plugins.ts\";\nexport * from \"./types.ts\";\n\n"],"names":[],"mappings":";;;;;;;AAA2B;AACF;AAEqB;AACJ;AACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformers/applyTransformers.js","sources":["
|
|
1
|
+
{"version":3,"file":"transformers/applyTransformers.js","sources":["../../src/transformers/applyTransformers.ts"],"sourcesContent":["import type { WebpackConfig } from \"../types.ts\";\n\nexport interface WebpackConfigTransformerContext {\n environment: \"dev\" | \"build\";\n verbose: boolean;\n}\n\nexport type WebpackConfigTransformer = (config: WebpackConfig, context: WebpackConfigTransformerContext) => WebpackConfig;\n\nexport function applyTransformers(config: WebpackConfig, transformers: WebpackConfigTransformer[], context: WebpackConfigTransformerContext) {\n let count = 0;\n\n const transformedConfig = transformers.reduce((acc, transformer) => {\n const newConfig = transformer(acc, context);\n\n count += 1;\n\n return newConfig;\n }, config);\n\n if (context.verbose) {\n if (count > 0) {\n console.log(`[webpack-configs] Applied ${count} configuration transformers.`);\n }\n }\n\n return transformedConfig;\n}\n"],"names":["applyTransformers","config","transformers","context","count","transformedConfig","acc","transformer","newConfig","console"],"mappings":";;AASO,SAASA,kBAAkBC,MAAqB,EAAEC,YAAwC,EAAEC,OAAwC;IACvI,IAAIC,QAAQ;IAEZ,MAAMC,oBAAoBH,aAAa,MAAM,CAAC,CAACI,KAAKC;QAChD,MAAMC,YAAYD,YAAYD,KAAKH;QAEnCC,SAAS;QAET,OAAOI;IACX,GAAGP;IAEH,IAAIE,QAAQ,OAAO,EAAE;QACjB,IAAIC,QAAQ,GAAG;YACXK,QAAQ,GAAG,CAAC,CAAC,0BAA0B,EAAEL,MAAM,4BAA4B,CAAC;QAChF;IACJ;IAEA,OAAOC;AACX"}
|
|
@@ -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.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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"}
|
|
1
|
+
{"version":3,"file":"transformers/moduleRules.js","sources":["../../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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformers/plugins.js","sources":["
|
|
1
|
+
{"version":3,"file":"transformers/plugins.js","sources":["../../src/transformers/plugins.ts"],"sourcesContent":["import type { WebpackConfig } from \"../types.ts\";\n\nexport type WebpackPlugin = NonNullable<WebpackConfig[\"plugins\"]>[number];\n\nexport type PluginMatcher = (plugin: WebpackPlugin, index: number, array: WebpackPlugin[]) => boolean;\n\nexport type WithPluginMatcherInfo = {\n info: {\n type: string;\n value: string;\n };\n} & PluginMatcher;\n\nexport function matchConstructorName(name: string): PluginMatcher {\n const matcher: WithPluginMatcherInfo = plugin => {\n return plugin?.constructor.name === name;\n };\n\n // Add contextual information about the matcher for debugging.\n matcher.info = {\n type: matchConstructorName.name,\n value: name\n };\n\n return matcher;\n}\n\nexport interface PluginMatch {\n plugin: WebpackPlugin;\n index: number;\n}\n\nexport function findPlugin(config: WebpackConfig, matcher: PluginMatcher) {\n const matches: PluginMatch[] = [];\n\n config.plugins?.forEach((x, index, array) => {\n if (matcher(x, index, array)) {\n matches.push({\n plugin: x,\n index\n });\n }\n });\n\n if (matches.length > 1) {\n const matcherInfo = (matcher as WithPluginMatcherInfo).info;\n\n throw new Error(`[webpack-configs] Found more than 1 matching plugin.\\n[webp-configs] Matcher: \"${JSON.stringify(matcherInfo)}\"\\n[webpack-configs] Matches: \"${JSON.stringify(matches.map(x => x.plugin))}\"`);\n }\n\n return matches[0];\n}\n\nexport function replacePlugin(config: WebpackConfig, matcher: PluginMatcher, newPlugin: WebpackPlugin) {\n const match = findPlugin(config, matcher);\n\n if (match) {\n config.plugins![match.index] = newPlugin;\n } else {\n const matcherInfo = (matcher as WithPluginMatcherInfo).info;\n\n throw new Error(`[webpack-configs] Couldn't replace the plugin because no match has been found.\\n[webpack-configs] Matcher: \"${JSON.stringify(matcherInfo)}\"`);\n }\n}\n\nexport function addBeforePlugin(config: WebpackConfig, matcher: PluginMatcher, newPlugins: WebpackPlugin[]) {\n const match = findPlugin(config, matcher);\n\n if (match) {\n config.plugins?.splice(match.index, 0, ...newPlugins);\n } else {\n const matcherInfo = (matcher as WithPluginMatcherInfo).info;\n\n throw new Error(`[webpack-configs] Couldn't add the new plugins because no match has been found.\\n[webpack-configs] Matcher: \"${JSON.stringify(matcherInfo)}\"`);\n }\n}\n\nexport function addAfterPlugin(config: WebpackConfig, matcher: PluginMatcher, newPlugins: WebpackPlugin[]) {\n const match = findPlugin(config, matcher);\n\n if (match) {\n config.plugins?.splice(match.index + 1, 0, ...newPlugins);\n } else {\n const matcherInfo = (matcher as WithPluginMatcherInfo).info;\n\n throw new Error(`[webpack-configs] Couldn't add the new plugins because no match has been found.\\n[webpack-configs] Matcher: \"${JSON.stringify(matcherInfo)}\"`);\n }\n}\n\nexport function removePlugin(config: WebpackConfig, matcher: PluginMatcher) {\n const countBefore = config.plugins?.length ?? 0;\n\n config.plugins = config.plugins?.filter((...args) => !matcher(...args));\n\n const countAfter = config.plugins?.length ?? 0;\n\n if (countBefore === countAfter) {\n const matcherInfo = (matcher as WithPluginMatcherInfo).info;\n\n throw new Error(`[webpack-configs] Didn't remove any plugin because no match has been found.\\n[webpack-configs] Matcher: \"${JSON.stringify(matcherInfo)}\"`);\n }\n}\n"],"names":["matchConstructorName","name","matcher","plugin","findPlugin","config","matches","x","index","array","matcherInfo","Error","JSON","replacePlugin","newPlugin","match","addBeforePlugin","newPlugins","addAfterPlugin","removePlugin","countBefore","args","countAfter"],"mappings":";;AAaO,SAASA,qBAAqBC,IAAY;IAC7C,MAAMC,UAAiCC,CAAAA;QACnC,OAAOA,QAAQ,YAAY,SAASF;IACxC;IAEA,8DAA8D;IAC9DC,QAAQ,IAAI,GAAG;QACX,MAAMF,qBAAqB,IAAI;QAC/B,OAAOC;IACX;IAEA,OAAOC;AACX;AAOO,SAASE,WAAWC,MAAqB,EAAEH,OAAsB;IACpE,MAAMI,UAAyB,EAAE;IAEjCD,OAAO,OAAO,EAAE,QAAQ,CAACE,GAAGC,OAAOC;QAC/B,IAAIP,QAAQK,GAAGC,OAAOC,QAAQ;YAC1BH,QAAQ,IAAI,CAAC;gBACT,QAAQC;gBACRC;YACJ;QACJ;IACJ;IAEA,IAAIF,QAAQ,MAAM,GAAG,GAAG;QACpB,MAAMI,cAAeR,QAAkC,IAAI;QAE3D,MAAM,IAAIS,MAAM,CAAC,+EAA+E,EAAEC,KAAK,SAAS,CAACF,aAAa,+BAA+B,EAAEE,KAAK,SAAS,CAACN,QAAQ,GAAG,CAACC,CAAAA,IAAKA,EAAE,MAAM,GAAG,CAAC,CAAC;IAChN;IAEA,OAAOD,OAAO,CAAC,EAAE;AACrB;AAEO,SAASO,cAAcR,MAAqB,EAAEH,OAAsB,EAAEY,SAAwB;IACjG,MAAMC,QAAQX,WAAWC,QAAQH;IAEjC,IAAIa,OAAO;QACPV,OAAO,OAAQ,CAACU,MAAM,KAAK,CAAC,GAAGD;IACnC,OAAO;QACH,MAAMJ,cAAeR,QAAkC,IAAI;QAE3D,MAAM,IAAIS,MAAM,CAAC,4GAA4G,EAAEC,KAAK,SAAS,CAACF,aAAa,CAAC,CAAC;IACjK;AACJ;AAEO,SAASM,gBAAgBX,MAAqB,EAAEH,OAAsB,EAAEe,UAA2B;IACtG,MAAMF,QAAQX,WAAWC,QAAQH;IAEjC,IAAIa,OAAO;QACPV,OAAO,OAAO,EAAE,OAAOU,MAAM,KAAK,EAAE,MAAME;IAC9C,OAAO;QACH,MAAMP,cAAeR,QAAkC,IAAI;QAE3D,MAAM,IAAIS,MAAM,CAAC,6GAA6G,EAAEC,KAAK,SAAS,CAACF,aAAa,CAAC,CAAC;IAClK;AACJ;AAEO,SAASQ,eAAeb,MAAqB,EAAEH,OAAsB,EAAEe,UAA2B;IACrG,MAAMF,QAAQX,WAAWC,QAAQH;IAEjC,IAAIa,OAAO;QACPV,OAAO,OAAO,EAAE,OAAOU,MAAM,KAAK,GAAG,GAAG,MAAME;IAClD,OAAO;QACH,MAAMP,cAAeR,QAAkC,IAAI;QAE3D,MAAM,IAAIS,MAAM,CAAC,6GAA6G,EAAEC,KAAK,SAAS,CAACF,aAAa,CAAC,CAAC;IAClK;AACJ;AAEO,SAASS,aAAad,MAAqB,EAAEH,OAAsB;IACtE,MAAMkB,cAAcf,OAAO,OAAO,EAAE,UAAU;IAE9CA,OAAO,OAAO,GAAGA,OAAO,OAAO,EAAE,OAAO,CAAC,GAAGgB,OAAS,CAACnB,WAAWmB;IAEjE,MAAMC,aAAajB,OAAO,OAAO,EAAE,UAAU;IAE7C,IAAIe,gBAAgBE,YAAY;QAC5B,MAAMZ,cAAeR,QAAkC,IAAI;QAE3D,MAAM,IAAIS,MAAM,CAAC,yGAAyG,EAAEC,KAAK,SAAS,CAACF,aAAa,CAAC,CAAC;IAC9J;AACJ"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["export type { Configuration as WebpackConfig } from \"webpack\";\n"],"names":[],"mappings":";;AAA8D"}
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isObject(value: any): value is Record<string, unknown> {\n return typeof value === \"object\" && !Array.isArray(value) && value != null;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isNull(value: any): value is null {\n return value == null;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isUndefined(value: any): value is undefined {\n return typeof value === \"undefined\" || value === undefined;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isNil(value: any): value is null | undefined {\n return isNull(value) || isUndefined(value);\n}\n"],"names":["isObject","value","Array","isNull","isUndefined","undefined","isNil"],"mappings":";;AAAA,8DAA8D;AACvD,SAASA,SAASC,KAAU;IAC/B,OAAO,OAAOA,UAAU,YAAY,CAACC,MAAM,OAAO,CAACD,UAAUA,SAAS;AAC1E;AAEA,8DAA8D;AACvD,SAASE,OAAOF,KAAU;IAC7B,OAAOA,SAAS;AACpB;AAEA,8DAA8D;AACvD,SAASG,YAAYH,KAAU;IAClC,OAAO,OAAOA,UAAU,eAAeA,UAAUI;AACrD;AAEA,8DAA8D;AACvD,SAASC,MAAML,KAAU;IAC5B,OAAOE,OAAOF,UAAUG,YAAYH;AACxC"}
|
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.6.
|
|
5
|
+
"version": "1.6.4",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
"CHANGELOG.md"
|
|
28
28
|
],
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"@swc/core": "^1.
|
|
30
|
+
"@swc/core": "^1.15.3",
|
|
31
31
|
"@swc/helpers": "^0.5.17",
|
|
32
|
-
"browserslist": "^4.
|
|
32
|
+
"browserslist": "^4.28.1",
|
|
33
33
|
"postcss": "^8.5.6",
|
|
34
|
-
"webpack": "^5.
|
|
34
|
+
"webpack": "^5.103.0",
|
|
35
35
|
"webpack-dev-server": "^5.2.2"
|
|
36
36
|
},
|
|
37
37
|
"peerDependenciesMeta": {
|
|
@@ -40,36 +40,36 @@
|
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@pmmmwh/react-refresh-webpack-plugin": "^0.6.
|
|
43
|
+
"@pmmmwh/react-refresh-webpack-plugin": "^0.6.2",
|
|
44
44
|
"@svgr/webpack": "^8.1.0",
|
|
45
45
|
"css-loader": "^7.1.2",
|
|
46
|
-
"html-webpack-plugin": "^5.6.
|
|
46
|
+
"html-webpack-plugin": "^5.6.5",
|
|
47
47
|
"mini-css-extract-plugin": "^2.9.4",
|
|
48
48
|
"postcss-loader": "^8.2.0",
|
|
49
49
|
"react-refresh": "^0.18.0",
|
|
50
50
|
"style-loader": "^4.0.0",
|
|
51
51
|
"swc-loader": "^0.2.6",
|
|
52
|
-
"terser-webpack-plugin": "^5.3.
|
|
52
|
+
"terser-webpack-plugin": "^5.3.15"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@eslint/js": "9.
|
|
56
|
-
"@rsbuild/core": "1.
|
|
57
|
-
"@rslib/core": "0.
|
|
55
|
+
"@eslint/js": "9.39.1",
|
|
56
|
+
"@rsbuild/core": "1.6.14",
|
|
57
|
+
"@rslib/core": "0.18.4",
|
|
58
58
|
"@svgr/core": "8.1.0",
|
|
59
|
-
"@types/node": "
|
|
60
|
-
"@typescript-eslint/parser": "8.
|
|
61
|
-
"eslint": "9.
|
|
59
|
+
"@types/node": "25.0.0",
|
|
60
|
+
"@typescript-eslint/parser": "8.49.0",
|
|
61
|
+
"eslint": "9.39.1",
|
|
62
62
|
"typescript": "5.9.3",
|
|
63
|
-
"typescript-eslint": "8.
|
|
64
|
-
"vitest": "4.0.
|
|
65
|
-
"@workleap/eslint-configs": "
|
|
66
|
-
"@workleap/rslib-configs": "1.1.
|
|
67
|
-
"@workleap/swc-configs": "2.3.
|
|
68
|
-
"@workleap/typescript-configs": "3.0.
|
|
63
|
+
"typescript-eslint": "8.49.0",
|
|
64
|
+
"vitest": "4.0.15",
|
|
65
|
+
"@workleap/eslint-configs": "1.1.7",
|
|
66
|
+
"@workleap/rslib-configs": "1.1.4",
|
|
67
|
+
"@workleap/swc-configs": "2.3.4",
|
|
68
|
+
"@workleap/typescript-configs": "3.0.7"
|
|
69
69
|
},
|
|
70
70
|
"scripts": {
|
|
71
71
|
"build": "rslib build -c rslib.config.ts",
|
|
72
|
-
"eslint": "eslint . --max-warnings
|
|
72
|
+
"eslint": "eslint . --max-warnings=0 --cache --cache-location node_modules/.cache/eslint",
|
|
73
73
|
"typecheck": "tsc",
|
|
74
74
|
"test": "vitest --config vitest.config.ts --no-watch"
|
|
75
75
|
}
|