dependabot[bot] opened a new pull request, #40370: URL: https://github.com/apache/superset/pull/40370
Bumps [webpack](https://github.com/webpack/webpack) from 5.106.2 to 5.107.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/webpack/webpack/releases">webpack's releases</a>.</em></p> <blockquote> <h2>v5.107.1</h2> <h3>Patch Changes</h3> <ul> <li> <p>Align the experimental HTML tokenizer with the WHATWG spec: fix offset-range bugs in the script-data, content-mode end-tag, attribute-value, and EOF states; surface tokenizer parse errors to consumers via a new <code>parseError</code> callback (<code>"warning"</code> when the tokenizer recovers and the emitted token is still well-formed, <code>"error"</code> when the offset range is incomplete — e.g. <code>eof-in-tag</code>); and add the full WHATWG named character references table so <code>decodeHtmlEntities</code> handles all named entities (including legacy bare forms like <code>&AMP</code> and multi-code-point entities like <code>&NotEqualTilde;</code>) with proper longest-prefix backtracking. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/21000">#21000</a>)</p> </li> <li> <p>Tree-shake CommonJS modules imported through a <code>const NAME = require(LITERAL)</code> binding when only static members of <code>NAME</code> are read. Previously webpack treated every export of such modules as referenced (because the bare <code>require()</code> dependency reports <code>EXPORTS_OBJECT_REFERENCED</code>), so unused <code>exports.x = ...</code> assignments remained in the bundle even with <code>usedExports</code> enabled. The parser now forwards <code>NAME.x</code> / <code>NAME.x()</code> / <code>NAME["x"]</code> accesses to the underlying <code>CommonJsRequireDependency</code> as referenced exports, falling back to the full exports object the moment <code>NAME</code> is read in any other context (passed by value, destructured later, accessed with a dynamic key, …). This brings the binding form to parity with the existing destructuring form (<code>const { x } = require(...)</code>). (by <a href="https://github.com/alexander-akait"><code>@alexande r-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/21003">#21003</a>)</p> </li> <li> <p>Fix <code>RangeError: Maximum call stack size exceeded</code> thrown from <code>HarmonyImportSideEffectDependency.getModuleEvaluationSideEffectsState</code> on long linear chains of side-effect-free imports. <code>NormalModule.getSideEffectsConnectionState</code> previously descended through <code>HarmonyImportSideEffectDependency.getModuleEvaluationSideEffectsState</code> recursively, adding two stack frames per module, which overflowed V8's stack at a few thousand modules deep. The traversal is now iterative. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20993">#20993</a>)</p> </li> <li> <p>Fix <code>NormalModuleFactory</code> parser/generator types: (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20999">#20999</a>)</p> <ul> <li><code>module.generator.html</code> now uses <code>HtmlGeneratorOptions</code> instead of <code>EmptyGeneratorOptions</code> (the <code>extract</code> option was hidden from the <code>createGenerator</code> / <code>generator</code> hook types).</li> <li>WebAssembly (<code>webassembly/async</code>, <code>webassembly/sync</code>) generator hooks now use <code>EmptyGeneratorOptions</code> instead of <code>EmptyParserOptions</code>.</li> <li><code>NormalModuleFactory#getParser</code> / <code>createParser</code> / <code>getGenerator</code> / <code>createGenerator</code> are now generic over the module-type string, returning the specific parser/generator class for known types (e.g. <code>JavascriptParser</code> for <code>"javascript/auto"</code>, <code>CssGenerator</code> for <code>"css"</code>, etc.) instead of always returning the base <code>Parser</code> / <code>Generator</code>.</li> <li><code>NormalModuleCreateData</code> is now generic over the module type so <code>parser</code>, <code>parserOptions</code>, <code>generator</code>, and <code>generatorOptions</code> are narrowed to the specific class / options for the given <code>type</code>.</li> </ul> </li> <li> <p>Link import bindings used inside <code>define(...)</code> callbacks in ES modules. Previously, <code>HarmonyDetectionParserPlugin</code> skipped walking the arguments of <code>define</code> calls in harmony modules, so references to imported bindings inside an inline AMD <code>define</code> factory (e.g. <code>define(function () { console.log(foo); })</code>) were not rewritten to their imported references and could cause <code>ReferenceError</code> at runtime. Inner graph usage analysis is also fixed for the related pattern <code>const fn = function () { foo; }; define(fn);</code>. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20990">#20990</a>)</p> </li> <li> <p>HTML-entry pipeline (<code>experiments.html</code> + <code>experiments.css</code>): emit <code><link rel="stylesheet"></code> tags for CSS chunks reachable from a <code><script src></code> entry. Previously when the bundled JS imported CSS, the resulting <code>.css</code> file was emitted to disk but never referenced from the extracted HTML (no <code><link></code> tag), and when <code>splitChunks</code> extracted CSS into sibling chunks the HTML cloned the originating <code><script></code> for each one — producing <code><script src="style.js"></code> pointing at non-existent JS filenames instead of <code><link rel="stylesheet" href="style.css"></code>. CSS chunks are now sorted by the entrypoint's module post-order index so the <code><link></code> tags also appear in source import order, fixing the cascade ordering issue documented in <code>html-webpack-plugin#1838</code> and <code>webpack/mini- css-extract-plugin#959</code> for HTML-entry builds. <code>nonce</code>/<code>crossorigin</code>/<code>referrerpolicy</code> are copied from the originating tag onto the emitted <code><link></code>. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/21002">#21002</a>)</p> </li> <li> <p>Allow <code>devtool</code> and <code>SourceMapDevToolPlugin</code> (or multiple <code>SourceMapDevToolPlugin</code> instances) to coexist on the same asset. Previously the second instance would silently skip any asset whose <code>info.related.sourceMap</code> had already been set by an earlier instance, and even when it ran the asset had been rewrapped as a <code>RawSource</code> so no source map could be recovered — producing an empty <code>.map</code> file. The plugin now keeps a per-compilation stash of pristine source maps, namespaces its persistent cache entries by the options that affect output, and appends additional <code>related.sourceMap</code> entries instead of overwriting them. The classic workaround of pairing <code>devtool: 'hidden-source-map'</code> with a <code>new webpack.SourceMapDevToolPlugin({ filename: '[file].secondary.map', noSources: true })</code> now produces both maps in a single build. (by <a href="https://github.com/alexander-akait"><code>@ale xander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/21001">#21001</a>)</p> </li> <li> <p>Narrow <code>TemplatePathFn</code> callback types by context. <code>pathData.chunk</code> is now non-optional for chunk filename callbacks (<code>output.filename</code>, <code>chunkFilename</code>, <code>cssFilename</code>, <code>cssChunkFilename</code>, <code>htmlFilename</code>, <code>htmlChunkFilename</code>, <code>optimization.splitChunks.cacheGroups[*].filename</code>), and <code>pathData.module</code> is non-optional for module filename callbacks (<code>output.assetModuleFilename</code>, per-module <code>generator.filename</code> / <code>generator.outputPath</code>, <code>module.parser.css.localIdentName</code>). (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20987">#20987</a>)</p> </li> <li> <p>Tighten the <code>CreateData</code> typedef in <code>NormalModuleFactory</code>. <code>CreateData</code> now represents the fully-populated value passed to the <code>createModule</code>, <code>module</code>, and <code>createModuleClass</code> hooks (<code>NormalModuleCreateData & { settings: ModuleSettings }</code>), while <code>ResolveData.createData</code> is typed as <code>Partial<CreateData></code> to reflect the empty initial state. Plugins tapping those hooks no longer need to cast individual fields away from optional. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20992">#20992</a>)</p> </li> <li> <p>Stop <code>webpackPrefetch</code> / <code>webpackPreload</code> magic comments from leaking across <code>import()</code> call sites that share a <code>webpackChunkName</code>. When two imports targeted the same named chunk and only one of them set <code>webpackPrefetch: true</code>, the prefetch directive was applied from every parent chunk that referenced the named chunk. Prefetch and preload orders are now resolved per <code>import()</code> call site instead of from the shared chunk group's accumulated options. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20994">#20994</a>)</p> </li> <li> <p>Fix <code>[fullhash:N]</code> and <code>[hash:N]</code> (with length suffix) in <code>output.publicPath</code> not being interpolated at runtime. The detection regex in <code>RuntimePlugin</code> only matched <code>[fullhash]</code> / <code>[hash]</code> without a length suffix, so the <code>PublicPathRuntimeModule</code> was not flagged as a full-hash module and <code>__webpack_require__.p</code> was emitted with the placeholder <code>XXXX</code> left in place (e.g. <code>out/XXXX/</code>) instead of the real hash truncated to the requested length. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/21004">#21004</a>)</p> </li> <li> <p>Re-export <code>ModuleNotFoundError</code> from <code>webpack/lib/ModuleNotFoundError</code> for backward compatibility with old plugins that import it from that path. This re-export will be removed in webpack 6. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20988">#20988</a>)</p> </li> </ul> <h2>v5.107.0</h2> <h3>Minor Changes</h3> <ul> <li> <p>Add <code>module.generator.javascript.anonymousDefaultExportName</code> option to control whether webpack sets <code>.name</code> to <code>"default"</code> for anonymous default export functions and classes per ES spec. Defaults to <code>true</code> for applications and <code>false</code> for libraries (when <code>output.library</code> is set) to avoid unnecessary bundle size overhead. Also extract anonymous default export <code>.name</code> fix-up into a shared runtime helper (<code>__webpack_require__.dn</code>), replacing repeated inline <code>Object.defineProperty</code> / <code>Object.getOwnPropertyDescriptor</code> calls with a single short call per module to reduce output size. (by <a href="https://github.com/xiaoxiaojx"><code>@xiaoxiaojx</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20894">#20894</a>)</p> </li> <li> <p>Support module concatenation (scope hoisting) for CSS modules with <code>text</code>, <code>css-style-sheet</code>, <code>style</code>, and <code>link</code> export types (by <a href="https://github.com/xiaoxiaojx"><code>@xiaoxiaojx</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20851">#20851</a>)</p> </li> <li> <p>The <code>generator.exportsConvention</code> function form for CSS modules now accepts <code>string[]</code> in addition to <code>string</code>. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20914">#20914</a>)</p> </li> <li> <p>Add <code>linkInsert</code> hook to <code>CssLoadingRuntimeModule.getCompilationHooks(compilation)</code> so plugin developers can control where stylesheet <code><link></code> elements are inserted into the document. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20947">#20947</a>)</p> </li> <li> <p>Add <code>CssModulesPlugin.getCompilationHooks(compilation).orderModules</code> hook. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20978">#20978</a>)</p> </li> <li> <p>Add a <code>pure</code> parser option for <code>css/module</code> and <code>css/auto</code> types matching <code>postcss-modules-local-by-default</code>'s pure mode: every selector must contain at least one local class or id, otherwise webpack emits a build error. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20946">#20946</a>)</p> </li> <li> <p>Support CSS Modules <code>@value</code> identifiers as <code>@import</code> URLs and inside <code>url()</code> functions, e.g. <code>@value path: "./other.css"; @import path;</code> and <code>@value bg: "./image.png"; .a { background: url(bg); }</code> (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20925">#20925</a>)</p> </li> <li> <p>Add experimental TypeScript support via <code>experiments.typescript: true</code> (auto-enabled by <code>experiments.futureDefaults</code>). Uses Node.js's built-in <code>module.stripTypeScriptTypes</code> (Node.js >= 22.6 with the stable <code>mode: "strip"</code> API, including Node.js 26) to transform <code>.ts</code>, <code>.cts</code>, <code>.mts</code>, <code>data:text/typescript</code>, and <code>data:application/typescript</code> modules — no type checking, only erasable TypeScript (types, generics, <code>import type</code>, casts). <code>.tsx</code>/JSX and non-erasable syntax (<code>enum</code>, <code>namespace</code>, parameter-property constructors, decorator metadata) are NOT supported; use a TSX-capable loader (e.g. <code>ts-loader</code>, <code>swc-loader</code>) for those. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20964">#20964</a>)</p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/webpack/webpack/blob/main/CHANGELOG.md">webpack's changelog</a>.</em></p> <blockquote> <h2>5.107.1</h2> <h3>Patch Changes</h3> <ul> <li> <p>Align the experimental HTML tokenizer with the WHATWG spec: fix offset-range bugs in the script-data, content-mode end-tag, attribute-value, and EOF states; surface tokenizer parse errors to consumers via a new <code>parseError</code> callback (<code>"warning"</code> when the tokenizer recovers and the emitted token is still well-formed, <code>"error"</code> when the offset range is incomplete — e.g. <code>eof-in-tag</code>); and add the full WHATWG named character references table so <code>decodeHtmlEntities</code> handles all named entities (including legacy bare forms like <code>&AMP</code> and multi-code-point entities like <code>&NotEqualTilde;</code>) with proper longest-prefix backtracking. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/21000">#21000</a>)</p> </li> <li> <p>Tree-shake CommonJS modules imported through a <code>const NAME = require(LITERAL)</code> binding when only static members of <code>NAME</code> are read. Previously webpack treated every export of such modules as referenced (because the bare <code>require()</code> dependency reports <code>EXPORTS_OBJECT_REFERENCED</code>), so unused <code>exports.x = ...</code> assignments remained in the bundle even with <code>usedExports</code> enabled. The parser now forwards <code>NAME.x</code> / <code>NAME.x()</code> / <code>NAME["x"]</code> accesses to the underlying <code>CommonJsRequireDependency</code> as referenced exports, falling back to the full exports object the moment <code>NAME</code> is read in any other context (passed by value, destructured later, accessed with a dynamic key, …). This brings the binding form to parity with the existing destructuring form (<code>const { x } = require(...)</code>). (by <a href="https://github.com/alexander-akait"><code>@alexande r-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/21003">#21003</a>)</p> </li> <li> <p>Fix <code>RangeError: Maximum call stack size exceeded</code> thrown from <code>HarmonyImportSideEffectDependency.getModuleEvaluationSideEffectsState</code> on long linear chains of side-effect-free imports. <code>NormalModule.getSideEffectsConnectionState</code> previously descended through <code>HarmonyImportSideEffectDependency.getModuleEvaluationSideEffectsState</code> recursively, adding two stack frames per module, which overflowed V8's stack at a few thousand modules deep. The traversal is now iterative. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20993">#20993</a>)</p> </li> <li> <p>Fix <code>NormalModuleFactory</code> parser/generator types: (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20999">#20999</a>)</p> <ul> <li><code>module.generator.html</code> now uses <code>HtmlGeneratorOptions</code> instead of <code>EmptyGeneratorOptions</code> (the <code>extract</code> option was hidden from the <code>createGenerator</code> / <code>generator</code> hook types).</li> <li>WebAssembly (<code>webassembly/async</code>, <code>webassembly/sync</code>) generator hooks now use <code>EmptyGeneratorOptions</code> instead of <code>EmptyParserOptions</code>.</li> <li><code>NormalModuleFactory#getParser</code> / <code>createParser</code> / <code>getGenerator</code> / <code>createGenerator</code> are now generic over the module-type string, returning the specific parser/generator class for known types (e.g. <code>JavascriptParser</code> for <code>"javascript/auto"</code>, <code>CssGenerator</code> for <code>"css"</code>, etc.) instead of always returning the base <code>Parser</code> / <code>Generator</code>.</li> <li><code>NormalModuleCreateData</code> is now generic over the module type so <code>parser</code>, <code>parserOptions</code>, <code>generator</code>, and <code>generatorOptions</code> are narrowed to the specific class / options for the given <code>type</code>.</li> </ul> </li> <li> <p>Link import bindings used inside <code>define(...)</code> callbacks in ES modules. Previously, <code>HarmonyDetectionParserPlugin</code> skipped walking the arguments of <code>define</code> calls in harmony modules, so references to imported bindings inside an inline AMD <code>define</code> factory (e.g. <code>define(function () { console.log(foo); })</code>) were not rewritten to their imported references and could cause <code>ReferenceError</code> at runtime. Inner graph usage analysis is also fixed for the related pattern <code>const fn = function () { foo; }; define(fn);</code>. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20990">#20990</a>)</p> </li> <li> <p>HTML-entry pipeline (<code>experiments.html</code> + <code>experiments.css</code>): emit <code><link rel="stylesheet"></code> tags for CSS chunks reachable from a <code><script src></code> entry. Previously when the bundled JS imported CSS, the resulting <code>.css</code> file was emitted to disk but never referenced from the extracted HTML (no <code><link></code> tag), and when <code>splitChunks</code> extracted CSS into sibling chunks the HTML cloned the originating <code><script></code> for each one — producing <code><script src="style.js"></code> pointing at non-existent JS filenames instead of <code><link rel="stylesheet" href="style.css"></code>. CSS chunks are now sorted by the entrypoint's module post-order index so the <code><link></code> tags also appear in source import order, fixing the cascade ordering issue documented in <code>html-webpack-plugin#1838</code> and <code>webpack/mini- css-extract-plugin#959</code> for HTML-entry builds. <code>nonce</code>/<code>crossorigin</code>/<code>referrerpolicy</code> are copied from the originating tag onto the emitted <code><link></code>. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/21002">#21002</a>)</p> </li> <li> <p>Allow <code>devtool</code> and <code>SourceMapDevToolPlugin</code> (or multiple <code>SourceMapDevToolPlugin</code> instances) to coexist on the same asset. Previously the second instance would silently skip any asset whose <code>info.related.sourceMap</code> had already been set by an earlier instance, and even when it ran the asset had been rewrapped as a <code>RawSource</code> so no source map could be recovered — producing an empty <code>.map</code> file. The plugin now keeps a per-compilation stash of pristine source maps, namespaces its persistent cache entries by the options that affect output, and appends additional <code>related.sourceMap</code> entries instead of overwriting them. The classic workaround of pairing <code>devtool: 'hidden-source-map'</code> with a <code>new webpack.SourceMapDevToolPlugin({ filename: '[file].secondary.map', noSources: true })</code> now produces both maps in a single build. (by <a href="https://github.com/alexander-akait"><code>@ale xander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/21001">#21001</a>)</p> </li> <li> <p>Narrow <code>TemplatePathFn</code> callback types by context. <code>pathData.chunk</code> is now non-optional for chunk filename callbacks (<code>output.filename</code>, <code>chunkFilename</code>, <code>cssFilename</code>, <code>cssChunkFilename</code>, <code>htmlFilename</code>, <code>htmlChunkFilename</code>, <code>optimization.splitChunks.cacheGroups[*].filename</code>), and <code>pathData.module</code> is non-optional for module filename callbacks (<code>output.assetModuleFilename</code>, per-module <code>generator.filename</code> / <code>generator.outputPath</code>, <code>module.parser.css.localIdentName</code>). (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20987">#20987</a>)</p> </li> <li> <p>Tighten the <code>CreateData</code> typedef in <code>NormalModuleFactory</code>. <code>CreateData</code> now represents the fully-populated value passed to the <code>createModule</code>, <code>module</code>, and <code>createModuleClass</code> hooks (<code>NormalModuleCreateData & { settings: ModuleSettings }</code>), while <code>ResolveData.createData</code> is typed as <code>Partial<CreateData></code> to reflect the empty initial state. Plugins tapping those hooks no longer need to cast individual fields away from optional. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20992">#20992</a>)</p> </li> <li> <p>Stop <code>webpackPrefetch</code> / <code>webpackPreload</code> magic comments from leaking across <code>import()</code> call sites that share a <code>webpackChunkName</code>. When two imports targeted the same named chunk and only one of them set <code>webpackPrefetch: true</code>, the prefetch directive was applied from every parent chunk that referenced the named chunk. Prefetch and preload orders are now resolved per <code>import()</code> call site instead of from the shared chunk group's accumulated options. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20994">#20994</a>)</p> </li> <li> <p>Fix <code>[fullhash:N]</code> and <code>[hash:N]</code> (with length suffix) in <code>output.publicPath</code> not being interpolated at runtime. The detection regex in <code>RuntimePlugin</code> only matched <code>[fullhash]</code> / <code>[hash]</code> without a length suffix, so the <code>PublicPathRuntimeModule</code> was not flagged as a full-hash module and <code>__webpack_require__.p</code> was emitted with the placeholder <code>XXXX</code> left in place (e.g. <code>out/XXXX/</code>) instead of the real hash truncated to the requested length. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/21004">#21004</a>)</p> </li> <li> <p>Re-export <code>ModuleNotFoundError</code> from <code>webpack/lib/ModuleNotFoundError</code> for backward compatibility with old plugins that import it from that path. This re-export will be removed in webpack 6. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20988">#20988</a>)</p> </li> </ul> <h2>5.107.0</h2> <h3>Minor Changes</h3> <ul> <li> <p>Add <code>module.generator.javascript.anonymousDefaultExportName</code> option to control whether webpack sets <code>.name</code> to <code>"default"</code> for anonymous default export functions and classes per ES spec. Defaults to <code>true</code> for applications and <code>false</code> for libraries (when <code>output.library</code> is set) to avoid unnecessary bundle size overhead. Also extract anonymous default export <code>.name</code> fix-up into a shared runtime helper (<code>__webpack_require__.dn</code>), replacing repeated inline <code>Object.defineProperty</code> / <code>Object.getOwnPropertyDescriptor</code> calls with a single short call per module to reduce output size. (by <a href="https://github.com/xiaoxiaojx"><code>@xiaoxiaojx</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20894">#20894</a>)</p> </li> <li> <p>Support module concatenation (scope hoisting) for CSS modules with <code>text</code>, <code>css-style-sheet</code>, <code>style</code>, and <code>link</code> export types (by <a href="https://github.com/xiaoxiaojx"><code>@xiaoxiaojx</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20851">#20851</a>)</p> </li> <li> <p>The <code>generator.exportsConvention</code> function form for CSS modules now accepts <code>string[]</code> in addition to <code>string</code>. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20914">#20914</a>)</p> </li> <li> <p>Add <code>linkInsert</code> hook to <code>CssLoadingRuntimeModule.getCompilationHooks(compilation)</code> so plugin developers can control where stylesheet <code><link></code> elements are inserted into the document. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20947">#20947</a>)</p> </li> <li> <p>Add <code>CssModulesPlugin.getCompilationHooks(compilation).orderModules</code> hook. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20978">#20978</a>)</p> </li> <li> <p>Add a <code>pure</code> parser option for <code>css/module</code> and <code>css/auto</code> types matching <code>postcss-modules-local-by-default</code>'s pure mode: every selector must contain at least one local class or id, otherwise webpack emits a build error. (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20946">#20946</a>)</p> </li> <li> <p>Support CSS Modules <code>@value</code> identifiers as <code>@import</code> URLs and inside <code>url()</code> functions, e.g. <code>@value path: "./other.css"; @import path;</code> and <code>@value bg: "./image.png"; .a { background: url(bg); }</code> (by <a href="https://github.com/alexander-akait"><code>@alexander-akait</code></a> in <a href="https://redirect.github.com/webpack/webpack/pull/20925">#20925</a>)</p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/webpack/webpack/commit/a1ce7ebea4069d31ba27da07c07839d9dc1d69d6"><code>a1ce7eb</code></a> chore(release): new release (<a href="https://redirect.github.com/webpack/webpack/issues/20989">#20989</a>)</li> <li><a href="https://github.com/webpack/webpack/commit/916810ebf619d17410c61ba4c82ce87e52041412"><code>916810e</code></a> test: lock chunk filenames stay verbatim for scoped names (<a href="https://redirect.github.com/webpack/webpack/issues/21006">#21006</a>)</li> <li><a href="https://github.com/webpack/webpack/commit/72ef0fbb066fbb4f3bbd198216cff70ec8ccfa00"><code>72ef0fb</code></a> fix: tree-shake CommonJS exports through <code>const NAME = require(LITERAL)</code> bind...</li> <li><a href="https://github.com/webpack/webpack/commit/6c5f2f85f4302da204c54c1298f3c2841f8d06ce"><code>6c5f2f8</code></a> docs: tighten AGENTS.md rules for directory listings, branch names, and PR te...</li> <li><a href="https://github.com/webpack/webpack/commit/9edcb3d84db603f5942e1379c7c25a09f7c2f859"><code>9edcb3d</code></a> fix: interpolate [fullhash:N] / [hash:N] in output.publicPath at runtime (<a href="https://redirect.github.com/webpack/webpack/issues/21">#21</a>...</li> <li><a href="https://github.com/webpack/webpack/commit/e3ba2ff2fc7ed9e4b26f0f4b572683db45788670"><code>e3ba2ff</code></a> fix: emit <code>\<link rel=stylesheet></code> for CSS chunks reachable from `<script src>...</li> <li><a href="https://github.com/webpack/webpack/commit/1097a7f64697469d836c6cda0dd0f2af32d3af43"><code>1097a7f</code></a> fix(html): align walkHtmlTokens with WHATWG spec (<a href="https://redirect.github.com/webpack/webpack/issues/21000">#21000</a>)</li> <li><a href="https://github.com/webpack/webpack/commit/67b741952992dbdc52824fd9dbbfc37a58096956"><code>67b7419</code></a> fix: allow devtool and SourceMapDevToolPlugin to coexist on the same asset (#...</li> <li><a href="https://github.com/webpack/webpack/commit/294197c06f45809751cde07e1860711138b3f41d"><code>294197c</code></a> fix: correct <code>createParser</code>/<code>createGenerator</code> hook types in `NormalModuleFact...</li> <li><a href="https://github.com/webpack/webpack/commit/ec6ad34f4eebeae1d432dbeea7035d202ece3f5c"><code>ec6ad34</code></a> chore(deps): bump codecov/codecov-action in the dependencies group (<a href="https://redirect.github.com/webpack/webpack/issues/20995">#20995</a>)</li> <li>Additional commits viewable in <a href="https://github.com/webpack/webpack/compare/v5.106.2...v5.107.1">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
