From 2012cbebab09fa6a46d983a7861e2167aed7ea2b Mon Sep 17 00:00:00 2001
From: Qingyu Wang <40660121+colinaaa@users.noreply.github.com>
Date: Wed, 2 Apr 2025 20:23:12 +0800
Subject: [PATCH 1/2] fix(webpack/css-extract): CSS HMR not working
---
.changeset/slick-wasps-raise.md | 5 +
.../src/CssExtractRspackPlugin.ts | 118 ++---
.../css/basic/__snapshot__/rspack/1.snap.txt | 475 +----------------
.../css/basic/__snapshot__/rspack/2.snap.txt | 477 +-----------------
.../__snapshot__/rspack/1.snap.txt | 475 +----------------
.../__snapshot__/rspack/2.snap.txt | 477 +-----------------
.../css/scoped/__snapshot__/rspack/1.snap.txt | 475 +----------------
.../css/scoped/__snapshot__/rspack/2.snap.txt | 477 +-----------------
.../default/__snapshot__/rspack/1.snap.txt | 475 +----------------
.../default/__snapshot__/rspack/2.snap.txt | 477 +-----------------
.../filename/__snapshot__/rspack/1.snap.txt | 475 +----------------
.../filename/__snapshot__/rspack/2.snap.txt | 477 +-----------------
.../nested/__snapshot__/rspack/0.snap.txt | 19 +
.../nested/__snapshot__/rspack/1.snap.txt | 97 ++++
.../nested/__snapshot__/rspack/2.snap.txt | 140 +++++
.../hotCases/hot-update-json/nested/entry.js | 12 +
.../hot-update-json/nested/file.module.css | 16 +
.../hotCases/hot-update-json/nested/index.js | 109 ++++
.../hot-update-json/nested/no-changed.css | 8 +
.../hot-update-json/nested/rspack.config.js | 59 +++
.../hot-update-json/nested/test.config.cjs | 6 +
.../basic/__snapshot__/rspack/1.snap.txt | 475 +----------------
.../basic/__snapshot__/rspack/2.snap.txt | 477 +-----------------
.../__snapshot__/rspack/1.snap.txt | 475 +----------------
.../__snapshot__/rspack/2.snap.txt | 477 +-----------------
25 files changed, 566 insertions(+), 6687 deletions(-)
create mode 100644 .changeset/slick-wasps-raise.md
create mode 100644 packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/__snapshot__/rspack/0.snap.txt
create mode 100644 packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/__snapshot__/rspack/1.snap.txt
create mode 100644 packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/__snapshot__/rspack/2.snap.txt
create mode 100644 packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/entry.js
create mode 100644 packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/file.module.css
create mode 100644 packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/index.js
create mode 100644 packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/no-changed.css
create mode 100644 packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/rspack.config.js
create mode 100644 packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/test.config.cjs
diff --git a/.changeset/slick-wasps-raise.md b/.changeset/slick-wasps-raise.md
new file mode 100644
index 0000000000..74e4d01540
--- /dev/null
+++ b/.changeset/slick-wasps-raise.md
@@ -0,0 +1,5 @@
+---
+"@lynx-js/css-extract-webpack-plugin": patch
+---
+
+Fix CSS HMR not working with nested entry name.
diff --git a/packages/webpack/css-extract-webpack-plugin/src/CssExtractRspackPlugin.ts b/packages/webpack/css-extract-webpack-plugin/src/CssExtractRspackPlugin.ts
index 91b3114983..ed829eb6c7 100644
--- a/packages/webpack/css-extract-webpack-plugin/src/CssExtractRspackPlugin.ts
+++ b/packages/webpack/css-extract-webpack-plugin/src/CssExtractRspackPlugin.ts
@@ -5,7 +5,6 @@
import { createRequire } from 'node:module';
import type {
- Compilation,
Compiler,
CssExtractRspackPluginOptions as ExternalCssExtractRspackPluginOptions,
} from '@rspack/core';
@@ -136,10 +135,6 @@ class CssExtractRspackPlugin {
export { CssExtractRspackPlugin };
export type { CssExtractRspackPluginOptions };
-type RuntimeModule = Parameters<
- Compilation['hooks']['runtimeModule']['call']
->[0];
-
class CssExtractRspackPluginImpl {
name = 'CssExtractRspackPlugin';
private hash: string | null = null;
@@ -163,54 +158,64 @@ class CssExtractRspackPluginImpl {
compiler.options.mode === 'development'
|| process.env['NODE_ENV'] === 'development'
) {
- // We require publicPath to get css.hot-update.json
- compilation.hooks.additionalTreeRuntimeRequirements.tap(
- this.name,
- (_, set) => {
- set.add(compiler.webpack.RuntimeGlobals.publicPath);
- },
- );
+ const { RuntimeGlobals, RuntimeModule } = compiler.webpack;
- compilation.hooks.runtimeModule.tap(
- this.name,
- (runtimeModule, chunk) => {
- if (runtimeModule.name === 'require_chunk_loading') {
- const asyncChunks = Array.from(chunk.getAllAsyncChunks())
- .map(c => {
- const { path } = compilation.getAssetPathWithInfo(
- options.chunkFilename ?? '.rspeedy/async/[name]/[name].css',
- { chunk: c },
- );
- return [c.name!, path];
- });
+ class CSSHotUpdateRuntimeModule extends RuntimeModule {
+ hash: string | null;
- const { path } = compilation.getPathWithInfo(
- options.filename ?? '[name].css',
- // Rspack does not pass JsChunk to Rust.
- // See: https://github.com/web-infra-dev/rspack/blob/73c31abcb78472eb5a3d93e4ece19d9f106727a6/crates/rspack_binding_values/src/path_data.rs#L62
- { filename: chunk.name! },
- );
+ constructor(hash: string | null) {
+ super('lynx css hot update');
+ this.hash = hash;
+ }
- const initialChunk = [chunk.name!, path];
+ override generate(): string {
+ const chunk = this.chunk!;
- const cssHotUpdateList = [...asyncChunks, initialChunk].map((
- [chunkName, cssHotUpdatePath],
- ) => [
- chunkName!,
- cssHotUpdatePath!.replace(
- '.css',
- `${this.hash ? `.${this.hash}` : ''}.css.hot-update.json`,
- ),
- ]);
+ const asyncChunks = Array.from(chunk.getAllAsyncChunks())
+ .map(c => {
+ const { path } = compilation.getAssetPathWithInfo(
+ options.chunkFilename ?? '.rspeedy/async/[name]/[name].css',
+ { chunk: c },
+ );
+ return [c.name!, path];
+ });
- this.#overrideChunkLoadingRuntimeModule(
- compiler,
- runtimeModule,
- cssHotUpdateList,
- );
- }
- },
- );
+ const { path } = compilation.getPathWithInfo(
+ options.filename ?? '[name].css',
+ { chunk },
+ );
+
+ const initialChunk = [chunk.name!, path];
+
+ const cssHotUpdateList = [...asyncChunks, initialChunk].map((
+ [chunkName, cssHotUpdatePath],
+ ) => [
+ chunkName!,
+ cssHotUpdatePath!.replace(
+ '.css',
+ `${this.hash ? `.${this.hash}` : ''}.css.hot-update.json`,
+ ),
+ ]);
+
+ return `
+${RuntimeGlobals.require}.cssHotUpdateList = ${
+ cssHotUpdateList ? JSON.stringify(cssHotUpdateList) : 'null'
+ };
+`;
+ }
+ }
+
+ compilation.hooks.runtimeRequirementInTree.for(
+ RuntimeGlobals.hmrDownloadManifest,
+ )
+ .tap(this.name, (chunk, runtimeRequirements) => {
+ // We require publicPath to get css.hot-update.json
+ runtimeRequirements.add(RuntimeGlobals.publicPath);
+ compilation.addRuntimeModule(
+ chunk,
+ new CSSHotUpdateRuntimeModule(this.hash),
+ );
+ });
compilation.hooks.processAssets.tapPromise(
{
@@ -301,21 +306,4 @@ class CssExtractRspackPluginImpl {
}
});
}
-
- #overrideChunkLoadingRuntimeModule(
- compiler: Compiler,
- runtimeModule: RuntimeModule,
- cssHotUpdateList: string[][],
- ) {
- const { RuntimeGlobals } = compiler.webpack;
- runtimeModule.source!.source = Buffer.concat([
- Buffer.from(runtimeModule.source!.source as Buffer),
- // cssHotUpdateList
- Buffer.from(`
- ${RuntimeGlobals.require}.cssHotUpdateList = ${
- cssHotUpdateList ? JSON.stringify(cssHotUpdateList) : 'null'
- };
- `),
- ]);
- }
}
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/basic/__snapshot__/rspack/1.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/basic/__snapshot__/rspack/1.snap.txt
index 77768b0027..08af86692d 100644
--- a/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/basic/__snapshot__/rspack/1.snap.txt
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/basic/__snapshot__/rspack/1.snap.txt
@@ -7,7 +7,7 @@
- Bundle: rspack-bundle.js
- Manifest: main.LAST_HASH.css.hot-update.json, size: 774
- Manifest: main.LAST_HASH.hot-update.json, size: 28
-- Update: main.LAST_HASH.hot-update.js, size: 14638
+- Update: main.LAST_HASH.hot-update.js, size: 1251
## Manifest
@@ -36,7 +36,6 @@
#### Changed Runtime Modules
- webpack/runtime/get_full_hash
-- webpack/runtime/require_chunk_loading
#### Changed Content
```js
@@ -80,479 +79,11 @@ exports.runtime = function(__webpack_require__) {
(() => {
__webpack_require__.h = () => ("CURRENT_HASH")
})();
-// webpack/runtime/require_chunk_loading
+// webpack/runtime/lynx css hot update
(() => {
-var installedChunks = __webpack_require__.hmrS_require = __webpack_require__.hmrS_require || {"main": 1,};
-function loadUpdateChunk(chunkId, updatedModulesList) {
- var update = require("./" + __webpack_require__.hu(chunkId));
- var updatedModules = update.modules;
- var runtime = update.runtime;
- for (var moduleId in updatedModules) {
- if (__webpack_require__.o(updatedModules, moduleId)) {
- currentUpdate[moduleId] = updatedModules[moduleId];
- if (updatedModulesList) updatedModulesList.push(moduleId);
- }
- }
- if (runtime) currentUpdateRuntime.push(runtime);
-}var currentUpdateChunks;
-var currentUpdate;
-var currentUpdateRemovedChunks;
-var currentUpdateRuntime;
-function applyHandler(options) {
- if (__webpack_require__.f) delete __webpack_require__.f.requireHmr;
- currentUpdateChunks = undefined;
- function getAffectedModuleEffects(updateModuleId) {
- var outdatedModules = [updateModuleId];
- var outdatedDependencies = {};
- var queue = outdatedModules.map(function (id) {
- return {
- chain: [id],
- id: id
- };
- });
- while (queue.length > 0) {
- var queueItem = queue.pop();
- var moduleId = queueItem.id;
- var chain = queueItem.chain;
- var module = __webpack_require__.c[moduleId];
- if (
- !module ||
- (module.hot._selfAccepted && !module.hot._selfInvalidated)
- ) {
- continue;
- }
- if (module.hot._selfDeclined) {
- return {
- type: "self-declined",
- chain: chain,
- moduleId: moduleId
- };
- }
+__webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
- if (module.hot._main) {
- return {
- type: "unaccepted",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- for (var i = 0; i < module.parents.length; i++) {
- var parentId = module.parents[i];
- var parent = __webpack_require__.c[parentId];
- if (!parent) {
- continue;
- }
- if (parent.hot._declinedDependencies[moduleId]) {
- return {
- type: "declined",
- chain: chain.concat([parentId]),
- moduleId: moduleId,
- parentId: parentId
- };
- }
- if (outdatedModules.indexOf(parentId) !== -1) {
- continue;
- }
- if (parent.hot._acceptedDependencies[moduleId]) {
- if (!outdatedDependencies[parentId]) {
- outdatedDependencies[parentId] = [];
- }
- addAllToSet(outdatedDependencies[parentId], [moduleId]);
- continue;
- }
- delete outdatedDependencies[parentId];
- outdatedModules.push(parentId);
- queue.push({
- chain: chain.concat([parentId]),
- id: parentId
- });
- }
- }
-
- return {
- type: "accepted",
- moduleId: updateModuleId,
- outdatedModules: outdatedModules,
- outdatedDependencies: outdatedDependencies
- };
- }
-
- function addAllToSet(a, b) {
- for (var i = 0; i < b.length; i++) {
- var item = b[i];
- if (a.indexOf(item) === -1) a.push(item);
- }
- }
-
- var outdatedDependencies = {};
- var outdatedModules = [];
- var appliedUpdate = {};
-
- var warnUnexpectedRequire = function warnUnexpectedRequire(module) {
- console.warn(
- "[HMR] unexpected require(" + module.id + ") to disposed module"
- );
- };
-
- for (var moduleId in currentUpdate) {
- if (__webpack_require__.o(currentUpdate, moduleId)) {
- var newModuleFactory = currentUpdate[moduleId];
- var result = newModuleFactory ? getAffectedModuleEffects(moduleId) : {
- type: "disposed",
- moduleId: moduleId
- };
- var abortError = false;
- var doApply = false;
- var doDispose = false;
- var chainInfo = "";
- if (result.chain) {
- chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
- }
- switch (result.type) {
- case "self-declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of self decline: " + result.moduleId + chainInfo
- );
- break;
- case "declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of declined dependency: " +
- result.moduleId +
- " in " +
- result.parentId +
- chainInfo
- );
- break;
- case "unaccepted":
- if (options.onUnaccepted) options.onUnaccepted(result);
- if (!options.ignoreUnaccepted)
- abortError = new Error(
- "Aborted because " + moduleId + " is not accepted" + chainInfo
- );
- break;
- case "accepted":
- if (options.onAccepted) options.onAccepted(result);
- doApply = true;
- break;
- case "disposed":
- if (options.onDisposed) options.onDisposed(result);
- doDispose = true;
- break;
- default:
- throw new Error("Unexception type " + result.type);
- }
- if (abortError) {
- return {
- error: abortError
- };
- }
- if (doApply) {
- appliedUpdate[moduleId] = newModuleFactory;
- addAllToSet(outdatedModules, result.outdatedModules);
- for (moduleId in result.outdatedDependencies) {
- if (__webpack_require__.o(result.outdatedDependencies, moduleId)) {
- if (!outdatedDependencies[moduleId])
- outdatedDependencies[moduleId] = [];
- addAllToSet(
- outdatedDependencies[moduleId],
- result.outdatedDependencies[moduleId]
- );
- }
- }
- }
- if (doDispose) {
- addAllToSet(outdatedModules, [result.moduleId]);
- appliedUpdate[moduleId] = warnUnexpectedRequire;
- }
- }
- }
- currentUpdate = undefined;
-
- var outdatedSelfAcceptedModules = [];
- for (var j = 0; j < outdatedModules.length; j++) {
- var outdatedModuleId = outdatedModules[j];
- var module = __webpack_require__.c[outdatedModuleId];
- if (
- module &&
- (module.hot._selfAccepted || module.hot._main) &&
- // removed self-accepted modules should not be required
- appliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&
- // when called invalidate self-accepting is not possible
- !module.hot._selfInvalidated
- ) {
- outdatedSelfAcceptedModules.push({
- module: outdatedModuleId,
- require: module.hot._requireSelf,
- errorHandler: module.hot._selfAccepted
- });
- }
- }
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedModules = outdatedModules;
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedDependencies = outdatedDependencies;
-
-
- var moduleOutdatedDependencies;
- return {
- dispose: function () {
- currentUpdateRemovedChunks.forEach(function (chunkId) {
- delete installedChunks[chunkId];
- });
- currentUpdateRemovedChunks = undefined;
-
- var idx;
- var queue = outdatedModules.slice();
- while (queue.length > 0) {
- var moduleId = queue.pop();
- var module = __webpack_require__.c[moduleId];
- if (!module) continue;
-
- var data = {};
-
- // Call dispose handlers
- var disposeHandlers = module.hot._disposeHandlers;
- if (disposeHandlers.length > 0) {
- self.__HMR_UPDATED_RUNTIME__.javascript.disposedModules.push(moduleId);
- }
-
- for (j = 0; j < disposeHandlers.length; j++) {
- disposeHandlers[j].call(null, data);
- }
- __webpack_require__.hmrD[moduleId] = data;
-
- module.hot.active = false;
-
- delete __webpack_require__.c[moduleId];
-
- delete outdatedDependencies[moduleId];
-
- for (j = 0; j < module.children.length; j++) {
- var child = __webpack_require__.c[module.children[j]];
- if (!child) continue;
- idx = child.parents.indexOf(moduleId);
- if (idx >= 0) {
- child.parents.splice(idx, 1);
- }
- }
- }
-
- var dependency;
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- for (j = 0; j < moduleOutdatedDependencies.length; j++) {
- dependency = moduleOutdatedDependencies[j];
- idx = module.children.indexOf(dependency);
- if (idx >= 0) module.children.splice(idx, 1);
- }
- }
- }
- }
- },
- apply: function (reportError) {
- // insert new code
- for (var updateModuleId in appliedUpdate) {
- if (__webpack_require__.o(appliedUpdate, updateModuleId)) {
- __webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedModules.push(updateModuleId);
-
- }
- }
-
- // run new runtime modules
- for (var i = 0; i < currentUpdateRuntime.length; i++) {
-
- currentUpdateRuntime[i](new Proxy(__webpack_require__, {
- set(target, prop, value, receiver) {
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedRuntime.push(`__webpack_require__.${prop}`);
- return Reflect.set(target, prop, value, receiver);
- }
- }));
-
- }
-
- // call accept handlers
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- var module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- var callbacks = [];
- var errorHandlers = [];
- var dependenciesForCallbacks = [];
- for (var j = 0; j < moduleOutdatedDependencies.length; j++) {
- var dependency = moduleOutdatedDependencies[j];
- var acceptCallback = module.hot._acceptedDependencies[dependency];
- var errorHandler = module.hot._acceptedErrorHandlers[dependency];
- if (acceptCallback) {
- if (callbacks.indexOf(acceptCallback) !== -1) continue;
- callbacks.push(acceptCallback);
- errorHandlers.push(errorHandler);
- self.__HMR_UPDATED_RUNTIME__.javascript.acceptedModules.push(dependency);
-
- dependenciesForCallbacks.push(dependency);
- }
- }
- for (var k = 0; k < callbacks.length; k++) {
- try {
- callbacks[k].call(null, moduleOutdatedDependencies);
- } catch (err) {
- if (typeof errorHandlers[k] === "function") {
- try {
- errorHandlers[k](err, {
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k]
- });
- } catch (err2) {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-error-handler-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err2,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err2);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
- }
- }
- }
-
- // Load self accepted modules
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
- var item = outdatedSelfAcceptedModules[o];
- var moduleId = item.module;
- try {
- item.require(moduleId);
- } catch (err) {
- if (typeof item.errorHandler === "function") {
- try {
- item.errorHandler(err, {
- moduleId: moduleId,
- module: __webpack_require__.c[moduleId]
- });
- } catch (err1) {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-error-handler-errored",
- moduleId: moduleId,
- error: err1,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err1);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-errored",
- moduleId: moduleId,
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
-
- return outdatedModules;
- }
- };
-}
-
-__webpack_require__.hmrI.require = function (moduleId, applyHandlers) {
- if (!currentUpdate) {
- currentUpdate = {};
- currentUpdateRuntime = [];
- currentUpdateRemovedChunks = [];
- applyHandlers.push(applyHandler);
- }
- if (!__webpack_require__.o(currentUpdate, moduleId)) {
- currentUpdate[moduleId] = __webpack_require__.m[moduleId];
- }
-};
-
-__webpack_require__.hmrC.require = function (
- chunkIds,
- removedChunks,
- removedModules,
- promises,
- applyHandlers,
- updatedModulesList
-) {
- applyHandlers.push(applyHandler);
- currentUpdateChunks = {};
- currentUpdateRemovedChunks = removedChunks;
- currentUpdate = removedModules.reduce(function (obj, key) {
- obj[key] = false;
- return obj;
- }, {});
- currentUpdateRuntime = [];
- chunkIds.forEach(function (chunkId) {
- if (
- __webpack_require__.o(installedChunks, chunkId) &&
- installedChunks[chunkId] !== undefined
- ) {
- promises.push(loadUpdateChunk(chunkId, updatedModulesList));
- currentUpdateChunks[chunkId] = true;
- } else {
- currentUpdateChunks[chunkId] = false;
- }
- });
- if (__webpack_require__.f) {
- __webpack_require__.f.requireHmr = function (chunkId, promises) {
- if (
- currentUpdateChunks &&
- __webpack_require__.o(currentUpdateChunks, chunkId) &&
- !currentUpdateChunks[chunkId]
- ) {
- promises.push(loadUpdateChunk(chunkId));
- currentUpdateChunks[chunkId] = true;
- }
- };
- }
-};
-__webpack_require__.hmrM = () => {
- return Promise.resolve()
- .then(() => {
- return require("./" + __webpack_require__.hmrF());
- })['catch']((err) => {
- if (err.code !== 'MODULE_NOT_FOUND') throw err;
- });
-};
- __webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-
})();
}
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/basic/__snapshot__/rspack/2.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/basic/__snapshot__/rspack/2.snap.txt
index 371234a9eb..6abd79ef2e 100644
--- a/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/basic/__snapshot__/rspack/2.snap.txt
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/basic/__snapshot__/rspack/2.snap.txt
@@ -7,7 +7,7 @@
- Bundle: rspack-bundle.js
- Manifest: main.LAST_HASH.css.hot-update.json, size: 774
- Manifest: main.LAST_HASH.hot-update.json, size: 28
-- Update: main.LAST_HASH.hot-update.js, size: 14638
+- Update: main.LAST_HASH.hot-update.js, size: 1251
## Manifest
@@ -36,7 +36,6 @@
#### Changed Runtime Modules
- webpack/runtime/get_full_hash
-- webpack/runtime/require_chunk_loading
#### Changed Content
```js
@@ -80,479 +79,11 @@ exports.runtime = function(__webpack_require__) {
(() => {
__webpack_require__.h = () => ("CURRENT_HASH")
})();
-// webpack/runtime/require_chunk_loading
+// webpack/runtime/lynx css hot update
(() => {
-var installedChunks = __webpack_require__.hmrS_require = __webpack_require__.hmrS_require || {"main": 1,};
-function loadUpdateChunk(chunkId, updatedModulesList) {
- var update = require("./" + __webpack_require__.hu(chunkId));
- var updatedModules = update.modules;
- var runtime = update.runtime;
- for (var moduleId in updatedModules) {
- if (__webpack_require__.o(updatedModules, moduleId)) {
- currentUpdate[moduleId] = updatedModules[moduleId];
- if (updatedModulesList) updatedModulesList.push(moduleId);
- }
- }
- if (runtime) currentUpdateRuntime.push(runtime);
-}var currentUpdateChunks;
-var currentUpdate;
-var currentUpdateRemovedChunks;
-var currentUpdateRuntime;
-function applyHandler(options) {
- if (__webpack_require__.f) delete __webpack_require__.f.requireHmr;
- currentUpdateChunks = undefined;
- function getAffectedModuleEffects(updateModuleId) {
- var outdatedModules = [updateModuleId];
- var outdatedDependencies = {};
- var queue = outdatedModules.map(function (id) {
- return {
- chain: [id],
- id: id
- };
- });
- while (queue.length > 0) {
- var queueItem = queue.pop();
- var moduleId = queueItem.id;
- var chain = queueItem.chain;
- var module = __webpack_require__.c[moduleId];
- if (
- !module ||
- (module.hot._selfAccepted && !module.hot._selfInvalidated)
- ) {
- continue;
- }
-
- if (module.hot._selfDeclined) {
- return {
- type: "self-declined",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- if (module.hot._main) {
- return {
- type: "unaccepted",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- for (var i = 0; i < module.parents.length; i++) {
- var parentId = module.parents[i];
- var parent = __webpack_require__.c[parentId];
- if (!parent) {
- continue;
- }
- if (parent.hot._declinedDependencies[moduleId]) {
- return {
- type: "declined",
- chain: chain.concat([parentId]),
- moduleId: moduleId,
- parentId: parentId
- };
- }
- if (outdatedModules.indexOf(parentId) !== -1) {
- continue;
- }
- if (parent.hot._acceptedDependencies[moduleId]) {
- if (!outdatedDependencies[parentId]) {
- outdatedDependencies[parentId] = [];
- }
- addAllToSet(outdatedDependencies[parentId], [moduleId]);
- continue;
- }
- delete outdatedDependencies[parentId];
- outdatedModules.push(parentId);
- queue.push({
- chain: chain.concat([parentId]),
- id: parentId
- });
- }
- }
-
- return {
- type: "accepted",
- moduleId: updateModuleId,
- outdatedModules: outdatedModules,
- outdatedDependencies: outdatedDependencies
- };
- }
-
- function addAllToSet(a, b) {
- for (var i = 0; i < b.length; i++) {
- var item = b[i];
- if (a.indexOf(item) === -1) a.push(item);
- }
- }
-
- var outdatedDependencies = {};
- var outdatedModules = [];
- var appliedUpdate = {};
-
- var warnUnexpectedRequire = function warnUnexpectedRequire(module) {
- console.warn(
- "[HMR] unexpected require(" + module.id + ") to disposed module"
- );
- };
-
- for (var moduleId in currentUpdate) {
- if (__webpack_require__.o(currentUpdate, moduleId)) {
- var newModuleFactory = currentUpdate[moduleId];
- var result = newModuleFactory ? getAffectedModuleEffects(moduleId) : {
- type: "disposed",
- moduleId: moduleId
- };
- var abortError = false;
- var doApply = false;
- var doDispose = false;
- var chainInfo = "";
- if (result.chain) {
- chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
- }
- switch (result.type) {
- case "self-declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of self decline: " + result.moduleId + chainInfo
- );
- break;
- case "declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of declined dependency: " +
- result.moduleId +
- " in " +
- result.parentId +
- chainInfo
- );
- break;
- case "unaccepted":
- if (options.onUnaccepted) options.onUnaccepted(result);
- if (!options.ignoreUnaccepted)
- abortError = new Error(
- "Aborted because " + moduleId + " is not accepted" + chainInfo
- );
- break;
- case "accepted":
- if (options.onAccepted) options.onAccepted(result);
- doApply = true;
- break;
- case "disposed":
- if (options.onDisposed) options.onDisposed(result);
- doDispose = true;
- break;
- default:
- throw new Error("Unexception type " + result.type);
- }
- if (abortError) {
- return {
- error: abortError
- };
- }
- if (doApply) {
- appliedUpdate[moduleId] = newModuleFactory;
- addAllToSet(outdatedModules, result.outdatedModules);
- for (moduleId in result.outdatedDependencies) {
- if (__webpack_require__.o(result.outdatedDependencies, moduleId)) {
- if (!outdatedDependencies[moduleId])
- outdatedDependencies[moduleId] = [];
- addAllToSet(
- outdatedDependencies[moduleId],
- result.outdatedDependencies[moduleId]
- );
- }
- }
- }
- if (doDispose) {
- addAllToSet(outdatedModules, [result.moduleId]);
- appliedUpdate[moduleId] = warnUnexpectedRequire;
- }
- }
- }
- currentUpdate = undefined;
-
- var outdatedSelfAcceptedModules = [];
- for (var j = 0; j < outdatedModules.length; j++) {
- var outdatedModuleId = outdatedModules[j];
- var module = __webpack_require__.c[outdatedModuleId];
- if (
- module &&
- (module.hot._selfAccepted || module.hot._main) &&
- // removed self-accepted modules should not be required
- appliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&
- // when called invalidate self-accepting is not possible
- !module.hot._selfInvalidated
- ) {
- outdatedSelfAcceptedModules.push({
- module: outdatedModuleId,
- require: module.hot._requireSelf,
- errorHandler: module.hot._selfAccepted
- });
- }
- }
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedModules = outdatedModules;
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedDependencies = outdatedDependencies;
-
-
- var moduleOutdatedDependencies;
- return {
- dispose: function () {
- currentUpdateRemovedChunks.forEach(function (chunkId) {
- delete installedChunks[chunkId];
- });
- currentUpdateRemovedChunks = undefined;
-
- var idx;
- var queue = outdatedModules.slice();
- while (queue.length > 0) {
- var moduleId = queue.pop();
- var module = __webpack_require__.c[moduleId];
- if (!module) continue;
-
- var data = {};
-
- // Call dispose handlers
- var disposeHandlers = module.hot._disposeHandlers;
- if (disposeHandlers.length > 0) {
- self.__HMR_UPDATED_RUNTIME__.javascript.disposedModules.push(moduleId);
- }
-
- for (j = 0; j < disposeHandlers.length; j++) {
- disposeHandlers[j].call(null, data);
- }
- __webpack_require__.hmrD[moduleId] = data;
-
- module.hot.active = false;
-
- delete __webpack_require__.c[moduleId];
-
- delete outdatedDependencies[moduleId];
-
- for (j = 0; j < module.children.length; j++) {
- var child = __webpack_require__.c[module.children[j]];
- if (!child) continue;
- idx = child.parents.indexOf(moduleId);
- if (idx >= 0) {
- child.parents.splice(idx, 1);
- }
- }
- }
-
- var dependency;
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- for (j = 0; j < moduleOutdatedDependencies.length; j++) {
- dependency = moduleOutdatedDependencies[j];
- idx = module.children.indexOf(dependency);
- if (idx >= 0) module.children.splice(idx, 1);
- }
- }
- }
- }
- },
- apply: function (reportError) {
- // insert new code
- for (var updateModuleId in appliedUpdate) {
- if (__webpack_require__.o(appliedUpdate, updateModuleId)) {
- __webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedModules.push(updateModuleId);
-
- }
- }
-
- // run new runtime modules
- for (var i = 0; i < currentUpdateRuntime.length; i++) {
-
- currentUpdateRuntime[i](new Proxy(__webpack_require__, {
- set(target, prop, value, receiver) {
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedRuntime.push(`__webpack_require__.${prop}`);
- return Reflect.set(target, prop, value, receiver);
- }
- }));
-
- }
-
- // call accept handlers
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- var module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- var callbacks = [];
- var errorHandlers = [];
- var dependenciesForCallbacks = [];
- for (var j = 0; j < moduleOutdatedDependencies.length; j++) {
- var dependency = moduleOutdatedDependencies[j];
- var acceptCallback = module.hot._acceptedDependencies[dependency];
- var errorHandler = module.hot._acceptedErrorHandlers[dependency];
- if (acceptCallback) {
- if (callbacks.indexOf(acceptCallback) !== -1) continue;
- callbacks.push(acceptCallback);
- errorHandlers.push(errorHandler);
- self.__HMR_UPDATED_RUNTIME__.javascript.acceptedModules.push(dependency);
-
- dependenciesForCallbacks.push(dependency);
- }
- }
- for (var k = 0; k < callbacks.length; k++) {
- try {
- callbacks[k].call(null, moduleOutdatedDependencies);
- } catch (err) {
- if (typeof errorHandlers[k] === "function") {
- try {
- errorHandlers[k](err, {
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k]
- });
- } catch (err2) {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-error-handler-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err2,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err2);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
- }
- }
- }
-
- // Load self accepted modules
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
- var item = outdatedSelfAcceptedModules[o];
- var moduleId = item.module;
- try {
- item.require(moduleId);
- } catch (err) {
- if (typeof item.errorHandler === "function") {
- try {
- item.errorHandler(err, {
- moduleId: moduleId,
- module: __webpack_require__.c[moduleId]
- });
- } catch (err1) {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-error-handler-errored",
- moduleId: moduleId,
- error: err1,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err1);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-errored",
- moduleId: moduleId,
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
-
- return outdatedModules;
- }
- };
-}
-__webpack_require__.hmrI.require = function (moduleId, applyHandlers) {
- if (!currentUpdate) {
- currentUpdate = {};
- currentUpdateRuntime = [];
- currentUpdateRemovedChunks = [];
- applyHandlers.push(applyHandler);
- }
- if (!__webpack_require__.o(currentUpdate, moduleId)) {
- currentUpdate[moduleId] = __webpack_require__.m[moduleId];
- }
-};
+__webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-__webpack_require__.hmrC.require = function (
- chunkIds,
- removedChunks,
- removedModules,
- promises,
- applyHandlers,
- updatedModulesList
-) {
- applyHandlers.push(applyHandler);
- currentUpdateChunks = {};
- currentUpdateRemovedChunks = removedChunks;
- currentUpdate = removedModules.reduce(function (obj, key) {
- obj[key] = false;
- return obj;
- }, {});
- currentUpdateRuntime = [];
- chunkIds.forEach(function (chunkId) {
- if (
- __webpack_require__.o(installedChunks, chunkId) &&
- installedChunks[chunkId] !== undefined
- ) {
- promises.push(loadUpdateChunk(chunkId, updatedModulesList));
- currentUpdateChunks[chunkId] = true;
- } else {
- currentUpdateChunks[chunkId] = false;
- }
- });
- if (__webpack_require__.f) {
- __webpack_require__.f.requireHmr = function (chunkId, promises) {
- if (
- currentUpdateChunks &&
- __webpack_require__.o(currentUpdateChunks, chunkId) &&
- !currentUpdateChunks[chunkId]
- ) {
- promises.push(loadUpdateChunk(chunkId));
- currentUpdateChunks[chunkId] = true;
- }
- };
- }
-};
-__webpack_require__.hmrM = () => {
- return Promise.resolve()
- .then(() => {
- return require("./" + __webpack_require__.hmrF());
- })['catch']((err) => {
- if (err.code !== 'MODULE_NOT_FOUND') throw err;
- });
-};
- __webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-
})();
}
@@ -593,8 +124,6 @@ Updated Modules:
Updated Runtime:
- `__webpack_require__.cssHotUpdateList`
- `__webpack_require__.h`
-- `__webpack_require__.hmrM`
-- `__webpack_require__.hmrS_require`
#### Callback
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/enable-css-selector/__snapshot__/rspack/1.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/enable-css-selector/__snapshot__/rspack/1.snap.txt
index c012c30cd7..f6387e0b6b 100644
--- a/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/enable-css-selector/__snapshot__/rspack/1.snap.txt
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/enable-css-selector/__snapshot__/rspack/1.snap.txt
@@ -7,7 +7,7 @@
- Bundle: rspack-bundle.js
- Manifest: main.LAST_HASH.css.hot-update.json, size: 774
- Manifest: main.LAST_HASH.hot-update.json, size: 28
-- Update: main.LAST_HASH.hot-update.js, size: 14694
+- Update: main.LAST_HASH.hot-update.js, size: 1307
## Manifest
@@ -36,7 +36,6 @@
#### Changed Runtime Modules
- webpack/runtime/get_full_hash
-- webpack/runtime/require_chunk_loading
#### Changed Content
```js
@@ -80,479 +79,11 @@ exports.runtime = function(__webpack_require__) {
(() => {
__webpack_require__.h = () => ("CURRENT_HASH")
})();
-// webpack/runtime/require_chunk_loading
+// webpack/runtime/lynx css hot update
(() => {
-var installedChunks = __webpack_require__.hmrS_require = __webpack_require__.hmrS_require || {"main": 1,};
-function loadUpdateChunk(chunkId, updatedModulesList) {
- var update = require("./" + __webpack_require__.hu(chunkId));
- var updatedModules = update.modules;
- var runtime = update.runtime;
- for (var moduleId in updatedModules) {
- if (__webpack_require__.o(updatedModules, moduleId)) {
- currentUpdate[moduleId] = updatedModules[moduleId];
- if (updatedModulesList) updatedModulesList.push(moduleId);
- }
- }
- if (runtime) currentUpdateRuntime.push(runtime);
-}var currentUpdateChunks;
-var currentUpdate;
-var currentUpdateRemovedChunks;
-var currentUpdateRuntime;
-function applyHandler(options) {
- if (__webpack_require__.f) delete __webpack_require__.f.requireHmr;
- currentUpdateChunks = undefined;
- function getAffectedModuleEffects(updateModuleId) {
- var outdatedModules = [updateModuleId];
- var outdatedDependencies = {};
- var queue = outdatedModules.map(function (id) {
- return {
- chain: [id],
- id: id
- };
- });
- while (queue.length > 0) {
- var queueItem = queue.pop();
- var moduleId = queueItem.id;
- var chain = queueItem.chain;
- var module = __webpack_require__.c[moduleId];
- if (
- !module ||
- (module.hot._selfAccepted && !module.hot._selfInvalidated)
- ) {
- continue;
- }
- if (module.hot._selfDeclined) {
- return {
- type: "self-declined",
- chain: chain,
- moduleId: moduleId
- };
- }
+__webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
- if (module.hot._main) {
- return {
- type: "unaccepted",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- for (var i = 0; i < module.parents.length; i++) {
- var parentId = module.parents[i];
- var parent = __webpack_require__.c[parentId];
- if (!parent) {
- continue;
- }
- if (parent.hot._declinedDependencies[moduleId]) {
- return {
- type: "declined",
- chain: chain.concat([parentId]),
- moduleId: moduleId,
- parentId: parentId
- };
- }
- if (outdatedModules.indexOf(parentId) !== -1) {
- continue;
- }
- if (parent.hot._acceptedDependencies[moduleId]) {
- if (!outdatedDependencies[parentId]) {
- outdatedDependencies[parentId] = [];
- }
- addAllToSet(outdatedDependencies[parentId], [moduleId]);
- continue;
- }
- delete outdatedDependencies[parentId];
- outdatedModules.push(parentId);
- queue.push({
- chain: chain.concat([parentId]),
- id: parentId
- });
- }
- }
-
- return {
- type: "accepted",
- moduleId: updateModuleId,
- outdatedModules: outdatedModules,
- outdatedDependencies: outdatedDependencies
- };
- }
-
- function addAllToSet(a, b) {
- for (var i = 0; i < b.length; i++) {
- var item = b[i];
- if (a.indexOf(item) === -1) a.push(item);
- }
- }
-
- var outdatedDependencies = {};
- var outdatedModules = [];
- var appliedUpdate = {};
-
- var warnUnexpectedRequire = function warnUnexpectedRequire(module) {
- console.warn(
- "[HMR] unexpected require(" + module.id + ") to disposed module"
- );
- };
-
- for (var moduleId in currentUpdate) {
- if (__webpack_require__.o(currentUpdate, moduleId)) {
- var newModuleFactory = currentUpdate[moduleId];
- var result = newModuleFactory ? getAffectedModuleEffects(moduleId) : {
- type: "disposed",
- moduleId: moduleId
- };
- var abortError = false;
- var doApply = false;
- var doDispose = false;
- var chainInfo = "";
- if (result.chain) {
- chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
- }
- switch (result.type) {
- case "self-declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of self decline: " + result.moduleId + chainInfo
- );
- break;
- case "declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of declined dependency: " +
- result.moduleId +
- " in " +
- result.parentId +
- chainInfo
- );
- break;
- case "unaccepted":
- if (options.onUnaccepted) options.onUnaccepted(result);
- if (!options.ignoreUnaccepted)
- abortError = new Error(
- "Aborted because " + moduleId + " is not accepted" + chainInfo
- );
- break;
- case "accepted":
- if (options.onAccepted) options.onAccepted(result);
- doApply = true;
- break;
- case "disposed":
- if (options.onDisposed) options.onDisposed(result);
- doDispose = true;
- break;
- default:
- throw new Error("Unexception type " + result.type);
- }
- if (abortError) {
- return {
- error: abortError
- };
- }
- if (doApply) {
- appliedUpdate[moduleId] = newModuleFactory;
- addAllToSet(outdatedModules, result.outdatedModules);
- for (moduleId in result.outdatedDependencies) {
- if (__webpack_require__.o(result.outdatedDependencies, moduleId)) {
- if (!outdatedDependencies[moduleId])
- outdatedDependencies[moduleId] = [];
- addAllToSet(
- outdatedDependencies[moduleId],
- result.outdatedDependencies[moduleId]
- );
- }
- }
- }
- if (doDispose) {
- addAllToSet(outdatedModules, [result.moduleId]);
- appliedUpdate[moduleId] = warnUnexpectedRequire;
- }
- }
- }
- currentUpdate = undefined;
-
- var outdatedSelfAcceptedModules = [];
- for (var j = 0; j < outdatedModules.length; j++) {
- var outdatedModuleId = outdatedModules[j];
- var module = __webpack_require__.c[outdatedModuleId];
- if (
- module &&
- (module.hot._selfAccepted || module.hot._main) &&
- // removed self-accepted modules should not be required
- appliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&
- // when called invalidate self-accepting is not possible
- !module.hot._selfInvalidated
- ) {
- outdatedSelfAcceptedModules.push({
- module: outdatedModuleId,
- require: module.hot._requireSelf,
- errorHandler: module.hot._selfAccepted
- });
- }
- }
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedModules = outdatedModules;
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedDependencies = outdatedDependencies;
-
-
- var moduleOutdatedDependencies;
- return {
- dispose: function () {
- currentUpdateRemovedChunks.forEach(function (chunkId) {
- delete installedChunks[chunkId];
- });
- currentUpdateRemovedChunks = undefined;
-
- var idx;
- var queue = outdatedModules.slice();
- while (queue.length > 0) {
- var moduleId = queue.pop();
- var module = __webpack_require__.c[moduleId];
- if (!module) continue;
-
- var data = {};
-
- // Call dispose handlers
- var disposeHandlers = module.hot._disposeHandlers;
- if (disposeHandlers.length > 0) {
- self.__HMR_UPDATED_RUNTIME__.javascript.disposedModules.push(moduleId);
- }
-
- for (j = 0; j < disposeHandlers.length; j++) {
- disposeHandlers[j].call(null, data);
- }
- __webpack_require__.hmrD[moduleId] = data;
-
- module.hot.active = false;
-
- delete __webpack_require__.c[moduleId];
-
- delete outdatedDependencies[moduleId];
-
- for (j = 0; j < module.children.length; j++) {
- var child = __webpack_require__.c[module.children[j]];
- if (!child) continue;
- idx = child.parents.indexOf(moduleId);
- if (idx >= 0) {
- child.parents.splice(idx, 1);
- }
- }
- }
-
- var dependency;
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- for (j = 0; j < moduleOutdatedDependencies.length; j++) {
- dependency = moduleOutdatedDependencies[j];
- idx = module.children.indexOf(dependency);
- if (idx >= 0) module.children.splice(idx, 1);
- }
- }
- }
- }
- },
- apply: function (reportError) {
- // insert new code
- for (var updateModuleId in appliedUpdate) {
- if (__webpack_require__.o(appliedUpdate, updateModuleId)) {
- __webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedModules.push(updateModuleId);
-
- }
- }
-
- // run new runtime modules
- for (var i = 0; i < currentUpdateRuntime.length; i++) {
-
- currentUpdateRuntime[i](new Proxy(__webpack_require__, {
- set(target, prop, value, receiver) {
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedRuntime.push(`__webpack_require__.${prop}`);
- return Reflect.set(target, prop, value, receiver);
- }
- }));
-
- }
-
- // call accept handlers
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- var module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- var callbacks = [];
- var errorHandlers = [];
- var dependenciesForCallbacks = [];
- for (var j = 0; j < moduleOutdatedDependencies.length; j++) {
- var dependency = moduleOutdatedDependencies[j];
- var acceptCallback = module.hot._acceptedDependencies[dependency];
- var errorHandler = module.hot._acceptedErrorHandlers[dependency];
- if (acceptCallback) {
- if (callbacks.indexOf(acceptCallback) !== -1) continue;
- callbacks.push(acceptCallback);
- errorHandlers.push(errorHandler);
- self.__HMR_UPDATED_RUNTIME__.javascript.acceptedModules.push(dependency);
-
- dependenciesForCallbacks.push(dependency);
- }
- }
- for (var k = 0; k < callbacks.length; k++) {
- try {
- callbacks[k].call(null, moduleOutdatedDependencies);
- } catch (err) {
- if (typeof errorHandlers[k] === "function") {
- try {
- errorHandlers[k](err, {
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k]
- });
- } catch (err2) {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-error-handler-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err2,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err2);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
- }
- }
- }
-
- // Load self accepted modules
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
- var item = outdatedSelfAcceptedModules[o];
- var moduleId = item.module;
- try {
- item.require(moduleId);
- } catch (err) {
- if (typeof item.errorHandler === "function") {
- try {
- item.errorHandler(err, {
- moduleId: moduleId,
- module: __webpack_require__.c[moduleId]
- });
- } catch (err1) {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-error-handler-errored",
- moduleId: moduleId,
- error: err1,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err1);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-errored",
- moduleId: moduleId,
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
-
- return outdatedModules;
- }
- };
-}
-
-__webpack_require__.hmrI.require = function (moduleId, applyHandlers) {
- if (!currentUpdate) {
- currentUpdate = {};
- currentUpdateRuntime = [];
- currentUpdateRemovedChunks = [];
- applyHandlers.push(applyHandler);
- }
- if (!__webpack_require__.o(currentUpdate, moduleId)) {
- currentUpdate[moduleId] = __webpack_require__.m[moduleId];
- }
-};
-
-__webpack_require__.hmrC.require = function (
- chunkIds,
- removedChunks,
- removedModules,
- promises,
- applyHandlers,
- updatedModulesList
-) {
- applyHandlers.push(applyHandler);
- currentUpdateChunks = {};
- currentUpdateRemovedChunks = removedChunks;
- currentUpdate = removedModules.reduce(function (obj, key) {
- obj[key] = false;
- return obj;
- }, {});
- currentUpdateRuntime = [];
- chunkIds.forEach(function (chunkId) {
- if (
- __webpack_require__.o(installedChunks, chunkId) &&
- installedChunks[chunkId] !== undefined
- ) {
- promises.push(loadUpdateChunk(chunkId, updatedModulesList));
- currentUpdateChunks[chunkId] = true;
- } else {
- currentUpdateChunks[chunkId] = false;
- }
- });
- if (__webpack_require__.f) {
- __webpack_require__.f.requireHmr = function (chunkId, promises) {
- if (
- currentUpdateChunks &&
- __webpack_require__.o(currentUpdateChunks, chunkId) &&
- !currentUpdateChunks[chunkId]
- ) {
- promises.push(loadUpdateChunk(chunkId));
- currentUpdateChunks[chunkId] = true;
- }
- };
- }
-};
-__webpack_require__.hmrM = () => {
- return Promise.resolve()
- .then(() => {
- return require("./" + __webpack_require__.hmrF());
- })['catch']((err) => {
- if (err.code !== 'MODULE_NOT_FOUND') throw err;
- });
-};
- __webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-
})();
}
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/enable-css-selector/__snapshot__/rspack/2.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/enable-css-selector/__snapshot__/rspack/2.snap.txt
index ce9b71f89c..211935603f 100644
--- a/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/enable-css-selector/__snapshot__/rspack/2.snap.txt
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/enable-css-selector/__snapshot__/rspack/2.snap.txt
@@ -7,7 +7,7 @@
- Bundle: rspack-bundle.js
- Manifest: main.LAST_HASH.css.hot-update.json, size: 1054
- Manifest: main.LAST_HASH.hot-update.json, size: 28
-- Update: main.LAST_HASH.hot-update.js, size: 14694
+- Update: main.LAST_HASH.hot-update.js, size: 1307
## Manifest
@@ -36,7 +36,6 @@
#### Changed Runtime Modules
- webpack/runtime/get_full_hash
-- webpack/runtime/require_chunk_loading
#### Changed Content
```js
@@ -80,479 +79,11 @@ exports.runtime = function(__webpack_require__) {
(() => {
__webpack_require__.h = () => ("CURRENT_HASH")
})();
-// webpack/runtime/require_chunk_loading
+// webpack/runtime/lynx css hot update
(() => {
-var installedChunks = __webpack_require__.hmrS_require = __webpack_require__.hmrS_require || {"main": 1,};
-function loadUpdateChunk(chunkId, updatedModulesList) {
- var update = require("./" + __webpack_require__.hu(chunkId));
- var updatedModules = update.modules;
- var runtime = update.runtime;
- for (var moduleId in updatedModules) {
- if (__webpack_require__.o(updatedModules, moduleId)) {
- currentUpdate[moduleId] = updatedModules[moduleId];
- if (updatedModulesList) updatedModulesList.push(moduleId);
- }
- }
- if (runtime) currentUpdateRuntime.push(runtime);
-}var currentUpdateChunks;
-var currentUpdate;
-var currentUpdateRemovedChunks;
-var currentUpdateRuntime;
-function applyHandler(options) {
- if (__webpack_require__.f) delete __webpack_require__.f.requireHmr;
- currentUpdateChunks = undefined;
- function getAffectedModuleEffects(updateModuleId) {
- var outdatedModules = [updateModuleId];
- var outdatedDependencies = {};
- var queue = outdatedModules.map(function (id) {
- return {
- chain: [id],
- id: id
- };
- });
- while (queue.length > 0) {
- var queueItem = queue.pop();
- var moduleId = queueItem.id;
- var chain = queueItem.chain;
- var module = __webpack_require__.c[moduleId];
- if (
- !module ||
- (module.hot._selfAccepted && !module.hot._selfInvalidated)
- ) {
- continue;
- }
-
- if (module.hot._selfDeclined) {
- return {
- type: "self-declined",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- if (module.hot._main) {
- return {
- type: "unaccepted",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- for (var i = 0; i < module.parents.length; i++) {
- var parentId = module.parents[i];
- var parent = __webpack_require__.c[parentId];
- if (!parent) {
- continue;
- }
- if (parent.hot._declinedDependencies[moduleId]) {
- return {
- type: "declined",
- chain: chain.concat([parentId]),
- moduleId: moduleId,
- parentId: parentId
- };
- }
- if (outdatedModules.indexOf(parentId) !== -1) {
- continue;
- }
- if (parent.hot._acceptedDependencies[moduleId]) {
- if (!outdatedDependencies[parentId]) {
- outdatedDependencies[parentId] = [];
- }
- addAllToSet(outdatedDependencies[parentId], [moduleId]);
- continue;
- }
- delete outdatedDependencies[parentId];
- outdatedModules.push(parentId);
- queue.push({
- chain: chain.concat([parentId]),
- id: parentId
- });
- }
- }
-
- return {
- type: "accepted",
- moduleId: updateModuleId,
- outdatedModules: outdatedModules,
- outdatedDependencies: outdatedDependencies
- };
- }
-
- function addAllToSet(a, b) {
- for (var i = 0; i < b.length; i++) {
- var item = b[i];
- if (a.indexOf(item) === -1) a.push(item);
- }
- }
-
- var outdatedDependencies = {};
- var outdatedModules = [];
- var appliedUpdate = {};
-
- var warnUnexpectedRequire = function warnUnexpectedRequire(module) {
- console.warn(
- "[HMR] unexpected require(" + module.id + ") to disposed module"
- );
- };
-
- for (var moduleId in currentUpdate) {
- if (__webpack_require__.o(currentUpdate, moduleId)) {
- var newModuleFactory = currentUpdate[moduleId];
- var result = newModuleFactory ? getAffectedModuleEffects(moduleId) : {
- type: "disposed",
- moduleId: moduleId
- };
- var abortError = false;
- var doApply = false;
- var doDispose = false;
- var chainInfo = "";
- if (result.chain) {
- chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
- }
- switch (result.type) {
- case "self-declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of self decline: " + result.moduleId + chainInfo
- );
- break;
- case "declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of declined dependency: " +
- result.moduleId +
- " in " +
- result.parentId +
- chainInfo
- );
- break;
- case "unaccepted":
- if (options.onUnaccepted) options.onUnaccepted(result);
- if (!options.ignoreUnaccepted)
- abortError = new Error(
- "Aborted because " + moduleId + " is not accepted" + chainInfo
- );
- break;
- case "accepted":
- if (options.onAccepted) options.onAccepted(result);
- doApply = true;
- break;
- case "disposed":
- if (options.onDisposed) options.onDisposed(result);
- doDispose = true;
- break;
- default:
- throw new Error("Unexception type " + result.type);
- }
- if (abortError) {
- return {
- error: abortError
- };
- }
- if (doApply) {
- appliedUpdate[moduleId] = newModuleFactory;
- addAllToSet(outdatedModules, result.outdatedModules);
- for (moduleId in result.outdatedDependencies) {
- if (__webpack_require__.o(result.outdatedDependencies, moduleId)) {
- if (!outdatedDependencies[moduleId])
- outdatedDependencies[moduleId] = [];
- addAllToSet(
- outdatedDependencies[moduleId],
- result.outdatedDependencies[moduleId]
- );
- }
- }
- }
- if (doDispose) {
- addAllToSet(outdatedModules, [result.moduleId]);
- appliedUpdate[moduleId] = warnUnexpectedRequire;
- }
- }
- }
- currentUpdate = undefined;
-
- var outdatedSelfAcceptedModules = [];
- for (var j = 0; j < outdatedModules.length; j++) {
- var outdatedModuleId = outdatedModules[j];
- var module = __webpack_require__.c[outdatedModuleId];
- if (
- module &&
- (module.hot._selfAccepted || module.hot._main) &&
- // removed self-accepted modules should not be required
- appliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&
- // when called invalidate self-accepting is not possible
- !module.hot._selfInvalidated
- ) {
- outdatedSelfAcceptedModules.push({
- module: outdatedModuleId,
- require: module.hot._requireSelf,
- errorHandler: module.hot._selfAccepted
- });
- }
- }
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedModules = outdatedModules;
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedDependencies = outdatedDependencies;
-
-
- var moduleOutdatedDependencies;
- return {
- dispose: function () {
- currentUpdateRemovedChunks.forEach(function (chunkId) {
- delete installedChunks[chunkId];
- });
- currentUpdateRemovedChunks = undefined;
-
- var idx;
- var queue = outdatedModules.slice();
- while (queue.length > 0) {
- var moduleId = queue.pop();
- var module = __webpack_require__.c[moduleId];
- if (!module) continue;
-
- var data = {};
-
- // Call dispose handlers
- var disposeHandlers = module.hot._disposeHandlers;
- if (disposeHandlers.length > 0) {
- self.__HMR_UPDATED_RUNTIME__.javascript.disposedModules.push(moduleId);
- }
-
- for (j = 0; j < disposeHandlers.length; j++) {
- disposeHandlers[j].call(null, data);
- }
- __webpack_require__.hmrD[moduleId] = data;
-
- module.hot.active = false;
-
- delete __webpack_require__.c[moduleId];
-
- delete outdatedDependencies[moduleId];
-
- for (j = 0; j < module.children.length; j++) {
- var child = __webpack_require__.c[module.children[j]];
- if (!child) continue;
- idx = child.parents.indexOf(moduleId);
- if (idx >= 0) {
- child.parents.splice(idx, 1);
- }
- }
- }
-
- var dependency;
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- for (j = 0; j < moduleOutdatedDependencies.length; j++) {
- dependency = moduleOutdatedDependencies[j];
- idx = module.children.indexOf(dependency);
- if (idx >= 0) module.children.splice(idx, 1);
- }
- }
- }
- }
- },
- apply: function (reportError) {
- // insert new code
- for (var updateModuleId in appliedUpdate) {
- if (__webpack_require__.o(appliedUpdate, updateModuleId)) {
- __webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedModules.push(updateModuleId);
-
- }
- }
-
- // run new runtime modules
- for (var i = 0; i < currentUpdateRuntime.length; i++) {
-
- currentUpdateRuntime[i](new Proxy(__webpack_require__, {
- set(target, prop, value, receiver) {
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedRuntime.push(`__webpack_require__.${prop}`);
- return Reflect.set(target, prop, value, receiver);
- }
- }));
-
- }
-
- // call accept handlers
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- var module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- var callbacks = [];
- var errorHandlers = [];
- var dependenciesForCallbacks = [];
- for (var j = 0; j < moduleOutdatedDependencies.length; j++) {
- var dependency = moduleOutdatedDependencies[j];
- var acceptCallback = module.hot._acceptedDependencies[dependency];
- var errorHandler = module.hot._acceptedErrorHandlers[dependency];
- if (acceptCallback) {
- if (callbacks.indexOf(acceptCallback) !== -1) continue;
- callbacks.push(acceptCallback);
- errorHandlers.push(errorHandler);
- self.__HMR_UPDATED_RUNTIME__.javascript.acceptedModules.push(dependency);
-
- dependenciesForCallbacks.push(dependency);
- }
- }
- for (var k = 0; k < callbacks.length; k++) {
- try {
- callbacks[k].call(null, moduleOutdatedDependencies);
- } catch (err) {
- if (typeof errorHandlers[k] === "function") {
- try {
- errorHandlers[k](err, {
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k]
- });
- } catch (err2) {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-error-handler-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err2,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err2);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
- }
- }
- }
-
- // Load self accepted modules
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
- var item = outdatedSelfAcceptedModules[o];
- var moduleId = item.module;
- try {
- item.require(moduleId);
- } catch (err) {
- if (typeof item.errorHandler === "function") {
- try {
- item.errorHandler(err, {
- moduleId: moduleId,
- module: __webpack_require__.c[moduleId]
- });
- } catch (err1) {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-error-handler-errored",
- moduleId: moduleId,
- error: err1,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err1);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-errored",
- moduleId: moduleId,
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
-
- return outdatedModules;
- }
- };
-}
-__webpack_require__.hmrI.require = function (moduleId, applyHandlers) {
- if (!currentUpdate) {
- currentUpdate = {};
- currentUpdateRuntime = [];
- currentUpdateRemovedChunks = [];
- applyHandlers.push(applyHandler);
- }
- if (!__webpack_require__.o(currentUpdate, moduleId)) {
- currentUpdate[moduleId] = __webpack_require__.m[moduleId];
- }
-};
+__webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-__webpack_require__.hmrC.require = function (
- chunkIds,
- removedChunks,
- removedModules,
- promises,
- applyHandlers,
- updatedModulesList
-) {
- applyHandlers.push(applyHandler);
- currentUpdateChunks = {};
- currentUpdateRemovedChunks = removedChunks;
- currentUpdate = removedModules.reduce(function (obj, key) {
- obj[key] = false;
- return obj;
- }, {});
- currentUpdateRuntime = [];
- chunkIds.forEach(function (chunkId) {
- if (
- __webpack_require__.o(installedChunks, chunkId) &&
- installedChunks[chunkId] !== undefined
- ) {
- promises.push(loadUpdateChunk(chunkId, updatedModulesList));
- currentUpdateChunks[chunkId] = true;
- } else {
- currentUpdateChunks[chunkId] = false;
- }
- });
- if (__webpack_require__.f) {
- __webpack_require__.f.requireHmr = function (chunkId, promises) {
- if (
- currentUpdateChunks &&
- __webpack_require__.o(currentUpdateChunks, chunkId) &&
- !currentUpdateChunks[chunkId]
- ) {
- promises.push(loadUpdateChunk(chunkId));
- currentUpdateChunks[chunkId] = true;
- }
- };
- }
-};
-__webpack_require__.hmrM = () => {
- return Promise.resolve()
- .then(() => {
- return require("./" + __webpack_require__.hmrF());
- })['catch']((err) => {
- if (err.code !== 'MODULE_NOT_FOUND') throw err;
- });
-};
- __webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-
})();
}
@@ -593,8 +124,6 @@ Updated Modules:
Updated Runtime:
- `__webpack_require__.cssHotUpdateList`
- `__webpack_require__.h`
-- `__webpack_require__.hmrM`
-- `__webpack_require__.hmrS_require`
#### Callback
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/scoped/__snapshot__/rspack/1.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/scoped/__snapshot__/rspack/1.snap.txt
index d69f3aa1b2..1c3d8c6272 100644
--- a/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/scoped/__snapshot__/rspack/1.snap.txt
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/scoped/__snapshot__/rspack/1.snap.txt
@@ -7,7 +7,7 @@
- Bundle: rspack-bundle.js
- Manifest: main.LAST_HASH.css.hot-update.json, size: 989
- Manifest: main.LAST_HASH.hot-update.json, size: 28
-- Update: main.LAST_HASH.hot-update.js, size: 14685
+- Update: main.LAST_HASH.hot-update.js, size: 1298
## Manifest
@@ -36,7 +36,6 @@
#### Changed Runtime Modules
- webpack/runtime/get_full_hash
-- webpack/runtime/require_chunk_loading
#### Changed Content
```js
@@ -80,479 +79,11 @@ exports.runtime = function(__webpack_require__) {
(() => {
__webpack_require__.h = () => ("CURRENT_HASH")
})();
-// webpack/runtime/require_chunk_loading
+// webpack/runtime/lynx css hot update
(() => {
-var installedChunks = __webpack_require__.hmrS_require = __webpack_require__.hmrS_require || {"main": 1,};
-function loadUpdateChunk(chunkId, updatedModulesList) {
- var update = require("./" + __webpack_require__.hu(chunkId));
- var updatedModules = update.modules;
- var runtime = update.runtime;
- for (var moduleId in updatedModules) {
- if (__webpack_require__.o(updatedModules, moduleId)) {
- currentUpdate[moduleId] = updatedModules[moduleId];
- if (updatedModulesList) updatedModulesList.push(moduleId);
- }
- }
- if (runtime) currentUpdateRuntime.push(runtime);
-}var currentUpdateChunks;
-var currentUpdate;
-var currentUpdateRemovedChunks;
-var currentUpdateRuntime;
-function applyHandler(options) {
- if (__webpack_require__.f) delete __webpack_require__.f.requireHmr;
- currentUpdateChunks = undefined;
- function getAffectedModuleEffects(updateModuleId) {
- var outdatedModules = [updateModuleId];
- var outdatedDependencies = {};
- var queue = outdatedModules.map(function (id) {
- return {
- chain: [id],
- id: id
- };
- });
- while (queue.length > 0) {
- var queueItem = queue.pop();
- var moduleId = queueItem.id;
- var chain = queueItem.chain;
- var module = __webpack_require__.c[moduleId];
- if (
- !module ||
- (module.hot._selfAccepted && !module.hot._selfInvalidated)
- ) {
- continue;
- }
- if (module.hot._selfDeclined) {
- return {
- type: "self-declined",
- chain: chain,
- moduleId: moduleId
- };
- }
+__webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
- if (module.hot._main) {
- return {
- type: "unaccepted",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- for (var i = 0; i < module.parents.length; i++) {
- var parentId = module.parents[i];
- var parent = __webpack_require__.c[parentId];
- if (!parent) {
- continue;
- }
- if (parent.hot._declinedDependencies[moduleId]) {
- return {
- type: "declined",
- chain: chain.concat([parentId]),
- moduleId: moduleId,
- parentId: parentId
- };
- }
- if (outdatedModules.indexOf(parentId) !== -1) {
- continue;
- }
- if (parent.hot._acceptedDependencies[moduleId]) {
- if (!outdatedDependencies[parentId]) {
- outdatedDependencies[parentId] = [];
- }
- addAllToSet(outdatedDependencies[parentId], [moduleId]);
- continue;
- }
- delete outdatedDependencies[parentId];
- outdatedModules.push(parentId);
- queue.push({
- chain: chain.concat([parentId]),
- id: parentId
- });
- }
- }
-
- return {
- type: "accepted",
- moduleId: updateModuleId,
- outdatedModules: outdatedModules,
- outdatedDependencies: outdatedDependencies
- };
- }
-
- function addAllToSet(a, b) {
- for (var i = 0; i < b.length; i++) {
- var item = b[i];
- if (a.indexOf(item) === -1) a.push(item);
- }
- }
-
- var outdatedDependencies = {};
- var outdatedModules = [];
- var appliedUpdate = {};
-
- var warnUnexpectedRequire = function warnUnexpectedRequire(module) {
- console.warn(
- "[HMR] unexpected require(" + module.id + ") to disposed module"
- );
- };
-
- for (var moduleId in currentUpdate) {
- if (__webpack_require__.o(currentUpdate, moduleId)) {
- var newModuleFactory = currentUpdate[moduleId];
- var result = newModuleFactory ? getAffectedModuleEffects(moduleId) : {
- type: "disposed",
- moduleId: moduleId
- };
- var abortError = false;
- var doApply = false;
- var doDispose = false;
- var chainInfo = "";
- if (result.chain) {
- chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
- }
- switch (result.type) {
- case "self-declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of self decline: " + result.moduleId + chainInfo
- );
- break;
- case "declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of declined dependency: " +
- result.moduleId +
- " in " +
- result.parentId +
- chainInfo
- );
- break;
- case "unaccepted":
- if (options.onUnaccepted) options.onUnaccepted(result);
- if (!options.ignoreUnaccepted)
- abortError = new Error(
- "Aborted because " + moduleId + " is not accepted" + chainInfo
- );
- break;
- case "accepted":
- if (options.onAccepted) options.onAccepted(result);
- doApply = true;
- break;
- case "disposed":
- if (options.onDisposed) options.onDisposed(result);
- doDispose = true;
- break;
- default:
- throw new Error("Unexception type " + result.type);
- }
- if (abortError) {
- return {
- error: abortError
- };
- }
- if (doApply) {
- appliedUpdate[moduleId] = newModuleFactory;
- addAllToSet(outdatedModules, result.outdatedModules);
- for (moduleId in result.outdatedDependencies) {
- if (__webpack_require__.o(result.outdatedDependencies, moduleId)) {
- if (!outdatedDependencies[moduleId])
- outdatedDependencies[moduleId] = [];
- addAllToSet(
- outdatedDependencies[moduleId],
- result.outdatedDependencies[moduleId]
- );
- }
- }
- }
- if (doDispose) {
- addAllToSet(outdatedModules, [result.moduleId]);
- appliedUpdate[moduleId] = warnUnexpectedRequire;
- }
- }
- }
- currentUpdate = undefined;
-
- var outdatedSelfAcceptedModules = [];
- for (var j = 0; j < outdatedModules.length; j++) {
- var outdatedModuleId = outdatedModules[j];
- var module = __webpack_require__.c[outdatedModuleId];
- if (
- module &&
- (module.hot._selfAccepted || module.hot._main) &&
- // removed self-accepted modules should not be required
- appliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&
- // when called invalidate self-accepting is not possible
- !module.hot._selfInvalidated
- ) {
- outdatedSelfAcceptedModules.push({
- module: outdatedModuleId,
- require: module.hot._requireSelf,
- errorHandler: module.hot._selfAccepted
- });
- }
- }
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedModules = outdatedModules;
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedDependencies = outdatedDependencies;
-
-
- var moduleOutdatedDependencies;
- return {
- dispose: function () {
- currentUpdateRemovedChunks.forEach(function (chunkId) {
- delete installedChunks[chunkId];
- });
- currentUpdateRemovedChunks = undefined;
-
- var idx;
- var queue = outdatedModules.slice();
- while (queue.length > 0) {
- var moduleId = queue.pop();
- var module = __webpack_require__.c[moduleId];
- if (!module) continue;
-
- var data = {};
-
- // Call dispose handlers
- var disposeHandlers = module.hot._disposeHandlers;
- if (disposeHandlers.length > 0) {
- self.__HMR_UPDATED_RUNTIME__.javascript.disposedModules.push(moduleId);
- }
-
- for (j = 0; j < disposeHandlers.length; j++) {
- disposeHandlers[j].call(null, data);
- }
- __webpack_require__.hmrD[moduleId] = data;
-
- module.hot.active = false;
-
- delete __webpack_require__.c[moduleId];
-
- delete outdatedDependencies[moduleId];
-
- for (j = 0; j < module.children.length; j++) {
- var child = __webpack_require__.c[module.children[j]];
- if (!child) continue;
- idx = child.parents.indexOf(moduleId);
- if (idx >= 0) {
- child.parents.splice(idx, 1);
- }
- }
- }
-
- var dependency;
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- for (j = 0; j < moduleOutdatedDependencies.length; j++) {
- dependency = moduleOutdatedDependencies[j];
- idx = module.children.indexOf(dependency);
- if (idx >= 0) module.children.splice(idx, 1);
- }
- }
- }
- }
- },
- apply: function (reportError) {
- // insert new code
- for (var updateModuleId in appliedUpdate) {
- if (__webpack_require__.o(appliedUpdate, updateModuleId)) {
- __webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedModules.push(updateModuleId);
-
- }
- }
-
- // run new runtime modules
- for (var i = 0; i < currentUpdateRuntime.length; i++) {
-
- currentUpdateRuntime[i](new Proxy(__webpack_require__, {
- set(target, prop, value, receiver) {
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedRuntime.push(`__webpack_require__.${prop}`);
- return Reflect.set(target, prop, value, receiver);
- }
- }));
-
- }
-
- // call accept handlers
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- var module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- var callbacks = [];
- var errorHandlers = [];
- var dependenciesForCallbacks = [];
- for (var j = 0; j < moduleOutdatedDependencies.length; j++) {
- var dependency = moduleOutdatedDependencies[j];
- var acceptCallback = module.hot._acceptedDependencies[dependency];
- var errorHandler = module.hot._acceptedErrorHandlers[dependency];
- if (acceptCallback) {
- if (callbacks.indexOf(acceptCallback) !== -1) continue;
- callbacks.push(acceptCallback);
- errorHandlers.push(errorHandler);
- self.__HMR_UPDATED_RUNTIME__.javascript.acceptedModules.push(dependency);
-
- dependenciesForCallbacks.push(dependency);
- }
- }
- for (var k = 0; k < callbacks.length; k++) {
- try {
- callbacks[k].call(null, moduleOutdatedDependencies);
- } catch (err) {
- if (typeof errorHandlers[k] === "function") {
- try {
- errorHandlers[k](err, {
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k]
- });
- } catch (err2) {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-error-handler-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err2,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err2);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
- }
- }
- }
-
- // Load self accepted modules
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
- var item = outdatedSelfAcceptedModules[o];
- var moduleId = item.module;
- try {
- item.require(moduleId);
- } catch (err) {
- if (typeof item.errorHandler === "function") {
- try {
- item.errorHandler(err, {
- moduleId: moduleId,
- module: __webpack_require__.c[moduleId]
- });
- } catch (err1) {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-error-handler-errored",
- moduleId: moduleId,
- error: err1,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err1);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-errored",
- moduleId: moduleId,
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
-
- return outdatedModules;
- }
- };
-}
-
-__webpack_require__.hmrI.require = function (moduleId, applyHandlers) {
- if (!currentUpdate) {
- currentUpdate = {};
- currentUpdateRuntime = [];
- currentUpdateRemovedChunks = [];
- applyHandlers.push(applyHandler);
- }
- if (!__webpack_require__.o(currentUpdate, moduleId)) {
- currentUpdate[moduleId] = __webpack_require__.m[moduleId];
- }
-};
-
-__webpack_require__.hmrC.require = function (
- chunkIds,
- removedChunks,
- removedModules,
- promises,
- applyHandlers,
- updatedModulesList
-) {
- applyHandlers.push(applyHandler);
- currentUpdateChunks = {};
- currentUpdateRemovedChunks = removedChunks;
- currentUpdate = removedModules.reduce(function (obj, key) {
- obj[key] = false;
- return obj;
- }, {});
- currentUpdateRuntime = [];
- chunkIds.forEach(function (chunkId) {
- if (
- __webpack_require__.o(installedChunks, chunkId) &&
- installedChunks[chunkId] !== undefined
- ) {
- promises.push(loadUpdateChunk(chunkId, updatedModulesList));
- currentUpdateChunks[chunkId] = true;
- } else {
- currentUpdateChunks[chunkId] = false;
- }
- });
- if (__webpack_require__.f) {
- __webpack_require__.f.requireHmr = function (chunkId, promises) {
- if (
- currentUpdateChunks &&
- __webpack_require__.o(currentUpdateChunks, chunkId) &&
- !currentUpdateChunks[chunkId]
- ) {
- promises.push(loadUpdateChunk(chunkId));
- currentUpdateChunks[chunkId] = true;
- }
- };
- }
-};
-__webpack_require__.hmrM = () => {
- return Promise.resolve()
- .then(() => {
- return require("./" + __webpack_require__.hmrF());
- })['catch']((err) => {
- if (err.code !== 'MODULE_NOT_FOUND') throw err;
- });
-};
- __webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-
})();
}
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/scoped/__snapshot__/rspack/2.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/scoped/__snapshot__/rspack/2.snap.txt
index 9328197a9d..5680b4ac8c 100644
--- a/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/scoped/__snapshot__/rspack/2.snap.txt
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/css/scoped/__snapshot__/rspack/2.snap.txt
@@ -7,7 +7,7 @@
- Bundle: rspack-bundle.js
- Manifest: main.LAST_HASH.css.hot-update.json, size: 1305
- Manifest: main.LAST_HASH.hot-update.json, size: 28
-- Update: main.LAST_HASH.hot-update.js, size: 14685
+- Update: main.LAST_HASH.hot-update.js, size: 1298
## Manifest
@@ -36,7 +36,6 @@
#### Changed Runtime Modules
- webpack/runtime/get_full_hash
-- webpack/runtime/require_chunk_loading
#### Changed Content
```js
@@ -80,479 +79,11 @@ exports.runtime = function(__webpack_require__) {
(() => {
__webpack_require__.h = () => ("CURRENT_HASH")
})();
-// webpack/runtime/require_chunk_loading
+// webpack/runtime/lynx css hot update
(() => {
-var installedChunks = __webpack_require__.hmrS_require = __webpack_require__.hmrS_require || {"main": 1,};
-function loadUpdateChunk(chunkId, updatedModulesList) {
- var update = require("./" + __webpack_require__.hu(chunkId));
- var updatedModules = update.modules;
- var runtime = update.runtime;
- for (var moduleId in updatedModules) {
- if (__webpack_require__.o(updatedModules, moduleId)) {
- currentUpdate[moduleId] = updatedModules[moduleId];
- if (updatedModulesList) updatedModulesList.push(moduleId);
- }
- }
- if (runtime) currentUpdateRuntime.push(runtime);
-}var currentUpdateChunks;
-var currentUpdate;
-var currentUpdateRemovedChunks;
-var currentUpdateRuntime;
-function applyHandler(options) {
- if (__webpack_require__.f) delete __webpack_require__.f.requireHmr;
- currentUpdateChunks = undefined;
- function getAffectedModuleEffects(updateModuleId) {
- var outdatedModules = [updateModuleId];
- var outdatedDependencies = {};
- var queue = outdatedModules.map(function (id) {
- return {
- chain: [id],
- id: id
- };
- });
- while (queue.length > 0) {
- var queueItem = queue.pop();
- var moduleId = queueItem.id;
- var chain = queueItem.chain;
- var module = __webpack_require__.c[moduleId];
- if (
- !module ||
- (module.hot._selfAccepted && !module.hot._selfInvalidated)
- ) {
- continue;
- }
-
- if (module.hot._selfDeclined) {
- return {
- type: "self-declined",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- if (module.hot._main) {
- return {
- type: "unaccepted",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- for (var i = 0; i < module.parents.length; i++) {
- var parentId = module.parents[i];
- var parent = __webpack_require__.c[parentId];
- if (!parent) {
- continue;
- }
- if (parent.hot._declinedDependencies[moduleId]) {
- return {
- type: "declined",
- chain: chain.concat([parentId]),
- moduleId: moduleId,
- parentId: parentId
- };
- }
- if (outdatedModules.indexOf(parentId) !== -1) {
- continue;
- }
- if (parent.hot._acceptedDependencies[moduleId]) {
- if (!outdatedDependencies[parentId]) {
- outdatedDependencies[parentId] = [];
- }
- addAllToSet(outdatedDependencies[parentId], [moduleId]);
- continue;
- }
- delete outdatedDependencies[parentId];
- outdatedModules.push(parentId);
- queue.push({
- chain: chain.concat([parentId]),
- id: parentId
- });
- }
- }
-
- return {
- type: "accepted",
- moduleId: updateModuleId,
- outdatedModules: outdatedModules,
- outdatedDependencies: outdatedDependencies
- };
- }
-
- function addAllToSet(a, b) {
- for (var i = 0; i < b.length; i++) {
- var item = b[i];
- if (a.indexOf(item) === -1) a.push(item);
- }
- }
-
- var outdatedDependencies = {};
- var outdatedModules = [];
- var appliedUpdate = {};
-
- var warnUnexpectedRequire = function warnUnexpectedRequire(module) {
- console.warn(
- "[HMR] unexpected require(" + module.id + ") to disposed module"
- );
- };
-
- for (var moduleId in currentUpdate) {
- if (__webpack_require__.o(currentUpdate, moduleId)) {
- var newModuleFactory = currentUpdate[moduleId];
- var result = newModuleFactory ? getAffectedModuleEffects(moduleId) : {
- type: "disposed",
- moduleId: moduleId
- };
- var abortError = false;
- var doApply = false;
- var doDispose = false;
- var chainInfo = "";
- if (result.chain) {
- chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
- }
- switch (result.type) {
- case "self-declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of self decline: " + result.moduleId + chainInfo
- );
- break;
- case "declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of declined dependency: " +
- result.moduleId +
- " in " +
- result.parentId +
- chainInfo
- );
- break;
- case "unaccepted":
- if (options.onUnaccepted) options.onUnaccepted(result);
- if (!options.ignoreUnaccepted)
- abortError = new Error(
- "Aborted because " + moduleId + " is not accepted" + chainInfo
- );
- break;
- case "accepted":
- if (options.onAccepted) options.onAccepted(result);
- doApply = true;
- break;
- case "disposed":
- if (options.onDisposed) options.onDisposed(result);
- doDispose = true;
- break;
- default:
- throw new Error("Unexception type " + result.type);
- }
- if (abortError) {
- return {
- error: abortError
- };
- }
- if (doApply) {
- appliedUpdate[moduleId] = newModuleFactory;
- addAllToSet(outdatedModules, result.outdatedModules);
- for (moduleId in result.outdatedDependencies) {
- if (__webpack_require__.o(result.outdatedDependencies, moduleId)) {
- if (!outdatedDependencies[moduleId])
- outdatedDependencies[moduleId] = [];
- addAllToSet(
- outdatedDependencies[moduleId],
- result.outdatedDependencies[moduleId]
- );
- }
- }
- }
- if (doDispose) {
- addAllToSet(outdatedModules, [result.moduleId]);
- appliedUpdate[moduleId] = warnUnexpectedRequire;
- }
- }
- }
- currentUpdate = undefined;
-
- var outdatedSelfAcceptedModules = [];
- for (var j = 0; j < outdatedModules.length; j++) {
- var outdatedModuleId = outdatedModules[j];
- var module = __webpack_require__.c[outdatedModuleId];
- if (
- module &&
- (module.hot._selfAccepted || module.hot._main) &&
- // removed self-accepted modules should not be required
- appliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&
- // when called invalidate self-accepting is not possible
- !module.hot._selfInvalidated
- ) {
- outdatedSelfAcceptedModules.push({
- module: outdatedModuleId,
- require: module.hot._requireSelf,
- errorHandler: module.hot._selfAccepted
- });
- }
- }
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedModules = outdatedModules;
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedDependencies = outdatedDependencies;
-
-
- var moduleOutdatedDependencies;
- return {
- dispose: function () {
- currentUpdateRemovedChunks.forEach(function (chunkId) {
- delete installedChunks[chunkId];
- });
- currentUpdateRemovedChunks = undefined;
-
- var idx;
- var queue = outdatedModules.slice();
- while (queue.length > 0) {
- var moduleId = queue.pop();
- var module = __webpack_require__.c[moduleId];
- if (!module) continue;
-
- var data = {};
-
- // Call dispose handlers
- var disposeHandlers = module.hot._disposeHandlers;
- if (disposeHandlers.length > 0) {
- self.__HMR_UPDATED_RUNTIME__.javascript.disposedModules.push(moduleId);
- }
-
- for (j = 0; j < disposeHandlers.length; j++) {
- disposeHandlers[j].call(null, data);
- }
- __webpack_require__.hmrD[moduleId] = data;
-
- module.hot.active = false;
-
- delete __webpack_require__.c[moduleId];
-
- delete outdatedDependencies[moduleId];
-
- for (j = 0; j < module.children.length; j++) {
- var child = __webpack_require__.c[module.children[j]];
- if (!child) continue;
- idx = child.parents.indexOf(moduleId);
- if (idx >= 0) {
- child.parents.splice(idx, 1);
- }
- }
- }
-
- var dependency;
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- for (j = 0; j < moduleOutdatedDependencies.length; j++) {
- dependency = moduleOutdatedDependencies[j];
- idx = module.children.indexOf(dependency);
- if (idx >= 0) module.children.splice(idx, 1);
- }
- }
- }
- }
- },
- apply: function (reportError) {
- // insert new code
- for (var updateModuleId in appliedUpdate) {
- if (__webpack_require__.o(appliedUpdate, updateModuleId)) {
- __webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedModules.push(updateModuleId);
-
- }
- }
-
- // run new runtime modules
- for (var i = 0; i < currentUpdateRuntime.length; i++) {
-
- currentUpdateRuntime[i](new Proxy(__webpack_require__, {
- set(target, prop, value, receiver) {
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedRuntime.push(`__webpack_require__.${prop}`);
- return Reflect.set(target, prop, value, receiver);
- }
- }));
-
- }
-
- // call accept handlers
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- var module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- var callbacks = [];
- var errorHandlers = [];
- var dependenciesForCallbacks = [];
- for (var j = 0; j < moduleOutdatedDependencies.length; j++) {
- var dependency = moduleOutdatedDependencies[j];
- var acceptCallback = module.hot._acceptedDependencies[dependency];
- var errorHandler = module.hot._acceptedErrorHandlers[dependency];
- if (acceptCallback) {
- if (callbacks.indexOf(acceptCallback) !== -1) continue;
- callbacks.push(acceptCallback);
- errorHandlers.push(errorHandler);
- self.__HMR_UPDATED_RUNTIME__.javascript.acceptedModules.push(dependency);
-
- dependenciesForCallbacks.push(dependency);
- }
- }
- for (var k = 0; k < callbacks.length; k++) {
- try {
- callbacks[k].call(null, moduleOutdatedDependencies);
- } catch (err) {
- if (typeof errorHandlers[k] === "function") {
- try {
- errorHandlers[k](err, {
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k]
- });
- } catch (err2) {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-error-handler-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err2,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err2);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
- }
- }
- }
-
- // Load self accepted modules
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
- var item = outdatedSelfAcceptedModules[o];
- var moduleId = item.module;
- try {
- item.require(moduleId);
- } catch (err) {
- if (typeof item.errorHandler === "function") {
- try {
- item.errorHandler(err, {
- moduleId: moduleId,
- module: __webpack_require__.c[moduleId]
- });
- } catch (err1) {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-error-handler-errored",
- moduleId: moduleId,
- error: err1,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err1);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-errored",
- moduleId: moduleId,
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
-
- return outdatedModules;
- }
- };
-}
-__webpack_require__.hmrI.require = function (moduleId, applyHandlers) {
- if (!currentUpdate) {
- currentUpdate = {};
- currentUpdateRuntime = [];
- currentUpdateRemovedChunks = [];
- applyHandlers.push(applyHandler);
- }
- if (!__webpack_require__.o(currentUpdate, moduleId)) {
- currentUpdate[moduleId] = __webpack_require__.m[moduleId];
- }
-};
+__webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-__webpack_require__.hmrC.require = function (
- chunkIds,
- removedChunks,
- removedModules,
- promises,
- applyHandlers,
- updatedModulesList
-) {
- applyHandlers.push(applyHandler);
- currentUpdateChunks = {};
- currentUpdateRemovedChunks = removedChunks;
- currentUpdate = removedModules.reduce(function (obj, key) {
- obj[key] = false;
- return obj;
- }, {});
- currentUpdateRuntime = [];
- chunkIds.forEach(function (chunkId) {
- if (
- __webpack_require__.o(installedChunks, chunkId) &&
- installedChunks[chunkId] !== undefined
- ) {
- promises.push(loadUpdateChunk(chunkId, updatedModulesList));
- currentUpdateChunks[chunkId] = true;
- } else {
- currentUpdateChunks[chunkId] = false;
- }
- });
- if (__webpack_require__.f) {
- __webpack_require__.f.requireHmr = function (chunkId, promises) {
- if (
- currentUpdateChunks &&
- __webpack_require__.o(currentUpdateChunks, chunkId) &&
- !currentUpdateChunks[chunkId]
- ) {
- promises.push(loadUpdateChunk(chunkId));
- currentUpdateChunks[chunkId] = true;
- }
- };
- }
-};
-__webpack_require__.hmrM = () => {
- return Promise.resolve()
- .then(() => {
- return require("./" + __webpack_require__.hmrF());
- })['catch']((err) => {
- if (err.code !== 'MODULE_NOT_FOUND') throw err;
- });
-};
- __webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-
})();
}
@@ -593,8 +124,6 @@ Updated Modules:
Updated Runtime:
- `__webpack_require__.cssHotUpdateList`
- `__webpack_require__.h`
-- `__webpack_require__.hmrM`
-- `__webpack_require__.hmrS_require`
#### Callback
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/default/__snapshot__/rspack/1.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/default/__snapshot__/rspack/1.snap.txt
index 1f1590a5f3..d27db30ff5 100644
--- a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/default/__snapshot__/rspack/1.snap.txt
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/default/__snapshot__/rspack/1.snap.txt
@@ -7,7 +7,7 @@
- Bundle: rspack-bundle.js
- Manifest: main.LAST_HASH.css.hot-update.json, size: 1098
- Manifest: main.LAST_HASH.hot-update.json, size: 28
-- Update: main.LAST_HASH.hot-update.js, size: 14842
+- Update: main.LAST_HASH.hot-update.js, size: 1455
## Manifest
@@ -36,7 +36,6 @@
#### Changed Runtime Modules
- webpack/runtime/get_full_hash
-- webpack/runtime/require_chunk_loading
#### Changed Content
```js
@@ -85,479 +84,11 @@ exports.runtime = function(__webpack_require__) {
(() => {
__webpack_require__.h = () => ("CURRENT_HASH")
})();
-// webpack/runtime/require_chunk_loading
+// webpack/runtime/lynx css hot update
(() => {
-var installedChunks = __webpack_require__.hmrS_require = __webpack_require__.hmrS_require || {"main": 1,};
-function loadUpdateChunk(chunkId, updatedModulesList) {
- var update = require("./" + __webpack_require__.hu(chunkId));
- var updatedModules = update.modules;
- var runtime = update.runtime;
- for (var moduleId in updatedModules) {
- if (__webpack_require__.o(updatedModules, moduleId)) {
- currentUpdate[moduleId] = updatedModules[moduleId];
- if (updatedModulesList) updatedModulesList.push(moduleId);
- }
- }
- if (runtime) currentUpdateRuntime.push(runtime);
-}var currentUpdateChunks;
-var currentUpdate;
-var currentUpdateRemovedChunks;
-var currentUpdateRuntime;
-function applyHandler(options) {
- if (__webpack_require__.f) delete __webpack_require__.f.requireHmr;
- currentUpdateChunks = undefined;
- function getAffectedModuleEffects(updateModuleId) {
- var outdatedModules = [updateModuleId];
- var outdatedDependencies = {};
- var queue = outdatedModules.map(function (id) {
- return {
- chain: [id],
- id: id
- };
- });
- while (queue.length > 0) {
- var queueItem = queue.pop();
- var moduleId = queueItem.id;
- var chain = queueItem.chain;
- var module = __webpack_require__.c[moduleId];
- if (
- !module ||
- (module.hot._selfAccepted && !module.hot._selfInvalidated)
- ) {
- continue;
- }
- if (module.hot._selfDeclined) {
- return {
- type: "self-declined",
- chain: chain,
- moduleId: moduleId
- };
- }
+__webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
- if (module.hot._main) {
- return {
- type: "unaccepted",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- for (var i = 0; i < module.parents.length; i++) {
- var parentId = module.parents[i];
- var parent = __webpack_require__.c[parentId];
- if (!parent) {
- continue;
- }
- if (parent.hot._declinedDependencies[moduleId]) {
- return {
- type: "declined",
- chain: chain.concat([parentId]),
- moduleId: moduleId,
- parentId: parentId
- };
- }
- if (outdatedModules.indexOf(parentId) !== -1) {
- continue;
- }
- if (parent.hot._acceptedDependencies[moduleId]) {
- if (!outdatedDependencies[parentId]) {
- outdatedDependencies[parentId] = [];
- }
- addAllToSet(outdatedDependencies[parentId], [moduleId]);
- continue;
- }
- delete outdatedDependencies[parentId];
- outdatedModules.push(parentId);
- queue.push({
- chain: chain.concat([parentId]),
- id: parentId
- });
- }
- }
-
- return {
- type: "accepted",
- moduleId: updateModuleId,
- outdatedModules: outdatedModules,
- outdatedDependencies: outdatedDependencies
- };
- }
-
- function addAllToSet(a, b) {
- for (var i = 0; i < b.length; i++) {
- var item = b[i];
- if (a.indexOf(item) === -1) a.push(item);
- }
- }
-
- var outdatedDependencies = {};
- var outdatedModules = [];
- var appliedUpdate = {};
-
- var warnUnexpectedRequire = function warnUnexpectedRequire(module) {
- console.warn(
- "[HMR] unexpected require(" + module.id + ") to disposed module"
- );
- };
-
- for (var moduleId in currentUpdate) {
- if (__webpack_require__.o(currentUpdate, moduleId)) {
- var newModuleFactory = currentUpdate[moduleId];
- var result = newModuleFactory ? getAffectedModuleEffects(moduleId) : {
- type: "disposed",
- moduleId: moduleId
- };
- var abortError = false;
- var doApply = false;
- var doDispose = false;
- var chainInfo = "";
- if (result.chain) {
- chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
- }
- switch (result.type) {
- case "self-declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of self decline: " + result.moduleId + chainInfo
- );
- break;
- case "declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of declined dependency: " +
- result.moduleId +
- " in " +
- result.parentId +
- chainInfo
- );
- break;
- case "unaccepted":
- if (options.onUnaccepted) options.onUnaccepted(result);
- if (!options.ignoreUnaccepted)
- abortError = new Error(
- "Aborted because " + moduleId + " is not accepted" + chainInfo
- );
- break;
- case "accepted":
- if (options.onAccepted) options.onAccepted(result);
- doApply = true;
- break;
- case "disposed":
- if (options.onDisposed) options.onDisposed(result);
- doDispose = true;
- break;
- default:
- throw new Error("Unexception type " + result.type);
- }
- if (abortError) {
- return {
- error: abortError
- };
- }
- if (doApply) {
- appliedUpdate[moduleId] = newModuleFactory;
- addAllToSet(outdatedModules, result.outdatedModules);
- for (moduleId in result.outdatedDependencies) {
- if (__webpack_require__.o(result.outdatedDependencies, moduleId)) {
- if (!outdatedDependencies[moduleId])
- outdatedDependencies[moduleId] = [];
- addAllToSet(
- outdatedDependencies[moduleId],
- result.outdatedDependencies[moduleId]
- );
- }
- }
- }
- if (doDispose) {
- addAllToSet(outdatedModules, [result.moduleId]);
- appliedUpdate[moduleId] = warnUnexpectedRequire;
- }
- }
- }
- currentUpdate = undefined;
-
- var outdatedSelfAcceptedModules = [];
- for (var j = 0; j < outdatedModules.length; j++) {
- var outdatedModuleId = outdatedModules[j];
- var module = __webpack_require__.c[outdatedModuleId];
- if (
- module &&
- (module.hot._selfAccepted || module.hot._main) &&
- // removed self-accepted modules should not be required
- appliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&
- // when called invalidate self-accepting is not possible
- !module.hot._selfInvalidated
- ) {
- outdatedSelfAcceptedModules.push({
- module: outdatedModuleId,
- require: module.hot._requireSelf,
- errorHandler: module.hot._selfAccepted
- });
- }
- }
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedModules = outdatedModules;
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedDependencies = outdatedDependencies;
-
-
- var moduleOutdatedDependencies;
- return {
- dispose: function () {
- currentUpdateRemovedChunks.forEach(function (chunkId) {
- delete installedChunks[chunkId];
- });
- currentUpdateRemovedChunks = undefined;
-
- var idx;
- var queue = outdatedModules.slice();
- while (queue.length > 0) {
- var moduleId = queue.pop();
- var module = __webpack_require__.c[moduleId];
- if (!module) continue;
-
- var data = {};
-
- // Call dispose handlers
- var disposeHandlers = module.hot._disposeHandlers;
- if (disposeHandlers.length > 0) {
- self.__HMR_UPDATED_RUNTIME__.javascript.disposedModules.push(moduleId);
- }
-
- for (j = 0; j < disposeHandlers.length; j++) {
- disposeHandlers[j].call(null, data);
- }
- __webpack_require__.hmrD[moduleId] = data;
-
- module.hot.active = false;
-
- delete __webpack_require__.c[moduleId];
-
- delete outdatedDependencies[moduleId];
-
- for (j = 0; j < module.children.length; j++) {
- var child = __webpack_require__.c[module.children[j]];
- if (!child) continue;
- idx = child.parents.indexOf(moduleId);
- if (idx >= 0) {
- child.parents.splice(idx, 1);
- }
- }
- }
-
- var dependency;
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- for (j = 0; j < moduleOutdatedDependencies.length; j++) {
- dependency = moduleOutdatedDependencies[j];
- idx = module.children.indexOf(dependency);
- if (idx >= 0) module.children.splice(idx, 1);
- }
- }
- }
- }
- },
- apply: function (reportError) {
- // insert new code
- for (var updateModuleId in appliedUpdate) {
- if (__webpack_require__.o(appliedUpdate, updateModuleId)) {
- __webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedModules.push(updateModuleId);
-
- }
- }
-
- // run new runtime modules
- for (var i = 0; i < currentUpdateRuntime.length; i++) {
-
- currentUpdateRuntime[i](new Proxy(__webpack_require__, {
- set(target, prop, value, receiver) {
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedRuntime.push(`__webpack_require__.${prop}`);
- return Reflect.set(target, prop, value, receiver);
- }
- }));
-
- }
-
- // call accept handlers
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- var module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- var callbacks = [];
- var errorHandlers = [];
- var dependenciesForCallbacks = [];
- for (var j = 0; j < moduleOutdatedDependencies.length; j++) {
- var dependency = moduleOutdatedDependencies[j];
- var acceptCallback = module.hot._acceptedDependencies[dependency];
- var errorHandler = module.hot._acceptedErrorHandlers[dependency];
- if (acceptCallback) {
- if (callbacks.indexOf(acceptCallback) !== -1) continue;
- callbacks.push(acceptCallback);
- errorHandlers.push(errorHandler);
- self.__HMR_UPDATED_RUNTIME__.javascript.acceptedModules.push(dependency);
-
- dependenciesForCallbacks.push(dependency);
- }
- }
- for (var k = 0; k < callbacks.length; k++) {
- try {
- callbacks[k].call(null, moduleOutdatedDependencies);
- } catch (err) {
- if (typeof errorHandlers[k] === "function") {
- try {
- errorHandlers[k](err, {
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k]
- });
- } catch (err2) {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-error-handler-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err2,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err2);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
- }
- }
- }
-
- // Load self accepted modules
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
- var item = outdatedSelfAcceptedModules[o];
- var moduleId = item.module;
- try {
- item.require(moduleId);
- } catch (err) {
- if (typeof item.errorHandler === "function") {
- try {
- item.errorHandler(err, {
- moduleId: moduleId,
- module: __webpack_require__.c[moduleId]
- });
- } catch (err1) {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-error-handler-errored",
- moduleId: moduleId,
- error: err1,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err1);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-errored",
- moduleId: moduleId,
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
-
- return outdatedModules;
- }
- };
-}
-
-__webpack_require__.hmrI.require = function (moduleId, applyHandlers) {
- if (!currentUpdate) {
- currentUpdate = {};
- currentUpdateRuntime = [];
- currentUpdateRemovedChunks = [];
- applyHandlers.push(applyHandler);
- }
- if (!__webpack_require__.o(currentUpdate, moduleId)) {
- currentUpdate[moduleId] = __webpack_require__.m[moduleId];
- }
-};
-
-__webpack_require__.hmrC.require = function (
- chunkIds,
- removedChunks,
- removedModules,
- promises,
- applyHandlers,
- updatedModulesList
-) {
- applyHandlers.push(applyHandler);
- currentUpdateChunks = {};
- currentUpdateRemovedChunks = removedChunks;
- currentUpdate = removedModules.reduce(function (obj, key) {
- obj[key] = false;
- return obj;
- }, {});
- currentUpdateRuntime = [];
- chunkIds.forEach(function (chunkId) {
- if (
- __webpack_require__.o(installedChunks, chunkId) &&
- installedChunks[chunkId] !== undefined
- ) {
- promises.push(loadUpdateChunk(chunkId, updatedModulesList));
- currentUpdateChunks[chunkId] = true;
- } else {
- currentUpdateChunks[chunkId] = false;
- }
- });
- if (__webpack_require__.f) {
- __webpack_require__.f.requireHmr = function (chunkId, promises) {
- if (
- currentUpdateChunks &&
- __webpack_require__.o(currentUpdateChunks, chunkId) &&
- !currentUpdateChunks[chunkId]
- ) {
- promises.push(loadUpdateChunk(chunkId));
- currentUpdateChunks[chunkId] = true;
- }
- };
- }
-};
-__webpack_require__.hmrM = () => {
- return Promise.resolve()
- .then(() => {
- return require("./" + __webpack_require__.hmrF());
- })['catch']((err) => {
- if (err.code !== 'MODULE_NOT_FOUND') throw err;
- });
-};
- __webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-
})();
}
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/default/__snapshot__/rspack/2.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/default/__snapshot__/rspack/2.snap.txt
index 18bea5ce52..9e412d69f2 100644
--- a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/default/__snapshot__/rspack/2.snap.txt
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/default/__snapshot__/rspack/2.snap.txt
@@ -7,7 +7,7 @@
- Bundle: rspack-bundle.js
- Manifest: main.LAST_HASH.css.hot-update.json, size: 1098
- Manifest: main.LAST_HASH.hot-update.json, size: 28
-- Update: main.LAST_HASH.hot-update.js, size: 14842
+- Update: main.LAST_HASH.hot-update.js, size: 1455
## Manifest
@@ -36,7 +36,6 @@
#### Changed Runtime Modules
- webpack/runtime/get_full_hash
-- webpack/runtime/require_chunk_loading
#### Changed Content
```js
@@ -85,479 +84,11 @@ exports.runtime = function(__webpack_require__) {
(() => {
__webpack_require__.h = () => ("CURRENT_HASH")
})();
-// webpack/runtime/require_chunk_loading
+// webpack/runtime/lynx css hot update
(() => {
-var installedChunks = __webpack_require__.hmrS_require = __webpack_require__.hmrS_require || {"main": 1,};
-function loadUpdateChunk(chunkId, updatedModulesList) {
- var update = require("./" + __webpack_require__.hu(chunkId));
- var updatedModules = update.modules;
- var runtime = update.runtime;
- for (var moduleId in updatedModules) {
- if (__webpack_require__.o(updatedModules, moduleId)) {
- currentUpdate[moduleId] = updatedModules[moduleId];
- if (updatedModulesList) updatedModulesList.push(moduleId);
- }
- }
- if (runtime) currentUpdateRuntime.push(runtime);
-}var currentUpdateChunks;
-var currentUpdate;
-var currentUpdateRemovedChunks;
-var currentUpdateRuntime;
-function applyHandler(options) {
- if (__webpack_require__.f) delete __webpack_require__.f.requireHmr;
- currentUpdateChunks = undefined;
- function getAffectedModuleEffects(updateModuleId) {
- var outdatedModules = [updateModuleId];
- var outdatedDependencies = {};
- var queue = outdatedModules.map(function (id) {
- return {
- chain: [id],
- id: id
- };
- });
- while (queue.length > 0) {
- var queueItem = queue.pop();
- var moduleId = queueItem.id;
- var chain = queueItem.chain;
- var module = __webpack_require__.c[moduleId];
- if (
- !module ||
- (module.hot._selfAccepted && !module.hot._selfInvalidated)
- ) {
- continue;
- }
-
- if (module.hot._selfDeclined) {
- return {
- type: "self-declined",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- if (module.hot._main) {
- return {
- type: "unaccepted",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- for (var i = 0; i < module.parents.length; i++) {
- var parentId = module.parents[i];
- var parent = __webpack_require__.c[parentId];
- if (!parent) {
- continue;
- }
- if (parent.hot._declinedDependencies[moduleId]) {
- return {
- type: "declined",
- chain: chain.concat([parentId]),
- moduleId: moduleId,
- parentId: parentId
- };
- }
- if (outdatedModules.indexOf(parentId) !== -1) {
- continue;
- }
- if (parent.hot._acceptedDependencies[moduleId]) {
- if (!outdatedDependencies[parentId]) {
- outdatedDependencies[parentId] = [];
- }
- addAllToSet(outdatedDependencies[parentId], [moduleId]);
- continue;
- }
- delete outdatedDependencies[parentId];
- outdatedModules.push(parentId);
- queue.push({
- chain: chain.concat([parentId]),
- id: parentId
- });
- }
- }
-
- return {
- type: "accepted",
- moduleId: updateModuleId,
- outdatedModules: outdatedModules,
- outdatedDependencies: outdatedDependencies
- };
- }
-
- function addAllToSet(a, b) {
- for (var i = 0; i < b.length; i++) {
- var item = b[i];
- if (a.indexOf(item) === -1) a.push(item);
- }
- }
-
- var outdatedDependencies = {};
- var outdatedModules = [];
- var appliedUpdate = {};
-
- var warnUnexpectedRequire = function warnUnexpectedRequire(module) {
- console.warn(
- "[HMR] unexpected require(" + module.id + ") to disposed module"
- );
- };
-
- for (var moduleId in currentUpdate) {
- if (__webpack_require__.o(currentUpdate, moduleId)) {
- var newModuleFactory = currentUpdate[moduleId];
- var result = newModuleFactory ? getAffectedModuleEffects(moduleId) : {
- type: "disposed",
- moduleId: moduleId
- };
- var abortError = false;
- var doApply = false;
- var doDispose = false;
- var chainInfo = "";
- if (result.chain) {
- chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
- }
- switch (result.type) {
- case "self-declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of self decline: " + result.moduleId + chainInfo
- );
- break;
- case "declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of declined dependency: " +
- result.moduleId +
- " in " +
- result.parentId +
- chainInfo
- );
- break;
- case "unaccepted":
- if (options.onUnaccepted) options.onUnaccepted(result);
- if (!options.ignoreUnaccepted)
- abortError = new Error(
- "Aborted because " + moduleId + " is not accepted" + chainInfo
- );
- break;
- case "accepted":
- if (options.onAccepted) options.onAccepted(result);
- doApply = true;
- break;
- case "disposed":
- if (options.onDisposed) options.onDisposed(result);
- doDispose = true;
- break;
- default:
- throw new Error("Unexception type " + result.type);
- }
- if (abortError) {
- return {
- error: abortError
- };
- }
- if (doApply) {
- appliedUpdate[moduleId] = newModuleFactory;
- addAllToSet(outdatedModules, result.outdatedModules);
- for (moduleId in result.outdatedDependencies) {
- if (__webpack_require__.o(result.outdatedDependencies, moduleId)) {
- if (!outdatedDependencies[moduleId])
- outdatedDependencies[moduleId] = [];
- addAllToSet(
- outdatedDependencies[moduleId],
- result.outdatedDependencies[moduleId]
- );
- }
- }
- }
- if (doDispose) {
- addAllToSet(outdatedModules, [result.moduleId]);
- appliedUpdate[moduleId] = warnUnexpectedRequire;
- }
- }
- }
- currentUpdate = undefined;
-
- var outdatedSelfAcceptedModules = [];
- for (var j = 0; j < outdatedModules.length; j++) {
- var outdatedModuleId = outdatedModules[j];
- var module = __webpack_require__.c[outdatedModuleId];
- if (
- module &&
- (module.hot._selfAccepted || module.hot._main) &&
- // removed self-accepted modules should not be required
- appliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&
- // when called invalidate self-accepting is not possible
- !module.hot._selfInvalidated
- ) {
- outdatedSelfAcceptedModules.push({
- module: outdatedModuleId,
- require: module.hot._requireSelf,
- errorHandler: module.hot._selfAccepted
- });
- }
- }
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedModules = outdatedModules;
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedDependencies = outdatedDependencies;
-
-
- var moduleOutdatedDependencies;
- return {
- dispose: function () {
- currentUpdateRemovedChunks.forEach(function (chunkId) {
- delete installedChunks[chunkId];
- });
- currentUpdateRemovedChunks = undefined;
-
- var idx;
- var queue = outdatedModules.slice();
- while (queue.length > 0) {
- var moduleId = queue.pop();
- var module = __webpack_require__.c[moduleId];
- if (!module) continue;
-
- var data = {};
-
- // Call dispose handlers
- var disposeHandlers = module.hot._disposeHandlers;
- if (disposeHandlers.length > 0) {
- self.__HMR_UPDATED_RUNTIME__.javascript.disposedModules.push(moduleId);
- }
-
- for (j = 0; j < disposeHandlers.length; j++) {
- disposeHandlers[j].call(null, data);
- }
- __webpack_require__.hmrD[moduleId] = data;
-
- module.hot.active = false;
-
- delete __webpack_require__.c[moduleId];
-
- delete outdatedDependencies[moduleId];
-
- for (j = 0; j < module.children.length; j++) {
- var child = __webpack_require__.c[module.children[j]];
- if (!child) continue;
- idx = child.parents.indexOf(moduleId);
- if (idx >= 0) {
- child.parents.splice(idx, 1);
- }
- }
- }
-
- var dependency;
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- for (j = 0; j < moduleOutdatedDependencies.length; j++) {
- dependency = moduleOutdatedDependencies[j];
- idx = module.children.indexOf(dependency);
- if (idx >= 0) module.children.splice(idx, 1);
- }
- }
- }
- }
- },
- apply: function (reportError) {
- // insert new code
- for (var updateModuleId in appliedUpdate) {
- if (__webpack_require__.o(appliedUpdate, updateModuleId)) {
- __webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedModules.push(updateModuleId);
-
- }
- }
-
- // run new runtime modules
- for (var i = 0; i < currentUpdateRuntime.length; i++) {
-
- currentUpdateRuntime[i](new Proxy(__webpack_require__, {
- set(target, prop, value, receiver) {
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedRuntime.push(`__webpack_require__.${prop}`);
- return Reflect.set(target, prop, value, receiver);
- }
- }));
-
- }
-
- // call accept handlers
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- var module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- var callbacks = [];
- var errorHandlers = [];
- var dependenciesForCallbacks = [];
- for (var j = 0; j < moduleOutdatedDependencies.length; j++) {
- var dependency = moduleOutdatedDependencies[j];
- var acceptCallback = module.hot._acceptedDependencies[dependency];
- var errorHandler = module.hot._acceptedErrorHandlers[dependency];
- if (acceptCallback) {
- if (callbacks.indexOf(acceptCallback) !== -1) continue;
- callbacks.push(acceptCallback);
- errorHandlers.push(errorHandler);
- self.__HMR_UPDATED_RUNTIME__.javascript.acceptedModules.push(dependency);
-
- dependenciesForCallbacks.push(dependency);
- }
- }
- for (var k = 0; k < callbacks.length; k++) {
- try {
- callbacks[k].call(null, moduleOutdatedDependencies);
- } catch (err) {
- if (typeof errorHandlers[k] === "function") {
- try {
- errorHandlers[k](err, {
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k]
- });
- } catch (err2) {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-error-handler-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err2,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err2);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
- }
- }
- }
-
- // Load self accepted modules
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
- var item = outdatedSelfAcceptedModules[o];
- var moduleId = item.module;
- try {
- item.require(moduleId);
- } catch (err) {
- if (typeof item.errorHandler === "function") {
- try {
- item.errorHandler(err, {
- moduleId: moduleId,
- module: __webpack_require__.c[moduleId]
- });
- } catch (err1) {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-error-handler-errored",
- moduleId: moduleId,
- error: err1,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err1);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-errored",
- moduleId: moduleId,
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
-
- return outdatedModules;
- }
- };
-}
-__webpack_require__.hmrI.require = function (moduleId, applyHandlers) {
- if (!currentUpdate) {
- currentUpdate = {};
- currentUpdateRuntime = [];
- currentUpdateRemovedChunks = [];
- applyHandlers.push(applyHandler);
- }
- if (!__webpack_require__.o(currentUpdate, moduleId)) {
- currentUpdate[moduleId] = __webpack_require__.m[moduleId];
- }
-};
+__webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-__webpack_require__.hmrC.require = function (
- chunkIds,
- removedChunks,
- removedModules,
- promises,
- applyHandlers,
- updatedModulesList
-) {
- applyHandlers.push(applyHandler);
- currentUpdateChunks = {};
- currentUpdateRemovedChunks = removedChunks;
- currentUpdate = removedModules.reduce(function (obj, key) {
- obj[key] = false;
- return obj;
- }, {});
- currentUpdateRuntime = [];
- chunkIds.forEach(function (chunkId) {
- if (
- __webpack_require__.o(installedChunks, chunkId) &&
- installedChunks[chunkId] !== undefined
- ) {
- promises.push(loadUpdateChunk(chunkId, updatedModulesList));
- currentUpdateChunks[chunkId] = true;
- } else {
- currentUpdateChunks[chunkId] = false;
- }
- });
- if (__webpack_require__.f) {
- __webpack_require__.f.requireHmr = function (chunkId, promises) {
- if (
- currentUpdateChunks &&
- __webpack_require__.o(currentUpdateChunks, chunkId) &&
- !currentUpdateChunks[chunkId]
- ) {
- promises.push(loadUpdateChunk(chunkId));
- currentUpdateChunks[chunkId] = true;
- }
- };
- }
-};
-__webpack_require__.hmrM = () => {
- return Promise.resolve()
- .then(() => {
- return require("./" + __webpack_require__.hmrF());
- })['catch']((err) => {
- if (err.code !== 'MODULE_NOT_FOUND') throw err;
- });
-};
- __webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-
})();
}
@@ -598,8 +129,6 @@ Updated Modules:
Updated Runtime:
- `__webpack_require__.cssHotUpdateList`
- `__webpack_require__.h`
-- `__webpack_require__.hmrM`
-- `__webpack_require__.hmrS_require`
#### Callback
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/filename/__snapshot__/rspack/1.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/filename/__snapshot__/rspack/1.snap.txt
index 5e158cc348..693e3f5d3b 100644
--- a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/filename/__snapshot__/rspack/1.snap.txt
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/filename/__snapshot__/rspack/1.snap.txt
@@ -7,7 +7,7 @@
- Bundle: rspack-bundle.js
- Manifest: main.LAST_HASH.hot-update.json, size: 28
- Manifest: main/main.LAST_HASH.css.hot-update.json, size: 1098
-- Update: main.LAST_HASH.hot-update.js, size: 14851
+- Update: main.LAST_HASH.hot-update.js, size: 1464
## Manifest
@@ -36,7 +36,6 @@
#### Changed Runtime Modules
- webpack/runtime/get_full_hash
-- webpack/runtime/require_chunk_loading
#### Changed Content
```js
@@ -85,479 +84,11 @@ exports.runtime = function(__webpack_require__) {
(() => {
__webpack_require__.h = () => ("CURRENT_HASH")
})();
-// webpack/runtime/require_chunk_loading
+// webpack/runtime/lynx css hot update
(() => {
-var installedChunks = __webpack_require__.hmrS_require = __webpack_require__.hmrS_require || {"main": 1,};
-function loadUpdateChunk(chunkId, updatedModulesList) {
- var update = require("./" + __webpack_require__.hu(chunkId));
- var updatedModules = update.modules;
- var runtime = update.runtime;
- for (var moduleId in updatedModules) {
- if (__webpack_require__.o(updatedModules, moduleId)) {
- currentUpdate[moduleId] = updatedModules[moduleId];
- if (updatedModulesList) updatedModulesList.push(moduleId);
- }
- }
- if (runtime) currentUpdateRuntime.push(runtime);
-}var currentUpdateChunks;
-var currentUpdate;
-var currentUpdateRemovedChunks;
-var currentUpdateRuntime;
-function applyHandler(options) {
- if (__webpack_require__.f) delete __webpack_require__.f.requireHmr;
- currentUpdateChunks = undefined;
- function getAffectedModuleEffects(updateModuleId) {
- var outdatedModules = [updateModuleId];
- var outdatedDependencies = {};
- var queue = outdatedModules.map(function (id) {
- return {
- chain: [id],
- id: id
- };
- });
- while (queue.length > 0) {
- var queueItem = queue.pop();
- var moduleId = queueItem.id;
- var chain = queueItem.chain;
- var module = __webpack_require__.c[moduleId];
- if (
- !module ||
- (module.hot._selfAccepted && !module.hot._selfInvalidated)
- ) {
- continue;
- }
- if (module.hot._selfDeclined) {
- return {
- type: "self-declined",
- chain: chain,
- moduleId: moduleId
- };
- }
+__webpack_require__.cssHotUpdateList = [["main","main/main.LAST_HASH.css.hot-update.json"]];
- if (module.hot._main) {
- return {
- type: "unaccepted",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- for (var i = 0; i < module.parents.length; i++) {
- var parentId = module.parents[i];
- var parent = __webpack_require__.c[parentId];
- if (!parent) {
- continue;
- }
- if (parent.hot._declinedDependencies[moduleId]) {
- return {
- type: "declined",
- chain: chain.concat([parentId]),
- moduleId: moduleId,
- parentId: parentId
- };
- }
- if (outdatedModules.indexOf(parentId) !== -1) {
- continue;
- }
- if (parent.hot._acceptedDependencies[moduleId]) {
- if (!outdatedDependencies[parentId]) {
- outdatedDependencies[parentId] = [];
- }
- addAllToSet(outdatedDependencies[parentId], [moduleId]);
- continue;
- }
- delete outdatedDependencies[parentId];
- outdatedModules.push(parentId);
- queue.push({
- chain: chain.concat([parentId]),
- id: parentId
- });
- }
- }
-
- return {
- type: "accepted",
- moduleId: updateModuleId,
- outdatedModules: outdatedModules,
- outdatedDependencies: outdatedDependencies
- };
- }
-
- function addAllToSet(a, b) {
- for (var i = 0; i < b.length; i++) {
- var item = b[i];
- if (a.indexOf(item) === -1) a.push(item);
- }
- }
-
- var outdatedDependencies = {};
- var outdatedModules = [];
- var appliedUpdate = {};
-
- var warnUnexpectedRequire = function warnUnexpectedRequire(module) {
- console.warn(
- "[HMR] unexpected require(" + module.id + ") to disposed module"
- );
- };
-
- for (var moduleId in currentUpdate) {
- if (__webpack_require__.o(currentUpdate, moduleId)) {
- var newModuleFactory = currentUpdate[moduleId];
- var result = newModuleFactory ? getAffectedModuleEffects(moduleId) : {
- type: "disposed",
- moduleId: moduleId
- };
- var abortError = false;
- var doApply = false;
- var doDispose = false;
- var chainInfo = "";
- if (result.chain) {
- chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
- }
- switch (result.type) {
- case "self-declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of self decline: " + result.moduleId + chainInfo
- );
- break;
- case "declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of declined dependency: " +
- result.moduleId +
- " in " +
- result.parentId +
- chainInfo
- );
- break;
- case "unaccepted":
- if (options.onUnaccepted) options.onUnaccepted(result);
- if (!options.ignoreUnaccepted)
- abortError = new Error(
- "Aborted because " + moduleId + " is not accepted" + chainInfo
- );
- break;
- case "accepted":
- if (options.onAccepted) options.onAccepted(result);
- doApply = true;
- break;
- case "disposed":
- if (options.onDisposed) options.onDisposed(result);
- doDispose = true;
- break;
- default:
- throw new Error("Unexception type " + result.type);
- }
- if (abortError) {
- return {
- error: abortError
- };
- }
- if (doApply) {
- appliedUpdate[moduleId] = newModuleFactory;
- addAllToSet(outdatedModules, result.outdatedModules);
- for (moduleId in result.outdatedDependencies) {
- if (__webpack_require__.o(result.outdatedDependencies, moduleId)) {
- if (!outdatedDependencies[moduleId])
- outdatedDependencies[moduleId] = [];
- addAllToSet(
- outdatedDependencies[moduleId],
- result.outdatedDependencies[moduleId]
- );
- }
- }
- }
- if (doDispose) {
- addAllToSet(outdatedModules, [result.moduleId]);
- appliedUpdate[moduleId] = warnUnexpectedRequire;
- }
- }
- }
- currentUpdate = undefined;
-
- var outdatedSelfAcceptedModules = [];
- for (var j = 0; j < outdatedModules.length; j++) {
- var outdatedModuleId = outdatedModules[j];
- var module = __webpack_require__.c[outdatedModuleId];
- if (
- module &&
- (module.hot._selfAccepted || module.hot._main) &&
- // removed self-accepted modules should not be required
- appliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&
- // when called invalidate self-accepting is not possible
- !module.hot._selfInvalidated
- ) {
- outdatedSelfAcceptedModules.push({
- module: outdatedModuleId,
- require: module.hot._requireSelf,
- errorHandler: module.hot._selfAccepted
- });
- }
- }
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedModules = outdatedModules;
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedDependencies = outdatedDependencies;
-
-
- var moduleOutdatedDependencies;
- return {
- dispose: function () {
- currentUpdateRemovedChunks.forEach(function (chunkId) {
- delete installedChunks[chunkId];
- });
- currentUpdateRemovedChunks = undefined;
-
- var idx;
- var queue = outdatedModules.slice();
- while (queue.length > 0) {
- var moduleId = queue.pop();
- var module = __webpack_require__.c[moduleId];
- if (!module) continue;
-
- var data = {};
-
- // Call dispose handlers
- var disposeHandlers = module.hot._disposeHandlers;
- if (disposeHandlers.length > 0) {
- self.__HMR_UPDATED_RUNTIME__.javascript.disposedModules.push(moduleId);
- }
-
- for (j = 0; j < disposeHandlers.length; j++) {
- disposeHandlers[j].call(null, data);
- }
- __webpack_require__.hmrD[moduleId] = data;
-
- module.hot.active = false;
-
- delete __webpack_require__.c[moduleId];
-
- delete outdatedDependencies[moduleId];
-
- for (j = 0; j < module.children.length; j++) {
- var child = __webpack_require__.c[module.children[j]];
- if (!child) continue;
- idx = child.parents.indexOf(moduleId);
- if (idx >= 0) {
- child.parents.splice(idx, 1);
- }
- }
- }
-
- var dependency;
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- for (j = 0; j < moduleOutdatedDependencies.length; j++) {
- dependency = moduleOutdatedDependencies[j];
- idx = module.children.indexOf(dependency);
- if (idx >= 0) module.children.splice(idx, 1);
- }
- }
- }
- }
- },
- apply: function (reportError) {
- // insert new code
- for (var updateModuleId in appliedUpdate) {
- if (__webpack_require__.o(appliedUpdate, updateModuleId)) {
- __webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedModules.push(updateModuleId);
-
- }
- }
-
- // run new runtime modules
- for (var i = 0; i < currentUpdateRuntime.length; i++) {
-
- currentUpdateRuntime[i](new Proxy(__webpack_require__, {
- set(target, prop, value, receiver) {
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedRuntime.push(`__webpack_require__.${prop}`);
- return Reflect.set(target, prop, value, receiver);
- }
- }));
-
- }
-
- // call accept handlers
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- var module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- var callbacks = [];
- var errorHandlers = [];
- var dependenciesForCallbacks = [];
- for (var j = 0; j < moduleOutdatedDependencies.length; j++) {
- var dependency = moduleOutdatedDependencies[j];
- var acceptCallback = module.hot._acceptedDependencies[dependency];
- var errorHandler = module.hot._acceptedErrorHandlers[dependency];
- if (acceptCallback) {
- if (callbacks.indexOf(acceptCallback) !== -1) continue;
- callbacks.push(acceptCallback);
- errorHandlers.push(errorHandler);
- self.__HMR_UPDATED_RUNTIME__.javascript.acceptedModules.push(dependency);
-
- dependenciesForCallbacks.push(dependency);
- }
- }
- for (var k = 0; k < callbacks.length; k++) {
- try {
- callbacks[k].call(null, moduleOutdatedDependencies);
- } catch (err) {
- if (typeof errorHandlers[k] === "function") {
- try {
- errorHandlers[k](err, {
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k]
- });
- } catch (err2) {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-error-handler-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err2,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err2);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
- }
- }
- }
-
- // Load self accepted modules
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
- var item = outdatedSelfAcceptedModules[o];
- var moduleId = item.module;
- try {
- item.require(moduleId);
- } catch (err) {
- if (typeof item.errorHandler === "function") {
- try {
- item.errorHandler(err, {
- moduleId: moduleId,
- module: __webpack_require__.c[moduleId]
- });
- } catch (err1) {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-error-handler-errored",
- moduleId: moduleId,
- error: err1,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err1);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-errored",
- moduleId: moduleId,
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
-
- return outdatedModules;
- }
- };
-}
-
-__webpack_require__.hmrI.require = function (moduleId, applyHandlers) {
- if (!currentUpdate) {
- currentUpdate = {};
- currentUpdateRuntime = [];
- currentUpdateRemovedChunks = [];
- applyHandlers.push(applyHandler);
- }
- if (!__webpack_require__.o(currentUpdate, moduleId)) {
- currentUpdate[moduleId] = __webpack_require__.m[moduleId];
- }
-};
-
-__webpack_require__.hmrC.require = function (
- chunkIds,
- removedChunks,
- removedModules,
- promises,
- applyHandlers,
- updatedModulesList
-) {
- applyHandlers.push(applyHandler);
- currentUpdateChunks = {};
- currentUpdateRemovedChunks = removedChunks;
- currentUpdate = removedModules.reduce(function (obj, key) {
- obj[key] = false;
- return obj;
- }, {});
- currentUpdateRuntime = [];
- chunkIds.forEach(function (chunkId) {
- if (
- __webpack_require__.o(installedChunks, chunkId) &&
- installedChunks[chunkId] !== undefined
- ) {
- promises.push(loadUpdateChunk(chunkId, updatedModulesList));
- currentUpdateChunks[chunkId] = true;
- } else {
- currentUpdateChunks[chunkId] = false;
- }
- });
- if (__webpack_require__.f) {
- __webpack_require__.f.requireHmr = function (chunkId, promises) {
- if (
- currentUpdateChunks &&
- __webpack_require__.o(currentUpdateChunks, chunkId) &&
- !currentUpdateChunks[chunkId]
- ) {
- promises.push(loadUpdateChunk(chunkId));
- currentUpdateChunks[chunkId] = true;
- }
- };
- }
-};
-__webpack_require__.hmrM = () => {
- return Promise.resolve()
- .then(() => {
- return require("./" + __webpack_require__.hmrF());
- })['catch']((err) => {
- if (err.code !== 'MODULE_NOT_FOUND') throw err;
- });
-};
- __webpack_require__.cssHotUpdateList = [["main","main/main.LAST_HASH.css.hot-update.json"]];
-
})();
}
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/filename/__snapshot__/rspack/2.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/filename/__snapshot__/rspack/2.snap.txt
index 32ca3f744f..446269ec4b 100644
--- a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/filename/__snapshot__/rspack/2.snap.txt
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/filename/__snapshot__/rspack/2.snap.txt
@@ -7,7 +7,7 @@
- Bundle: rspack-bundle.js
- Manifest: main.LAST_HASH.hot-update.json, size: 28
- Manifest: main/main.LAST_HASH.css.hot-update.json, size: 1098
-- Update: main.LAST_HASH.hot-update.js, size: 14851
+- Update: main.LAST_HASH.hot-update.js, size: 1464
## Manifest
@@ -36,7 +36,6 @@
#### Changed Runtime Modules
- webpack/runtime/get_full_hash
-- webpack/runtime/require_chunk_loading
#### Changed Content
```js
@@ -85,479 +84,11 @@ exports.runtime = function(__webpack_require__) {
(() => {
__webpack_require__.h = () => ("CURRENT_HASH")
})();
-// webpack/runtime/require_chunk_loading
+// webpack/runtime/lynx css hot update
(() => {
-var installedChunks = __webpack_require__.hmrS_require = __webpack_require__.hmrS_require || {"main": 1,};
-function loadUpdateChunk(chunkId, updatedModulesList) {
- var update = require("./" + __webpack_require__.hu(chunkId));
- var updatedModules = update.modules;
- var runtime = update.runtime;
- for (var moduleId in updatedModules) {
- if (__webpack_require__.o(updatedModules, moduleId)) {
- currentUpdate[moduleId] = updatedModules[moduleId];
- if (updatedModulesList) updatedModulesList.push(moduleId);
- }
- }
- if (runtime) currentUpdateRuntime.push(runtime);
-}var currentUpdateChunks;
-var currentUpdate;
-var currentUpdateRemovedChunks;
-var currentUpdateRuntime;
-function applyHandler(options) {
- if (__webpack_require__.f) delete __webpack_require__.f.requireHmr;
- currentUpdateChunks = undefined;
- function getAffectedModuleEffects(updateModuleId) {
- var outdatedModules = [updateModuleId];
- var outdatedDependencies = {};
- var queue = outdatedModules.map(function (id) {
- return {
- chain: [id],
- id: id
- };
- });
- while (queue.length > 0) {
- var queueItem = queue.pop();
- var moduleId = queueItem.id;
- var chain = queueItem.chain;
- var module = __webpack_require__.c[moduleId];
- if (
- !module ||
- (module.hot._selfAccepted && !module.hot._selfInvalidated)
- ) {
- continue;
- }
-
- if (module.hot._selfDeclined) {
- return {
- type: "self-declined",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- if (module.hot._main) {
- return {
- type: "unaccepted",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- for (var i = 0; i < module.parents.length; i++) {
- var parentId = module.parents[i];
- var parent = __webpack_require__.c[parentId];
- if (!parent) {
- continue;
- }
- if (parent.hot._declinedDependencies[moduleId]) {
- return {
- type: "declined",
- chain: chain.concat([parentId]),
- moduleId: moduleId,
- parentId: parentId
- };
- }
- if (outdatedModules.indexOf(parentId) !== -1) {
- continue;
- }
- if (parent.hot._acceptedDependencies[moduleId]) {
- if (!outdatedDependencies[parentId]) {
- outdatedDependencies[parentId] = [];
- }
- addAllToSet(outdatedDependencies[parentId], [moduleId]);
- continue;
- }
- delete outdatedDependencies[parentId];
- outdatedModules.push(parentId);
- queue.push({
- chain: chain.concat([parentId]),
- id: parentId
- });
- }
- }
-
- return {
- type: "accepted",
- moduleId: updateModuleId,
- outdatedModules: outdatedModules,
- outdatedDependencies: outdatedDependencies
- };
- }
-
- function addAllToSet(a, b) {
- for (var i = 0; i < b.length; i++) {
- var item = b[i];
- if (a.indexOf(item) === -1) a.push(item);
- }
- }
-
- var outdatedDependencies = {};
- var outdatedModules = [];
- var appliedUpdate = {};
-
- var warnUnexpectedRequire = function warnUnexpectedRequire(module) {
- console.warn(
- "[HMR] unexpected require(" + module.id + ") to disposed module"
- );
- };
-
- for (var moduleId in currentUpdate) {
- if (__webpack_require__.o(currentUpdate, moduleId)) {
- var newModuleFactory = currentUpdate[moduleId];
- var result = newModuleFactory ? getAffectedModuleEffects(moduleId) : {
- type: "disposed",
- moduleId: moduleId
- };
- var abortError = false;
- var doApply = false;
- var doDispose = false;
- var chainInfo = "";
- if (result.chain) {
- chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
- }
- switch (result.type) {
- case "self-declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of self decline: " + result.moduleId + chainInfo
- );
- break;
- case "declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of declined dependency: " +
- result.moduleId +
- " in " +
- result.parentId +
- chainInfo
- );
- break;
- case "unaccepted":
- if (options.onUnaccepted) options.onUnaccepted(result);
- if (!options.ignoreUnaccepted)
- abortError = new Error(
- "Aborted because " + moduleId + " is not accepted" + chainInfo
- );
- break;
- case "accepted":
- if (options.onAccepted) options.onAccepted(result);
- doApply = true;
- break;
- case "disposed":
- if (options.onDisposed) options.onDisposed(result);
- doDispose = true;
- break;
- default:
- throw new Error("Unexception type " + result.type);
- }
- if (abortError) {
- return {
- error: abortError
- };
- }
- if (doApply) {
- appliedUpdate[moduleId] = newModuleFactory;
- addAllToSet(outdatedModules, result.outdatedModules);
- for (moduleId in result.outdatedDependencies) {
- if (__webpack_require__.o(result.outdatedDependencies, moduleId)) {
- if (!outdatedDependencies[moduleId])
- outdatedDependencies[moduleId] = [];
- addAllToSet(
- outdatedDependencies[moduleId],
- result.outdatedDependencies[moduleId]
- );
- }
- }
- }
- if (doDispose) {
- addAllToSet(outdatedModules, [result.moduleId]);
- appliedUpdate[moduleId] = warnUnexpectedRequire;
- }
- }
- }
- currentUpdate = undefined;
-
- var outdatedSelfAcceptedModules = [];
- for (var j = 0; j < outdatedModules.length; j++) {
- var outdatedModuleId = outdatedModules[j];
- var module = __webpack_require__.c[outdatedModuleId];
- if (
- module &&
- (module.hot._selfAccepted || module.hot._main) &&
- // removed self-accepted modules should not be required
- appliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&
- // when called invalidate self-accepting is not possible
- !module.hot._selfInvalidated
- ) {
- outdatedSelfAcceptedModules.push({
- module: outdatedModuleId,
- require: module.hot._requireSelf,
- errorHandler: module.hot._selfAccepted
- });
- }
- }
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedModules = outdatedModules;
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedDependencies = outdatedDependencies;
-
-
- var moduleOutdatedDependencies;
- return {
- dispose: function () {
- currentUpdateRemovedChunks.forEach(function (chunkId) {
- delete installedChunks[chunkId];
- });
- currentUpdateRemovedChunks = undefined;
-
- var idx;
- var queue = outdatedModules.slice();
- while (queue.length > 0) {
- var moduleId = queue.pop();
- var module = __webpack_require__.c[moduleId];
- if (!module) continue;
-
- var data = {};
-
- // Call dispose handlers
- var disposeHandlers = module.hot._disposeHandlers;
- if (disposeHandlers.length > 0) {
- self.__HMR_UPDATED_RUNTIME__.javascript.disposedModules.push(moduleId);
- }
-
- for (j = 0; j < disposeHandlers.length; j++) {
- disposeHandlers[j].call(null, data);
- }
- __webpack_require__.hmrD[moduleId] = data;
-
- module.hot.active = false;
-
- delete __webpack_require__.c[moduleId];
-
- delete outdatedDependencies[moduleId];
-
- for (j = 0; j < module.children.length; j++) {
- var child = __webpack_require__.c[module.children[j]];
- if (!child) continue;
- idx = child.parents.indexOf(moduleId);
- if (idx >= 0) {
- child.parents.splice(idx, 1);
- }
- }
- }
-
- var dependency;
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- for (j = 0; j < moduleOutdatedDependencies.length; j++) {
- dependency = moduleOutdatedDependencies[j];
- idx = module.children.indexOf(dependency);
- if (idx >= 0) module.children.splice(idx, 1);
- }
- }
- }
- }
- },
- apply: function (reportError) {
- // insert new code
- for (var updateModuleId in appliedUpdate) {
- if (__webpack_require__.o(appliedUpdate, updateModuleId)) {
- __webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedModules.push(updateModuleId);
-
- }
- }
-
- // run new runtime modules
- for (var i = 0; i < currentUpdateRuntime.length; i++) {
-
- currentUpdateRuntime[i](new Proxy(__webpack_require__, {
- set(target, prop, value, receiver) {
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedRuntime.push(`__webpack_require__.${prop}`);
- return Reflect.set(target, prop, value, receiver);
- }
- }));
-
- }
-
- // call accept handlers
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- var module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- var callbacks = [];
- var errorHandlers = [];
- var dependenciesForCallbacks = [];
- for (var j = 0; j < moduleOutdatedDependencies.length; j++) {
- var dependency = moduleOutdatedDependencies[j];
- var acceptCallback = module.hot._acceptedDependencies[dependency];
- var errorHandler = module.hot._acceptedErrorHandlers[dependency];
- if (acceptCallback) {
- if (callbacks.indexOf(acceptCallback) !== -1) continue;
- callbacks.push(acceptCallback);
- errorHandlers.push(errorHandler);
- self.__HMR_UPDATED_RUNTIME__.javascript.acceptedModules.push(dependency);
-
- dependenciesForCallbacks.push(dependency);
- }
- }
- for (var k = 0; k < callbacks.length; k++) {
- try {
- callbacks[k].call(null, moduleOutdatedDependencies);
- } catch (err) {
- if (typeof errorHandlers[k] === "function") {
- try {
- errorHandlers[k](err, {
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k]
- });
- } catch (err2) {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-error-handler-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err2,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err2);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
- }
- }
- }
-
- // Load self accepted modules
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
- var item = outdatedSelfAcceptedModules[o];
- var moduleId = item.module;
- try {
- item.require(moduleId);
- } catch (err) {
- if (typeof item.errorHandler === "function") {
- try {
- item.errorHandler(err, {
- moduleId: moduleId,
- module: __webpack_require__.c[moduleId]
- });
- } catch (err1) {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-error-handler-errored",
- moduleId: moduleId,
- error: err1,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err1);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-errored",
- moduleId: moduleId,
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
-
- return outdatedModules;
- }
- };
-}
-__webpack_require__.hmrI.require = function (moduleId, applyHandlers) {
- if (!currentUpdate) {
- currentUpdate = {};
- currentUpdateRuntime = [];
- currentUpdateRemovedChunks = [];
- applyHandlers.push(applyHandler);
- }
- if (!__webpack_require__.o(currentUpdate, moduleId)) {
- currentUpdate[moduleId] = __webpack_require__.m[moduleId];
- }
-};
+__webpack_require__.cssHotUpdateList = [["main","main/main.LAST_HASH.css.hot-update.json"]];
-__webpack_require__.hmrC.require = function (
- chunkIds,
- removedChunks,
- removedModules,
- promises,
- applyHandlers,
- updatedModulesList
-) {
- applyHandlers.push(applyHandler);
- currentUpdateChunks = {};
- currentUpdateRemovedChunks = removedChunks;
- currentUpdate = removedModules.reduce(function (obj, key) {
- obj[key] = false;
- return obj;
- }, {});
- currentUpdateRuntime = [];
- chunkIds.forEach(function (chunkId) {
- if (
- __webpack_require__.o(installedChunks, chunkId) &&
- installedChunks[chunkId] !== undefined
- ) {
- promises.push(loadUpdateChunk(chunkId, updatedModulesList));
- currentUpdateChunks[chunkId] = true;
- } else {
- currentUpdateChunks[chunkId] = false;
- }
- });
- if (__webpack_require__.f) {
- __webpack_require__.f.requireHmr = function (chunkId, promises) {
- if (
- currentUpdateChunks &&
- __webpack_require__.o(currentUpdateChunks, chunkId) &&
- !currentUpdateChunks[chunkId]
- ) {
- promises.push(loadUpdateChunk(chunkId));
- currentUpdateChunks[chunkId] = true;
- }
- };
- }
-};
-__webpack_require__.hmrM = () => {
- return Promise.resolve()
- .then(() => {
- return require("./" + __webpack_require__.hmrF());
- })['catch']((err) => {
- if (err.code !== 'MODULE_NOT_FOUND') throw err;
- });
-};
- __webpack_require__.cssHotUpdateList = [["main","main/main.LAST_HASH.css.hot-update.json"]];
-
})();
}
@@ -598,8 +129,6 @@ Updated Modules:
Updated Runtime:
- `__webpack_require__.cssHotUpdateList`
- `__webpack_require__.h`
-- `__webpack_require__.hmrM`
-- `__webpack_require__.hmrS_require`
#### Callback
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/__snapshot__/rspack/0.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/__snapshot__/rspack/0.snap.txt
new file mode 100644
index 0000000000..06063644ac
--- /dev/null
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/__snapshot__/rspack/0.snap.txt
@@ -0,0 +1,19 @@
+# Case nested - rspack: Step 0
+
+## Changed Files
+
+
+## Asset Files
+- Bundle: rspack-bundle.js
+- Manifest: pages/main/pages/main.css.hot-update.json, size: 1098
+
+## Manifest
+
+### pages/main/pages/main.css.hot-update.json
+
+```json
+{"content":"eyJjb21waWxlck9wdGlvbnMiOnsiZW5hYmxlRmliZXJBcmNoIjp0cnVlLCJ1c2VMZXB1c05HIjp0cnVlLCJidW5kbGVNb2R1bGVNb2RlIjoiUmV0dXJuQnlGdW5jdGlvbiIsImVuYWJsZUNTU1NlbGVjdG9yIjp0cnVlLCJlbmFibGVDU1NJbnZhbGlkYXRpb24iOnRydWUsInRhcmdldFNka1ZlcnNpb24iOiIzLjIifSwic291cmNlQ29udGVudCI6eyJhcHBUeXBlIjoiY2FyZCIsImNvbmZpZyI6eyJsZXB1c1N0cmljdCI6dHJ1ZSwiZW5hYmxlUmVtb3ZlQ1NTU2NvcGUiOmZhbHNlfXXsImNzcyI6eyJjc3NNYXAiOnsiMCI6WXsidHlwZSI6IlN0eWxlUnVsZSIsInN0eWxlIjpbeyJuYW1lIjoiYXsb3IiLCJ2YWx1ZSI6IlwicmVkXCIiLCJrZXlMb2MiOnsibGluZSI6MywiYXsdW1uIjo0Mzl9LCJ2YWxMb2MiOnsibGluZSI6MywiYXsdW1uIjo0NDZ9fVXsInNlbGVjdG9yVGV4dCI6eyJ2YWx1ZSI6IiXsU0NaY0dvNFZTNDg0ajhCIiwibG9jIjp7ImxpbmUiOjMsImNvbHVtbiI6NDMzfXXsInZhcmlhYmxlcyI6e319LHsidHlwZSI6IlN0eWxlUnVsZSIsInN0eWxlIjpbeyJuYW1lIjoiYmFja2dyb3VuZC1jb2xvciIsInZhbHVlIjoiYmxhYXsiLCJrZXlMb2MiOnsibGluZSI6NSwiYXsdW1uIjo0NDl9LCJ2YWxMb2MiOnsibGluZSI6NSwiYXsdW1uIjo0NTZ9fVXsInNlbGVjdG9yVGV4dCI6eyJ2YWx1ZSI6Ii5FYUFHYkM4N0xBME5DSUlSIiwibG9jIjp7ImxpbmUiOjUsImNvbHVtbiI6NDMyfXXsInZhcmlhYmxlcyI6e319XXXsImNzc1NvdXJjZSI6eyIwIjoiL2Nzc0lkLzAuY3NzInXsImNvbnRlbnRNYXAiOnt9fX0=","deps":{"0":[]}}
+```
+
+
+## Update
\ No newline at end of file
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/__snapshot__/rspack/1.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/__snapshot__/rspack/1.snap.txt
new file mode 100644
index 0000000000..4a571fcf0e
--- /dev/null
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/__snapshot__/rspack/1.snap.txt
@@ -0,0 +1,97 @@
+# Case nested - rspack: Step 1
+
+## Changed Files
+- file.module.css
+
+## Asset Files
+- Bundle: rspack-bundle.js
+- Manifest: pages/main.LAST_HASH.hot-update.json, size: 34
+- Manifest: pages/main/pages/main.LAST_HASH.css.hot-update.json, size: 1098
+- Update: pages/main.LAST_HASH.hot-update.js, size: 1394
+
+## Manifest
+
+### pages/main.LAST_HASH.hot-update.json
+
+```json
+{"c":["pages/main"],"r":[],"m":[]}
+```
+
+
+
+### pages/main/pages/main.LAST_HASH.css.hot-update.json
+
+```json
+{"content":"eyJjb21waWxlck9wdGlvbnMiOnsiZW5hYmxlRmliZXJBcmNoIjp0cnVlLCJ1c2VMZXB1c05HIjp0cnVlLCJidW5kbGVNb2R1bGVNb2RlIjoiUmV0dXJuQnlGdW5jdGlvbiIsImVuYWJsZUNTU1NlbGVjdG9yIjp0cnVlLCJlbmFibGVDU1NJbnZhbGlkYXRpb24iOnRydWUsInRhcmdldFNka1ZlcnNpb24iOiIzLjIifSwic291cmNlQ29udGVudCI6eyJhcHBUeXBlIjoiY2FyZCIsImNvbmZpZyI6eyJsZXB1c1N0cmljdCI6dHJ1ZSwiZW5hYmxlUmVtb3ZlQ1NTU2NvcGUiOmZhbHNlfXXsImNzcyI6eyJjc3NNYXAiOnsiMCI6WXsidHlwZSI6IlN0eWxlUnVsZSIsInN0eWxlIjpbeyJuYW1lIjoiYXsb3IiLCJ2YWx1ZSI6IlwiYmx1ZVwiIiwia2V5TG9jIjp7ImxpbmUiOjMsImNvbHVtbiI6NDM5fSwidmFsTG9jIjp7ImxpbmUiOjMsImNvbHVtbiI6NDQ3fX1dLCJzZWxlY3RvclRleHQiOnsidmFsdWUiOiIubFNDWmNHbzRWUzQ4NGo4QiIsImxvYyI6eyJsaW5lIjozLCJjb2x1bW4iOjQzM319LCJ2YXJpYWJsZXMiOnt9fSx7InR5cGUiOiJTdHlsZVJ1bGUiLCJzdHlsZSI6WXsibmFtZSI6ImJhY2tncm91bmQtYXsb3IiLCJ2YWx1ZSI6ImJsYWNrIiwia2V5TG9jIjp7ImxpbmUiOjUsImNvbHVtbiI6NDQ5fSwidmFsTG9jIjp7ImxpbmUiOjUsImNvbHVtbiI6NDU2fX1dLCJzZWxlY3RvclRleHQiOnsidmFsdWUiOiIuRWFBR2JDODdMQTBOQ0lJUiIsImxvYyI6eyJsaW5lIjo1LCJjb2x1bW4iOjQzMn19LCJ2YXJpYWJsZXMiOnt9fV19LCJjc3NTb3VyY2UiOnsiMCI6Ii9jc3NJZC8wLmNzcyJ9LCJjb250ZW50TWFwIjp7fX19","deps":{"0":[]}}
+```
+
+
+## Update
+
+
+### pages/main.LAST_HASH.hot-update.js
+
+#### Changed Modules
+- ./file.module.css
+
+#### Changed Runtime Modules
+- webpack/runtime/get_full_hash
+
+#### Changed Content
+```js
+"use strict";
+exports.ids = ['pages/main'];
+exports.modules = {
+"./file.module.css":
+/*!*************************!*\
+ !*** ./file.module.css ***!
+ \*************************/
+(function (module, __webpack_exports__, __webpack_require__) {
+__webpack_require__.r(__webpack_exports__);
+__webpack_require__.d(__webpack_exports__, {
+ foo: () => (_1)
+});
+// extracted by mini-css-extract-plugin
+var _1 = "lSCZcGo4VS484j8B";
+
+
+ if (true) {
+ (function() {
+ var localsJsonString = "{\"foo\":\"lSCZcGo4VS484j8B\"}";
+ var cssReload = __webpack_require__(/*! ../../../../runtime/hotModuleReplacement.cjs */ "../../../../runtime/hotModuleReplacement.cjs")(module.id, {}, "");
+ // only invalidate when locals change
+ if (
+ module.hot.data &&
+ module.hot.data.value &&
+ module.hot.data.value !== localsJsonString
+ ) {
+ module.hot.invalidate();
+ } else {
+ module.hot.accept();
+ }
+ module.hot.dispose(function(data) {
+ data.value = localsJsonString;
+ cssReload();
+ });
+ })();
+ }
+
+}),
+
+};
+exports.runtime = function(__webpack_require__) {
+// webpack/runtime/get_full_hash
+(() => {
+__webpack_require__.h = () => ("CURRENT_HASH")
+})();
+// webpack/runtime/lynx css hot update
+(() => {
+
+__webpack_require__.cssHotUpdateList = [["pages/main","pages/main/pages/main.LAST_HASH.css.hot-update.json"]];
+
+})();
+
+}
+;
+;
+```
\ No newline at end of file
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/__snapshot__/rspack/2.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/__snapshot__/rspack/2.snap.txt
new file mode 100644
index 0000000000..d6cd7b1c8f
--- /dev/null
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/__snapshot__/rspack/2.snap.txt
@@ -0,0 +1,140 @@
+# Case nested - rspack: Step 2
+
+## Changed Files
+- file.module.css
+
+## Asset Files
+- Bundle: rspack-bundle.js
+- Manifest: pages/main.LAST_HASH.hot-update.json, size: 34
+- Manifest: pages/main/pages/main.LAST_HASH.css.hot-update.json, size: 1098
+- Update: pages/main.LAST_HASH.hot-update.js, size: 1394
+
+## Manifest
+
+### pages/main.LAST_HASH.hot-update.json
+
+```json
+{"c":["pages/main"],"r":[],"m":[]}
+```
+
+
+
+### pages/main/pages/main.LAST_HASH.css.hot-update.json
+
+```json
+{"content":"eyJjb21waWxlck9wdGlvbnMiOnsiZW5hYmxlRmliZXJBcmNoIjp0cnVlLCJ1c2VMZXB1c05HIjp0cnVlLCJidW5kbGVNb2R1bGVNb2RlIjoiUmV0dXJuQnlGdW5jdGlvbiIsImVuYWJsZUNTU1NlbGVjdG9yIjp0cnVlLCJlbmFibGVDU1NJbnZhbGlkYXRpb24iOnRydWUsInRhcmdldFNka1ZlcnNpb24iOiIzLjIifSwic291cmNlQ29udGVudCI6eyJhcHBUeXBlIjoiY2FyZCIsImNvbmZpZyI6eyJsZXB1c1N0cmljdCI6dHJ1ZSwiZW5hYmxlUmVtb3ZlQ1NTU2NvcGUiOmZhbHNlfXXsImNzcyI6eyJjc3NNYXAiOnsiMCI6WXsidHlwZSI6IlN0eWxlUnVsZSIsInN0eWxlIjpbeyJuYW1lIjoiYXsb3IiLCJ2YWx1ZSI6IlwiYmx1ZVwiIiwia2V5TG9jIjp7ImxpbmUiOjMsImNvbHVtbiI6NDM5fSwidmFsTG9jIjp7ImxpbmUiOjMsImNvbHVtbiI6NDQ3fX1dLCJzZWxlY3RvclRleHQiOnsidmFsdWUiOiIudmprSEs4ZzlnTHk5MWN0RCIsImxvYyI6eyJsaW5lIjozLCJjb2x1bW4iOjQzM319LCJ2YXJpYWJsZXMiOnt9fSx7InR5cGUiOiJTdHlsZVJ1bGUiLCJzdHlsZSI6WXsibmFtZSI6ImJhY2tncm91bmQtYXsb3IiLCJ2YWx1ZSI6ImJsYWNrIiwia2V5TG9jIjp7ImxpbmUiOjUsImNvbHVtbiI6NDQ5fSwidmFsTG9jIjp7ImxpbmUiOjUsImNvbHVtbiI6NDU2fX1dLCJzZWxlY3RvclRleHQiOnsidmFsdWUiOiIuRWFBR2JDODdMQTBOQ0lJUiIsImxvYyI6eyJsaW5lIjo1LCJjb2x1bW4iOjQzMn19LCJ2YXJpYWJsZXMiOnt9fV19LCJjc3NTb3VyY2UiOnsiMCI6Ii9jc3NJZC8wLmNzcyJ9LCJjb250ZW50TWFwIjp7fX19","deps":{"0":[]}}
+```
+
+
+## Update
+
+
+### pages/main.LAST_HASH.hot-update.js
+
+#### Changed Modules
+- ./file.module.css
+
+#### Changed Runtime Modules
+- webpack/runtime/get_full_hash
+
+#### Changed Content
+```js
+"use strict";
+exports.ids = ['pages/main'];
+exports.modules = {
+"./file.module.css":
+/*!*************************!*\
+ !*** ./file.module.css ***!
+ \*************************/
+(function (module, __webpack_exports__, __webpack_require__) {
+__webpack_require__.r(__webpack_exports__);
+__webpack_require__.d(__webpack_exports__, {
+ bar: () => (_1)
+});
+// extracted by mini-css-extract-plugin
+var _1 = "vjkHK8g9gLy91ctD";
+
+
+ if (true) {
+ (function() {
+ var localsJsonString = "{\"bar\":\"vjkHK8g9gLy91ctD\"}";
+ var cssReload = __webpack_require__(/*! ../../../../runtime/hotModuleReplacement.cjs */ "../../../../runtime/hotModuleReplacement.cjs")(module.id, {}, "");
+ // only invalidate when locals change
+ if (
+ module.hot.data &&
+ module.hot.data.value &&
+ module.hot.data.value !== localsJsonString
+ ) {
+ module.hot.invalidate();
+ } else {
+ module.hot.accept();
+ }
+ module.hot.dispose(function(data) {
+ data.value = localsJsonString;
+ cssReload();
+ });
+ })();
+ }
+
+}),
+
+};
+exports.runtime = function(__webpack_require__) {
+// webpack/runtime/get_full_hash
+(() => {
+__webpack_require__.h = () => ("CURRENT_HASH")
+})();
+// webpack/runtime/lynx css hot update
+(() => {
+
+__webpack_require__.cssHotUpdateList = [["pages/main","pages/main/pages/main.LAST_HASH.css.hot-update.json"]];
+
+})();
+
+}
+;
+;
+```
+
+
+
+
+## Runtime
+### Status
+
+```txt
+check => prepare => dispose => apply => idle
+```
+
+
+
+### JavaScript
+
+#### Outdated
+
+Outdated Modules:
+- ./file.module.css
+
+
+Outdated Dependencies:
+```json
+{}
+```
+
+#### Updated
+
+Updated Modules:
+- ./file.module.css
+
+Updated Runtime:
+- `__webpack_require__.cssHotUpdateList`
+- `__webpack_require__.h`
+
+
+#### Callback
+
+Accepted Callback:
+
+
+Disposed Callback:
+- ./file.module.css
\ No newline at end of file
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/entry.js b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/entry.js
new file mode 100644
index 0000000000..fddc3223d3
--- /dev/null
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/entry.js
@@ -0,0 +1,12 @@
+/*
+// Copyright 2024 The Lynx Authors. All rights reserved.
+// Licensed under the Apache License Version 2.0 that can be found in the
+// LICENSE file in the root directory of this source tree.
+*/
+import * as styles from './file.module.css'
+
+import './no-changed.css'
+
+import.meta.webpackHot.accept()
+
+export default styles
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/file.module.css b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/file.module.css
new file mode 100644
index 0000000000..6782197e7f
--- /dev/null
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/file.module.css
@@ -0,0 +1,16 @@
+/*
+// Copyright 2024 The Lynx Authors. All rights reserved.
+// Licensed under the Apache License Version 2.0 that can be found in the
+// LICENSE file in the root directory of this source tree.
+*/
+.foo {
+ color: 'red';
+}
+---
+.foo {
+ color: 'blue';
+}
+---
+.bar {
+ color: 'blue';
+}
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/index.js b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/index.js
new file mode 100644
index 0000000000..657dc7ee8d
--- /dev/null
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/index.js
@@ -0,0 +1,109 @@
+/*
+// Copyright 2024 The Lynx Authors. All rights reserved.
+// Licensed under the Apache License Version 2.0 that can be found in the
+// LICENSE file in the root directory of this source tree.
+*/
+///
+/* globals expect require vi NEXT DONE */
+
+import fs from 'node:fs'
+import path from 'node:path'
+
+import { update } from '@lynx-js/test-tools/update.js'
+
+import styles from './entry.js'
+import { createStubLynx } from '../../../helper/stubLynx.js'
+
+const __FlushElementTree = vi.fn()
+const replaceStyleSheetByIdWithBase64 = vi.fn()
+const lynx = createStubLynx(
+ vi,
+ __non_webpack_require__,
+ replaceStyleSheetByIdWithBase64,
+)
+
+vi.stubGlobal('lynx', lynx)
+vi.stubGlobal('__FlushElementTree', __FlushElementTree)
+
+__non_webpack_require__(HMR_RUNTIME_LEPUS)
+
+expect.extend({
+ toBeBase64EncodedMatching(receive, expected) {
+ if (typeof receive !== 'string') {
+ return {
+ pass: false,
+ message: () => `expected to be string, got ${typeof receive}`,
+ }
+ }
+
+ const decoded = Buffer.from(receive, 'base64').toString('utf-8')
+ return {
+ pass: decoded.includes(expected),
+ message: () => `${receive} does not contains ${expected}`,
+ }
+ },
+})
+
+it('should generate css.hot-update.json', () =>
+ new Promise((resolve, reject) => {
+ expect(styles).toHaveProperty('foo')
+ expect(styles.foo).toStrictEqual(expect.any(String))
+
+ function done(error) {
+ if (error) {
+ reject(error)
+ } else {
+ resolve()
+ }
+ }
+ let prevHash = __webpack_hash__
+
+ NEXT(
+ update(done, true, async () => {
+ const { default: styles } = await import('./entry.js')
+ expect(styles).toHaveProperty('foo')
+ expect(styles.foo).toStrictEqual(expect.any(String))
+
+ expect(__webpack_require__.cssHotUpdateList).toContainEqual([
+ 'pages/main',
+ `pages/main/pages/main.${prevHash}.css.hot-update.json`,
+ ])
+
+ const jsonPath = path.join(__dirname, 'pages/main', `pages/main.${prevHash}.css.hot-update.json`)
+ expect(fs.existsSync(jsonPath)).toBeTruthy()
+ const { content } = __non_webpack_require__(`./pages/main/pages/main.${prevHash}.css.hot-update.json`)
+
+ expect(content).toBeBase64EncodedMatching(styles.foo)
+ expect(content).toBeBase64EncodedMatching(
+ '"enableRemoveCSSScope":false',
+ )
+ expect(content).toBeBase64EncodedMatching('blue')
+
+ prevHash = __webpack_hash__
+
+ NEXT(
+ update(done, true, async () => {
+ const { default: styles } = await import('./entry.js')
+ expect(styles).toHaveProperty('bar')
+ expect(styles['bar']).toStrictEqual(expect.any(String))
+
+ expect(__webpack_require__.cssHotUpdateList).toContainEqual([
+ 'pages/main',
+ `pages/main/pages/main.${prevHash}.css.hot-update.json`,
+ ])
+
+ const jsonPath = path.join(__dirname, 'pages/main', `pages/main.${prevHash}.css.hot-update.json`)
+ expect(fs.existsSync(jsonPath)).toBeTruthy()
+ const { content } = __non_webpack_require__(`./pages/main/pages/main.${prevHash}.css.hot-update.json`)
+
+ expect(content).toBeBase64EncodedMatching(styles.bar)
+ expect(content).toBeBase64EncodedMatching(
+ '"enableRemoveCSSScope":false',
+ )
+ expect(content).toBeBase64EncodedMatching('blue')
+ done()
+ }),
+ )
+ }),
+ )
+ }))
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/no-changed.css b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/no-changed.css
new file mode 100644
index 0000000000..60d47f2164
--- /dev/null
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/no-changed.css
@@ -0,0 +1,8 @@
+/*
+// Copyright 2024 The Lynx Authors. All rights reserved.
+// Licensed under the Apache License Version 2.0 that can be found in the
+// LICENSE file in the root directory of this source tree.
+*/
+.no-change {
+ background-color: black;
+}
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/rspack.config.js b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/rspack.config.js
new file mode 100644
index 0000000000..24484f0e39
--- /dev/null
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/rspack.config.js
@@ -0,0 +1,59 @@
+/*
+// Copyright 2024 The Lynx Authors. All rights reserved.
+// Licensed under the Apache License Version 2.0 that can be found in the
+// LICENSE file in the root directory of this source tree.
+*/
+import rspack from '@rspack/core'
+import { CssExtractRspackPlugin } from '../../../../src/index'
+import path from 'node:path'
+
+/** @type {import('webpack').Configuration} */
+export default {
+ context: __dirname,
+ entry: {
+ 'pages/main': './index.js',
+ },
+ output: {
+ publicPath: './',
+ },
+ module: {
+ parser: {
+ javascript: {
+ importExportsPresence: false,
+ },
+ },
+ rules: [
+ {
+ test: /\.css$/,
+ use: [
+ {
+ loader: CssExtractRspackPlugin.loader,
+ },
+ {
+ loader: 'css-loader',
+ options: {
+ modules: true,
+ },
+ },
+ ],
+ },
+ ],
+ },
+ optimization: {
+ moduleIds: 'named',
+ },
+ experiments: {
+ css: false,
+ },
+ plugins: [
+ new rspack.DefinePlugin({
+ HMR_RUNTIME_LEPUS: JSON.stringify(
+ path.resolve(
+ __dirname,
+ '../../../../runtime/hotModuleReplacement.lepus.cjs',
+ ),
+ ),
+ }),
+ new CssExtractRspackPlugin({ filename: '[name]/[name].css' }),
+ ],
+}
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/test.config.cjs b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/test.config.cjs
new file mode 100644
index 0000000000..fc1cccded9
--- /dev/null
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/hot-update-json/nested/test.config.cjs
@@ -0,0 +1,6 @@
+/** @type {import("@lynx-js/test-tools").TConfigCaseConfig} */
+module.exports = {
+ bundlePath: [
+ 'rspack-bundle.js',
+ ],
+};
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/basic/__snapshot__/rspack/1.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/basic/__snapshot__/rspack/1.snap.txt
index 38857f69d1..38c98f7af9 100644
--- a/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/basic/__snapshot__/rspack/1.snap.txt
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/basic/__snapshot__/rspack/1.snap.txt
@@ -7,7 +7,7 @@
- Bundle: rspack-bundle.js
- Manifest: main.LAST_HASH.css.hot-update.json, size: 1098
- Manifest: main.LAST_HASH.hot-update.json, size: 28
-- Update: main.LAST_HASH.hot-update.js, size: 14802
+- Update: main.LAST_HASH.hot-update.js, size: 1415
## Manifest
@@ -36,7 +36,6 @@
#### Changed Runtime Modules
- webpack/runtime/get_full_hash
-- webpack/runtime/require_chunk_loading
#### Changed Content
```js
@@ -85,479 +84,11 @@ exports.runtime = function(__webpack_require__) {
(() => {
__webpack_require__.h = () => ("CURRENT_HASH")
})();
-// webpack/runtime/require_chunk_loading
+// webpack/runtime/lynx css hot update
(() => {
-var installedChunks = __webpack_require__.hmrS_require = __webpack_require__.hmrS_require || {"main": 1,};
-function loadUpdateChunk(chunkId, updatedModulesList) {
- var update = require("./" + __webpack_require__.hu(chunkId));
- var updatedModules = update.modules;
- var runtime = update.runtime;
- for (var moduleId in updatedModules) {
- if (__webpack_require__.o(updatedModules, moduleId)) {
- currentUpdate[moduleId] = updatedModules[moduleId];
- if (updatedModulesList) updatedModulesList.push(moduleId);
- }
- }
- if (runtime) currentUpdateRuntime.push(runtime);
-}var currentUpdateChunks;
-var currentUpdate;
-var currentUpdateRemovedChunks;
-var currentUpdateRuntime;
-function applyHandler(options) {
- if (__webpack_require__.f) delete __webpack_require__.f.requireHmr;
- currentUpdateChunks = undefined;
- function getAffectedModuleEffects(updateModuleId) {
- var outdatedModules = [updateModuleId];
- var outdatedDependencies = {};
- var queue = outdatedModules.map(function (id) {
- return {
- chain: [id],
- id: id
- };
- });
- while (queue.length > 0) {
- var queueItem = queue.pop();
- var moduleId = queueItem.id;
- var chain = queueItem.chain;
- var module = __webpack_require__.c[moduleId];
- if (
- !module ||
- (module.hot._selfAccepted && !module.hot._selfInvalidated)
- ) {
- continue;
- }
- if (module.hot._selfDeclined) {
- return {
- type: "self-declined",
- chain: chain,
- moduleId: moduleId
- };
- }
+__webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
- if (module.hot._main) {
- return {
- type: "unaccepted",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- for (var i = 0; i < module.parents.length; i++) {
- var parentId = module.parents[i];
- var parent = __webpack_require__.c[parentId];
- if (!parent) {
- continue;
- }
- if (parent.hot._declinedDependencies[moduleId]) {
- return {
- type: "declined",
- chain: chain.concat([parentId]),
- moduleId: moduleId,
- parentId: parentId
- };
- }
- if (outdatedModules.indexOf(parentId) !== -1) {
- continue;
- }
- if (parent.hot._acceptedDependencies[moduleId]) {
- if (!outdatedDependencies[parentId]) {
- outdatedDependencies[parentId] = [];
- }
- addAllToSet(outdatedDependencies[parentId], [moduleId]);
- continue;
- }
- delete outdatedDependencies[parentId];
- outdatedModules.push(parentId);
- queue.push({
- chain: chain.concat([parentId]),
- id: parentId
- });
- }
- }
-
- return {
- type: "accepted",
- moduleId: updateModuleId,
- outdatedModules: outdatedModules,
- outdatedDependencies: outdatedDependencies
- };
- }
-
- function addAllToSet(a, b) {
- for (var i = 0; i < b.length; i++) {
- var item = b[i];
- if (a.indexOf(item) === -1) a.push(item);
- }
- }
-
- var outdatedDependencies = {};
- var outdatedModules = [];
- var appliedUpdate = {};
-
- var warnUnexpectedRequire = function warnUnexpectedRequire(module) {
- console.warn(
- "[HMR] unexpected require(" + module.id + ") to disposed module"
- );
- };
-
- for (var moduleId in currentUpdate) {
- if (__webpack_require__.o(currentUpdate, moduleId)) {
- var newModuleFactory = currentUpdate[moduleId];
- var result = newModuleFactory ? getAffectedModuleEffects(moduleId) : {
- type: "disposed",
- moduleId: moduleId
- };
- var abortError = false;
- var doApply = false;
- var doDispose = false;
- var chainInfo = "";
- if (result.chain) {
- chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
- }
- switch (result.type) {
- case "self-declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of self decline: " + result.moduleId + chainInfo
- );
- break;
- case "declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of declined dependency: " +
- result.moduleId +
- " in " +
- result.parentId +
- chainInfo
- );
- break;
- case "unaccepted":
- if (options.onUnaccepted) options.onUnaccepted(result);
- if (!options.ignoreUnaccepted)
- abortError = new Error(
- "Aborted because " + moduleId + " is not accepted" + chainInfo
- );
- break;
- case "accepted":
- if (options.onAccepted) options.onAccepted(result);
- doApply = true;
- break;
- case "disposed":
- if (options.onDisposed) options.onDisposed(result);
- doDispose = true;
- break;
- default:
- throw new Error("Unexception type " + result.type);
- }
- if (abortError) {
- return {
- error: abortError
- };
- }
- if (doApply) {
- appliedUpdate[moduleId] = newModuleFactory;
- addAllToSet(outdatedModules, result.outdatedModules);
- for (moduleId in result.outdatedDependencies) {
- if (__webpack_require__.o(result.outdatedDependencies, moduleId)) {
- if (!outdatedDependencies[moduleId])
- outdatedDependencies[moduleId] = [];
- addAllToSet(
- outdatedDependencies[moduleId],
- result.outdatedDependencies[moduleId]
- );
- }
- }
- }
- if (doDispose) {
- addAllToSet(outdatedModules, [result.moduleId]);
- appliedUpdate[moduleId] = warnUnexpectedRequire;
- }
- }
- }
- currentUpdate = undefined;
-
- var outdatedSelfAcceptedModules = [];
- for (var j = 0; j < outdatedModules.length; j++) {
- var outdatedModuleId = outdatedModules[j];
- var module = __webpack_require__.c[outdatedModuleId];
- if (
- module &&
- (module.hot._selfAccepted || module.hot._main) &&
- // removed self-accepted modules should not be required
- appliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&
- // when called invalidate self-accepting is not possible
- !module.hot._selfInvalidated
- ) {
- outdatedSelfAcceptedModules.push({
- module: outdatedModuleId,
- require: module.hot._requireSelf,
- errorHandler: module.hot._selfAccepted
- });
- }
- }
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedModules = outdatedModules;
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedDependencies = outdatedDependencies;
-
-
- var moduleOutdatedDependencies;
- return {
- dispose: function () {
- currentUpdateRemovedChunks.forEach(function (chunkId) {
- delete installedChunks[chunkId];
- });
- currentUpdateRemovedChunks = undefined;
-
- var idx;
- var queue = outdatedModules.slice();
- while (queue.length > 0) {
- var moduleId = queue.pop();
- var module = __webpack_require__.c[moduleId];
- if (!module) continue;
-
- var data = {};
-
- // Call dispose handlers
- var disposeHandlers = module.hot._disposeHandlers;
- if (disposeHandlers.length > 0) {
- self.__HMR_UPDATED_RUNTIME__.javascript.disposedModules.push(moduleId);
- }
-
- for (j = 0; j < disposeHandlers.length; j++) {
- disposeHandlers[j].call(null, data);
- }
- __webpack_require__.hmrD[moduleId] = data;
-
- module.hot.active = false;
-
- delete __webpack_require__.c[moduleId];
-
- delete outdatedDependencies[moduleId];
-
- for (j = 0; j < module.children.length; j++) {
- var child = __webpack_require__.c[module.children[j]];
- if (!child) continue;
- idx = child.parents.indexOf(moduleId);
- if (idx >= 0) {
- child.parents.splice(idx, 1);
- }
- }
- }
-
- var dependency;
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- for (j = 0; j < moduleOutdatedDependencies.length; j++) {
- dependency = moduleOutdatedDependencies[j];
- idx = module.children.indexOf(dependency);
- if (idx >= 0) module.children.splice(idx, 1);
- }
- }
- }
- }
- },
- apply: function (reportError) {
- // insert new code
- for (var updateModuleId in appliedUpdate) {
- if (__webpack_require__.o(appliedUpdate, updateModuleId)) {
- __webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedModules.push(updateModuleId);
-
- }
- }
-
- // run new runtime modules
- for (var i = 0; i < currentUpdateRuntime.length; i++) {
-
- currentUpdateRuntime[i](new Proxy(__webpack_require__, {
- set(target, prop, value, receiver) {
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedRuntime.push(`__webpack_require__.${prop}`);
- return Reflect.set(target, prop, value, receiver);
- }
- }));
-
- }
-
- // call accept handlers
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- var module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- var callbacks = [];
- var errorHandlers = [];
- var dependenciesForCallbacks = [];
- for (var j = 0; j < moduleOutdatedDependencies.length; j++) {
- var dependency = moduleOutdatedDependencies[j];
- var acceptCallback = module.hot._acceptedDependencies[dependency];
- var errorHandler = module.hot._acceptedErrorHandlers[dependency];
- if (acceptCallback) {
- if (callbacks.indexOf(acceptCallback) !== -1) continue;
- callbacks.push(acceptCallback);
- errorHandlers.push(errorHandler);
- self.__HMR_UPDATED_RUNTIME__.javascript.acceptedModules.push(dependency);
-
- dependenciesForCallbacks.push(dependency);
- }
- }
- for (var k = 0; k < callbacks.length; k++) {
- try {
- callbacks[k].call(null, moduleOutdatedDependencies);
- } catch (err) {
- if (typeof errorHandlers[k] === "function") {
- try {
- errorHandlers[k](err, {
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k]
- });
- } catch (err2) {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-error-handler-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err2,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err2);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
- }
- }
- }
-
- // Load self accepted modules
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
- var item = outdatedSelfAcceptedModules[o];
- var moduleId = item.module;
- try {
- item.require(moduleId);
- } catch (err) {
- if (typeof item.errorHandler === "function") {
- try {
- item.errorHandler(err, {
- moduleId: moduleId,
- module: __webpack_require__.c[moduleId]
- });
- } catch (err1) {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-error-handler-errored",
- moduleId: moduleId,
- error: err1,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err1);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-errored",
- moduleId: moduleId,
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
-
- return outdatedModules;
- }
- };
-}
-
-__webpack_require__.hmrI.require = function (moduleId, applyHandlers) {
- if (!currentUpdate) {
- currentUpdate = {};
- currentUpdateRuntime = [];
- currentUpdateRemovedChunks = [];
- applyHandlers.push(applyHandler);
- }
- if (!__webpack_require__.o(currentUpdate, moduleId)) {
- currentUpdate[moduleId] = __webpack_require__.m[moduleId];
- }
-};
-
-__webpack_require__.hmrC.require = function (
- chunkIds,
- removedChunks,
- removedModules,
- promises,
- applyHandlers,
- updatedModulesList
-) {
- applyHandlers.push(applyHandler);
- currentUpdateChunks = {};
- currentUpdateRemovedChunks = removedChunks;
- currentUpdate = removedModules.reduce(function (obj, key) {
- obj[key] = false;
- return obj;
- }, {});
- currentUpdateRuntime = [];
- chunkIds.forEach(function (chunkId) {
- if (
- __webpack_require__.o(installedChunks, chunkId) &&
- installedChunks[chunkId] !== undefined
- ) {
- promises.push(loadUpdateChunk(chunkId, updatedModulesList));
- currentUpdateChunks[chunkId] = true;
- } else {
- currentUpdateChunks[chunkId] = false;
- }
- });
- if (__webpack_require__.f) {
- __webpack_require__.f.requireHmr = function (chunkId, promises) {
- if (
- currentUpdateChunks &&
- __webpack_require__.o(currentUpdateChunks, chunkId) &&
- !currentUpdateChunks[chunkId]
- ) {
- promises.push(loadUpdateChunk(chunkId));
- currentUpdateChunks[chunkId] = true;
- }
- };
- }
-};
-__webpack_require__.hmrM = () => {
- return Promise.resolve()
- .then(() => {
- return require("./" + __webpack_require__.hmrF());
- })['catch']((err) => {
- if (err.code !== 'MODULE_NOT_FOUND') throw err;
- });
-};
- __webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-
})();
}
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/basic/__snapshot__/rspack/2.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/basic/__snapshot__/rspack/2.snap.txt
index 74c7e9a26d..1a1ae8580b 100644
--- a/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/basic/__snapshot__/rspack/2.snap.txt
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/basic/__snapshot__/rspack/2.snap.txt
@@ -7,7 +7,7 @@
- Bundle: rspack-bundle.js
- Manifest: main.LAST_HASH.css.hot-update.json, size: 1098
- Manifest: main.LAST_HASH.hot-update.json, size: 28
-- Update: main.LAST_HASH.hot-update.js, size: 14802
+- Update: main.LAST_HASH.hot-update.js, size: 1415
## Manifest
@@ -36,7 +36,6 @@
#### Changed Runtime Modules
- webpack/runtime/get_full_hash
-- webpack/runtime/require_chunk_loading
#### Changed Content
```js
@@ -85,479 +84,11 @@ exports.runtime = function(__webpack_require__) {
(() => {
__webpack_require__.h = () => ("CURRENT_HASH")
})();
-// webpack/runtime/require_chunk_loading
+// webpack/runtime/lynx css hot update
(() => {
-var installedChunks = __webpack_require__.hmrS_require = __webpack_require__.hmrS_require || {"main": 1,};
-function loadUpdateChunk(chunkId, updatedModulesList) {
- var update = require("./" + __webpack_require__.hu(chunkId));
- var updatedModules = update.modules;
- var runtime = update.runtime;
- for (var moduleId in updatedModules) {
- if (__webpack_require__.o(updatedModules, moduleId)) {
- currentUpdate[moduleId] = updatedModules[moduleId];
- if (updatedModulesList) updatedModulesList.push(moduleId);
- }
- }
- if (runtime) currentUpdateRuntime.push(runtime);
-}var currentUpdateChunks;
-var currentUpdate;
-var currentUpdateRemovedChunks;
-var currentUpdateRuntime;
-function applyHandler(options) {
- if (__webpack_require__.f) delete __webpack_require__.f.requireHmr;
- currentUpdateChunks = undefined;
- function getAffectedModuleEffects(updateModuleId) {
- var outdatedModules = [updateModuleId];
- var outdatedDependencies = {};
- var queue = outdatedModules.map(function (id) {
- return {
- chain: [id],
- id: id
- };
- });
- while (queue.length > 0) {
- var queueItem = queue.pop();
- var moduleId = queueItem.id;
- var chain = queueItem.chain;
- var module = __webpack_require__.c[moduleId];
- if (
- !module ||
- (module.hot._selfAccepted && !module.hot._selfInvalidated)
- ) {
- continue;
- }
-
- if (module.hot._selfDeclined) {
- return {
- type: "self-declined",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- if (module.hot._main) {
- return {
- type: "unaccepted",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- for (var i = 0; i < module.parents.length; i++) {
- var parentId = module.parents[i];
- var parent = __webpack_require__.c[parentId];
- if (!parent) {
- continue;
- }
- if (parent.hot._declinedDependencies[moduleId]) {
- return {
- type: "declined",
- chain: chain.concat([parentId]),
- moduleId: moduleId,
- parentId: parentId
- };
- }
- if (outdatedModules.indexOf(parentId) !== -1) {
- continue;
- }
- if (parent.hot._acceptedDependencies[moduleId]) {
- if (!outdatedDependencies[parentId]) {
- outdatedDependencies[parentId] = [];
- }
- addAllToSet(outdatedDependencies[parentId], [moduleId]);
- continue;
- }
- delete outdatedDependencies[parentId];
- outdatedModules.push(parentId);
- queue.push({
- chain: chain.concat([parentId]),
- id: parentId
- });
- }
- }
-
- return {
- type: "accepted",
- moduleId: updateModuleId,
- outdatedModules: outdatedModules,
- outdatedDependencies: outdatedDependencies
- };
- }
-
- function addAllToSet(a, b) {
- for (var i = 0; i < b.length; i++) {
- var item = b[i];
- if (a.indexOf(item) === -1) a.push(item);
- }
- }
-
- var outdatedDependencies = {};
- var outdatedModules = [];
- var appliedUpdate = {};
-
- var warnUnexpectedRequire = function warnUnexpectedRequire(module) {
- console.warn(
- "[HMR] unexpected require(" + module.id + ") to disposed module"
- );
- };
-
- for (var moduleId in currentUpdate) {
- if (__webpack_require__.o(currentUpdate, moduleId)) {
- var newModuleFactory = currentUpdate[moduleId];
- var result = newModuleFactory ? getAffectedModuleEffects(moduleId) : {
- type: "disposed",
- moduleId: moduleId
- };
- var abortError = false;
- var doApply = false;
- var doDispose = false;
- var chainInfo = "";
- if (result.chain) {
- chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
- }
- switch (result.type) {
- case "self-declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of self decline: " + result.moduleId + chainInfo
- );
- break;
- case "declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of declined dependency: " +
- result.moduleId +
- " in " +
- result.parentId +
- chainInfo
- );
- break;
- case "unaccepted":
- if (options.onUnaccepted) options.onUnaccepted(result);
- if (!options.ignoreUnaccepted)
- abortError = new Error(
- "Aborted because " + moduleId + " is not accepted" + chainInfo
- );
- break;
- case "accepted":
- if (options.onAccepted) options.onAccepted(result);
- doApply = true;
- break;
- case "disposed":
- if (options.onDisposed) options.onDisposed(result);
- doDispose = true;
- break;
- default:
- throw new Error("Unexception type " + result.type);
- }
- if (abortError) {
- return {
- error: abortError
- };
- }
- if (doApply) {
- appliedUpdate[moduleId] = newModuleFactory;
- addAllToSet(outdatedModules, result.outdatedModules);
- for (moduleId in result.outdatedDependencies) {
- if (__webpack_require__.o(result.outdatedDependencies, moduleId)) {
- if (!outdatedDependencies[moduleId])
- outdatedDependencies[moduleId] = [];
- addAllToSet(
- outdatedDependencies[moduleId],
- result.outdatedDependencies[moduleId]
- );
- }
- }
- }
- if (doDispose) {
- addAllToSet(outdatedModules, [result.moduleId]);
- appliedUpdate[moduleId] = warnUnexpectedRequire;
- }
- }
- }
- currentUpdate = undefined;
-
- var outdatedSelfAcceptedModules = [];
- for (var j = 0; j < outdatedModules.length; j++) {
- var outdatedModuleId = outdatedModules[j];
- var module = __webpack_require__.c[outdatedModuleId];
- if (
- module &&
- (module.hot._selfAccepted || module.hot._main) &&
- // removed self-accepted modules should not be required
- appliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&
- // when called invalidate self-accepting is not possible
- !module.hot._selfInvalidated
- ) {
- outdatedSelfAcceptedModules.push({
- module: outdatedModuleId,
- require: module.hot._requireSelf,
- errorHandler: module.hot._selfAccepted
- });
- }
- }
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedModules = outdatedModules;
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedDependencies = outdatedDependencies;
-
-
- var moduleOutdatedDependencies;
- return {
- dispose: function () {
- currentUpdateRemovedChunks.forEach(function (chunkId) {
- delete installedChunks[chunkId];
- });
- currentUpdateRemovedChunks = undefined;
-
- var idx;
- var queue = outdatedModules.slice();
- while (queue.length > 0) {
- var moduleId = queue.pop();
- var module = __webpack_require__.c[moduleId];
- if (!module) continue;
-
- var data = {};
-
- // Call dispose handlers
- var disposeHandlers = module.hot._disposeHandlers;
- if (disposeHandlers.length > 0) {
- self.__HMR_UPDATED_RUNTIME__.javascript.disposedModules.push(moduleId);
- }
-
- for (j = 0; j < disposeHandlers.length; j++) {
- disposeHandlers[j].call(null, data);
- }
- __webpack_require__.hmrD[moduleId] = data;
-
- module.hot.active = false;
-
- delete __webpack_require__.c[moduleId];
-
- delete outdatedDependencies[moduleId];
-
- for (j = 0; j < module.children.length; j++) {
- var child = __webpack_require__.c[module.children[j]];
- if (!child) continue;
- idx = child.parents.indexOf(moduleId);
- if (idx >= 0) {
- child.parents.splice(idx, 1);
- }
- }
- }
-
- var dependency;
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- for (j = 0; j < moduleOutdatedDependencies.length; j++) {
- dependency = moduleOutdatedDependencies[j];
- idx = module.children.indexOf(dependency);
- if (idx >= 0) module.children.splice(idx, 1);
- }
- }
- }
- }
- },
- apply: function (reportError) {
- // insert new code
- for (var updateModuleId in appliedUpdate) {
- if (__webpack_require__.o(appliedUpdate, updateModuleId)) {
- __webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedModules.push(updateModuleId);
-
- }
- }
-
- // run new runtime modules
- for (var i = 0; i < currentUpdateRuntime.length; i++) {
-
- currentUpdateRuntime[i](new Proxy(__webpack_require__, {
- set(target, prop, value, receiver) {
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedRuntime.push(`__webpack_require__.${prop}`);
- return Reflect.set(target, prop, value, receiver);
- }
- }));
-
- }
-
- // call accept handlers
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- var module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- var callbacks = [];
- var errorHandlers = [];
- var dependenciesForCallbacks = [];
- for (var j = 0; j < moduleOutdatedDependencies.length; j++) {
- var dependency = moduleOutdatedDependencies[j];
- var acceptCallback = module.hot._acceptedDependencies[dependency];
- var errorHandler = module.hot._acceptedErrorHandlers[dependency];
- if (acceptCallback) {
- if (callbacks.indexOf(acceptCallback) !== -1) continue;
- callbacks.push(acceptCallback);
- errorHandlers.push(errorHandler);
- self.__HMR_UPDATED_RUNTIME__.javascript.acceptedModules.push(dependency);
-
- dependenciesForCallbacks.push(dependency);
- }
- }
- for (var k = 0; k < callbacks.length; k++) {
- try {
- callbacks[k].call(null, moduleOutdatedDependencies);
- } catch (err) {
- if (typeof errorHandlers[k] === "function") {
- try {
- errorHandlers[k](err, {
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k]
- });
- } catch (err2) {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-error-handler-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err2,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err2);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
- }
- }
- }
-
- // Load self accepted modules
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
- var item = outdatedSelfAcceptedModules[o];
- var moduleId = item.module;
- try {
- item.require(moduleId);
- } catch (err) {
- if (typeof item.errorHandler === "function") {
- try {
- item.errorHandler(err, {
- moduleId: moduleId,
- module: __webpack_require__.c[moduleId]
- });
- } catch (err1) {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-error-handler-errored",
- moduleId: moduleId,
- error: err1,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err1);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-errored",
- moduleId: moduleId,
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
-
- return outdatedModules;
- }
- };
-}
-__webpack_require__.hmrI.require = function (moduleId, applyHandlers) {
- if (!currentUpdate) {
- currentUpdate = {};
- currentUpdateRuntime = [];
- currentUpdateRemovedChunks = [];
- applyHandlers.push(applyHandler);
- }
- if (!__webpack_require__.o(currentUpdate, moduleId)) {
- currentUpdate[moduleId] = __webpack_require__.m[moduleId];
- }
-};
+__webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-__webpack_require__.hmrC.require = function (
- chunkIds,
- removedChunks,
- removedModules,
- promises,
- applyHandlers,
- updatedModulesList
-) {
- applyHandlers.push(applyHandler);
- currentUpdateChunks = {};
- currentUpdateRemovedChunks = removedChunks;
- currentUpdate = removedModules.reduce(function (obj, key) {
- obj[key] = false;
- return obj;
- }, {});
- currentUpdateRuntime = [];
- chunkIds.forEach(function (chunkId) {
- if (
- __webpack_require__.o(installedChunks, chunkId) &&
- installedChunks[chunkId] !== undefined
- ) {
- promises.push(loadUpdateChunk(chunkId, updatedModulesList));
- currentUpdateChunks[chunkId] = true;
- } else {
- currentUpdateChunks[chunkId] = false;
- }
- });
- if (__webpack_require__.f) {
- __webpack_require__.f.requireHmr = function (chunkId, promises) {
- if (
- currentUpdateChunks &&
- __webpack_require__.o(currentUpdateChunks, chunkId) &&
- !currentUpdateChunks[chunkId]
- ) {
- promises.push(loadUpdateChunk(chunkId));
- currentUpdateChunks[chunkId] = true;
- }
- };
- }
-};
-__webpack_require__.hmrM = () => {
- return Promise.resolve()
- .then(() => {
- return require("./" + __webpack_require__.hmrF());
- })['catch']((err) => {
- if (err.code !== 'MODULE_NOT_FOUND') throw err;
- });
-};
- __webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-
})();
}
@@ -598,8 +129,6 @@ Updated Modules:
Updated Runtime:
- `__webpack_require__.cssHotUpdateList`
- `__webpack_require__.h`
-- `__webpack_require__.hmrM`
-- `__webpack_require__.hmrS_require`
#### Callback
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/export-default/__snapshot__/rspack/1.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/export-default/__snapshot__/rspack/1.snap.txt
index ee486637cc..2969d805f5 100644
--- a/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/export-default/__snapshot__/rspack/1.snap.txt
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/export-default/__snapshot__/rspack/1.snap.txt
@@ -7,7 +7,7 @@
- Bundle: rspack-bundle.js
- Manifest: main.LAST_HASH.css.hot-update.json, size: 1090
- Manifest: main.LAST_HASH.hot-update.json, size: 28
-- Update: main.LAST_HASH.hot-update.js, size: 14927
+- Update: main.LAST_HASH.hot-update.js, size: 1540
## Manifest
@@ -36,7 +36,6 @@
#### Changed Runtime Modules
- webpack/runtime/get_full_hash
-- webpack/runtime/require_chunk_loading
#### Changed Content
```js
@@ -83,479 +82,11 @@ exports.runtime = function(__webpack_require__) {
(() => {
__webpack_require__.h = () => ("CURRENT_HASH")
})();
-// webpack/runtime/require_chunk_loading
+// webpack/runtime/lynx css hot update
(() => {
-var installedChunks = __webpack_require__.hmrS_require = __webpack_require__.hmrS_require || {"main": 1,};
-function loadUpdateChunk(chunkId, updatedModulesList) {
- var update = require("./" + __webpack_require__.hu(chunkId));
- var updatedModules = update.modules;
- var runtime = update.runtime;
- for (var moduleId in updatedModules) {
- if (__webpack_require__.o(updatedModules, moduleId)) {
- currentUpdate[moduleId] = updatedModules[moduleId];
- if (updatedModulesList) updatedModulesList.push(moduleId);
- }
- }
- if (runtime) currentUpdateRuntime.push(runtime);
-}var currentUpdateChunks;
-var currentUpdate;
-var currentUpdateRemovedChunks;
-var currentUpdateRuntime;
-function applyHandler(options) {
- if (__webpack_require__.f) delete __webpack_require__.f.requireHmr;
- currentUpdateChunks = undefined;
- function getAffectedModuleEffects(updateModuleId) {
- var outdatedModules = [updateModuleId];
- var outdatedDependencies = {};
- var queue = outdatedModules.map(function (id) {
- return {
- chain: [id],
- id: id
- };
- });
- while (queue.length > 0) {
- var queueItem = queue.pop();
- var moduleId = queueItem.id;
- var chain = queueItem.chain;
- var module = __webpack_require__.c[moduleId];
- if (
- !module ||
- (module.hot._selfAccepted && !module.hot._selfInvalidated)
- ) {
- continue;
- }
- if (module.hot._selfDeclined) {
- return {
- type: "self-declined",
- chain: chain,
- moduleId: moduleId
- };
- }
+__webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
- if (module.hot._main) {
- return {
- type: "unaccepted",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- for (var i = 0; i < module.parents.length; i++) {
- var parentId = module.parents[i];
- var parent = __webpack_require__.c[parentId];
- if (!parent) {
- continue;
- }
- if (parent.hot._declinedDependencies[moduleId]) {
- return {
- type: "declined",
- chain: chain.concat([parentId]),
- moduleId: moduleId,
- parentId: parentId
- };
- }
- if (outdatedModules.indexOf(parentId) !== -1) {
- continue;
- }
- if (parent.hot._acceptedDependencies[moduleId]) {
- if (!outdatedDependencies[parentId]) {
- outdatedDependencies[parentId] = [];
- }
- addAllToSet(outdatedDependencies[parentId], [moduleId]);
- continue;
- }
- delete outdatedDependencies[parentId];
- outdatedModules.push(parentId);
- queue.push({
- chain: chain.concat([parentId]),
- id: parentId
- });
- }
- }
-
- return {
- type: "accepted",
- moduleId: updateModuleId,
- outdatedModules: outdatedModules,
- outdatedDependencies: outdatedDependencies
- };
- }
-
- function addAllToSet(a, b) {
- for (var i = 0; i < b.length; i++) {
- var item = b[i];
- if (a.indexOf(item) === -1) a.push(item);
- }
- }
-
- var outdatedDependencies = {};
- var outdatedModules = [];
- var appliedUpdate = {};
-
- var warnUnexpectedRequire = function warnUnexpectedRequire(module) {
- console.warn(
- "[HMR] unexpected require(" + module.id + ") to disposed module"
- );
- };
-
- for (var moduleId in currentUpdate) {
- if (__webpack_require__.o(currentUpdate, moduleId)) {
- var newModuleFactory = currentUpdate[moduleId];
- var result = newModuleFactory ? getAffectedModuleEffects(moduleId) : {
- type: "disposed",
- moduleId: moduleId
- };
- var abortError = false;
- var doApply = false;
- var doDispose = false;
- var chainInfo = "";
- if (result.chain) {
- chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
- }
- switch (result.type) {
- case "self-declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of self decline: " + result.moduleId + chainInfo
- );
- break;
- case "declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of declined dependency: " +
- result.moduleId +
- " in " +
- result.parentId +
- chainInfo
- );
- break;
- case "unaccepted":
- if (options.onUnaccepted) options.onUnaccepted(result);
- if (!options.ignoreUnaccepted)
- abortError = new Error(
- "Aborted because " + moduleId + " is not accepted" + chainInfo
- );
- break;
- case "accepted":
- if (options.onAccepted) options.onAccepted(result);
- doApply = true;
- break;
- case "disposed":
- if (options.onDisposed) options.onDisposed(result);
- doDispose = true;
- break;
- default:
- throw new Error("Unexception type " + result.type);
- }
- if (abortError) {
- return {
- error: abortError
- };
- }
- if (doApply) {
- appliedUpdate[moduleId] = newModuleFactory;
- addAllToSet(outdatedModules, result.outdatedModules);
- for (moduleId in result.outdatedDependencies) {
- if (__webpack_require__.o(result.outdatedDependencies, moduleId)) {
- if (!outdatedDependencies[moduleId])
- outdatedDependencies[moduleId] = [];
- addAllToSet(
- outdatedDependencies[moduleId],
- result.outdatedDependencies[moduleId]
- );
- }
- }
- }
- if (doDispose) {
- addAllToSet(outdatedModules, [result.moduleId]);
- appliedUpdate[moduleId] = warnUnexpectedRequire;
- }
- }
- }
- currentUpdate = undefined;
-
- var outdatedSelfAcceptedModules = [];
- for (var j = 0; j < outdatedModules.length; j++) {
- var outdatedModuleId = outdatedModules[j];
- var module = __webpack_require__.c[outdatedModuleId];
- if (
- module &&
- (module.hot._selfAccepted || module.hot._main) &&
- // removed self-accepted modules should not be required
- appliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&
- // when called invalidate self-accepting is not possible
- !module.hot._selfInvalidated
- ) {
- outdatedSelfAcceptedModules.push({
- module: outdatedModuleId,
- require: module.hot._requireSelf,
- errorHandler: module.hot._selfAccepted
- });
- }
- }
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedModules = outdatedModules;
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedDependencies = outdatedDependencies;
-
-
- var moduleOutdatedDependencies;
- return {
- dispose: function () {
- currentUpdateRemovedChunks.forEach(function (chunkId) {
- delete installedChunks[chunkId];
- });
- currentUpdateRemovedChunks = undefined;
-
- var idx;
- var queue = outdatedModules.slice();
- while (queue.length > 0) {
- var moduleId = queue.pop();
- var module = __webpack_require__.c[moduleId];
- if (!module) continue;
-
- var data = {};
-
- // Call dispose handlers
- var disposeHandlers = module.hot._disposeHandlers;
- if (disposeHandlers.length > 0) {
- self.__HMR_UPDATED_RUNTIME__.javascript.disposedModules.push(moduleId);
- }
-
- for (j = 0; j < disposeHandlers.length; j++) {
- disposeHandlers[j].call(null, data);
- }
- __webpack_require__.hmrD[moduleId] = data;
-
- module.hot.active = false;
-
- delete __webpack_require__.c[moduleId];
-
- delete outdatedDependencies[moduleId];
-
- for (j = 0; j < module.children.length; j++) {
- var child = __webpack_require__.c[module.children[j]];
- if (!child) continue;
- idx = child.parents.indexOf(moduleId);
- if (idx >= 0) {
- child.parents.splice(idx, 1);
- }
- }
- }
-
- var dependency;
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- for (j = 0; j < moduleOutdatedDependencies.length; j++) {
- dependency = moduleOutdatedDependencies[j];
- idx = module.children.indexOf(dependency);
- if (idx >= 0) module.children.splice(idx, 1);
- }
- }
- }
- }
- },
- apply: function (reportError) {
- // insert new code
- for (var updateModuleId in appliedUpdate) {
- if (__webpack_require__.o(appliedUpdate, updateModuleId)) {
- __webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedModules.push(updateModuleId);
-
- }
- }
-
- // run new runtime modules
- for (var i = 0; i < currentUpdateRuntime.length; i++) {
-
- currentUpdateRuntime[i](new Proxy(__webpack_require__, {
- set(target, prop, value, receiver) {
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedRuntime.push(`__webpack_require__.${prop}`);
- return Reflect.set(target, prop, value, receiver);
- }
- }));
-
- }
-
- // call accept handlers
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- var module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- var callbacks = [];
- var errorHandlers = [];
- var dependenciesForCallbacks = [];
- for (var j = 0; j < moduleOutdatedDependencies.length; j++) {
- var dependency = moduleOutdatedDependencies[j];
- var acceptCallback = module.hot._acceptedDependencies[dependency];
- var errorHandler = module.hot._acceptedErrorHandlers[dependency];
- if (acceptCallback) {
- if (callbacks.indexOf(acceptCallback) !== -1) continue;
- callbacks.push(acceptCallback);
- errorHandlers.push(errorHandler);
- self.__HMR_UPDATED_RUNTIME__.javascript.acceptedModules.push(dependency);
-
- dependenciesForCallbacks.push(dependency);
- }
- }
- for (var k = 0; k < callbacks.length; k++) {
- try {
- callbacks[k].call(null, moduleOutdatedDependencies);
- } catch (err) {
- if (typeof errorHandlers[k] === "function") {
- try {
- errorHandlers[k](err, {
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k]
- });
- } catch (err2) {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-error-handler-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err2,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err2);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
- }
- }
- }
-
- // Load self accepted modules
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
- var item = outdatedSelfAcceptedModules[o];
- var moduleId = item.module;
- try {
- item.require(moduleId);
- } catch (err) {
- if (typeof item.errorHandler === "function") {
- try {
- item.errorHandler(err, {
- moduleId: moduleId,
- module: __webpack_require__.c[moduleId]
- });
- } catch (err1) {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-error-handler-errored",
- moduleId: moduleId,
- error: err1,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err1);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-errored",
- moduleId: moduleId,
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
-
- return outdatedModules;
- }
- };
-}
-
-__webpack_require__.hmrI.require = function (moduleId, applyHandlers) {
- if (!currentUpdate) {
- currentUpdate = {};
- currentUpdateRuntime = [];
- currentUpdateRemovedChunks = [];
- applyHandlers.push(applyHandler);
- }
- if (!__webpack_require__.o(currentUpdate, moduleId)) {
- currentUpdate[moduleId] = __webpack_require__.m[moduleId];
- }
-};
-
-__webpack_require__.hmrC.require = function (
- chunkIds,
- removedChunks,
- removedModules,
- promises,
- applyHandlers,
- updatedModulesList
-) {
- applyHandlers.push(applyHandler);
- currentUpdateChunks = {};
- currentUpdateRemovedChunks = removedChunks;
- currentUpdate = removedModules.reduce(function (obj, key) {
- obj[key] = false;
- return obj;
- }, {});
- currentUpdateRuntime = [];
- chunkIds.forEach(function (chunkId) {
- if (
- __webpack_require__.o(installedChunks, chunkId) &&
- installedChunks[chunkId] !== undefined
- ) {
- promises.push(loadUpdateChunk(chunkId, updatedModulesList));
- currentUpdateChunks[chunkId] = true;
- } else {
- currentUpdateChunks[chunkId] = false;
- }
- });
- if (__webpack_require__.f) {
- __webpack_require__.f.requireHmr = function (chunkId, promises) {
- if (
- currentUpdateChunks &&
- __webpack_require__.o(currentUpdateChunks, chunkId) &&
- !currentUpdateChunks[chunkId]
- ) {
- promises.push(loadUpdateChunk(chunkId));
- currentUpdateChunks[chunkId] = true;
- }
- };
- }
-};
-__webpack_require__.hmrM = () => {
- return Promise.resolve()
- .then(() => {
- return require("./" + __webpack_require__.hmrF());
- })['catch']((err) => {
- if (err.code !== 'MODULE_NOT_FOUND') throw err;
- });
-};
- __webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-
})();
}
diff --git a/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/export-default/__snapshot__/rspack/2.snap.txt b/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/export-default/__snapshot__/rspack/2.snap.txt
index a6be98df74..9d34d601ac 100644
--- a/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/export-default/__snapshot__/rspack/2.snap.txt
+++ b/packages/webpack/css-extract-webpack-plugin/test/hotCases/modules/export-default/__snapshot__/rspack/2.snap.txt
@@ -7,7 +7,7 @@
- Bundle: rspack-bundle.js
- Manifest: main.LAST_HASH.css.hot-update.json, size: 1090
- Manifest: main.LAST_HASH.hot-update.json, size: 28
-- Update: main.LAST_HASH.hot-update.js, size: 14927
+- Update: main.LAST_HASH.hot-update.js, size: 1540
## Manifest
@@ -36,7 +36,6 @@
#### Changed Runtime Modules
- webpack/runtime/get_full_hash
-- webpack/runtime/require_chunk_loading
#### Changed Content
```js
@@ -83,479 +82,11 @@ exports.runtime = function(__webpack_require__) {
(() => {
__webpack_require__.h = () => ("CURRENT_HASH")
})();
-// webpack/runtime/require_chunk_loading
+// webpack/runtime/lynx css hot update
(() => {
-var installedChunks = __webpack_require__.hmrS_require = __webpack_require__.hmrS_require || {"main": 1,};
-function loadUpdateChunk(chunkId, updatedModulesList) {
- var update = require("./" + __webpack_require__.hu(chunkId));
- var updatedModules = update.modules;
- var runtime = update.runtime;
- for (var moduleId in updatedModules) {
- if (__webpack_require__.o(updatedModules, moduleId)) {
- currentUpdate[moduleId] = updatedModules[moduleId];
- if (updatedModulesList) updatedModulesList.push(moduleId);
- }
- }
- if (runtime) currentUpdateRuntime.push(runtime);
-}var currentUpdateChunks;
-var currentUpdate;
-var currentUpdateRemovedChunks;
-var currentUpdateRuntime;
-function applyHandler(options) {
- if (__webpack_require__.f) delete __webpack_require__.f.requireHmr;
- currentUpdateChunks = undefined;
- function getAffectedModuleEffects(updateModuleId) {
- var outdatedModules = [updateModuleId];
- var outdatedDependencies = {};
- var queue = outdatedModules.map(function (id) {
- return {
- chain: [id],
- id: id
- };
- });
- while (queue.length > 0) {
- var queueItem = queue.pop();
- var moduleId = queueItem.id;
- var chain = queueItem.chain;
- var module = __webpack_require__.c[moduleId];
- if (
- !module ||
- (module.hot._selfAccepted && !module.hot._selfInvalidated)
- ) {
- continue;
- }
-
- if (module.hot._selfDeclined) {
- return {
- type: "self-declined",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- if (module.hot._main) {
- return {
- type: "unaccepted",
- chain: chain,
- moduleId: moduleId
- };
- }
-
- for (var i = 0; i < module.parents.length; i++) {
- var parentId = module.parents[i];
- var parent = __webpack_require__.c[parentId];
- if (!parent) {
- continue;
- }
- if (parent.hot._declinedDependencies[moduleId]) {
- return {
- type: "declined",
- chain: chain.concat([parentId]),
- moduleId: moduleId,
- parentId: parentId
- };
- }
- if (outdatedModules.indexOf(parentId) !== -1) {
- continue;
- }
- if (parent.hot._acceptedDependencies[moduleId]) {
- if (!outdatedDependencies[parentId]) {
- outdatedDependencies[parentId] = [];
- }
- addAllToSet(outdatedDependencies[parentId], [moduleId]);
- continue;
- }
- delete outdatedDependencies[parentId];
- outdatedModules.push(parentId);
- queue.push({
- chain: chain.concat([parentId]),
- id: parentId
- });
- }
- }
-
- return {
- type: "accepted",
- moduleId: updateModuleId,
- outdatedModules: outdatedModules,
- outdatedDependencies: outdatedDependencies
- };
- }
-
- function addAllToSet(a, b) {
- for (var i = 0; i < b.length; i++) {
- var item = b[i];
- if (a.indexOf(item) === -1) a.push(item);
- }
- }
-
- var outdatedDependencies = {};
- var outdatedModules = [];
- var appliedUpdate = {};
-
- var warnUnexpectedRequire = function warnUnexpectedRequire(module) {
- console.warn(
- "[HMR] unexpected require(" + module.id + ") to disposed module"
- );
- };
-
- for (var moduleId in currentUpdate) {
- if (__webpack_require__.o(currentUpdate, moduleId)) {
- var newModuleFactory = currentUpdate[moduleId];
- var result = newModuleFactory ? getAffectedModuleEffects(moduleId) : {
- type: "disposed",
- moduleId: moduleId
- };
- var abortError = false;
- var doApply = false;
- var doDispose = false;
- var chainInfo = "";
- if (result.chain) {
- chainInfo = "\nUpdate propagation: " + result.chain.join(" -> ");
- }
- switch (result.type) {
- case "self-declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of self decline: " + result.moduleId + chainInfo
- );
- break;
- case "declined":
- if (options.onDeclined) options.onDeclined(result);
- if (!options.ignoreDeclined)
- abortError = new Error(
- "Aborted because of declined dependency: " +
- result.moduleId +
- " in " +
- result.parentId +
- chainInfo
- );
- break;
- case "unaccepted":
- if (options.onUnaccepted) options.onUnaccepted(result);
- if (!options.ignoreUnaccepted)
- abortError = new Error(
- "Aborted because " + moduleId + " is not accepted" + chainInfo
- );
- break;
- case "accepted":
- if (options.onAccepted) options.onAccepted(result);
- doApply = true;
- break;
- case "disposed":
- if (options.onDisposed) options.onDisposed(result);
- doDispose = true;
- break;
- default:
- throw new Error("Unexception type " + result.type);
- }
- if (abortError) {
- return {
- error: abortError
- };
- }
- if (doApply) {
- appliedUpdate[moduleId] = newModuleFactory;
- addAllToSet(outdatedModules, result.outdatedModules);
- for (moduleId in result.outdatedDependencies) {
- if (__webpack_require__.o(result.outdatedDependencies, moduleId)) {
- if (!outdatedDependencies[moduleId])
- outdatedDependencies[moduleId] = [];
- addAllToSet(
- outdatedDependencies[moduleId],
- result.outdatedDependencies[moduleId]
- );
- }
- }
- }
- if (doDispose) {
- addAllToSet(outdatedModules, [result.moduleId]);
- appliedUpdate[moduleId] = warnUnexpectedRequire;
- }
- }
- }
- currentUpdate = undefined;
-
- var outdatedSelfAcceptedModules = [];
- for (var j = 0; j < outdatedModules.length; j++) {
- var outdatedModuleId = outdatedModules[j];
- var module = __webpack_require__.c[outdatedModuleId];
- if (
- module &&
- (module.hot._selfAccepted || module.hot._main) &&
- // removed self-accepted modules should not be required
- appliedUpdate[outdatedModuleId] !== warnUnexpectedRequire &&
- // when called invalidate self-accepting is not possible
- !module.hot._selfInvalidated
- ) {
- outdatedSelfAcceptedModules.push({
- module: outdatedModuleId,
- require: module.hot._requireSelf,
- errorHandler: module.hot._selfAccepted
- });
- }
- }
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedModules = outdatedModules;
- self.__HMR_UPDATED_RUNTIME__.javascript.outdatedDependencies = outdatedDependencies;
-
-
- var moduleOutdatedDependencies;
- return {
- dispose: function () {
- currentUpdateRemovedChunks.forEach(function (chunkId) {
- delete installedChunks[chunkId];
- });
- currentUpdateRemovedChunks = undefined;
-
- var idx;
- var queue = outdatedModules.slice();
- while (queue.length > 0) {
- var moduleId = queue.pop();
- var module = __webpack_require__.c[moduleId];
- if (!module) continue;
-
- var data = {};
-
- // Call dispose handlers
- var disposeHandlers = module.hot._disposeHandlers;
- if (disposeHandlers.length > 0) {
- self.__HMR_UPDATED_RUNTIME__.javascript.disposedModules.push(moduleId);
- }
-
- for (j = 0; j < disposeHandlers.length; j++) {
- disposeHandlers[j].call(null, data);
- }
- __webpack_require__.hmrD[moduleId] = data;
-
- module.hot.active = false;
-
- delete __webpack_require__.c[moduleId];
-
- delete outdatedDependencies[moduleId];
-
- for (j = 0; j < module.children.length; j++) {
- var child = __webpack_require__.c[module.children[j]];
- if (!child) continue;
- idx = child.parents.indexOf(moduleId);
- if (idx >= 0) {
- child.parents.splice(idx, 1);
- }
- }
- }
-
- var dependency;
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- for (j = 0; j < moduleOutdatedDependencies.length; j++) {
- dependency = moduleOutdatedDependencies[j];
- idx = module.children.indexOf(dependency);
- if (idx >= 0) module.children.splice(idx, 1);
- }
- }
- }
- }
- },
- apply: function (reportError) {
- // insert new code
- for (var updateModuleId in appliedUpdate) {
- if (__webpack_require__.o(appliedUpdate, updateModuleId)) {
- __webpack_require__.m[updateModuleId] = appliedUpdate[updateModuleId];
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedModules.push(updateModuleId);
-
- }
- }
-
- // run new runtime modules
- for (var i = 0; i < currentUpdateRuntime.length; i++) {
-
- currentUpdateRuntime[i](new Proxy(__webpack_require__, {
- set(target, prop, value, receiver) {
- self.__HMR_UPDATED_RUNTIME__.javascript.updatedRuntime.push(`__webpack_require__.${prop}`);
- return Reflect.set(target, prop, value, receiver);
- }
- }));
-
- }
-
- // call accept handlers
- for (var outdatedModuleId in outdatedDependencies) {
- if (__webpack_require__.o(outdatedDependencies, outdatedModuleId)) {
- var module = __webpack_require__.c[outdatedModuleId];
- if (module) {
- moduleOutdatedDependencies = outdatedDependencies[outdatedModuleId];
- var callbacks = [];
- var errorHandlers = [];
- var dependenciesForCallbacks = [];
- for (var j = 0; j < moduleOutdatedDependencies.length; j++) {
- var dependency = moduleOutdatedDependencies[j];
- var acceptCallback = module.hot._acceptedDependencies[dependency];
- var errorHandler = module.hot._acceptedErrorHandlers[dependency];
- if (acceptCallback) {
- if (callbacks.indexOf(acceptCallback) !== -1) continue;
- callbacks.push(acceptCallback);
- errorHandlers.push(errorHandler);
- self.__HMR_UPDATED_RUNTIME__.javascript.acceptedModules.push(dependency);
-
- dependenciesForCallbacks.push(dependency);
- }
- }
- for (var k = 0; k < callbacks.length; k++) {
- try {
- callbacks[k].call(null, moduleOutdatedDependencies);
- } catch (err) {
- if (typeof errorHandlers[k] === "function") {
- try {
- errorHandlers[k](err, {
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k]
- });
- } catch (err2) {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-error-handler-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err2,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err2);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "accept-errored",
- moduleId: outdatedModuleId,
- dependencyId: dependenciesForCallbacks[k],
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
- }
- }
- }
-
- // Load self accepted modules
- for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
- var item = outdatedSelfAcceptedModules[o];
- var moduleId = item.module;
- try {
- item.require(moduleId);
- } catch (err) {
- if (typeof item.errorHandler === "function") {
- try {
- item.errorHandler(err, {
- moduleId: moduleId,
- module: __webpack_require__.c[moduleId]
- });
- } catch (err1) {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-error-handler-errored",
- moduleId: moduleId,
- error: err1,
- originalError: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err1);
- reportError(err);
- }
- }
- } else {
- if (options.onErrored) {
- options.onErrored({
- type: "self-accept-errored",
- moduleId: moduleId,
- error: err
- });
- }
- if (!options.ignoreErrored) {
- reportError(err);
- }
- }
- }
- }
-
- return outdatedModules;
- }
- };
-}
-__webpack_require__.hmrI.require = function (moduleId, applyHandlers) {
- if (!currentUpdate) {
- currentUpdate = {};
- currentUpdateRuntime = [];
- currentUpdateRemovedChunks = [];
- applyHandlers.push(applyHandler);
- }
- if (!__webpack_require__.o(currentUpdate, moduleId)) {
- currentUpdate[moduleId] = __webpack_require__.m[moduleId];
- }
-};
+__webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-__webpack_require__.hmrC.require = function (
- chunkIds,
- removedChunks,
- removedModules,
- promises,
- applyHandlers,
- updatedModulesList
-) {
- applyHandlers.push(applyHandler);
- currentUpdateChunks = {};
- currentUpdateRemovedChunks = removedChunks;
- currentUpdate = removedModules.reduce(function (obj, key) {
- obj[key] = false;
- return obj;
- }, {});
- currentUpdateRuntime = [];
- chunkIds.forEach(function (chunkId) {
- if (
- __webpack_require__.o(installedChunks, chunkId) &&
- installedChunks[chunkId] !== undefined
- ) {
- promises.push(loadUpdateChunk(chunkId, updatedModulesList));
- currentUpdateChunks[chunkId] = true;
- } else {
- currentUpdateChunks[chunkId] = false;
- }
- });
- if (__webpack_require__.f) {
- __webpack_require__.f.requireHmr = function (chunkId, promises) {
- if (
- currentUpdateChunks &&
- __webpack_require__.o(currentUpdateChunks, chunkId) &&
- !currentUpdateChunks[chunkId]
- ) {
- promises.push(loadUpdateChunk(chunkId));
- currentUpdateChunks[chunkId] = true;
- }
- };
- }
-};
-__webpack_require__.hmrM = () => {
- return Promise.resolve()
- .then(() => {
- return require("./" + __webpack_require__.hmrF());
- })['catch']((err) => {
- if (err.code !== 'MODULE_NOT_FOUND') throw err;
- });
-};
- __webpack_require__.cssHotUpdateList = [["main","main.LAST_HASH.css.hot-update.json"]];
-
})();
}
@@ -596,8 +127,6 @@ Updated Modules:
Updated Runtime:
- `__webpack_require__.cssHotUpdateList`
- `__webpack_require__.h`
-- `__webpack_require__.hmrM`
-- `__webpack_require__.hmrS_require`
#### Callback
From e431cbe118d12615b111ef865e7a3dfef8462626 Mon Sep 17 00:00:00 2001
From: Qingyu Wang <40660121+colinaaa@users.noreply.github.com>
Date: Wed, 2 Apr 2025 20:47:05 +0800
Subject: [PATCH 2/2] fix: once for chunk
---
.../src/CssExtractRspackPlugin.ts | 41 ++++++++++++++-----
1 file changed, 30 insertions(+), 11 deletions(-)
diff --git a/packages/webpack/css-extract-webpack-plugin/src/CssExtractRspackPlugin.ts b/packages/webpack/css-extract-webpack-plugin/src/CssExtractRspackPlugin.ts
index ed829eb6c7..33e1bebaac 100644
--- a/packages/webpack/css-extract-webpack-plugin/src/CssExtractRspackPlugin.ts
+++ b/packages/webpack/css-extract-webpack-plugin/src/CssExtractRspackPlugin.ts
@@ -5,6 +5,7 @@
import { createRequire } from 'node:module';
import type {
+ Chunk,
Compiler,
CssExtractRspackPluginOptions as ExternalCssExtractRspackPluginOptions,
} from '@rspack/core';
@@ -205,17 +206,35 @@ ${RuntimeGlobals.require}.cssHotUpdateList = ${
}
}
- compilation.hooks.runtimeRequirementInTree.for(
- RuntimeGlobals.hmrDownloadManifest,
- )
- .tap(this.name, (chunk, runtimeRequirements) => {
- // We require publicPath to get css.hot-update.json
- runtimeRequirements.add(RuntimeGlobals.publicPath);
- compilation.addRuntimeModule(
- chunk,
- new CSSHotUpdateRuntimeModule(this.hash),
- );
- });
+ const onceForChunkSet = new WeakSet();
+ const handler = (chunk: Chunk, runtimeRequirements: Set) => {
+ if (onceForChunkSet.has(chunk)) return;
+ onceForChunkSet.add(chunk);
+ runtimeRequirements.add(RuntimeGlobals.publicPath);
+ compilation.addRuntimeModule(
+ chunk,
+ new CSSHotUpdateRuntimeModule(this.hash),
+ );
+ };
+
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.ensureChunkHandlers)
+ .tap(this.name, handler);
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.hmrDownloadUpdateHandlers)
+ .tap(this.name, handler);
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.hmrDownloadManifest)
+ .tap(this.name, handler);
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.baseURI)
+ .tap(this.name, handler);
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.externalInstallChunk)
+ .tap(this.name, handler);
+ compilation.hooks.runtimeRequirementInTree
+ .for(RuntimeGlobals.onChunksLoaded)
+ .tap(this.name, handler);
compilation.hooks.processAssets.tapPromise(
{